opengeometry 2.0.9 → 2.0.11

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../main/opengeometry/pkg/opengeometry.js","../main/main/opengeometry-three/src/markup/spotMarker.ts","../main/main/opengeometry-three/src/base-types.ts","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../main/main/opengeometry-three/src/utils/randomizer.ts","../main/main/opengeometry-three/src/editor/parametric.ts","../main/main/opengeometry-three/src/editor/freeform.ts","../main/main/opengeometry-three/src/freeform/geometry.ts","../main/main/opengeometry-three/src/primitives/line.ts","../main/main/opengeometry-three/src/primitives/polyline.ts","../main/main/opengeometry-three/src/primitives/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/extrude.ts","../main/main/opengeometry-three/src/operations/boolean-errors.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/shapes/boolean-subtract.ts","../main/main/opengeometry-three/src/shapes/solid.ts","../main/main/opengeometry-three/src/shapes/polygon.ts","../main/main/opengeometry-three/src/shapes/cylinder.ts","../main/main/opengeometry-three/src/shapes/cuboid.ts","../main/main/opengeometry-three/src/shapes/opening.ts","../main/main/opengeometry-three/src/shapes/sphere.ts","../main/main/opengeometry-three/src/shapes/wedge.ts","../main/main/opengeometry-three/src/shapes/sweep.ts","../main/main/opengeometry-three/src/examples/primitives.ts","../main/main/opengeometry-three/src/examples/shapes.ts","../main/main/opengeometry-three/src/examples/sweep.ts","../main/main/opengeometry-three/src/examples/offset.ts","../main/main/opengeometry-three/src/examples/wall-from-offsets.ts","../main/main/opengeometry-three/src/examples/booleans.ts","../main/main/opengeometry-three/src/examples/editor-modes.ts","../main/main/opengeometry-three/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedFloat64ArrayMemory0 = null;\n\nfunction getFloat64ArrayMemory0() {\n if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {\n cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64ArrayMemory0;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n * Wasm entry point for union.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanUnion(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanUnion(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for intersection.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanIntersection(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanIntersection(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtraction(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtraction(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for array-backed repeated subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} cutters_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtractionMany(lhs_brep_serialized, cutters_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(cutters_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtractionMany(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * @param {string} local_brep_serialized\n * @param {number} height\n * @returns {string}\n */\nexport function extrudeBrepFace(local_brep_serialized, height) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFace(ptr0, len0, height);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n\nconst Matrix3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix3_free(ptr >>> 0, 1));\n\nexport class Matrix3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix3.prototype);\n obj.__wbg_ptr = ptr;\n Matrix3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix3_free(ptr, 0);\n }\n /**\n *\n * * Create a new Matrix3 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix3_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @returns {Matrix3}\n */\n set(m0, m1, m2, m3, m4, m5, m6, m7, m8) {\n const ret = wasm.matrix3_set(this.__wbg_ptr, m0, m1, m2, m3, m4, m5, m6, m7, m8);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix3 instance and return a new one.\n *\n * @returns {Matrix3}\n */\n clone() {\n const ret = wasm.matrix3_clone(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix3_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 3x3 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix3_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix3}\n */\n adjucate() {\n const ret = wasm.matrix3_adjucate(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3 | undefined}\n */\n inverse() {\n const ret = wasm.matrix3_inverse(this.__wbg_ptr);\n return ret === 0 ? undefined : Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3}\n */\n transpose() {\n const ret = wasm.matrix3_transpose(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n}\n\nconst Matrix4Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix4_free(ptr >>> 0, 1));\n/**\n *\n * * Matrix4 Module\n * * 2D Representation of a 4x4 Matrix\n * * It's a row-major matrix.\n *\n */\nexport class Matrix4 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix4.prototype);\n obj.__wbg_ptr = ptr;\n Matrix4Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix4Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix4_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n get elements() {\n const ret = wasm.matrix4_elements(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Create a new Matrix4 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix4_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix4Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @param {number} m9\n * @param {number} m10\n * @param {number} m11\n * @param {number} m12\n * @param {number} m13\n * @param {number} m14\n * @param {number} m15\n * @returns {Matrix4}\n */\n static set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n const ret = wasm.matrix4_set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix4 instance and return a new one.\n *\n * @returns {Matrix4}\n */\n clone() {\n const ret = wasm.matrix4_clone(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix4_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 4x4 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix4_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix4}\n */\n adjucate() {\n const ret = wasm.matrix4_adjucate(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Inverse of a matrix\n * * Returns a new Matrix4 instance.\n * * If the determinant is zero, it returns a zero matrix.\n * * It can be checked with is_zero() method.\n *\n * @returns {Matrix4}\n */\n inverse() {\n const ret = wasm.matrix4_inverse(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Multiply this matrix with another Matrix4\n * * Returns a new Matrix4 instance\n *\n * @param {Matrix4} other\n * @returns {Matrix4}\n */\n multiply(other) {\n _assertClass(other, Matrix4);\n const ret = wasm.matrix4_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Add another Matrix4 to this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n add(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_add(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Subtract another Matrix4 from this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n subtract(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_subtract(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Flatten the matrix into a vector of f64.\n *\n * @returns {Float64Array}\n */\n flatten() {\n const ret = wasm.matrix4_flatten(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Get the element at a specific index in the flattened matrix.\n *\n * @param {number} index\n * @returns {number | undefined}\n */\n get_element_at(index) {\n const ret = wasm.matrix4_get_element_at(this.__wbg_ptr, index);\n return ret[0] === 0 ? undefined : ret[1];\n }\n /**\n *\n * * Check if the matrix is a zero matrix.\n *\n * @returns {boolean}\n */\n is_zero() {\n const ret = wasm.matrix4_is_zero(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Check if the matrix is an identity matrix.\n *\n * @returns {boolean}\n */\n is_identity() {\n const ret = wasm.matrix4_is_identity(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Create a Transpose of the matrix.\n * * Returns a new Matrix4 instance.\n *\n * @returns {Matrix4}\n */\n transpose() {\n const ret = wasm.matrix4_transpose(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n}\n\nconst OGArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogarc_free(ptr >>> 0, 1));\n\nexport class OGArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogarc_set_config(this.__wbg_ptr, ptr0, radius, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGBooleanResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogbooleanresult_free(ptr >>> 0, 1));\n/**\n * Result payload returned across the wasm boundary.\n */\nexport class OGBooleanResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGBooleanResult.prototype);\n obj.__wbg_ptr = ptr;\n OGBooleanResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGBooleanResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogbooleanresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get brepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_brepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get geometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_geometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get outlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_outlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGCuboidFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcuboid_free(ptr >>> 0, 1));\n\nexport class OGCuboid {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCuboidFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcuboid_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcuboid_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcuboid_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCuboidFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcuboid_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcuboid_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcuboid_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcuboid_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcuboid_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcuboid_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCurveFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcurve_free(ptr >>> 0, 1));\n\nexport class OGCurve {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCurveFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcurve_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcurve_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCurveFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} control_points\n */\n set_config(control_points) {\n const ptr0 = passArrayJsValueToWasm0(control_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcurve_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcurve_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcurve_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcurve_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcurve_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogcurve_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogcurve_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n dispose() {\n wasm.ogcurve_dispose(this.__wbg_ptr);\n }\n}\n\nconst OGCylinderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcylinder_free(ptr >>> 0, 1));\n\nexport class OGCylinder {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCylinderFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcylinder_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcylinder_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcylinder_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCylinderFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} height\n * @param {number} angle\n * @param {number} segments\n */\n set_config(center, radius, height, angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_config(this.__wbg_ptr, ptr0, radius, height, angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcylinder_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcylinder_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcylinder_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogcylinder_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogcylinder_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogcylinder_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcylinder_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcylinder_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEntityRegistryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogentityregistry_free(ptr >>> 0, 1));\n/**\n * Flat entity registry with a batched multi-view projection API.\n * Replaces the scene-centric OGSceneManager pattern for export use cases.\n */\nexport class OGEntityRegistry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEntityRegistryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogentityregistry_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogentityregistry_new();\n this.__wbg_ptr = ret >>> 0;\n OGEntityRegistryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Register (or replace) an entity. `kind` must be an OGEntityKind string.\n * @param {string} id\n * @param {string} kind\n * @param {string} brep_json\n */\n registerEntity(id, kind, brep_json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_registerEntity(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Remove a previously registered entity.\n * @param {string} id\n * @returns {boolean}\n */\n unregisterEntity(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_unregisterEntity(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Remove all registered entities.\n */\n clearEntities() {\n wasm.ogentityregistry_clearEntities(this.__wbg_ptr);\n }\n /**\n * Batched multi-view projection.\n *\n * Input: JSON array of `{ id, camera, hlr?, section_plane? }` (ViewRequest).\n * Output: JSON map of `{ viewportId: Scene2D }`.\n *\n * All viewports are projected in a single WASM call, amortising\n * serialisation overhead and keeping BRep data in WASM memory.\n * @param {string} views_json\n * @returns {string}\n */\n projectCurrentToViews(views_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(views_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_projectCurrentToViews(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformEditorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformeditor_free(ptr >>> 0, 1));\n\nexport class OGFreeformEditor {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformEditorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformeditor_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogfreeformeditor_new();\n this.__wbg_ptr = ret >>> 0;\n OGFreeformEditorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getTopologyRenderData(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getTopologyRenderData(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceInfo(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceInfo(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeInfo(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeInfo(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexInfo(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexInfo(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getEditCapabilities(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceEditCapabilities(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeEditCapabilities(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexEditCapabilities(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n pushPullFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_pushPullFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveFace(geometry, face_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveEdge(geometry, edge_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveVertex(geometry, vertex_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n extrudeFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_extrudeFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} start_edge_id\n * @param {number} start_t\n * @param {number} end_edge_id\n * @param {number} end_t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n cutFace(geometry, face_id, start_edge_id, start_t, end_edge_id, end_t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_cutFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, start_edge_id, start_t, end_edge_id, end_t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n insertVertexOnEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_insertVertexOnEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n splitEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_splitEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n loopCut(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_loopCut(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {string | null} [options_json]\n * @returns {string}\n */\n removeVertex(geometry, vertex_id, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_removeVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformGeometryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformgeometry_free(ptr >>> 0, 1));\n\nexport class OGFreeformGeometry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformGeometryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformgeometry_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {string} local_brep_serialized\n */\n constructor(id, local_brep_serialized) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_new(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGFreeformGeometryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getLocalBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getLocalBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getOutlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getPlacementSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getPlacementSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} placement_serialized\n */\n setPlacementSerialized(placement_serialized) {\n const ptr0 = passStringToWasm0(placement_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_setPlacementSerialized(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n setTransform(translation, rotation, scale) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setTransform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n setTranslation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setTranslation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n setRotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setRotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n setScale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setScale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} anchor\n */\n setAnchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n wasm.ogfreeformgeometry_setAnchor(this.__wbg_ptr, ptr0);\n }\n}\n\nconst OGIfcExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogifcexportresult_free(ptr >>> 0, 1));\n\nexport class OGIfcExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGIfcExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGIfcExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGIfcExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogifcexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGLineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogline_free(ptr >>> 0, 1));\n\nexport class OGLine {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGLineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGLineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} start\n * @param {Vector3} end\n */\n set_config(start, end) {\n _assertClass(start, Vector3);\n var ptr0 = start.__destroy_into_raw();\n _assertClass(end, Vector3);\n var ptr1 = end.__destroy_into_raw();\n const ret = wasm.ogline_set_config(this.__wbg_ptr, ptr0, ptr1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogline_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogline_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_dxf_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_dxf_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGPolygonFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolygon_free(ptr >>> 0, 1));\n\nexport class OGPolygon {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolygonFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolygon_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolygon_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolygonFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolygon_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolygon_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} vertices\n */\n add_vertices(vertices) {\n const ptr0 = passArrayJsValueToWasm0(vertices, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_vertices(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} hole\n */\n add_holes(hole) {\n const ptr0 = passArrayJsValueToWasm0(hole, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_holes(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogpolygon_clean_geometry(this.__wbg_ptr);\n }\n generate_brep() {\n const ret = wasm.ogpolygon_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolygon_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolygon_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogpolygon_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolygon_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGPolylineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolyline_free(ptr >>> 0, 1));\n\nexport class OGPolyline {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGPolyline.prototype);\n obj.__wbg_ptr = ptr;\n OGPolylineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolylineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolyline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolyline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolylineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {OGPolyline}\n */\n clone() {\n const ret = wasm.ogpolyline_clone(this.__wbg_ptr);\n return OGPolyline.__wrap(ret);\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolyline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolyline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolyline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} points\n */\n add_multiple_points(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_add_multiple_points(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} point\n */\n add_point(point) {\n _assertClass(point, Vector3);\n var ptr0 = point.__destroy_into_raw();\n const ret = wasm.ogpolyline_add_point(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_points() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_points(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Vector3[]}\n */\n get_raw_points() {\n const ret = wasm.ogpolyline_get_raw_points(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {boolean}\n */\n is_closed() {\n const ret = wasm.ogpolyline_is_closed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n check_closed_test() {\n wasm.ogpolyline_check_closed_test(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolyline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolyline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolyline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGRectangleFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogrectangle_free(ptr >>> 0, 1));\n\nexport class OGRectangle {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGRectangleFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogrectangle_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogrectangle_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogrectangle_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGRectangleFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} breadth\n */\n set_config(center, width, breadth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_config(this.__wbg_ptr, ptr0, width, breadth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogrectangle_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogrectangle_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogrectangle_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogrectangle_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogrectangle_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogrectangle_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogrectangle_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSceneManagerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogscenemanager_free(ptr >>> 0, 1));\n\nexport class OGSceneManager {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSceneManagerFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogscenemanager_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogscenemanager_new();\n this.__wbg_ptr = ret >>> 0;\n OGSceneManagerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @returns {string}\n */\n createScene(name) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_createScene(this.__wbg_ptr, ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {boolean}\n */\n removeScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeScene(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} scene_id\n */\n setCurrentScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_setCurrentScene(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string | undefined}\n */\n getCurrentSceneId() {\n const ret = wasm.ogscenemanager_getCurrentSceneId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n listScenes() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogscenemanager_listScenes(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {string}\n */\n getSceneSerialized(scene_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_getSceneSerialized(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @returns {boolean}\n */\n removeEntityFromScene(scene_id, entity_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeEntityFromScene(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToScene(scene_id, entity_id, line) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToCurrentScene(entity_id, line) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToCurrentScene(this.__wbg_ptr, ptr0, len0, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToScene(scene_id, entity_id, polyline) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToCurrentScene(entity_id, polyline) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToCurrentScene(this.__wbg_ptr, ptr0, len0, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToScene(scene_id, entity_id, arc) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToCurrentScene(entity_id, arc) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToCurrentScene(this.__wbg_ptr, ptr0, len0, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToScene(scene_id, entity_id, rectangle) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToCurrentScene(entity_id, rectangle) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToCurrentScene(this.__wbg_ptr, ptr0, len0, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToScene(scene_id, entity_id, polygon) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToCurrentScene(entity_id, polygon) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToCurrentScene(this.__wbg_ptr, ptr0, len0, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToScene(scene_id, entity_id, cuboid) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToCurrentScene(entity_id, cuboid) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToCurrentScene(this.__wbg_ptr, ptr0, len0, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToScene(scene_id, entity_id, cylinder) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToCurrentScene(entity_id, cylinder) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToCurrentScene(this.__wbg_ptr, ptr0, len0, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToScene(scene_id, entity_id, sphere) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToCurrentScene(entity_id, sphere) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToCurrentScene(this.__wbg_ptr, ptr0, len0, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToScene(scene_id, entity_id, wedge) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToCurrentScene(entity_id, wedge) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToCurrentScene(this.__wbg_ptr, ptr0, len0, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCamera(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCameraPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCameraPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLines(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLinesPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLinesPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DCamera(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DLines(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportBrepToStl(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportSceneToStl(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportCurrentSceneToStl(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStl(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportBrepToStep(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportSceneToStep(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportCurrentSceneToStep(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStep(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportBrepToIfc(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportSceneToIfc(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportCurrentSceneToIfc(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToIfc(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n}\n\nconst OGSphereFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsphere_free(ptr >>> 0, 1));\n\nexport class OGSphere {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSphereFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsphere_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsphere_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsphere_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSphereFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} width_segments\n * @param {number} height_segments\n */\n set_config(center, radius, width_segments, height_segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogsphere_set_config(this.__wbg_ptr, ptr0, radius, width_segments, height_segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogsphere_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsphere_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsphere_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsphere_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsphere_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsphere_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsphere_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsphere_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGStepExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstepexportresult_free(ptr >>> 0, 1));\n\nexport class OGStepExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStepExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStepExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStepExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstepexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGStlExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstlexportresult_free(ptr >>> 0, 1));\n\nexport class OGStlExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStlExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStlExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStlExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstlexportresult_free(ptr, 0);\n }\n /**\n * @returns {Uint8Array}\n */\n get bytes() {\n const ret = wasm.ogstlexportresult_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstlexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSweepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsweep_free(ptr >>> 0, 1));\n\nexport class OGSweep {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSweepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsweep_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsweep_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSweepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n */\n set_config(path_points, profile_points) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_config_with_caps(path_points, profile_points, cap_start, cap_end) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config_with_caps(this.__wbg_ptr, ptr0, len0, ptr1, len1, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_caps(cap_start, cap_end) {\n const ret = wasm.ogsweep_set_caps(this.__wbg_ptr, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsweep_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsweep_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsweep_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsweep_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsweep_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsweep_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsweep_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogsweep_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogsweep_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGWedgeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogwedge_free(ptr >>> 0, 1));\n\nexport class OGWedge {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGWedgeFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogwedge_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogwedge_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogwedge_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGWedgeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogwedge_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogwedge_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogwedge_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogwedge_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogwedge_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogwedge_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogwedge_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogwedge_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogwedge_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst Vector3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_vector3_free(ptr >>> 0, 1));\n\nexport class Vector3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Vector3.prototype);\n obj.__wbg_ptr = ptr;\n Vector3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n static __unwrap(jsValue) {\n if (!(jsValue instanceof Vector3)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Vector3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_vector3_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get x() {\n const ret = wasm.__wbg_get_vector3_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set x(arg0) {\n wasm.__wbg_set_vector3_x(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get y() {\n const ret = wasm.__wbg_get_vector3_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set y(arg0) {\n wasm.__wbg_set_vector3_y(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get z() {\n const ret = wasm.__wbg_get_vector3_z(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set z(arg0) {\n wasm.__wbg_set_vector3_z(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} z\n */\n constructor(x, y, z) {\n const ret = wasm.vector3_new(x, y, z);\n this.__wbg_ptr = ret >>> 0;\n Vector3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n *\n * * Add the elements of another vector to this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n add(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_add(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Add a scalar value to each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n add_scalar(scalar) {\n const ret = wasm.vector3_add_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract the elements of another vector from this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n subtract(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_subtract(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract a scalar value from each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n subtract_scalar(scalar) {\n const ret = wasm.vector3_subtract_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Clone the Vector3 instance and return a new one.\n *\n * @returns {Vector3}\n */\n clone() {\n const ret = wasm.vector3_clone(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Set the current vector elements to zero.\n *\n */\n zero() {\n wasm.vector3_zero(this.__wbg_ptr);\n }\n /**\n *\n * * Copy the elements from another Vector3 instance.\n *\n * @param {Vector3} other\n */\n copy(other) {\n _assertClass(other, Vector3);\n wasm.vector3_copy(this.__wbg_ptr, other.__wbg_ptr);\n }\n /**\n *\n * * Multiply the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n multiply_scalar(scalar) {\n const ret = wasm.vector3_multiply_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Multiply the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n multiply(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n divide(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_divide(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n divide_scalar(scalar) {\n const ret = wasm.vector3_divide_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Invert the vector by negating the vector elements.\n *\n * @returns {Vector3}\n */\n negate() {\n const ret = wasm.vector3_negate(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the dot product of this vector with another Vector3 instance.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n dot(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_dot(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the magnitude (length) of the vector.\n *\n * @returns {number}\n */\n magnitude() {\n const ret = wasm.vector3_magnitude(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the length of the vector.\n * * Since length is equivalent to magnitude, this method is an alias.\n *\n * @returns {number}\n */\n length() {\n const ret = wasm.vector3_length(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Normalize the vector\n *\n * @returns {Vector3}\n */\n normalize() {\n const ret = wasm.vector3_normalize(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the cross product and return the result as a new Vector3\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n cross(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_cross(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the distance between this vector and another Vector3 instance.\n * * Return the distance as a f64 value in Euclidean space.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n distance(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_distance(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Apply a transformation matrix to the vector.\n * * This method assumes the transformation matrix is a 4x4 matrix.\n *\n * @param {Matrix4} matrix\n */\n apply_matrix4(matrix) {\n _assertClass(matrix, Matrix4);\n var ptr0 = matrix.__destroy_into_raw();\n wasm.vector3_apply_matrix4(this.__wbg_ptr, ptr0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_getRandomValues_38097e921c2494c3 = function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments) };\n imports.wbg.__wbg_vector3_new = function(arg0) {\n const ret = Vector3.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_vector3_unwrap = function(arg0) {\n const ret = Vector3.__unwrap(arg0);\n return ret;\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat64ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('opengeometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { CSS2DObject } from \"three/examples/jsm/renderers/CSS2DRenderer.js\";\n\nfunction spotLabelElement() {\n const spotLabelElement = document.createElement(\"div\");\n spotLabelElement.style.position = \"absolute\";\n spotLabelElement.style.width = \"3px\";\n spotLabelElement.style.height = \"3px\";\n spotLabelElement.style.backgroundColor = \"blue\";\n spotLabelElement.style.pointerEvents = \"none\";\n // spotLabelElement.style.borderRadius = \"50%\";\n spotLabelElement.style.border = \"1px solid black\";\n return spotLabelElement;\n}\n\nexport class SpotLabel extends CSS2DObject {\n constructor() {\n const spotLabel = spotLabelElement();\n super(spotLabel);\n }\n}\n","/**\n * Version string exposed by the Three.js adapter at runtime.\n */\nexport const OPEN_GEOMETRY_THREE_VERSION = \"2.0.3\";\n\n/**\n * Options accepted when initializing the OpenGeometry runtime.\n * - `wasmURL`: Optional URL to the OpenGeometry wasm binary. If not provided, it defaults to a relative path.\n * - `debugMeshes`: Optional flag to enable debug meshes for visualizing geometry. Defaults to `false`.\n */\nexport interface OpenGeometryOptions {\n wasmURL?: string;\n debugMeshes?: boolean;\n}\n","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\nexport function getUUID() {\n const uuid = uuidv4();\n return uuid;\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n ParametricEditCapabilities,\n ParametricEditFamily,\n ParametricEntityType,\n ParametricPlacement,\n} from \"./types\";\nimport type { ObjectTransformation } from \"../freeform/types\";\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\n/**\n * Returns the canonical capability payload exposed by parametric wrappers.\n */\nexport function createParametricEditCapabilities(\n entityType: ParametricEntityType,\n editFamily: ParametricEditFamily\n): ParametricEditCapabilities {\n return {\n editingMode: \"parametric\",\n entityType,\n editFamily,\n canEditConfig: true,\n canEditPlacement: true,\n canConvertToFreeform: true,\n };\n}\n\n/**\n * Normalizes optional placement fields into concrete vectors.\n */\nexport function clonePlacement(\n placement: Partial<ParametricPlacement>\n): ParametricPlacement {\n return {\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\n/**\n * Converts a parametric placement payload into the freeform/object transform\n * structure expected by BRep-backed helpers.\n */\nexport function toObjectTransformation(\n placement: ParametricPlacement | ObjectTransformation\n): ObjectTransformation {\n if (\"anchor\" in placement) {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n }\n\n return {\n anchor: new Vector3(0, 0, 0),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n","import {\n OGFreeformEditor as KernelFreeformEditor,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { FreeformGeometry } from \"../freeform\";\nimport type { ObjectTransformation } from \"../freeform/types\";\nimport type {\n EdgeInfo,\n EditOperationOptions,\n FaceInfo,\n FreeformEditCapabilities,\n FreeformEditResult,\n FreeformFeatureEditCapabilities,\n TopologyId,\n TopologyRenderData,\n TopologyVertexRenderData,\n VertexInfo,\n} from \"./types\";\n\ntype RawFreeformOperationCapabilities = {\n can_push_pull_face: boolean;\n can_move_face: boolean;\n can_extrude_face: boolean;\n can_cut_face: boolean;\n can_move_edge: boolean;\n can_move_vertex: boolean;\n can_insert_vertex_on_edge: boolean;\n can_remove_vertex: boolean;\n can_split_edge: boolean;\n can_loop_cut: boolean;\n reasons?: string[];\n};\n\ntype RawFreeformFeatureEditCapabilities = RawFreeformOperationCapabilities & {\n domain: \"face\" | \"edge\" | \"vertex\";\n topology_id: TopologyId;\n};\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction normalizeFaceInfo(face: FaceInfo): FaceInfo {\n return {\n ...face,\n centroid: toVector3(face.centroid),\n normal: toVector3(face.normal),\n };\n}\n\nfunction normalizeEdgeInfo(edge: EdgeInfo): EdgeInfo {\n return {\n ...edge,\n start: toVector3(edge.start),\n end: toVector3(edge.end),\n };\n}\n\nfunction normalizeVertexInfo(vertex: VertexInfo): VertexInfo {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeTopologyRenderData(\n topology: TopologyRenderData\n): TopologyRenderData {\n return {\n ...topology,\n vertices: topology.vertices.map((vertex) =>\n normalizeTopologyVertex(vertex)\n ),\n };\n}\n\nfunction normalizeTopologyVertex(\n vertex: TopologyVertexRenderData\n): TopologyVertexRenderData {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeFeatureCapabilities(\n raw: RawFreeformFeatureEditCapabilities\n): FreeformFeatureEditCapabilities {\n return {\n domain: raw.domain,\n topologyId: raw.topology_id,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction normalizeFreeformCapabilities(\n raw: RawFreeformOperationCapabilities\n): FreeformEditCapabilities {\n return {\n editingMode: \"freeform\",\n entityType: \"freeform\",\n editFamily: \"freeform\",\n canEditConfig: false,\n canEditPlacement: false,\n canConvertToFreeform: false,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction parseEditResult(payload: string): FreeformEditResult {\n const result = parseJson<FreeformEditResult>(payload);\n return {\n ...result,\n placement: normalizePlacement(result.placement),\n };\n}\n\nfunction serializeOptions(options?: EditOperationOptions): string | undefined {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n ...options,\n constraintAxis: options.constraintAxis\n ? toPlainVector3(options.constraintAxis)\n : undefined,\n constraintPlaneNormal: options.constraintPlaneNormal\n ? toPlainVector3(options.constraintPlaneNormal)\n : undefined,\n });\n}\n\n/**\n * High-level editor facade over the kernel freeform editing API.\n */\nexport class FreeformEditor {\n private readonly geometry: FreeformGeometry;\n private readonly editor: KernelFreeformEditor;\n\n constructor(\n geometry: FreeformGeometry,\n editor: KernelFreeformEditor = new KernelFreeformEditor()\n ) {\n this.geometry = geometry;\n this.editor = editor;\n }\n\n /**\n * Returns the freeform geometry currently managed by this editor.\n */\n getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n /**\n * Returns renderable topology buffers for faces, edges, and vertices.\n */\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a face id.\n */\n getFaceInfo(faceId: TopologyId): FaceInfo {\n return normalizeFaceInfo(\n parseJson<FaceInfo>(\n this.editor.getFaceInfo(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for an edge id.\n */\n getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a vertex id.\n */\n getVertexInfo(vertexId: TopologyId): VertexInfo {\n return normalizeVertexInfo(\n parseJson<VertexInfo>(\n this.editor.getVertexInfo(this.geometry.getKernelGeometry(), vertexId)\n )\n );\n }\n\n /**\n * Returns global edit capabilities for the current freeform model.\n */\n getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single face.\n */\n getFaceEditCapabilities(faceId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getFaceEditCapabilities(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single edge.\n */\n getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single vertex.\n */\n getVertexEditCapabilities(\n vertexId: TopologyId\n ): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getVertexEditCapabilities(\n this.geometry.getKernelGeometry(),\n vertexId\n )\n )\n );\n }\n\n /**\n * Offset a face along its editable normal direction.\n */\n pushPullFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.pushPullFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates new side faces by extruding a face region.\n */\n extrudeFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.extrudeFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits a face by connecting two points sampled on its boundary edges.\n */\n cutFace(\n faceId: TopologyId,\n startEdgeId: TopologyId,\n startT: number,\n endEdgeId: TopologyId,\n endT: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.cutFace(\n this.geometry.getKernelGeometry(),\n faceId,\n startEdgeId,\n startT,\n endEdgeId,\n endT,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a face by a translation vector, subject to kernel constraints.\n */\n moveFace(\n faceId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveFace(\n this.geometry.getKernelGeometry(),\n faceId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves an edge by a translation vector, subject to kernel constraints.\n */\n moveEdge(\n edgeId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a vertex by a translation vector, subject to kernel constraints.\n */\n moveVertex(\n vertexId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Inserts a vertex at parametric position `t` along an edge.\n */\n insertVertexOnEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.insertVertexOnEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits an edge at parametric position `t`.\n */\n splitEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.splitEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates a loop cut that propagates from the selected edge when possible.\n */\n loopCut(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.loopCut(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Removes a vertex when the current topology allows the edit.\n */\n removeVertex(\n vertexId: TopologyId,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.removeVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n serializeOptions(options)\n )\n );\n }\n}\n\n/**\n * Convenience factory for creating a freeform editor around a geometry wrapper.\n */\nexport function createFreeformEditor(\n geometry: FreeformGeometry\n): FreeformEditor {\n return new FreeformEditor(geometry);\n}\n","import {\n OGFreeformGeometry,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n CreateFreeformGeometryOptions,\n FreeformSource,\n ObjectTransformation,\n} from \"./types\";\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction toObjectTransformation(\n placement: NonNullable<CreateFreeformGeometryOptions[\"placement\"]>\n): ObjectTransformation {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\nfunction toPlainObjectTransformation(transform: ObjectTransformation) {\n return {\n anchor: toPlainVector3(transform.anchor),\n translation: toPlainVector3(transform.translation),\n rotation: toPlainVector3(transform.rotation),\n scale: toPlainVector3(transform.scale),\n };\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction normalizeFreeformSerialized(source: FreeformSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\n/**\n * Thin client-side wrapper around the kernel `OGFreeformGeometry` object.\n */\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n /**\n * Returns the stable kernel-side id for this freeform geometry object.\n */\n getId(): string {\n return this.geometry.id;\n }\n\n /**\n * Returns the world-space serialized BRep payload.\n */\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload.\n */\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n /**\n * Returns the serialized triangle position buffer emitted by the kernel.\n */\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n /**\n * Returns world-space triangle positions as a plain number array.\n */\n getGeometryBuffer(): number[] {\n return Array.from(this.geometry.getGeometryBuffer());\n }\n\n /**\n * Returns local-space triangle positions as a plain number array.\n */\n getLocalGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalGeometryBuffer());\n }\n\n /**\n * Returns the serialized outline buffer emitted by the kernel.\n */\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n /**\n * Returns world-space outline segment positions as a plain number array.\n */\n getOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getOutlineGeometryBuffer());\n }\n\n /**\n * Returns local-space outline segment positions as a plain number array.\n */\n getLocalOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalOutlineGeometryBuffer());\n }\n\n /**\n * Returns the current normalized placement for this freeform geometry.\n */\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n /**\n * Replaces the full placement transform in one call.\n */\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n /**\n * Sets translation, rotation, and scale without changing the current anchor.\n */\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n /**\n * Updates only the translation component of the placement.\n */\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n /**\n * Updates only the rotation component of the placement.\n */\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n /**\n * Updates only the scale component of the placement.\n */\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\n\n /**\n * Updates the explicit modeling anchor used by downstream transforms.\n */\n setAnchor(anchor: Vector3): void {\n this.geometry.setAnchor(anchor);\n }\n\n /** @internal */\n getKernelGeometry(): OGFreeformGeometry {\n return this.geometry;\n }\n}\n\n/**\n * Creates a `FreeformGeometry` wrapper from serialized BRep JSON, a parsed\n * BRep object, or another wrapper exposing BRep accessors.\n */\nexport function createFreeformGeometry(\n source: FreeformSource,\n options?: CreateFreeformGeometryOptions\n): FreeformGeometry {\n const id = options?.id ?? `freeform-${Date.now()}`;\n const localBrepSerialized = normalizeFreeformSerialized(source);\n const geometry = new FreeformGeometry(\n new OGFreeformGeometry(id, localBrepSerialized)\n );\n\n if (options?.placement) {\n geometry.setPlacement(toObjectTransformation(options.placement));\n }\n\n return geometry;\n}\n","import { OGLine, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a line segment wrapper.\n */\nexport interface ILineOptions {\n ogid?: string;\n start: Vector3;\n end: Vector3;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Line`.\n */\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Line.setConfig(...)`.\n */\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Line` placement updates.\n */\nexport type LinePlacementUpdate = LinePlacementOptions;\n\n/**\n * Offset result returned by `Line.offset(...)`.\n */\nexport interface ILineOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Simple Line defined by Two Points\n */\nexport class Line extends THREE.Line {\n ogid: string;\n options: ILineOptions = {\n start: new Vector3(0, 0, 0.5),\n end: new Vector3(1, 0, 0.5),\n color: 0x000000,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private line: OGLine;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: ILineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.line = new OGLine(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n start: this.options.start.clone(),\n end: this.options.end.clone(),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Line\");\n }\n }\n\n setConfig(options: LineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"start\" in options || \"end\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.line.set_config(\n nextOptions.start.clone(),\n nextOptions.end.clone()\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.line.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.line.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.line.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: LinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.line.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"line\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.line.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.line.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getDXF() {\n const dxfData = this.line.get_dxf_serialized();\n return dxfData;\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ILineOffsetResult {\n const kernel = this.line as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGLine. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from 'three';\nimport { OGPolyline, Vector3 } from '../../../opengeometry/pkg/opengeometry';\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an ordered polyline wrapper.\n */\nexport interface IPolylineOptions {\n ogid?: string;\n color: number;\n points: Vector3[];\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Polyline`.\n */\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Polyline.setConfig(...)`.\n */\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Polyline` placement updates.\n */\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\n\n/**\n * Offset result returned by `Polyline.offset(...)`.\n */\nexport interface IOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Polyline wrapper backed by the kernel OGPolyline primitive.\n */\nexport class Polyline extends THREE.Line {\n ogid: string;\n options: IPolylineOptions = {\n points: [],\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n isClosed: boolean = false;\n\n private polyline: OGPolyline;\n private fatLine: Line2 | null = null;\n\n transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IPolylineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.polyline = new OGPolyline(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n points: this.options.points.map((point) => point.clone()),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polyline\");\n }\n }\n\n setConfig(options: PolylineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"points\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyline.set_config(nextOptions.points.map((point) => point.clone()));\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polyline.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polyline.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polyline.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolylinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyline.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polyline\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polyline.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n addPoint(point: Vector3) {\n if (!this.polyline) return;\n\n const { points } = this.options;\n points.push(point);\n\n if (this.options.points.length < 2) return;\n this.setConfig({\n points: this.options.points.map((currentPoint) => currentPoint.clone()),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyline.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n\n this.isClosed = this.polyline.is_closed();\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IOffsetResult {\n const kernel = this.polyline as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGPolyline. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGArc, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an arc or full-circle primitive.\n */\nexport interface IArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n endAngle: number;\n segments: number;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Arc`.\n */\nexport interface ArcPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Arc.setConfig(...)`.\n */\nexport type ArcConfigUpdate = Partial<\n Omit<IArcOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Arc` placement updates.\n */\nexport type ArcPlacementUpdate = ArcPlacementOptions;\n\n/**\n * Arc wrapper backed by the kernel OGArc primitive.\n */\nexport class Arc extends THREE.Line {\n ogid: string;\n options: IArcOptions = {\n center: new Vector3(0, 0, 0),\n radius: 3.5,\n startAngle: 0,\n endAngle: Math.PI * 2,\n segments: 32,\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private arc: OGArc;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IArcOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.arc = new OGArc(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n startAngle: this.options.startAngle,\n endAngle: this.options.endAngle,\n segments: this.options.segments,\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Circle Arc\");\n }\n }\n\n setConfig(options: ArcConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"segments\" in options ||\n \"startAngle\" in options ||\n \"endAngle\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.arc.set_config(\n nextOptions.center.clone(),\n nextOptions.radius,\n nextOptions.startAngle,\n nextOptions.endAngle,\n nextOptions.segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.arc.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: ArcPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.arc.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"arc\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.arc.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.arc.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.arc.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Arc\");\n }\n return JSON.parse(brepData);\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGRectangle, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a rectangle profile wrapper.\n */\nexport interface IRectangleOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n breadth: number;\n color: number;\n fatLines?: boolean;\n lineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Rectangle`.\n */\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Rectangle.setConfig(...)`.\n */\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Rectangle` placement updates.\n */\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\n\n/**\n * Offset result returned by `Rectangle.offset(...)`.\n */\nexport interface IRectangleOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Rectangle wrapper backed by the kernel OGRectangle primitive.\n */\nexport class Rectangle extends THREE.Line {\n ogid: string;\n options: IRectangleOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n breadth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private polyLineRectangle: OGRectangle;\n private fatLine: Line2 | null = null;\n\n // set width(width: number) {\n // this.options.width = width;\n // this.polyLineRectangle.update_width(width);\n // this.generateGeometry();\n // }\n\n // set breadth(breadth: number) {\n // this.options.breadth = breadth;\n // this.polyLineRectangle.update_breadth(breadth);\n // this.generateGeometry();\n // }\n\n // set center(center: Vector3) {\n // this.options.center = center;\n // this.polyLineRectangle.update_center(center);\n // this.generateGeometry();\n // }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n // set lineWidth(lineWidth: number) {\n // this.options.lineWidth = lineWidth;\n // if (this.material instanceof THREE.LineBasicMaterial) {\n // (this.material as THREE.LineBasicMaterial).linewidth = lineWidth;\n // }\n // }\n\n // FINAL: This flow should be used for other primitives\n constructor(options?: IRectangleOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polyLineRectangle = new OGRectangle(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n breadth: this.options.breadth,\n color: this.options.color,\n fatLines: this.options.fatLines,\n lineWidth: this.options.lineWidth,\n });\n \n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Rectangle\");\n }\n }\n\n setConfig(options: RectangleConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"breadth\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"lineWidth\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyLineRectangle.set_config(\n nextOptions.center.clone(),\n nextOptions.width,\n nextOptions.breadth,\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.polyLineRectangle.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: RectanglePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyLineRectangle.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"rectangle\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(\n this.polyLineRectangle.get_local_brep_serialized(),\n {\n id,\n placement: this.getPlacement(),\n }\n );\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.lineWidth,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.lineWidth ?? 1;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyLineRectangle.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.polyLineRectangle.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Rectangle\");\n }\n return JSON.parse(brepData);\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IRectangleOffsetResult {\n const kernel = this.polyLineRectangle as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGRectangle. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGCurve, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a control-point-driven curve.\n */\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Curve`.\n */\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Curve.setConfig(...)`.\n */\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Curve` placement updates.\n */\nexport type CurvePlacementUpdate = CurvePlacementOptions;\n\n/**\n * Offset result returned by `Curve.offset(...)`.\n */\nexport interface ICurveOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Curve wrapper backed by the kernel OGCurve primitive.\n */\nexport class Curve extends THREE.Line {\n ogid: string;\n options: ICurveOptions = {\n controlPoints: [],\n color: 0x00aa55,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private curve: OGCurve;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICurveOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.curve = new OGCurve(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n controlPoints: this.options.controlPoints.map((point) => point.clone()),\n color: this.options.color,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n setConfig(options: CurveConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"controlPoints\" in options;\n const colorChanged = \"color\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.curve.set_config(\n nextOptions.controlPoints.map((point) => point.clone())\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.curve.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.curve.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.curve.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: CurvePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.curve.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"curve\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.curve.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.curve.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ICurveOffsetResult {\n const kernel = this.curve as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGCurve. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\nimport { LineSegments2 } from \"three/examples/jsm/lines/LineSegments2.js\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\n/**\n * Outline mesh variants used by shape wrappers.\n */\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\n\n/**\n * Options for building a shape outline mesh.\n */\nexport interface ShapeOutlineMeshOptions {\n positions: number[];\n color?: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nconst DEFAULT_OUTLINE_COLOR = 0x000000;\nconst DEFAULT_OUTLINE_WIDTH = 1;\n\nfunction getOutlineResolution() {\n if (typeof window === \"undefined\") {\n return new THREE.Vector2(1, 1);\n }\n return new THREE.Vector2(window.innerWidth, window.innerHeight);\n}\n\n/**\n * Clamps outline width inputs to the supported positive finite range.\n */\nexport function sanitizeOutlineWidth(width?: number) {\n if (!Number.isFinite(width) || typeof width !== \"number\" || width <= 0) {\n return DEFAULT_OUTLINE_WIDTH;\n }\n return width;\n}\n\n/**\n * Creates either a thin or fat outline mesh from line segment positions.\n */\nexport function createShapeOutlineMesh({\n positions,\n color = DEFAULT_OUTLINE_COLOR,\n fatOutlines = false,\n outlineWidth = DEFAULT_OUTLINE_WIDTH,\n}: ShapeOutlineMeshOptions): ShapeOutlineMesh {\n if (fatOutlines) {\n const fatGeometry = new LineSegmentsGeometry();\n fatGeometry.setPositions(positions);\n const fatMaterial = new LineMaterial({\n color,\n linewidth: sanitizeOutlineWidth(outlineWidth),\n resolution: getOutlineResolution(),\n });\n const fatMesh = new LineSegments2(fatGeometry, fatMaterial);\n fatMesh.computeLineDistances();\n return fatMesh;\n }\n\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n\n const outlineMaterial = new THREE.LineBasicMaterial({ color });\n return new THREE.LineSegments(outlineGeometry, outlineMaterial);\n}\n\n/**\n * Disposes the geometry and material owned by an outline mesh.\n */\nexport function disposeShapeOutlineMesh(mesh: ShapeOutlineMesh | null) {\n if (!mesh) {\n return;\n }\n\n mesh.geometry.dispose();\n if (Array.isArray(mesh.material)) {\n mesh.material.forEach((material) => material.dispose());\n return;\n }\n mesh.material.dispose();\n}\n\n/**\n * Updates the color of an existing outline mesh in place.\n */\nexport function setShapeOutlineColor(mesh: ShapeOutlineMesh | null, color: number) {\n if (!mesh) {\n return;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n mesh.material.color.set(color);\n return;\n }\n\n if (mesh.material instanceof LineMaterial) {\n mesh.material.color.set(color);\n }\n}\n\n/**\n * Reads the current outline color, falling back when no outline exists.\n */\nexport function getShapeOutlineColor(\n mesh: ShapeOutlineMesh | null,\n fallback: number = DEFAULT_OUTLINE_COLOR\n) {\n if (!mesh) {\n return fallback;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n return mesh.material.color.getHex();\n }\n\n if (mesh.material instanceof LineMaterial) {\n return mesh.material.color.getHex();\n }\n\n return fallback;\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type { FreeformSource } from \"../freeform\";\n\n\ntype KernelExtrudeBrepFace = (...args: [string, number]) => string;\n\n\n/**\n * Sources accepted by the BRep-face extrusion helper.\n */\nexport type ExtrudeBrepSource = FreeformSource;\n\n/**\n * Extrudes the first face or wire in a local BRep payload into a closed solid BRep.\n */\nexport function extrudeBrepFace(\n source: ExtrudeBrepSource,\n height: number\n): string {\n const extrudeExport = (OGKernel as Record<string, unknown>).extrudeBrepFace;\n if (typeof extrudeExport !== \"function\") {\n throw new Error(\n \"extrudeBrepFace is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = extrudeExport as KernelExtrudeBrepFace;\n return kernelFunction(resolveLocalBrepSerialized(source), height);\n}\n\nfunction resolveLocalBrepSerialized(source: ExtrudeBrepSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n","/**\n * Typed error hierarchy for boolean operations.\n *\n * The Rust kernel emits a structured `BooleanError` as JSON across the WASM\n * boundary (see `main/opengeometry/src/booleans/error.rs`). This module parses\n * that JSON and re-throws it as a typed `BooleanError` (or a more specific\n * subclass) so app code can `instanceof`-discriminate without parsing message\n * strings.\n *\n * Cutter indices are **0-based** to match `Vec` / array indexing on both\n * sides of the boundary.\n */\n\nimport * as THREE from \"three\";\n\nexport type BooleanErrorPhase =\n | \"input_validation\"\n | \"union_pre_pass\"\n | \"subtract_step\"\n | \"output_validation\";\n\nexport type BooleanErrorReason =\n | \"invalid_operand\"\n | \"malformed_input\"\n | \"mixed_operand_kinds\"\n | \"unsupported_operand_kind\"\n | \"non_coplanar_planar_operands\"\n | \"topology_error\"\n | \"kernel_failure\"\n | \"non_manifold_edges\"\n | \"open_shell\"\n | \"coincident_faces\"\n | \"degenerate_triangle\"\n | \"empty_result\"\n | \"overlapping_cutters\"\n | \"cutter_exceeds_host\";\n\ninterface KindPayload {\n code: BooleanErrorReason;\n other_index?: number;\n axis?: string;\n overshoot?: number;\n}\n\ninterface BooleanErrorJson {\n kind: KindPayload;\n phase: BooleanErrorPhase;\n cutter_index: number | null;\n message: string;\n details: string | null;\n edge_samples: Array<[{ x: number; y: number; z: number }, { x: number; y: number; z: number }]> | null;\n}\n\n/**\n * Base class for every typed boolean error. Carries the structured payload the\n * kernel emitted across WASM. Specialized subclasses (`OverlappingCuttersError`,\n * `CutterExceedsHostError`, `NonManifoldOutputError`, `CoincidentFacesError`)\n * narrow the payload for the variants that carry extra fields.\n */\nexport class BooleanError extends Error {\n readonly reason: BooleanErrorReason;\n readonly phase: BooleanErrorPhase;\n readonly cutterIndex: number | null;\n readonly details: string | null;\n readonly edgeSamples: ReadonlyArray<[THREE.Vector3, THREE.Vector3]> | null;\n\n constructor(payload: BooleanErrorJson) {\n super(payload.message);\n this.name = \"BooleanError\";\n this.reason = payload.kind.code;\n this.phase = payload.phase;\n this.cutterIndex = payload.cutter_index;\n this.details = payload.details;\n this.edgeSamples = payload.edge_samples\n ? payload.edge_samples.map(([a, b]) => [\n new THREE.Vector3(a.x, a.y, a.z),\n new THREE.Vector3(b.x, b.y, b.z),\n ] as [THREE.Vector3, THREE.Vector3])\n : null;\n }\n}\n\n/**\n * Two cutters overlap each other. `otherIndex` is the 0-based index of the\n * cutter that conflicts with the one at `cutterIndex`.\n */\nexport class OverlappingCuttersError extends BooleanError {\n readonly otherIndex: number;\n\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"OverlappingCuttersError\";\n this.otherIndex = payload.kind.other_index ?? -1;\n }\n}\n\n/**\n * A cutter extends past the host's hull along the named axis.\n */\nexport class CutterExceedsHostError extends BooleanError {\n readonly axis: \"x\" | \"y\" | \"z\";\n readonly overshoot: number;\n\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"CutterExceedsHostError\";\n const axis = (payload.kind.axis ?? \"x\").toLowerCase();\n this.axis = (axis === \"y\" || axis === \"z\" ? axis : \"x\") as \"x\" | \"y\" | \"z\";\n this.overshoot = payload.kind.overshoot ?? 0;\n }\n}\n\n/**\n * Output mesh has open or over-shared edges after a boolean. `edgeSamples`\n * carries up to ~8 sample non-manifold edges to aid app-side debugging.\n */\nexport class NonManifoldOutputError extends BooleanError {\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"NonManifoldOutputError\";\n }\n}\n\n/**\n * Cutter and host share a coplanar face. Distinct from\n * `DegenerateTriangleError` (zero-area input) — see `06a-snap-tolerance.md`.\n */\nexport class CoincidentFacesError extends BooleanError {\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"CoincidentFacesError\";\n }\n}\n\n/**\n * Parses a WASM-thrown error and returns the appropriate typed `BooleanError`\n * subclass. If the error's message is not valid `BooleanError` JSON, returns a\n * fallback `BooleanError` with `reason: \"kernel_failure\"` carrying the original\n * string, so callers always get a typed error and never have to `try/catch`\n * twice.\n */\nexport function parseBooleanError(raw: unknown): BooleanError {\n const message = extractMessage(raw);\n let payload: BooleanErrorJson | null = null;\n\n try {\n const parsed = JSON.parse(message) as Partial<BooleanErrorJson>;\n if (parsed && typeof parsed === \"object\" && parsed.kind && typeof parsed.kind === \"object\") {\n payload = {\n kind: parsed.kind as KindPayload,\n phase: (parsed.phase ?? \"input_validation\") as BooleanErrorPhase,\n cutter_index: parsed.cutter_index ?? null,\n message: parsed.message ?? message,\n details: parsed.details ?? null,\n edge_samples: parsed.edge_samples ?? null,\n };\n }\n } catch {\n payload = null;\n }\n\n if (!payload) {\n payload = {\n kind: { code: \"kernel_failure\" },\n phase: \"input_validation\",\n cutter_index: null,\n message,\n details: null,\n edge_samples: null,\n };\n }\n\n switch (payload.kind.code) {\n case \"overlapping_cutters\":\n return new OverlappingCuttersError(payload);\n case \"cutter_exceeds_host\":\n return new CutterExceedsHostError(payload);\n case \"non_manifold_edges\":\n case \"open_shell\":\n return new NonManifoldOutputError(payload);\n case \"coincident_faces\":\n return new CoincidentFacesError(payload);\n default:\n return new BooleanError(payload);\n }\n}\n\nfunction extractMessage(raw: unknown): string {\n if (raw === null || raw === undefined) {\n return \"\";\n }\n if (typeof raw === \"string\") {\n return raw;\n }\n if (raw instanceof Error) {\n return raw.message;\n }\n if (typeof raw === \"object\" && \"message\" in (raw as Record<string, unknown>)) {\n const message = (raw as Record<string, unknown>).message;\n if (typeof message === \"string\") {\n return message;\n }\n }\n try {\n return String(raw);\n } catch {\n return \"Unknown boolean error\";\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { toCreasedNormals } from \"three/examples/jsm/utils/BufferGeometryUtils.js\";\n\nimport {\n createFreeformGeometry,\n type CreateFreeformGeometryOptions,\n type FreeformGeometry,\n} from \"../freeform\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"../shapes/outline-utils\";\nimport { parseBooleanError } from \"./boolean-errors\";\n\n/**\n * Accepted operand formats for boolean helpers.\n */\nexport type BooleanOperand =\n | string\n | Record<string, unknown>\n | {\n getBrep?: () => unknown;\n getBrepData?: () => unknown;\n getBrepSerialized?: () => string;\n };\n\n/**\n * Kernel-side boolean tuning options.\n *\n * `tolerance` is in **model units** (meters by convention). When omitted, the\n * kernel auto-scales it to `operandsDiagonal * 1e-8` (clamped to a `1e-6`\n * floor in many-subtract). This drives the kernel-side polygon / face math\n * (vertex welding, plane coincidence, AABB enforcement).\n *\n * **NOTE: this tolerance does NOT control boolmesh's internal snap window.**\n * Boolmesh has its own welding tolerance that may treat faces within ~1mm\n * of each other as coincident, regardless of what `tolerance` you pass. If\n * your cutter face sits within about 0.001 m – 0.01 m of a host face you\n * may still hit a `DegenerateTriangle` / `CoincidentFaces` error path.\n *\n * **Recommended cutter overshoot for through-cuts:** `max(hostThickness *\n * 0.05, 0.01)` in model units. See `knowledge/boolean-tolerance-guide.md`.\n *\n * `mergeCoplanarFaces` (default `true`) controls whether the planar pipeline\n * merges coplanar adjacent faces in its output.\n */\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\n/**\n * Rendering options applied to the boolean result mesh.\n *\n * `color`, `opacity`, `transparent`, and `side` override the corresponding\n * fields on the host (LHS) operand's cloned material. Omit them to inherit\n * the host's appearance unchanged.\n */\nexport interface BooleanRenderOptions {\n color?: THREE.ColorRepresentation;\n opacity?: number;\n transparent?: boolean;\n side?: THREE.Side;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\n/**\n * Metadata copied from the host (LHS) operand onto the boolean result so the\n * result can drop into a scene graph without per-call plumbing.\n */\ninterface BooleanHostMetadata {\n material: THREE.Material | null;\n name: string;\n userData: Record<string, unknown> | null;\n}\n\n/**\n * Combined kernel and rendering options accepted by boolean helpers.\n */\nexport interface BooleanExecutionOptions extends BooleanRenderOptions {\n kernel?: BooleanKernelOptions;\n}\n\n/**\n * Structured report returned by the kernel boolean pipeline.\n */\nexport interface BooleanReport {\n operation: string;\n operand_kind: string;\n input_face_count: number;\n input_triangle_count: number;\n output_face_count: number;\n output_shell_count: number;\n empty: boolean;\n}\n\ninterface KernelBooleanResult {\n brepSerialized: string;\n geometrySerialized: string;\n outlineGeometrySerialized: string;\n reportJson: string;\n}\n\n\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n\ntype KernelBooleanManyFunction = (\n lhsBrepSerialized: string,\n rhsBrepsSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n\n\nconst BOOLEAN_CREASE_ANGLE = Math.PI / 5;\nconst BOOLEAN_OUTLINE_THRESHOLD_DEGREES = 26;\n\n/**\n * Renderable result mesh returned by the kernel boolean helpers.\n */\nexport class BooleanResult extends THREE.Mesh {\n ogid: string;\n report: BooleanReport | null = null;\n\n private brepSerialized = \"\";\n private brepData: Record<string, unknown> | null = null;\n private outlinePositions: number[] = [];\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n #outlineMesh: ShapeOutlineMesh | null = null;\n\n constructor(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions,\n host: BooleanOperand | null = null\n ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n\n const metadata = resolveOperandMetadata(host);\n if (metadata.name) {\n this.name = metadata.name;\n }\n if (metadata.userData) {\n this.userData = { ...metadata.userData };\n }\n\n this.applyKernelResult(kernelResult, options, metadata.material);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Updates the result mesh's color in place without re-running the boolean\n * pipeline. Accepts any value Three.js accepts (`number`, hex string, css\n * color name, or `THREE.Color`). No-op for materials without a `color` field.\n */\n set color(value: THREE.ColorRepresentation) {\n const apply = (material: THREE.Material) => {\n if (\"color\" in material) {\n (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color.set(\n value\n );\n }\n material.needsUpdate = true;\n };\n\n if (Array.isArray(this.material)) {\n this.material.forEach(apply);\n return;\n }\n apply(this.material);\n }\n\n get color(): THREE.Color | null {\n const material = Array.isArray(this.material) ? this.material[0] : this.material;\n if (!material || !(\"color\" in material)) {\n return null;\n }\n return (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color;\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions,\n sourceMaterial: THREE.Material | null = null\n ) {\n this.disposeGeometry();\n\n this.brepSerialized = kernelResult.brepSerialized;\n this.brepData = JSON.parse(kernelResult.brepSerialized) as Record<string, unknown>;\n this.report = JSON.parse(kernelResult.reportJson) as BooleanReport;\n\n const positions = JSON.parse(kernelResult.geometrySerialized) as number[];\n const baseGeometry = new THREE.BufferGeometry();\n baseGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n const geometry = toCreasedNormals(baseGeometry, BOOLEAN_CREASE_ANGLE);\n geometry.computeBoundingBox();\n this.outlinePositions = getRenderableOutlinePositions(\n geometry,\n kernelResult.outlineGeometrySerialized\n );\n\n const material = buildResultMaterial(sourceMaterial, options);\n\n this.geometry = geometry;\n this.material = material;\n\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n /**\n * Returns the parsed BRep object for reuse with scene export or downstream operations.\n */\n getBrepData() {\n return this.brepData;\n }\n\n /**\n * Returns the serialized BRep JSON emitted by the kernel boolean operation.\n */\n getBrepSerialized() {\n return this.brepSerialized;\n }\n\n canConvertToFreeform() {\n return this.brepSerialized.length > 0;\n }\n\n /**\n * Converts the boolean output into a first-class freeform geometry object so\n * it can participate in direct face/edge/vertex editing.\n */\n toFreeform(options?: CreateFreeformGeometryOptions): FreeformGeometry {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This boolean result cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getBrepSerialized(), {\n id: options?.id ?? this.ogid,\n placement: options?.placement,\n });\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (!enable || this.outlinePositions.length === 0) {\n return;\n }\n\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.outlinePositions,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometry() {\n this.clearOutlineMesh();\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n return;\n }\n this.material.dispose();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n}\n\n/**\n * Computes a kernel-backed boolean union and returns a renderable result mesh.\n *\n * Accepts wrapper objects directly, including `Solid`, `Cuboid`, `Opening`,\n * and other shapes that expose BRep accessors.\n */\nexport function booleanUnion(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanUnion\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean intersection and returns a renderable result mesh.\n */\nexport function booleanIntersection(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanIntersection\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean subtraction and returns a renderable result mesh.\n *\n * Use this when you want a standalone helper rather than a shape-level\n * convenience method like `opening.subtractFrom(host)`.\n */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed repeated subtraction using a left-to-right cutter array.\n *\n * This is used by the shape-level `.subtract([...])` helpers so the heavy\n * boolean orchestration stays in the Rust/WASM layer instead of JavaScript.\n */\nexport function executeBooleanSubtractionMany(\n lhs: BooleanOperand,\n cutters: BooleanOperand[],\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>).booleanSubtractionMany;\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n \"booleanSubtractionMany is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanManyFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n let kernelResult: KernelBooleanResult;\n try {\n kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n JSON.stringify(cutters.map(resolveOperandPayload)),\n kernelOptions\n );\n } catch (error) {\n throw parseBooleanError(error);\n }\n\n return createBooleanResult(kernelResult, options, lhs);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\n *\n * @throws {BooleanError} (or a subclass) when the kernel rejects the operation.\n * See `boolean-errors.ts` for the typed hierarchy.\n */\nfunction executeBoolean(\n exportName: \"booleanUnion\" | \"booleanIntersection\" | \"booleanSubtraction\",\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>)[exportName];\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n `${exportName} is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.`\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n let kernelResult: KernelBooleanResult;\n try {\n kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n } catch (error) {\n throw parseBooleanError(error);\n }\n\n return createBooleanResult(kernelResult, options, lhs);\n}\n\n/**\n * Accepts wrapper objects, raw BRep data, or serialized JSON and normalizes\n * everything into the kernel's serialized input format.\n */\nfunction resolveOperandSerialized(operand: BooleanOperand): string {\n if (typeof operand === \"string\") {\n return operand;\n }\n\n if (typeof operand.getBrepSerialized === \"function\") {\n return serializeBrepLike(operand.getBrepSerialized());\n }\n\n if (typeof operand.getBrepData === \"function\") {\n return serializeBrepLike(operand.getBrepData());\n }\n\n if (typeof operand.getBrep === \"function\") {\n return serializeBrepLike(operand.getBrep());\n }\n\n return serializeBrepLike(operand);\n}\n\n/**\n * Parses a boolean operand into a raw BRep payload so array-backed boolean\n * calls can serialize a JSON array of BReps instead of a JSON array of strings.\n */\nfunction resolveOperandPayload(operand: BooleanOperand) {\n const serialized = resolveOperandSerialized(operand);\n try {\n return JSON.parse(serialized) as Record<string, unknown>;\n } catch {\n throw new Error(\n \"Boolean operands must resolve to valid serialized BRep JSON before array subtraction.\"\n );\n }\n}\n\n/**\n * Accepts either a parsed BRep object or an already serialized JSON payload\n * and always returns the canonical serialized form expected by the wasm API.\n */\nfunction serializeBrepLike(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n/**\n * Translates the camelCase Three-side options into the snake_case wasm payload.\n */\nfunction serializeKernelOptions(options?: BooleanKernelOptions) {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n tolerance: options.tolerance,\n merge_coplanar_faces: options.mergeCoplanarFaces,\n });\n}\n\nfunction createBooleanResult(\n kernelResult: KernelBooleanResult,\n options?: BooleanExecutionOptions,\n host: BooleanOperand | null = null\n) {\n const result = new BooleanResult(kernelResult, options, host);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\n}\n\n/**\n * Returns the material, name, and userData carried on the operand when it is\n * a Three mesh subclass (Solid, Polygon, Cuboid, Opening, BooleanResult,\n * etc.) so the result mesh can drop into a scene graph as-is. Falls back to\n * empty metadata for serialized JSON, parsed BRep objects, or anything else\n * without a reachable host mesh.\n */\nfunction resolveOperandMetadata(\n operand: BooleanOperand | null\n): BooleanHostMetadata {\n const empty: BooleanHostMetadata = { material: null, name: \"\", userData: null };\n\n if (operand === null || typeof operand !== \"object\" || !(operand instanceof THREE.Mesh)) {\n return empty;\n }\n\n const rawMaterial = (operand as THREE.Mesh).material;\n let material: THREE.Material | null = null;\n if (Array.isArray(rawMaterial)) {\n material = rawMaterial[0] ?? null;\n } else if (rawMaterial instanceof THREE.Material) {\n material = rawMaterial;\n }\n\n return {\n material,\n name: operand.name ?? \"\",\n userData: operand.userData ?? null,\n };\n}\n\n/**\n * Builds the boolean result mesh's material by cloning the host (LHS) material\n * when available so the result inherits the host's color, transparency, and\n * side mode. Caller-provided overrides on `BooleanRenderOptions` win, and the\n * polygon-offset settings that prevent z-fighting with the result outline are\n * always reapplied after cloning.\n */\nfunction buildResultMaterial(\n sourceMaterial: THREE.Material | null,\n options?: BooleanRenderOptions\n): THREE.Material {\n const material = sourceMaterial\n ? sourceMaterial.clone()\n : new THREE.MeshStandardMaterial({\n color: 0x2563eb,\n transparent: false,\n opacity: 1,\n side: THREE.FrontSide,\n });\n\n if (options?.color !== undefined && \"color\" in material) {\n (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color.set(\n options.color\n );\n }\n if (options?.opacity !== undefined) {\n material.opacity = options.opacity;\n material.transparent = options.opacity < 1 || material.transparent;\n }\n if (options?.transparent !== undefined) {\n material.transparent = options.transparent;\n }\n if (options?.side !== undefined) {\n material.side = options.side;\n }\n\n material.polygonOffset = true;\n material.polygonOffsetFactor = 1;\n material.polygonOffsetUnits = 1;\n material.needsUpdate = true;\n return material;\n}\n\n/**\n * Builds a display-quality outline buffer from the rendered mesh and falls back\n * to the kernel-provided edges when the client-side extraction is empty.\n */\nfunction getRenderableOutlinePositions(\n geometry: THREE.BufferGeometry,\n fallbackSerialized: string\n) {\n const edgesGeometry = new THREE.EdgesGeometry(\n geometry,\n BOOLEAN_OUTLINE_THRESHOLD_DEGREES\n );\n const positionsAttribute = edgesGeometry.getAttribute(\"position\");\n const positions =\n positionsAttribute && positionsAttribute.count > 0\n ? Array.from(positionsAttribute.array as ArrayLike<number>)\n : [];\n edgesGeometry.dispose();\n\n if (positions.length > 0) {\n return positions;\n }\n\n return JSON.parse(fallbackSerialized) as number[];\n}\n","import { executeBooleanSubtractionMany } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\n/**\n * Operand types accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperand = BooleanOperand;\n\n/**\n * Array-only operand list accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperands = ShapeSubtractOperand[];\n\n/**\n * Options accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\n\n/**\n * Return type for shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractResult = BooleanResult;\n\n/**\n * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.\n */\nexport function subtractShapeOperand(\n host: ShapeSubtractOperand,\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n if (!Array.isArray(operands)) {\n throw new Error(\n \"shape.subtract(...) now requires an operand array. Pass shape.subtract([operand], options) even for a single cutter.\"\n );\n }\n\n return executeBooleanSubtractionMany(host, operands, options);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport { clonePlacement, toObjectTransformation } from \"../editor\";\nimport { createFreeformGeometry, type FreeformGeometry } from \"../freeform\";\nimport type { FreeformSource, ObjectTransformation } from \"../freeform/types\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport { getUUID } from \"../utils/randomizer\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\n\n/**\n * Construction options for a generic BRep-backed solid.\n */\nexport interface ISolidOptions {\n ogid?: string;\n brep: FreeformSource;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Solid`.\n */\nexport interface SolidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Additional options accepted when creating a `Solid` through face extrusion.\n */\nexport interface ExtrudeSolidOptions\n extends Omit<ISolidOptions, \"brep\" | \"ogid\" | \"anchor\" | \"translation\" | \"rotation\" | \"scale\"> {\n ogid?: string;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Generic renderable BRep-backed solid used for extrusion outputs and other\n * kernel results that are not dedicated parametric shapes.\n */\nexport class Solid extends THREE.Mesh {\n ogid: string;\n options: ISolidOptions = {\n brep: \"{}\",\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n anchor: new Vector3(0, 0, 0),\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private solid: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options: ISolidOptions) {\n super();\n\n this.ogid = options.ogid ?? getUUID();\n this.options = {\n ...this.options,\n ...options,\n ogid: this.ogid,\n anchor: cloneVector(options.anchor, [0, 0, 0]),\n translation: cloneVector(options.translation, [0, 0, 0]),\n rotation: cloneVector(options.rotation, [0, 0, 0]),\n scale: cloneVector(options.scale, [1, 1, 1]),\n };\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n this.solid = createFreeformGeometry(this.options.brep, {\n id: this.ogid,\n placement: this.getPlacementTransform(),\n });\n this.generateGeometry();\n }\n\n /**\n * Extrudes a face-like BRep source and wraps the result as a renderable solid.\n *\n * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.\n */\n static extrude(\n source: FreeformSource,\n height: number,\n options: ExtrudeSolidOptions\n ) {\n return new Solid({\n ...options,\n brep: extrudeBrepFace(source, height),\n });\n }\n\n /**\n * Returns the current placement values as cloned vectors.\n */\n getPlacement() {\n return clonePlacement(this.getPlacementTransform());\n }\n\n /**\n * Applies translation, rotation, and scale updates to the wrapped BRep.\n */\n setPlacement(placement: SolidPlacementOptions) {\n this.options.translation = cloneVector(\n placement.translation ?? this.options.translation,\n [0, 0, 0]\n );\n this.options.rotation = cloneVector(\n placement.rotation ?? this.options.rotation,\n [0, 0, 0]\n );\n this.options.scale = cloneVector(\n placement.scale ?? this.options.scale,\n [1, 1, 1]\n );\n\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getAnchor() {\n return this.getPlacementTransform().anchor.clone();\n }\n\n setAnchor(anchor: Vector3) {\n this.options.anchor = anchor.clone();\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n /**\n * Solid is always convertible back to the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct editing of this solid's BRep.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getLocalBrepSerialized(), {\n id,\n placement: this.getPlacementTransform(),\n });\n }\n\n /**\n * Returns the world-space serialized BRep payload for this solid.\n */\n getBrepSerialized() {\n return this.solid.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload for this solid.\n */\n getLocalBrepSerialized() {\n return this.solid.getLocalBrepSerialized();\n }\n\n /**\n * Returns the parsed world-space BRep object for this solid.\n */\n getBrepData() {\n const brepSerialized = this.getBrepSerialized();\n if (!brepSerialized) {\n throw new Error(\"Brep data is not available for this solid.\");\n }\n return JSON.parse(brepSerialized);\n }\n\n /**\n * Subtracts one or more boolean operands from this solid.\n *\n * This is the main shape-level boolean workflow after operations like\n * `polygon.extrude(height)` or `Solid.extrude(...)`.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Rebuilds the visible mesh and outline from the current freeform geometry.\n */\n generateGeometry() {\n const bufferData = this.solid.getGeometryBuffer();\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n let material: THREE.MeshStandardMaterial;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n material = this.material;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: false,\n opacity: 1,\n depthWrite: true,\n side: THREE.FrontSide,\n });\n this.material = material;\n }\n\n material.color.set(this.options.color);\n material.transparent = false;\n material.opacity = 1;\n material.depthWrite = true;\n material.side = THREE.FrontSide;\n material.needsUpdate = true;\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = this.solid.getOutlineGeometryBuffer();\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.solid.getOutlineGeometryBuffer(),\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n private getPlacementTransform(): ObjectTransformation {\n return toObjectTransformation({\n anchor: cloneVector(this.options.anchor, [0, 0, 0]),\n translation: cloneVector(this.options.translation, [0, 0, 0]),\n rotation: cloneVector(this.options.rotation, [0, 0, 0]),\n scale: cloneVector(this.options.scale, [1, 1, 1]),\n });\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const attribute = geometry.getAttribute(\"position\");\n if (\n !(attribute instanceof THREE.BufferAttribute) ||\n attribute.itemSize !== 3 ||\n attribute.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n (attribute.array as Float32Array).set(positions);\n attribute.needsUpdate = true;\n }\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n","import * as THREE from \"three\";\nimport { OGPolygon, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { Solid } from \"./solid\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\n\n/**\n * Construction options for a planar polygon.\n */\nexport interface IPolygonOptions {\n ogid?: string;\n vertices: Vector3[];\n holes?: Vector3[][];\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface PolygonPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial polygon config updates that regenerate the profile when geometry changes.\n */\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Placement updates accepted by `Polygon`.\n */\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\n\n/**\n * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.\n */\nexport class Polygon extends THREE.Mesh {\n ogid: string;\n options: IPolygonOptions = {\n vertices: [],\n holes: [],\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n polygon: OGPolygon;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options?: IPolygonOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polygon = new OGPolygon(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n vertices: this.options.vertices.map((vertex) => vertex.clone()),\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polygon\");\n }\n }\n\n setConfig(options: PolygonConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"vertices\" in options ||\n \"holes\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.polygon.set_config(this.options.vertices.map((vertex) => vertex.clone()));\n (this.options.holes ?? []).forEach((hole) => {\n this.polygon.add_holes(hole.map((vertex) => vertex.clone()));\n });\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polygon.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polygon.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polygon.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolygonPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polygon.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n /**\n * Returns the editing capability payload advertised by parametric wrappers.\n */\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"profile\");\n }\n\n /**\n * Polygon always supports conversion into the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct BRep editing of this polygon.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.disposeResources();\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.polygon.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.side = THREE.DoubleSide;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshBasicMaterial({\n color: this.options.color,\n side: THREE.DoubleSide,\n });\n }\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.polygon.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n addVertices(vertices: Vector3[]) {\n if (!this.polygon) return;\n this.setConfig({\n vertices: vertices.map((vertex) => vertex.clone()),\n });\n }\n\n addHole(holeVertices: Vector3[]) {\n if (!this.polygon) return;\n this.options.holes = [\n ...(this.options.holes ?? []),\n holeVertices.map((vertex) => vertex.clone()),\n ];\n this.setConfig({\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n });\n }\n\n /**\n * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.\n *\n * This is the recommended public path when a browser CAD or AEC workflow\n * starts from a planar profile and needs a boolean-ready solid.\n */\n extrude(height: number) {\n const config = this.getConfig();\n const placement = this.getPlacement();\n const solid = new Solid({\n brep: extrudeBrepFace(this.polygon.get_local_brep_serialized(), height),\n color: config.color,\n fatOutlines: config.fatOutlines,\n outlineWidth: config.outlineWidth,\n anchor: this.getAnchor(),\n translation: placement.translation.clone(),\n rotation: placement.rotation.clone(),\n scale: placement.scale.clone(),\n });\n\n solid.outline = this.outline;\n solid.outlineColor = this.outlineColor;\n return solid;\n }\n\n /**\n * Returns the serialized BRep payload for this polygon.\n */\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n /**\n * Subtracts one or more boolean operands from this polygon.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.polygon.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometryMaterial() {\n this.disposeResources();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n dispose() {\n this.disposeResources();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n\n private disposeResources() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\n }\n}\n","import { OGCylinder, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a cylinder shape.\n */\nexport interface ICylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n segments: number;\n angle: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Cylinder`.\n */\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Cylinder.setConfig(...)`.\n */\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cylinder` placement updates.\n */\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\n\n/**\n * Cylinder wrapper backed by the kernel cylindrical primitive.\n */\nexport class Cylinder extends THREE.Mesh {\n ogid: string;\n options: ICylinderOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n height: 1,\n segments: 32,\n angle: 2 * Math.PI,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n \n private cylinder: OGCylinder;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICylinderOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cylinder = new OGCylinder(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n height: this.options.height,\n segments: this.options.segments,\n angle: this.options.angle,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Cylinder\");\n }\n }\n\n setConfig(options: CylinderConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"height\" in options ||\n \"segments\" in options ||\n \"angle\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { radius, height, segments, angle, center } = this.options;\n this.cylinder.set_config(\n center.clone(),\n radius,\n height,\n angle,\n segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.cylinder.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CylinderPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cylinder.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cylinder\", \"radial\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cylinder.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.cylinder.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cylinder.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n if (!this.cylinder) return null;\n const brepData = this.cylinder.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cylinder.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cylinder.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cylinder.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Placement updates accepted by `Cuboid`.\n */\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Construction options for a cuboid shape.\n */\nexport interface ICuboidOptions extends CuboidPlacementOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\n/**\n * Partial config payload accepted by `Cuboid.setConfig(...)`.\n */\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cuboid` placement updates.\n */\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\n/**\n * Box-shaped solid wrapper backed by the kernel cuboid primitive.\n */\nexport class Cuboid extends THREE.Mesh {\n ogid: string;\n options: ICuboidOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n fatOutlines: false,\n outlineWidth: 1,\n };\n\n private cuboid: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICuboidOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cuboid = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n setConfig(options: CuboidConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.cuboid.set_config(\n this.options.center.clone(),\n this.options.width,\n this.options.height,\n this.options.depth\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n generateGeometry() {\n const geometryData = Array.from(this.cuboid.get_geometry_buffer());\n this.writePositionsToGeometry(this.geometry, geometryData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cuboid.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.cuboid) return null;\n const brepData = this.cuboid.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cuboid.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cuboid.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cuboid.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n getAnchor() {\n const anchor = this.cuboid.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CuboidPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cuboid.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cuboid.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { booleanSubtraction } from \"../operations/boolean\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for an architectural opening volume.\n */\nexport interface IOpeningOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Opening`.\n */\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Opening.setConfig(...)`.\n */\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Opening` placement updates.\n */\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\n/**\n * Opening wrapper used as a subtractive solid in architectural workflows.\n */\nexport class Opening extends THREE.Mesh {\n ogid: string;\n options: IOpeningOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 0.2,\n color: 0xdad7cd,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n }\n \n private opening: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set height(value: number) {\n this.setConfig({ height: value });\n }\n\n set depth(value: number) {\n this.setConfig({ depth: value });\n }\n\n get dimensions() {\n return {\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n };\n }\n\n constructor(options?: IOpeningOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.opening = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Opening\");\n }\n }\n\n setConfig(options: OpeningConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.opening.set_config(\n center.clone(),\n width,\n height,\n depth\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.opening.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: OpeningPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.opening.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"opening\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.opening.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.opening.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0;\n this.material.depthWrite = false;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0,\n depthWrite: false,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.opening.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.opening) return null;\n const brepData = this.opening.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this opening.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands from this opening volume.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n *\n * Prefer this helper for wall, slab, and other host-cutting workflows in\n * browser-based AEC/BIM tools.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return booleanSubtraction(host, this, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.opening.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a sphere shape.\n */\nexport interface ISphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n widthSegments: number;\n heightSegments: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sphere`.\n */\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sphere.setConfig(...)`.\n */\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sphere` placement updates.\n */\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n\ninterface ISphereKernelInstance {\n set_config: (\n ..._args: [Vector3, number, number, number]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SphereKernelConstructor = new (..._args: [string]) => ISphereKernelInstance;\n\n\n/**\n * Sphere wrapper backed by the kernel sphere primitive.\n */\nexport class Sphere extends THREE.Mesh {\n ogid: string;\n options: ISphereOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n widthSegments: 24,\n heightSegments: 16,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sphere: ISphereKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISphereOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n\n const sphereKey = [\"OG\", \"Sphere\"].join(\"\");\n const sphereExport = (OGKernel as Record<string, unknown>)[sphereKey];\n if (typeof sphereExport !== \"function\") {\n throw new Error(\n \"OGSphere is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SphereKernel = sphereExport as SphereKernelConstructor;\n this.sphere = new SphereKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n widthSegments: this.options.widthSegments,\n heightSegments: this.options.heightSegments,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sphere\");\n }\n }\n\n setConfig(options: SphereConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"widthSegments\" in options ||\n \"heightSegments\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.sphere.set_config(\n this.options.center.clone(),\n this.options.radius,\n this.options.widthSegments,\n this.options.heightSegments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sphere.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: SpherePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sphere.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sphere\", \"radial\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sphere.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sphere.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sphere.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sphere.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this sphere.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this sphere.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const lineBuffer = Array.from(this.sphere.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: lineBuffer,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGWedge, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a wedge/prism shape.\n */\nexport interface IWedgeOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Wedge`.\n */\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Wedge.setConfig(...)`.\n */\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Wedge` placement updates.\n */\nexport type WedgePlacementUpdate = WedgePlacementOptions;\n\n/**\n * Wedge wrapper backed by the kernel wedge primitive.\n */\nexport class Wedge extends THREE.Mesh {\n ogid: string;\n options: IWedgeOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private wedge: OGWedge;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: IWedgeOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.wedge = new OGWedge(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Wedge\");\n }\n }\n\n setConfig(options: WedgeConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.wedge.set_config(center.clone(), width, height, depth);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.wedge.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: WedgePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.wedge.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"wedge\", \"wedge\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.wedge.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.wedge.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n const brepData = this.wedge.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this wedge.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this wedge.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a swept solid.\n */\nexport interface ISweepOptions {\n ogid?: string;\n path: Vector3[];\n profile: Vector3[];\n color: number;\n capStart?: boolean;\n capEnd?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sweep`.\n */\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sweep.setConfig(...)`.\n */\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sweep` placement updates.\n */\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n\ninterface ISweepKernelInstance {\n set_config_with_caps: (\n ..._args: [Vector3[], Vector3[], boolean, boolean]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n set_anchor: (..._args: [Vector3]) => void;\n reset_anchor: () => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SweepKernelConstructor = new (..._args: [string]) => ISweepKernelInstance;\n\n\n/**\n * Sweep wrapper backed by the kernel sweep primitive.\n */\nexport class Sweep extends THREE.Mesh {\n ogid: string;\n options: ISweepOptions = {\n path: [\n new Vector3(0, 0, 0),\n new Vector3(0, 1, 0),\n ],\n profile: [\n new Vector3(-0.25, 0, -0.25),\n new Vector3(0.25, 0, -0.25),\n new Vector3(0.25, 0, 0.25),\n new Vector3(-0.25, 0, 0.25),\n ],\n color: 0x00ff00,\n capStart: true,\n capEnd: true,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sweep: ISweepKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISweepOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n const sweepExport = (OGKernel as Record<string, unknown>)[\"OGSweep\"];\n if (typeof sweepExport !== \"function\") {\n throw new Error(\n \"OGSweep is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SweepKernel = sweepExport as SweepKernelConstructor;\n this.sweep = new SweepKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n path: this.options.path.map((point) => point.clone()),\n profile: this.options.profile.map((point) => point.clone()),\n color: this.options.color,\n capStart: this.options.capStart,\n capEnd: this.options.capEnd,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sweep\");\n }\n\n if (this.options.path.length < 2) {\n throw new Error(\"Sweep path requires at least 2 points.\");\n }\n\n if (this.options.profile.length < 3) {\n throw new Error(\"Sweep profile requires at least 3 points.\");\n }\n }\n\n setConfig(options: SweepConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"path\" in options ||\n \"profile\" in options ||\n \"capStart\" in options ||\n \"capEnd\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.validateOptions();\n\n const path = this.options.path.map((point) => point.clone());\n const profile = this.options.profile.map((point) => point.clone());\n const capStart = this.options.capStart ?? true;\n const capEnd = this.options.capEnd ?? true;\n\n this.sweep.set_config_with_caps(path, profile, capStart, capEnd);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sweep.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.sweep.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.sweep.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: SweepPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sweep.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sweep\", \"sweep\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sweep.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sweep.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sweep.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Sweep.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this sweep.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Arc } from \"../primitives/arc\";\nimport { Curve } from \"../primitives/curve\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\n\n/**\n * Adds a basic primitives showcase to the provided scene.\n */\nexport function createPrimitivesExample(scene: THREE.Scene) {\n const line = new Line({\n start: new Vector3(-3.0, 0.0, -2.0),\n end: new Vector3(-1.0, 0.0, -1.0),\n color: 0x111827,\n });\n\n const polyline = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, 1.6),\n new Vector3(-1.4, 0.0, 2.4),\n new Vector3(-0.7, 0.0, 1.8),\n new Vector3(-0.2, 0.0, 2.6),\n ],\n color: 0x0284c7,\n });\n\n const arc = new Arc({\n center: new Vector3(1.0, 0.0, -1.0),\n radius: 1.0,\n startAngle: 0.0,\n endAngle: Math.PI * 1.5,\n segments: 32,\n color: 0xb91c1c,\n });\n\n const rectangle = new Rectangle({\n center: new Vector3(2.0, 0.0, 1.8),\n width: 1.5,\n breadth: 0.9,\n color: 0x1d4ed8,\n });\n\n const curve = new Curve({\n controlPoints: [\n new Vector3(-0.8, 0.0, -2.2),\n new Vector3(0.0, 0.0, -2.4),\n new Vector3(0.9, 0.0, -1.8),\n new Vector3(1.6, 0.0, -2.0),\n ],\n color: 0x7c3aed,\n });\n\n scene.add(line);\n scene.add(polyline);\n scene.add(arc);\n scene.add(rectangle);\n scene.add(curve);\n\n return { line, polyline, arc, rectangle, curve };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Cylinder } from \"../shapes/cylinder\";\nimport { Opening } from \"../shapes/opening\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\nimport { Wedge } from \"../shapes/wedge\";\n\n/**\n * Adds a basic shapes showcase to the provided scene.\n */\nexport function createShapesExample(scene: THREE.Scene) {\n const fatOutlineWidth = 4;\n\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.0, 0.0, -0.5),\n new Vector3(-2.2, 0.0, 0.5),\n new Vector3(-1.2, 0.0, 0.2),\n new Vector3(-1.5, 0.0, -0.8),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n polygon.outline = true;\n\n const cuboid = new Cuboid({\n center: new Vector3(0.0, 0.8, -1.2),\n width: 1.2,\n height: 1.6,\n depth: 1.0,\n color: 0x10b981,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cuboid.outline = true;\n\n const cylinder = new Cylinder({\n center: new Vector3(1.8, 0.8, -0.8),\n radius: 0.6,\n height: 1.6,\n segments: 28,\n angle: Math.PI * 2,\n color: 0xf97316,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cylinder.outline = true;\n\n const wedge = new Wedge({\n center: new Vector3(3.4, 0.8, -1.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x7c3aed,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n wedge.outline = true;\n\n const sphere = new Sphere({\n center: new Vector3(0.6, 1.0, 1.2),\n radius: 0.9,\n widthSegments: 28,\n heightSegments: 18,\n color: 0x0ea5e9,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sphere.outline = true;\n\n const opening = new Opening({\n center: new Vector3(2.4, 0.9, 1.2),\n width: 1.0,\n height: 1.8,\n depth: 0.3,\n color: 0x9ca3af,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n opening.outline = true;\n\n const sweep = new Sweep({\n path: [\n new Vector3(-2.8, 0.0, 2.4),\n new Vector3(-2.2, 0.6, 2.8),\n new Vector3(-1.4, 1.2, 2.4),\n new Vector3(-0.8, 1.7, 1.8),\n ],\n profile: [\n new Vector3(-0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, 0.2),\n new Vector3(-0.2, 0.0, 0.2),\n ],\n color: 0x14b8a6,\n capStart: true,\n capEnd: true,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sweep.outline = true;\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(cylinder);\n scene.add(wedge);\n scene.add(sphere);\n scene.add(opening);\n scene.add(sweep);\n\n return { polygon, cuboid, cylinder, wedge, sphere, opening, sweep };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Sweep } from \"../shapes/sweep\";\n\ntype KernelVertex = {\n position: {\n x: number;\n y: number;\n z: number;\n };\n};\n\ntype KernelBrep = {\n vertices: KernelVertex[];\n};\n\nfunction toVector3List(vertices: KernelVertex[]): Vector3[] {\n return vertices.map((vertex) => {\n const { x, y, z } = vertex.position;\n return new Vector3(x, y, z);\n });\n}\n\nexport function createSweepExample(scene: THREE.Scene) {\n const pathPrimitive = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, -1.0),\n new Vector3(-1.2, 0.5, 0.2),\n new Vector3(0.0, 1.1, 0.9),\n new Vector3(1.1, 1.7, 0.3),\n new Vector3(2.0, 2.2, -0.8),\n ],\n color: 0x444444,\n });\n\n const profilePrimitive = new Rectangle({\n center: new Vector3(0, 0, 0),\n width: 0.7,\n breadth: 0.4,\n color: 0x1f77b4,\n });\n\n // const profilePrimitive = new Arc();\n\n const profileBrep = profilePrimitive.getBrep() as KernelBrep;\n const profilePoints = toVector3List(profileBrep.vertices);\n\n const sweep = new Sweep({\n path: pathPrimitive.options.points.map((point) => point.clone()),\n profile: profilePoints,\n color: 0x2a9d8f,\n capStart: true,\n capEnd: false,\n fatOutlines: true,\n outlineWidth: 4,\n });\n\n scene.add(pathPrimitive);\n scene.add(profilePrimitive);\n scene.add(sweep);\n\n return {\n pathPrimitive,\n profilePrimitive,\n sweep,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Curve } from \"../primitives/curve\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction toRenderableOffsetPoints(points: Vector3[], isClosed: boolean): Vector3[] {\n const output = points.map((point) => point.clone());\n if (!isClosed || output.length === 0) {\n return output;\n }\n\n if (!areClose(output[0], output[output.length - 1])) {\n output.push(output[0].clone());\n }\n\n return output;\n}\n\nexport function createOffsetExample(scene: THREE.Scene) {\n const baseLine = new Line({\n start: new Vector3(-3.0, 0.0, -2.2),\n end: new Vector3(-0.7, 0.0, -1.1),\n color: 0x1f2937,\n });\n\n const lineOffset = baseLine.getOffset(0.35, 35.0, true);\n const lineOffsetPrimitive = new Line({\n start: lineOffset.points[0],\n end: lineOffset.points[1],\n color: 0xef4444,\n });\n\n const basePolyline = new Polyline({\n points: [\n new Vector3(-1.2, 0.0, -2.4),\n new Vector3(0.2, 0.0, -1.6),\n new Vector3(0.8, 0.0, -0.4),\n new Vector3(0.0, 0.0, -0.2),\n new Vector3(2.5, 0.0, 1.2),\n ],\n color: 0x0f172a,\n });\n\n const polylineOffset = basePolyline.getOffset(0.45, 35.0, true);\n const polylineOffsetPrimitive = new Polyline({\n points: polylineOffset.points,\n color: 0xdc2626,\n });\n\n const baseRectangle = new Rectangle({\n center: new Vector3(1.2, 0.0, -2.1),\n width: 1.6,\n breadth: 1.0,\n color: 0x1d4ed8,\n });\n\n const rectangleOffset = baseRectangle.getOffset(0.25, 40.0, true);\n const rectangleOffsetPrimitive = new Polyline({\n points: toRenderableOffsetPoints(rectangleOffset.points, rectangleOffset.isClosed),\n color: 0xf97316,\n });\n\n const baseCurve = new Curve({\n controlPoints: [\n new Vector3(-3.0, 0.0, 1.3),\n new Vector3(-2.0, 0.0, 1.7),\n new Vector3(-1.1, 0.0, 1.6),\n new Vector3(-0.4, 0.0, 2.0),\n ],\n color: 0x0ea5e9,\n });\n\n const curveOffset = baseCurve.getOffset(0.3, 45.0, true);\n const curveOffsetPrimitive = new Polyline({\n points: curveOffset.points,\n color: 0xbe123c,\n });\n\n scene.add(baseLine);\n scene.add(lineOffsetPrimitive);\n scene.add(basePolyline);\n scene.add(polylineOffsetPrimitive);\n scene.add(baseRectangle);\n scene.add(rectangleOffsetPrimitive);\n scene.add(baseCurve);\n scene.add(curveOffsetPrimitive);\n\n return {\n baseLine,\n lineOffsetPrimitive,\n basePolyline,\n polylineOffsetPrimitive,\n baseRectangle,\n rectangleOffsetPrimitive,\n baseCurve,\n curveOffsetPrimitive,\n polylineOffset,\n rectangleOffset,\n curveOffset,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Polygon } from \"../shapes/polygon\";\nimport {\n BooleanError,\n CoincidentFacesError,\n CutterExceedsHostError,\n NonManifoldOutputError,\n OverlappingCuttersError,\n} from \"../operations/boolean-errors\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction buildWallOutline(left: Vector3[], right: Vector3[]): Vector3[] {\n if (left.length === 0 || right.length === 0) {\n return [];\n }\n\n const outline = [...left.map((point) => point.clone())];\n const rightReversed = [...right.map((point) => point.clone())].reverse();\n outline.push(...rightReversed);\n\n if (outline.length > 2 && areClose(outline[0], outline[outline.length - 1])) {\n outline.pop();\n }\n\n return outline;\n}\n\nexport interface WallFromOffsetsOptions {\n /**\n * Number of doors to subtract from the extruded wall. Doors are placed at\n * evenly distributed centerline-segment midpoints. Default `0` (no cuts).\n */\n doorCount?: number;\n /**\n * Cutter overshoot in millimeters. The debt sheet's `#6a` symptom is at\n * 1mm; default 1mm so callers exercise the snap-tolerance regime by default\n * when cuts are enabled.\n */\n overshootMm?: number;\n /**\n * Wall extrusion height in meters. Default `2.6` to match the example HTML.\n */\n height?: number;\n}\n\nfunction midpoint(a: Vector3, b: Vector3): Vector3 {\n return new Vector3((a.x + b.x) * 0.5, (a.y + b.y) * 0.5, (a.z + b.z) * 0.5);\n}\n\nfunction buildDoorCutters(\n centerlinePoints: Vector3[],\n count: number,\n overshootMeters: number,\n wallThickness: number,\n doorHeight: number\n): Cuboid[] {\n const cutters: Cuboid[] = [];\n const wallDepth = wallThickness + 2 * overshootMeters;\n const doorWidth = 0.6;\n\n const segments = centerlinePoints.length - 1;\n const stride = Math.max(1, Math.floor(segments / count));\n\n for (let doorIdx = 0; doorIdx < count; doorIdx++) {\n const segmentIdx = Math.min(segments - 1, doorIdx * stride);\n const a = centerlinePoints[segmentIdx];\n const b = centerlinePoints[segmentIdx + 1];\n const mid = midpoint(a, b);\n\n cutters.push(\n new Cuboid({\n width: doorWidth,\n height: doorHeight,\n depth: wallDepth,\n center: new Vector3(0, 0, 0),\n translation: new Vector3(mid.x, doorHeight * 0.5 + 0.001, mid.z),\n color: 0xef4444,\n })\n );\n }\n\n return cutters;\n}\n\n/**\n * Renders a human-readable description for a typed `BooleanError` (or any\n * other thrown value). Used by the example HTML to surface kernel failures\n * in a status panel without losing the structured payload.\n */\nexport function describeWallSubtractError(error: unknown): string {\n if (error instanceof OverlappingCuttersError) {\n return `OverlappingCuttersError @ cutter #${error.cutterIndex} (other #${error.otherIndex}): ${error.details ?? error.message}`;\n }\n if (error instanceof CutterExceedsHostError) {\n return `CutterExceedsHostError: cutter overshoots ${error.axis} by ${error.overshoot.toExponential(3)}`;\n }\n if (error instanceof CoincidentFacesError) {\n return `CoincidentFacesError: ${error.details ?? error.message}`;\n }\n if (error instanceof NonManifoldOutputError) {\n const samples = error.edgeSamples?.length ?? 0;\n return `NonManifoldOutputError: ${samples} non-manifold edges sampled — ${error.details ?? error.message}`;\n }\n if (error instanceof BooleanError) {\n return `BooleanError (${error.reason}, phase ${error.phase}): ${error.message}`;\n }\n if (error instanceof Error) {\n return `Untyped error: ${error.message}`;\n }\n return `Untyped error: ${String(error)}`;\n}\n\nexport function createWallFromOffsetsExample(\n scene: THREE.Scene,\n options: WallFromOffsetsOptions = {}\n) {\n const centerline = new Polyline({\n points: [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n color: 0x1f2937,\n });\n\n const wallThickness = 0.45;\n const half = wallThickness * 0.5;\n const acuteThreshold = 35.0;\n const bevel = true;\n const wallHeight = options.height ?? 2.6;\n\n const leftOffset = centerline.getOffset(half, acuteThreshold, bevel);\n const rightOffset = centerline.getOffset(-half, acuteThreshold, bevel);\n\n const leftOffsetPolyline = new Polyline({\n points: leftOffset.points,\n color: 0x22c55e,\n });\n\n const rightOffsetPolyline = new Polyline({\n points: rightOffset.points,\n color: 0xf97316,\n });\n\n const wallOutline = buildWallOutline(leftOffset.points, rightOffset.points);\n if (wallOutline.length < 3) {\n throw new Error(\"Failed to create wall polygon from offsets.\");\n }\n\n const wallPolygon = new Polygon({\n vertices: wallOutline,\n color: 0x3b82f6,\n });\n\n wallPolygon.position.y = 0.01;\n\n scene.add(centerline);\n scene.add(leftOffsetPolyline);\n scene.add(rightOffsetPolyline);\n scene.add(wallPolygon);\n\n let cutResult: { wall: THREE.Object3D; cutters: Cuboid[] } | null = null;\n let cutError: unknown = null;\n\n if ((options.doorCount ?? 0) > 0) {\n const overshootMeters = (options.overshootMm ?? 1) * 0.001;\n const wallSolid = wallPolygon.extrude(wallHeight);\n const cutters = buildDoorCutters(\n [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n options.doorCount ?? 0,\n overshootMeters,\n wallThickness,\n 2.1\n );\n\n try {\n const cutWall = wallSolid.subtract(cutters, {\n color: 0x3b82f6,\n transparent: false,\n opacity: 1,\n });\n scene.add(cutWall);\n cutResult = { wall: cutWall, cutters };\n } catch (error) {\n cutError = error;\n scene.add(wallSolid);\n cutResult = { wall: wallSolid, cutters };\n }\n }\n\n return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\n cutResult,\n cutError,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n BooleanResult,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\n\nexport type BooleanExampleOperation = \"union\" | \"intersection\" | \"subtraction\";\nexport type BooleanExampleMode = \"solid\" | \"polygon\" | \"extruded\";\n\nexport interface BooleanExampleBuildOptions extends BooleanExecutionOptions {\n mode: BooleanExampleMode;\n sphereCenter?: Vector3;\n polygonOffset?: Vector3;\n extrudedOffset?: Vector3;\n}\n\nexport interface BooleanExampleBuildResult {\n group: THREE.Group;\n lhs: THREE.Object3D;\n rhs: THREE.Object3D;\n result: BooleanResult;\n title: string;\n description: string;\n}\n\n/**\n * Builds a complete operand/result scene group for a boolean example page.\n */\nexport function createBooleanExample(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n): BooleanExampleBuildResult {\n const preset = createPreset(operation, options);\n\n const execute = getBooleanExecutor(operation);\n const result = execute(preset.lhsOperand, preset.rhsOperand, options);\n\n const group = new THREE.Group();\n group.add(preset.lhsVisual);\n group.add(preset.rhsVisual);\n group.add(result);\n\n return {\n group,\n lhs: preset.lhsVisual,\n rhs: preset.rhsVisual,\n result,\n title: preset.title,\n description: preset.description,\n };\n}\n\nfunction createPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n switch (options.mode) {\n case \"solid\":\n return createSolidPreset(operation, options);\n case \"polygon\":\n return createPolygonPreset(operation, options);\n case \"extruded\":\n return createExtrudedPreset(operation, options);\n }\n}\n\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const base = new Cuboid({\n center: new Vector3(-0.1, 0.0, 0.0),\n width: 2.1,\n height: 1.4,\n depth: 1.6,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const tool = new Sphere({\n center: options.sphereCenter ?? new Vector3(0.45, 0.12, 0.18),\n radius: operation === \"intersection\" ? 0.88 : 0.78,\n widthSegments: 22,\n heightSegments: 16,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Solid`,\n description: \"Cuboid and sphere overlap to demonstrate the 3D solid boolean path.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the coplanar polygon preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const polygonOffset = options.polygonOffset ?? new Vector3(0.0, 0.0, 0.0);\n const lhsVertices = [\n new Vector3(-1.8, 0.0, -0.8),\n new Vector3(0.4, 0.0, -0.8),\n new Vector3(0.4, 0.0, 1.0),\n new Vector3(-1.8, 0.0, 1.0),\n ];\n const rhsVertices = translateVertices(\n operation === \"subtraction\"\n ? [\n new Vector3(-0.55, 0.0, -0.35),\n new Vector3(1.2, 0.0, -0.35),\n new Vector3(1.2, 0.0, 0.65),\n new Vector3(-0.55, 0.0, 0.65),\n ]\n : [\n new Vector3(-0.4, 0.0, -1.1),\n new Vector3(1.55, 0.0, -1.1),\n new Vector3(1.55, 0.0, 0.7),\n new Vector3(-0.4, 0.0, 0.7),\n ],\n polygonOffset\n );\n\n const lhs = new Polygon({\n vertices: lhsVertices,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Polygon({\n vertices: rhsVertices,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Polygon`,\n description: \"Two coplanar polygon faces exercise the planar boolean path.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\n };\n}\n\n/**\n * Builds an extrusion-first preset that exercises polygon.extrude(height) and\n * reuses the standard solid boolean pipeline.\n */\nfunction createExtrudedPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const extrudedOffset = options.extrudedOffset ?? new Vector3(0.0, 0.0, 0.0);\n\n const wallProfile = new Polygon({\n vertices: [\n new Vector3(-2.2, 0.0, -0.18),\n new Vector3(2.2, 0.0, -0.18),\n new Vector3(2.2, 0.0, 0.18),\n new Vector3(-2.2, 0.0, 0.18),\n ],\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const openingProfile = new Polygon({\n vertices: [\n new Vector3(-0.7, 0.0, -0.34),\n new Vector3(0.9, 0.0, -0.34),\n new Vector3(0.9, 0.0, 0.34),\n new Vector3(-0.7, 0.0, 0.34),\n ],\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const wall = wallProfile.extrude(2.8);\n const opening = openingProfile.extrude(operation === \"intersection\" ? 1.45 : 1.35);\n opening.setTranslation(\n new Vector3(extrudedOffset.x, 0.85, extrudedOffset.z)\n );\n\n wall.outline = options.outline ?? true;\n opening.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Extruded Solid`,\n description:\n \"Two polygon.extrude(height) solids overlap to demonstrate renderable BRep booleans.\",\n lhsOperand: wall,\n rhsOperand: opening,\n lhsVisual: wall,\n rhsVisual: opening,\n };\n}\n\n/**\n * Selects the exported boolean helper that matches the current example mode.\n */\nfunction getBooleanExecutor(operation: BooleanExampleOperation) {\n switch (operation) {\n case \"union\":\n return booleanUnion;\n case \"intersection\":\n return booleanIntersection;\n case \"subtraction\":\n return booleanSubtraction;\n }\n}\n\n/**\n * Formats the operation name for example titles.\n */\nfunction capitalize(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Applies a uniform translation to the polygon operand so examples can move it\n * interactively without mutating the base preset coordinates.\n */\nfunction translateVertices(vertices: Vector3[], offset: Vector3) {\n return vertices.map(\n (vertex) =>\n new Vector3(\n vertex.x + offset.x,\n vertex.y + offset.y,\n vertex.z + offset.z\n )\n );\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport {\n FreeformEditResult,\n FreeformEditor,\n createFreeformEditor,\n} from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\nfunction topFaceId(freeformEditor: FreeformEditor): number | null {\n let bestFaceId: number | null = null;\n let bestY = Number.NEGATIVE_INFINITY;\n\n for (const face of freeformEditor.getTopologyRenderData().faces) {\n const info = freeformEditor.getFaceInfo(face.face_id);\n if (info.centroid.y > bestY) {\n bestY = info.centroid.y;\n bestFaceId = face.face_id;\n }\n }\n\n return bestFaceId;\n}\n\n/**\n * Demonstrates the intended editing flow for editor-controls:\n * parametric config/placement edits first, then explicit freeform conversion,\n * including wire-backed freeform edge insertion on a converted line.\n */\nexport function createEditorModesExample(scene: THREE.Scene) {\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.2, 0.0, -0.8),\n new Vector3(-2.2, 0.0, 0.4),\n new Vector3(-1.0, 0.0, 0.0),\n new Vector3(-1.5, 0.0, -1.2),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: 4,\n });\n polygon.outline = true;\n\n const polygonCapabilities = polygon.getEditCapabilities();\n polygon.setConfig({\n vertices: [\n new Vector3(-3.4, 0.0, -0.9),\n new Vector3(-2.0, 0.0, 0.6),\n new Vector3(-0.8, 0.0, -0.1),\n new Vector3(-1.6, 0.0, -1.4),\n ],\n });\n polygon.setPlacement({\n translation: new Vector3(0.0, 0.0, -0.2),\n });\n\n const cuboid = new Cuboid({\n center: new Vector3(1.2, 0.8, 0.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x10b981,\n fatOutlines: true,\n outlineWidth: 4,\n });\n cuboid.outline = true;\n\n const cuboidCapabilities = cuboid.getEditCapabilities();\n cuboid.setConfig({\n width: 1.6,\n height: 1.8,\n });\n cuboid.setPlacement({\n translation: new Vector3(0.2, 0.0, 0.0),\n rotation: new Vector3(0.0, Math.PI / 9.0, 0.0),\n });\n\n const guideLine = new Line({\n start: new Vector3(-3.4, 0.0, 1.6),\n end: new Vector3(-0.8, 0.0, 1.6),\n color: 0x475569,\n fatLines: true,\n width: 4,\n });\n guideLine.setPlacement({\n translation: new Vector3(0.0, 0.0, 0.2),\n });\n\n const guideLineCapabilities = guideLine.getEditCapabilities();\n const guideLineFreeform = guideLine.toFreeform(`${guideLine.ogid}-freeform`);\n const guideLineEditor = createFreeformEditor(guideLineFreeform);\n const guideLineEdge =\n guideLineEditor.getTopologyRenderData().edges[0]?.edge_id ?? null;\n let guideLineSplitResult: FreeformEditResult | null = null;\n\n if (guideLineEdge !== null) {\n guideLineSplitResult = guideLineEditor.splitEdge(guideLineEdge, 0.5, {\n includeTopologyRemap: true,\n });\n }\n\n const freeform = cuboid.toFreeform(`${cuboid.ogid}-freeform`);\n const freeformEditor = createFreeformEditor(freeform);\n const topFace = topFaceId(freeformEditor);\n let freeformResult: FreeformEditResult | null = null;\n\n if (topFace !== null) {\n freeformResult = freeformEditor.pushPullFace(topFace, 0.35, {\n includeTopologyRemap: true,\n });\n }\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(guideLine);\n\n return {\n polygon,\n cuboid,\n guideLine,\n polygonCapabilities,\n cuboidCapabilities,\n guideLineCapabilities,\n guideLineFreeform,\n guideLineEditor,\n guideLineSplitResult,\n freeform,\n freeformEditor,\n freeformResult,\n };\n}\n","/**\n * Public OpenGeometry JavaScript entrypoint.\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\nimport { SpotLabel } from \"./src/markup/spotMarker\";\nimport { OPEN_GEOMETRY_THREE_VERSION, OpenGeometryOptions } from \"./src/base-types\";\n\nexport type OUTLINE_TYPE = \"front\" | \"side\" | \"top\";\n\n/**\n * Binary STL export payload returned by export helpers.\n */\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\n/**\n * STEP text export payload returned by export helpers.\n */\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * IFC text export payload returned by export helpers.\n */\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * Shared runtime entrypoint used to initialize the OpenGeometry wasm module.\n */\nexport class OpenGeometry {\n static version = OPEN_GEOMETRY_THREE_VERSION;\n static instance: OpenGeometry | null = null;\n\n private _enableDebug: boolean = false;\n\n get enableDebug() {\n return this._enableDebug;\n }\n\n /**\n * Enables or disables debug mode for OpenGeometry.\n * When enabled, it logs debug information to the console.\n * Addtionally,\n * 1. The geometry will be rendered with a semi-transparent material.\n * 2. The faces will be rendered with a random color.\n * 3. The normals will be rendered for better visualization.\n * @param value - A boolean indicating whether to enable or disable debug mode.\n */\n set enableDebug(value: boolean) {\n this._enableDebug = value;\n if (this._enableDebug) {\n console.log(\"OpenGeometry Debug Mode Enabled\");\n }\n }\n\n constructor() {}\n\n /**\n * Asynchronously initializes the OpenGeometry wasm runtime and returns a\n * cached singleton instance on subsequent calls.\n *\n * Call this before constructing `Vector3` or any kernel-backed wrapper.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n *\n * @example\n * ```ts\n * await OpenGeometry.create({\n * wasmURL: \"/opengeometry_bg.wasm\",\n * });\n * ```\n */\n static async create(options: OpenGeometryOptions) {\n if (!OpenGeometry.instance) {\n const og = new OpenGeometry();\n await og.setup(options.wasmURL);\n OpenGeometry.instance = og;\n }\n return OpenGeometry.instance;\n }\n\n private async setup(wasmURL?: string) {\n if (wasmURL) {\n await init({ module_or_path: wasmURL });\n return;\n }\n\n await init();\n }\n}\n\n/**\n * Scene manager that stores serialized BRep snapshots in wasm for projection,\n * export, and other scene-level workflows.\n */\nexport { OGSceneManager };\n\n/**\n * Shared wasm-backed vector type used throughout the public API.\n *\n * Initialize `OpenGeometry.create(...)` before constructing `Vector3`.\n */\nexport { Vector3 };\n\nexport { SpotLabel };\n\n/**\n * Primitive wrappers (line/polyline/arc/rectangle/curve).\n */\nexport * from \"./src/primitives/index\";\n/**\n * Shape wrappers (polygon/cuboid/cylinder/wedge/opening/sweep/sphere).\n */\nexport * from \"./src/shapes/index\";\n/**\n * Reusable example builders for quickly wiring demo scenes.\n */\nexport * from \"./src/examples/index\";\n/**\n * First-class freeform geometry wrapper around the kernel OGFreeformGeometry API.\n */\nexport * from \"./src/freeform/index\";\n/**\n * Editing helpers that operate on parametric entities and freeform geometry.\n */\nexport * from \"./src/editor/index\";\n/**\n * Kernel-backed modeling operations.\n */\nexport * from \"./src/operations/index\";\n"],"names":["wasm","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getArrayU8FromWasm0","ptr","len","subarray","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","handleError","f","args","apply","e","__wbindgen_exn_store","debugString","val","type","description","name","length","Array","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","getStringFromWasm0","_assertClass","instance","klass","takeFromExternrefTable0","value","get","__externref_table_dealloc","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","passArrayJsValueToWasm0","array","add","setUint32","isLikeNone","x","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr1","len1","ptr2","len2","OGBooleanResult","__wrap","booleanIntersection","booleanSubtraction","booleanSubtractionMany","cutters_brep_serialized","extrudeBrepFace","local_brep_serialized","height","deferred3_0","deferred3_1","__wbindgen_free","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","Matrix3Finalization","FinalizationRegistry","register","unregister","__wbg_matrix3_free","Matrix3","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","constructor","matrix3_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","matrix3_set","clone","matrix3_clone","identity","matrix3_identity","determinant","matrix3_determinant","adjucate","matrix3_adjucate","inverse","matrix3_inverse","transpose","matrix3_transpose","Matrix4Finalization","__wbg_matrix4_free","Matrix4","elements","matrix4_elements","v1","matrix4_new","m9","m10","m11","m12","m13","m14","m15","matrix4_set","matrix4_clone","matrix4_identity","matrix4_determinant","matrix4_adjucate","matrix4_inverse","multiply","other","matrix4_multiply","incoming","matrix4_add","subtract","matrix4_subtract","flatten","matrix4_flatten","get_element_at","index","matrix4_get_element_at","is_zero","matrix4_is_zero","is_identity","matrix4_is_identity","matrix4_transpose","OGArcFinalization","__wbg_ogarc_free","OGArc","id","ogarc_set_id","deferred1_0","deferred1_1","ogarc_id","ogarc_new","set_config","center","radius","start_angle","end_angle","segments","Vector3","ogarc_set_config","set_center","ogarc_set_center","set_transform","position","rotation","scale","ogarc_set_transform","set_translation","translation","ogarc_set_translation","set_rotation","ogarc_set_rotation","set_scale","ogarc_set_scale","generate_geometry","ogarc_generate_geometry","dispose_points","ogarc_dispose_points","destroy","ogarc_destroy","get_brep_serialized","ogarc_get_brep_serialized","get_local_brep_serialized","ogarc_get_local_brep_serialized","get_geometry_serialized","ogarc_get_geometry_serialized","get_local_geometry_serialized","ogarc_get_local_geometry_serialized","get_geometry_buffer","ogarc_get_geometry_buffer","get_local_geometry_buffer","ogarc_get_local_geometry_buffer","get_anchor","ogarc_get_anchor","OGBooleanResultFinalization","__wbg_ogbooleanresult_free","brepSerialized","ogbooleanresult_brepSerialized","geometrySerialized","ogbooleanresult_geometrySerialized","outlineGeometrySerialized","ogbooleanresult_outlineGeometrySerialized","reportJson","ogbooleanresult_reportJson","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","width","depth","ogcuboid_set_config","ogcuboid_set_center","ogcuboid_set_transform","ogcuboid_set_translation","ogcuboid_set_rotation","ogcuboid_set_scale","ogcuboid_generate_geometry","ogcuboid_get_brep_serialized","ogcuboid_get_local_brep_serialized","ogcuboid_get_geometry_serialized","ogcuboid_get_local_geometry_serialized","ogcuboid_get_geometry_buffer","ogcuboid_get_local_geometry_buffer","get_outline_geometry_serialized","ogcuboid_get_outline_geometry_serialized","get_local_outline_geometry_serialized","ogcuboid_get_local_outline_geometry_serialized","get_outline_geometry_buffer","ogcuboid_get_outline_geometry_buffer","get_local_outline_geometry_buffer","ogcuboid_get_local_outline_geometry_buffer","ogcuboid_get_anchor","OGCurveFinalization","__wbg_ogcurve_free","OGCurve","ogcurve_set_id","ogcurve_id","ogcurve_new","control_points","ogcurve_set_config","ogcurve_set_transform","ogcurve_set_translation","ogcurve_set_rotation","ogcurve_set_scale","ogcurve_generate_geometry","ogcurve_get_brep_serialized","ogcurve_get_local_brep_serialized","ogcurve_get_geometry_serialized","ogcurve_get_local_geometry_serialized","ogcurve_get_geometry_buffer","ogcurve_get_local_geometry_buffer","ogcurve_get_anchor","set_anchor","anchor","ogcurve_set_anchor","reset_anchor","ogcurve_reset_anchor","get_offset_serialized","distance","acute_threshold_degrees","bevel","ogcurve_get_offset_serialized","dispose","ogcurve_dispose","OGCylinderFinalization","__wbg_ogcylinder_free","OGCylinder","ogcylinder_set_id","ogcylinder_id","ogcylinder_new","angle","ogcylinder_set_config","ogcylinder_set_center","ogcylinder_set_transform","ogcylinder_set_translation","ogcylinder_set_rotation","ogcylinder_set_scale","generate_brep","ogcylinder_generate_brep","clean_geometry","ogcylinder_clean_geometry","ogcylinder_generate_geometry","ogcylinder_get_brep_serialized","ogcylinder_get_local_brep_serialized","ogcylinder_get_geometry_serialized","ogcylinder_get_local_geometry_serialized","ogcylinder_get_geometry_buffer","ogcylinder_get_local_geometry_buffer","ogcylinder_get_outline_geometry_serialized","ogcylinder_get_local_outline_geometry_serialized","ogcylinder_get_outline_geometry_buffer","ogcylinder_get_local_outline_geometry_buffer","ogcylinder_get_anchor","OGEntityRegistryFinalization","__wbg_ogentityregistry_free","OGEntityRegistry","ogentityregistry_new","registerEntity","kind","brep_json","ogentityregistry_registerEntity","unregisterEntity","ogentityregistry_unregisterEntity","clearEntities","ogentityregistry_clearEntities","projectCurrentToViews","views_json","ogentityregistry_projectCurrentToViews","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","deferred2_0","deferred2_1","OGFreeformGeometry","ogfreeformeditor_getTopologyRenderData","getFaceInfo","face_id","ogfreeformeditor_getFaceInfo","getEdgeInfo","edge_id","ogfreeformeditor_getEdgeInfo","getVertexInfo","vertex_id","ogfreeformeditor_getVertexInfo","getEditCapabilities","ogfreeformeditor_getEditCapabilities","getFaceEditCapabilities","ogfreeformeditor_getFaceEditCapabilities","getEdgeEditCapabilities","ogfreeformeditor_getEdgeEditCapabilities","getVertexEditCapabilities","ogfreeformeditor_getVertexEditCapabilities","pushPullFace","ogfreeformeditor_pushPullFace","moveFace","deferred4_0","deferred4_1","ogfreeformeditor_moveFace","ptr3","len3","moveEdge","ogfreeformeditor_moveEdge","moveVertex","ogfreeformeditor_moveVertex","extrudeFace","ogfreeformeditor_extrudeFace","cutFace","start_edge_id","start_t","end_edge_id","end_t","ogfreeformeditor_cutFace","insertVertexOnEdge","t","ogfreeformeditor_insertVertexOnEdge","splitEdge","ogfreeformeditor_splitEdge","loopCut","ogfreeformeditor_loopCut","removeVertex","ogfreeformeditor_removeVertex","OGFreeformGeometryFinalization","__wbg_ogfreeformgeometry_free","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getGeometryBuffer","ogfreeformgeometry_getGeometryBuffer","getLocalGeometryBuffer","ogfreeformgeometry_getLocalGeometryBuffer","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","getOutlineGeometryBuffer","ogfreeformgeometry_getOutlineGeometryBuffer","getLocalOutlineGeometryBuffer","ogfreeformgeometry_getLocalOutlineGeometryBuffer","getPlacementSerialized","ogfreeformgeometry_getPlacementSerialized","setPlacementSerialized","placement_serialized","ogfreeformgeometry_setPlacementSerialized","setTransform","ogfreeformgeometry_setTransform","setTranslation","ogfreeformgeometry_setTranslation","setRotation","ogfreeformgeometry_setRotation","setScale","ogfreeformgeometry_setScale","setAnchor","ogfreeformgeometry_setAnchor","OGIfcExportResultFinalization","__wbg_ogifcexportresult_free","OGIfcExportResult","text","ogifcexportresult_text","ogifcexportresult_reportJson","OGLineFinalization","__wbg_ogline_free","OGLine","ogline_set_id","ogline_id","ogline_new","start","end","ogline_set_config","ogline_set_transform","ogline_set_translation","ogline_set_rotation","ogline_set_scale","ogline_generate_geometry","ogline_dispose_points","ogline_destroy","ogline_get_brep_serialized","ogline_get_local_brep_serialized","ogline_get_geometry_serialized","ogline_get_local_geometry_serialized","ogline_get_geometry_buffer","ogline_get_local_geometry_buffer","ogline_set_anchor","ogline_reset_anchor","ogline_get_offset_serialized","get_dxf_serialized","ogline_get_dxf_serialized","OGPolygonFinalization","__wbg_ogpolygon_free","OGPolygon","ogpolygon_set_id","ogpolygon_id","ogpolygon_new","points","ogpolygon_set_config","ogpolygon_set_transform","ogpolygon_set_translation","ogpolygon_set_rotation","ogpolygon_set_scale","add_vertices","vertices","ogpolygon_add_vertices","add_holes","hole","ogpolygon_add_holes","ogpolygon_clean_geometry","ogpolygon_generate_brep","ogpolygon_generate_geometry","ogpolygon_get_brep_serialized","ogpolygon_get_local_brep_serialized","ogpolygon_get_geometry_serialized","ogpolygon_get_local_geometry_serialized","ogpolygon_get_geometry_buffer","ogpolygon_get_local_geometry_buffer","ogpolygon_get_outline_geometry_serialized","ogpolygon_get_local_outline_geometry_serialized","ogpolygon_get_outline_geometry_buffer","ogpolygon_get_local_outline_geometry_buffer","ogpolygon_get_anchor","ogpolygon_set_anchor","ogpolygon_reset_anchor","OGPolylineFinalization","__wbg_ogpolyline_free","OGPolyline","ogpolyline_set_id","ogpolyline_id","ogpolyline_new","ogpolyline_clone","ogpolyline_set_config","ogpolyline_set_transform","ogpolyline_set_translation","ogpolyline_set_rotation","ogpolyline_set_scale","ogpolyline_generate_geometry","add_multiple_points","ogpolyline_add_multiple_points","add_point","point","ogpolyline_add_point","get_points","ogpolyline_get_points","get_raw_points","ogpolyline_get_raw_points","is_closed","ogpolyline_is_closed","ogpolyline_get_offset_serialized","check_closed_test","ogpolyline_check_closed_test","ogpolyline_get_brep_serialized","ogpolyline_get_local_brep_serialized","ogpolyline_get_geometry_serialized","ogpolyline_get_local_geometry_serialized","ogpolyline_get_geometry_buffer","ogpolyline_get_local_geometry_buffer","ogpolyline_set_anchor","ogpolyline_reset_anchor","OGRectangleFinalization","__wbg_ogrectangle_free","OGRectangle","ogrectangle_set_id","ogrectangle_id","ogrectangle_new","breadth","ogrectangle_set_config","ogrectangle_set_center","ogrectangle_set_transform","ogrectangle_set_translation","ogrectangle_set_rotation","ogrectangle_set_scale","ogrectangle_generate_geometry","ogrectangle_get_brep_serialized","ogrectangle_get_local_brep_serialized","ogrectangle_get_geometry_serialized","ogrectangle_get_local_geometry_serialized","ogrectangle_get_geometry_buffer","ogrectangle_get_local_geometry_buffer","ogrectangle_get_anchor","ogrectangle_get_offset_serialized","OGSceneManagerFinalization","__wbg_ogscenemanager_free","OGSceneManager","ogscenemanager_new","createScene","ogscenemanager_createScene","removeScene","scene_id","ogscenemanager_removeScene","setCurrentScene","ogscenemanager_setCurrentScene","getCurrentSceneId","ogscenemanager_getCurrentSceneId","listScenes","ogscenemanager_listScenes","getSceneSerialized","ogscenemanager_getSceneSerialized","removeEntityFromScene","entity_id","ogscenemanager_removeEntityFromScene","addBrepEntityToScene","brep_serialized","ogscenemanager_addBrepEntityToScene","addBrepEntityToCurrentScene","ogscenemanager_addBrepEntityToCurrentScene","replaceBrepEntityInScene","ogscenemanager_replaceBrepEntityInScene","replaceBrepEntityInCurrentScene","ogscenemanager_replaceBrepEntityInCurrentScene","refreshBrepEntityInScene","ogscenemanager_refreshBrepEntityInScene","refreshBrepEntityInCurrentScene","ogscenemanager_refreshBrepEntityInCurrentScene","addLineToScene","line","ogscenemanager_addLineToScene","addLineToCurrentScene","ogscenemanager_addLineToCurrentScene","addPolylineToScene","polyline","ogscenemanager_addPolylineToScene","addPolylineToCurrentScene","ogscenemanager_addPolylineToCurrentScene","addArcToScene","arc","ogscenemanager_addArcToScene","addArcToCurrentScene","ogscenemanager_addArcToCurrentScene","addRectangleToScene","rectangle","ogscenemanager_addRectangleToScene","addRectangleToCurrentScene","ogscenemanager_addRectangleToCurrentScene","addPolygonToScene","polygon","ogscenemanager_addPolygonToScene","addPolygonToCurrentScene","ogscenemanager_addPolygonToCurrentScene","addCuboidToScene","cuboid","ogscenemanager_addCuboidToScene","addCuboidToCurrentScene","ogscenemanager_addCuboidToCurrentScene","addCylinderToScene","cylinder","ogscenemanager_addCylinderToScene","addCylinderToCurrentScene","ogscenemanager_addCylinderToCurrentScene","addSphereToScene","sphere","OGSphere","ogscenemanager_addSphereToScene","addSphereToCurrentScene","ogscenemanager_addSphereToCurrentScene","addWedgeToScene","wedge","OGWedge","ogscenemanager_addWedgeToScene","addWedgeToCurrentScene","ogscenemanager_addWedgeToCurrentScene","projectTo2DCamera","camera_json","hlr_json","deferred5_0","deferred5_1","ogscenemanager_projectTo2DCamera","ptr4","len4","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","config_json","ogscenemanager_exportBrepToStl","OGStlExportResult","exportSceneToStl","ogscenemanager_exportSceneToStl","exportCurrentSceneToStl","ogscenemanager_exportCurrentSceneToStl","exportBrepToStep","ogscenemanager_exportBrepToStep","OGStepExportResult","exportSceneToStep","ogscenemanager_exportSceneToStep","exportCurrentSceneToStep","ogscenemanager_exportCurrentSceneToStep","exportBrepToIfc","ogscenemanager_exportBrepToIfc","exportSceneToIfc","ogscenemanager_exportSceneToIfc","exportCurrentSceneToIfc","ogscenemanager_exportCurrentSceneToIfc","OGSphereFinalization","__wbg_ogsphere_free","ogsphere_set_id","ogsphere_id","ogsphere_new","width_segments","height_segments","ogsphere_set_config","ogsphere_set_center","ogsphere_set_transform","ogsphere_set_translation","ogsphere_set_rotation","ogsphere_set_scale","ogsphere_generate_brep","ogsphere_clean_geometry","ogsphere_generate_geometry","ogsphere_get_brep_serialized","ogsphere_get_local_brep_serialized","ogsphere_get_geometry_serialized","ogsphere_get_local_geometry_serialized","ogsphere_get_geometry_buffer","ogsphere_get_local_geometry_buffer","ogsphere_get_outline_geometry_serialized","ogsphere_get_local_outline_geometry_serialized","ogsphere_get_outline_geometry_buffer","ogsphere_get_local_outline_geometry_buffer","ogsphere_get_anchor","OGStepExportResultFinalization","__wbg_ogstepexportresult_free","ogstepexportresult_text","ogstepexportresult_reportJson","OGStlExportResultFinalization","__wbg_ogstlexportresult_free","bytes","ogstlexportresult_bytes","ogstlexportresult_reportJson","OGSweepFinalization","__wbg_ogsweep_free","OGSweep","ogsweep_set_id","ogsweep_id","ogsweep_new","path_points","profile_points","ogsweep_set_config","set_config_with_caps","cap_start","cap_end","ogsweep_set_config_with_caps","set_caps","ogsweep_set_caps","ogsweep_set_transform","ogsweep_set_translation","ogsweep_set_rotation","ogsweep_set_scale","ogsweep_generate_brep","ogsweep_clean_geometry","ogsweep_generate_geometry","ogsweep_get_brep_serialized","ogsweep_get_local_brep_serialized","ogsweep_get_geometry_serialized","ogsweep_get_local_geometry_serialized","ogsweep_get_geometry_buffer","ogsweep_get_local_geometry_buffer","ogsweep_get_outline_geometry_serialized","ogsweep_get_local_outline_geometry_serialized","ogsweep_get_outline_geometry_buffer","ogsweep_get_local_outline_geometry_buffer","ogsweep_get_anchor","ogsweep_set_anchor","ogsweep_reset_anchor","OGWedgeFinalization","__wbg_ogwedge_free","ogwedge_set_id","ogwedge_id","ogwedge_new","ogwedge_set_config","ogwedge_set_center","ogwedge_set_transform","ogwedge_set_translation","ogwedge_set_rotation","ogwedge_set_scale","ogwedge_generate_brep","ogwedge_clean_geometry","ogwedge_generate_geometry","ogwedge_get_brep_serialized","ogwedge_get_local_brep_serialized","ogwedge_get_geometry_serialized","ogwedge_get_local_geometry_serialized","ogwedge_get_geometry_buffer","ogwedge_get_local_geometry_buffer","ogwedge_get_outline_geometry_serialized","ogwedge_get_local_outline_geometry_serialized","ogwedge_get_outline_geometry_buffer","ogwedge_get_local_outline_geometry_buffer","ogwedge_get_anchor","Vector3Finalization","__wbg_vector3_free","__unwrap","jsValue","__wbg_get_vector3_x","arg0","__wbg_set_vector3_x","y","__wbg_get_vector3_y","__wbg_set_vector3_y","z","__wbg_get_vector3_z","__wbg_set_vector3_z","vector3_new","vector3_add","add_scalar","scalar","vector3_add_scalar","vector3_subtract","subtract_scalar","vector3_subtract_scalar","vector3_clone","zero","vector3_zero","copy","vector3_copy","multiply_scalar","vector3_multiply_scalar","vector3_multiply","divide","vector3_divide","divide_scalar","vector3_divide_scalar","negate","vector3_negate","dot","vector3_dot","magnitude","vector3_magnitude","vector3_length","normalize","vector3_normalize","cross","vector3_cross","vector3_distance","apply_matrix4","matrix","vector3_apply_matrix4","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","__wbg_get_imports","wbg","__wbg_getRandomValues_38097e921c2494c3","arg1","globalThis","crypto","getRandomValues","arguments","__wbg_vector3_new","__wbg_vector3_unwrap","__wbindgen_debug_string","setInt32","__wbindgen_init_externref_table","table","grow","__wbindgen_string_new","__wbindgen_throw","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","initSync","getPrototypeOf","Module","module_or_path","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","OGKernel.extrudeBrepFace","OGKernel.booleanSubtractionMany","OGKernel[\"OGSweep\"]","EPSILON","areClose","init"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../main/opengeometry/pkg/opengeometry.js","../main/main/opengeometry-three/src/markup/spotMarker.ts","../main/main/opengeometry-three/src/base-types.ts","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../main/main/opengeometry-three/src/utils/randomizer.ts","../main/main/opengeometry-three/src/editor/parametric.ts","../main/main/opengeometry-three/src/editor/freeform.ts","../main/main/opengeometry-three/src/freeform/geometry.ts","../main/main/opengeometry-three/src/primitives/line.ts","../main/main/opengeometry-three/src/primitives/polyline.ts","../main/main/opengeometry-three/src/primitives/arc.ts","../main/main/opengeometry-three/src/primitives/rectangle.ts","../main/main/opengeometry-three/src/primitives/curve.ts","../main/main/opengeometry-three/src/shapes/outline-utils.ts","../main/main/opengeometry-three/src/operations/extrude.ts","../main/main/opengeometry-three/src/operations/boolean-errors.ts","../main/main/opengeometry-three/src/operations/boolean.ts","../main/main/opengeometry-three/src/shapes/boolean-subtract.ts","../main/main/opengeometry-three/src/shapes/solid.ts","../main/main/opengeometry-three/src/shapes/polygon.ts","../main/main/opengeometry-three/src/shapes/cylinder.ts","../main/main/opengeometry-three/src/shapes/cuboid.ts","../main/main/opengeometry-three/src/shapes/opening.ts","../main/main/opengeometry-three/src/shapes/sphere.ts","../main/main/opengeometry-three/src/shapes/wedge.ts","../main/main/opengeometry-three/src/shapes/sweep.ts","../main/main/opengeometry-three/src/examples/primitives.ts","../main/main/opengeometry-three/src/examples/shapes.ts","../main/main/opengeometry-three/src/examples/sweep.ts","../main/main/opengeometry-three/src/examples/offset.ts","../main/main/opengeometry-three/src/examples/wall-from-offsets.ts","../main/main/opengeometry-three/src/examples/booleans.ts","../main/main/opengeometry-three/src/examples/editor-modes.ts","../main/main/opengeometry-three/src/operations/offset-regions.ts","../main/main/opengeometry-three/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} local_brep_serialized\n * @param {number} height\n * @returns {string}\n */\nexport function extrudeBrepFace(local_brep_serialized, height) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.extrudeBrepFace(ptr0, len0, height);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nlet cachedFloat64ArrayMemory0 = null;\n\nfunction getFloat64ArrayMemory0() {\n if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {\n cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64ArrayMemory0;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getFloat64ArrayMemory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * Wasm entry point: offset a centreline by `width` into stroked regions via the\n * deterministic analytic offset. `centreline_flat` is `[x0,y0,z0, …]`. Returns\n * CW-outer / CCW-hole regions, canonicalised; empty (does NOT throw) when degenerate.\n * @param {Float64Array} centreline_flat\n * @param {number} width\n * @param {boolean} closed\n * @param {number} miter_limit\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineRegions(centreline_flat, width, closed, miter_limit) {\n const ptr0 = passArrayF64ToWasm0(centreline_flat, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineRegions(ptr0, len0, width, closed, miter_limit);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point: merge a GROUP of separate polylines (a crossing T / X / L\n * overlap) into one clean stroked region by nonzero-winding union of their mitered\n * bands. `polylines_json` is `[{centreline:[x,y,z,…], width, closed}, …]`. Returns\n * CW-outer / CCW-hole regions (one or more); empty when nothing is buildable.\n * @param {string} polylines_json\n * @returns {OGOffsetRegionsResult}\n */\nexport function offsetPolylineGroupRegions(polylines_json) {\n const ptr0 = passStringToWasm0(polylines_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.offsetPolylineGroupRegions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGOffsetRegionsResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for union.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanUnion(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanUnion(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for intersection.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanIntersection(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanIntersection(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtraction(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtraction(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for array-backed repeated subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} cutters_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtractionMany(lhs_brep_serialized, cutters_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(cutters_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtractionMany(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for array-backed batched union. Accepts a JSON array of\n * serialized BReps and folds them with `batch_union` in one boundary crossing.\n * @param {string} operands_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function batchUnion(operands_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(operands_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.batchUnion(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\nconst Matrix3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix3_free(ptr >>> 0, 1));\n\nexport class Matrix3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix3.prototype);\n obj.__wbg_ptr = ptr;\n Matrix3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix3_free(ptr, 0);\n }\n /**\n *\n * * Create a new Matrix3 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix3_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @returns {Matrix3}\n */\n set(m0, m1, m2, m3, m4, m5, m6, m7, m8) {\n const ret = wasm.matrix3_set(this.__wbg_ptr, m0, m1, m2, m3, m4, m5, m6, m7, m8);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix3 instance and return a new one.\n *\n * @returns {Matrix3}\n */\n clone() {\n const ret = wasm.matrix3_clone(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix3_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 3x3 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix3_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix3}\n */\n adjucate() {\n const ret = wasm.matrix3_adjucate(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3 | undefined}\n */\n inverse() {\n const ret = wasm.matrix3_inverse(this.__wbg_ptr);\n return ret === 0 ? undefined : Matrix3.__wrap(ret);\n }\n /**\n * @returns {Matrix3}\n */\n transpose() {\n const ret = wasm.matrix3_transpose(this.__wbg_ptr);\n return Matrix3.__wrap(ret);\n }\n}\n\nconst Matrix4Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_matrix4_free(ptr >>> 0, 1));\n/**\n *\n * * Matrix4 Module\n * * 2D Representation of a 4x4 Matrix\n * * It's a row-major matrix.\n *\n */\nexport class Matrix4 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Matrix4.prototype);\n obj.__wbg_ptr = ptr;\n Matrix4Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Matrix4Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_matrix4_free(ptr, 0);\n }\n /**\n * @returns {Float64Array}\n */\n get elements() {\n const ret = wasm.matrix4_elements(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Create a new Matrix4 with identity elements.\n *\n */\n constructor() {\n const ret = wasm.matrix4_new();\n this.__wbg_ptr = ret >>> 0;\n Matrix4Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {number} m0\n * @param {number} m1\n * @param {number} m2\n * @param {number} m3\n * @param {number} m4\n * @param {number} m5\n * @param {number} m6\n * @param {number} m7\n * @param {number} m8\n * @param {number} m9\n * @param {number} m10\n * @param {number} m11\n * @param {number} m12\n * @param {number} m13\n * @param {number} m14\n * @param {number} m15\n * @returns {Matrix4}\n */\n static set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n const ret = wasm.matrix4_set(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Clone the Matrix4 instance and return a new one.\n *\n * @returns {Matrix4}\n */\n clone() {\n const ret = wasm.matrix4_clone(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Sets the matrix element to create an identity matrix.\n *\n */\n identity() {\n wasm.matrix4_identity(this.__wbg_ptr);\n }\n /**\n *\n * * Determinant for a 4x4 matrix.\n * * https://en.wikipedia.org/wiki/Determinant\n *\n * @returns {number}\n */\n determinant() {\n const ret = wasm.matrix4_determinant(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Matrix4}\n */\n adjucate() {\n const ret = wasm.matrix4_adjucate(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Inverse of a matrix\n * * Returns a new Matrix4 instance.\n * * If the determinant is zero, it returns a zero matrix.\n * * It can be checked with is_zero() method.\n *\n * @returns {Matrix4}\n */\n inverse() {\n const ret = wasm.matrix4_inverse(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Multiply this matrix with another Matrix4\n * * Returns a new Matrix4 instance\n *\n * @param {Matrix4} other\n * @returns {Matrix4}\n */\n multiply(other) {\n _assertClass(other, Matrix4);\n const ret = wasm.matrix4_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Add another Matrix4 to this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n add(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_add(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Subtract another Matrix4 from this one.\n * * Returns a new Matrix4 instance with the result.\n *\n * @param {Matrix4} incoming\n * @returns {Matrix4}\n */\n subtract(incoming) {\n _assertClass(incoming, Matrix4);\n const ret = wasm.matrix4_subtract(this.__wbg_ptr, incoming.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n /**\n *\n * * Flatten the matrix into a vector of f64.\n *\n * @returns {Float64Array}\n */\n flatten() {\n const ret = wasm.matrix4_flatten(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n *\n * * Get the element at a specific index in the flattened matrix.\n *\n * @param {number} index\n * @returns {number | undefined}\n */\n get_element_at(index) {\n const ret = wasm.matrix4_get_element_at(this.__wbg_ptr, index);\n return ret[0] === 0 ? undefined : ret[1];\n }\n /**\n *\n * * Check if the matrix is a zero matrix.\n *\n * @returns {boolean}\n */\n is_zero() {\n const ret = wasm.matrix4_is_zero(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Check if the matrix is an identity matrix.\n *\n * @returns {boolean}\n */\n is_identity() {\n const ret = wasm.matrix4_is_identity(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n *\n * * Create a Transpose of the matrix.\n * * Returns a new Matrix4 instance.\n *\n * @returns {Matrix4}\n */\n transpose() {\n const ret = wasm.matrix4_transpose(this.__wbg_ptr);\n return Matrix4.__wrap(ret);\n }\n}\n\nconst OGArcFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogarc_free(ptr >>> 0, 1));\n\nexport class OGArc {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGArcFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogarc_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogarc_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogarc_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGArcFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} start_angle\n * @param {number} end_angle\n * @param {number} segments\n */\n set_config(center, radius, start_angle, end_angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogarc_set_config(this.__wbg_ptr, ptr0, radius, start_angle, end_angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogarc_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogarc_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogarc_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogarc_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogarc_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogarc_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogarc_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogarc_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogarc_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogarc_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGBooleanResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogbooleanresult_free(ptr >>> 0, 1));\n/**\n * Result payload returned across the wasm boundary.\n */\nexport class OGBooleanResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGBooleanResult.prototype);\n obj.__wbg_ptr = ptr;\n OGBooleanResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGBooleanResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogbooleanresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get brepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_brepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get geometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_geometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get outlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_outlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogbooleanresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGCuboidFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcuboid_free(ptr >>> 0, 1));\n\nexport class OGCuboid {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCuboidFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcuboid_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcuboid_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcuboid_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCuboidFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcuboid_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcuboid_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcuboid_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcuboid_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcuboid_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcuboid_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcuboid_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcuboid_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcuboid_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGCurveFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcurve_free(ptr >>> 0, 1));\n\nexport class OGCurve {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCurveFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcurve_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcurve_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCurveFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} control_points\n */\n set_config(control_points) {\n const ptr0 = passArrayJsValueToWasm0(control_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcurve_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcurve_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcurve_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcurve_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogcurve_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcurve_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcurve_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcurve_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogcurve_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogcurve_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcurve_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n dispose() {\n wasm.ogcurve_dispose(this.__wbg_ptr);\n }\n}\n\nconst OGCylinderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogcylinder_free(ptr >>> 0, 1));\n\nexport class OGCylinder {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGCylinderFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogcylinder_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogcylinder_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogcylinder_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGCylinderFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} height\n * @param {number} angle\n * @param {number} segments\n */\n set_config(center, radius, height, angle, segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_config(this.__wbg_ptr, ptr0, radius, height, angle, segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogcylinder_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogcylinder_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogcylinder_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogcylinder_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogcylinder_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogcylinder_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogcylinder_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogcylinder_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogcylinder_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogcylinder_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogcylinder_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGEntityRegistryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogentityregistry_free(ptr >>> 0, 1));\n/**\n * Flat entity registry with a batched multi-view projection API.\n * Replaces the scene-centric OGSceneManager pattern for export use cases.\n */\nexport class OGEntityRegistry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGEntityRegistryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogentityregistry_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogentityregistry_new();\n this.__wbg_ptr = ret >>> 0;\n OGEntityRegistryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Register (or replace) an entity. `kind` must be an OGEntityKind string.\n * @param {string} id\n * @param {string} kind\n * @param {string} brep_json\n */\n registerEntity(id, kind, brep_json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_registerEntity(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Remove a previously registered entity.\n * @param {string} id\n * @returns {boolean}\n */\n unregisterEntity(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_unregisterEntity(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Remove all registered entities.\n */\n clearEntities() {\n wasm.ogentityregistry_clearEntities(this.__wbg_ptr);\n }\n /**\n * Batched multi-view projection.\n *\n * Input: JSON array of `{ id, camera, hlr?, section_plane? }` (ViewRequest).\n * Output: JSON map of `{ viewportId: Scene2D }`.\n *\n * All viewports are projected in a single WASM call, amortising\n * serialisation overhead and keeping BRep data in WASM memory.\n * @param {string} views_json\n * @returns {string}\n */\n projectCurrentToViews(views_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(views_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogentityregistry_projectCurrentToViews(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformEditorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformeditor_free(ptr >>> 0, 1));\n\nexport class OGFreeformEditor {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformEditorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformeditor_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogfreeformeditor_new();\n this.__wbg_ptr = ret >>> 0;\n OGFreeformEditorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getTopologyRenderData(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getTopologyRenderData(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceInfo(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceInfo(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeInfo(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeInfo(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexInfo(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexInfo(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @returns {string}\n */\n getEditCapabilities(geometry) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @returns {string}\n */\n getFaceEditCapabilities(geometry, face_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getFaceEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, face_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @returns {string}\n */\n getEdgeEditCapabilities(geometry, edge_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getEdgeEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, edge_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @returns {string}\n */\n getVertexEditCapabilities(geometry, vertex_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n const ret = wasm.ogfreeformeditor_getVertexEditCapabilities(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n pushPullFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_pushPullFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveFace(geometry, face_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveEdge(geometry, edge_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {Vector3} translation\n * @param {string | null} [options_json]\n * @returns {string}\n */\n moveVertex(geometry, vertex_id, translation, options_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n var ptr1 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_moveVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} distance\n * @param {string | null} [options_json]\n * @returns {string}\n */\n extrudeFace(geometry, face_id, distance, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_extrudeFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, distance, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} face_id\n * @param {number} start_edge_id\n * @param {number} start_t\n * @param {number} end_edge_id\n * @param {number} end_t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n cutFace(geometry, face_id, start_edge_id, start_t, end_edge_id, end_t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_cutFace(this.__wbg_ptr, geometry.__wbg_ptr, face_id, start_edge_id, start_t, end_edge_id, end_t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n insertVertexOnEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_insertVertexOnEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n splitEdge(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_splitEdge(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} edge_id\n * @param {number} t\n * @param {string | null} [options_json]\n * @returns {string}\n */\n loopCut(geometry, edge_id, t, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_loopCut(this.__wbg_ptr, geometry.__wbg_ptr, edge_id, t, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {OGFreeformGeometry} geometry\n * @param {number} vertex_id\n * @param {string | null} [options_json]\n * @returns {string}\n */\n removeVertex(geometry, vertex_id, options_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n _assertClass(geometry, OGFreeformGeometry);\n var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformeditor_removeVertex(this.__wbg_ptr, geometry.__wbg_ptr, vertex_id, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst OGFreeformGeometryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogfreeformgeometry_free(ptr >>> 0, 1));\n\nexport class OGFreeformGeometry {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGFreeformGeometryFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogfreeformgeometry_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {string} local_brep_serialized\n */\n constructor(id, local_brep_serialized) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_new(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n OGFreeformGeometryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getLocalBrepSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getLocalBrepSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n getGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getOutlineGeometrySerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometrySerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n getOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n getLocalOutlineGeometryBuffer() {\n const ret = wasm.ogfreeformgeometry_getLocalOutlineGeometryBuffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n getPlacementSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogfreeformgeometry_getPlacementSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} placement_serialized\n */\n setPlacementSerialized(placement_serialized) {\n const ptr0 = passStringToWasm0(placement_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogfreeformgeometry_setPlacementSerialized(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n setTransform(translation, rotation, scale) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setTransform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n setTranslation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setTranslation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n setRotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogfreeformgeometry_setRotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n setScale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogfreeformgeometry_setScale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} anchor\n */\n setAnchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n wasm.ogfreeformgeometry_setAnchor(this.__wbg_ptr, ptr0);\n }\n}\n\nconst OGIfcExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogifcexportresult_free(ptr >>> 0, 1));\n\nexport class OGIfcExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGIfcExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGIfcExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGIfcExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogifcexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogifcexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGLineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogline_free(ptr >>> 0, 1));\n\nexport class OGLine {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGLineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGLineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} start\n * @param {Vector3} end\n */\n set_config(start, end) {\n _assertClass(start, Vector3);\n var ptr0 = start.__destroy_into_raw();\n _assertClass(end, Vector3);\n var ptr1 = end.__destroy_into_raw();\n const ret = wasm.ogline_set_config(this.__wbg_ptr, ptr0, ptr1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n dispose_points() {\n wasm.ogline_dispose_points(this.__wbg_ptr);\n }\n destroy() {\n wasm.ogline_destroy(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_dxf_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogline_get_dxf_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGOffsetRegionsResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogoffsetregionsresult_free(ptr >>> 0, 1));\n/**\n * Result payload for a polyline offset: a list of regions (each an outer ring +\n * inner-void holes). Normally one region; a self-crossing closed centreline (e.g.\n * a figure-8) yields one per simple sub-loop. The deterministic analytic offset —\n * no extrude/solid. Used to build the plan polygons + extruded base solids in JS.\n */\nexport class OGOffsetRegionsResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGOffsetRegionsResult.prototype);\n obj.__wbg_ptr = ptr;\n OGOffsetRegionsResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGOffsetRegionsResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogoffsetregionsresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get regionsSerialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogoffsetregionsresult_regionsSerialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGPolygonFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolygon_free(ptr >>> 0, 1));\n\nexport class OGPolygon {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolygonFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolygon_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolygon_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolygonFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolygon_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolygon_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} vertices\n */\n add_vertices(vertices) {\n const ptr0 = passArrayJsValueToWasm0(vertices, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_vertices(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} hole\n */\n add_holes(hole) {\n const ptr0 = passArrayJsValueToWasm0(hole, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolygon_add_holes(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogpolygon_clean_geometry(this.__wbg_ptr);\n }\n generate_brep() {\n const ret = wasm.ogpolygon_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolygon_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolygon_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolygon_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogpolygon_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogpolygon_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolygon_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolygon_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGPolylineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogpolyline_free(ptr >>> 0, 1));\n\nexport class OGPolyline {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGPolyline.prototype);\n obj.__wbg_ptr = ptr;\n OGPolylineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGPolylineFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogpolyline_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogpolyline_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGPolylineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {OGPolyline}\n */\n clone() {\n const ret = wasm.ogpolyline_clone(this.__wbg_ptr);\n return OGPolyline.__wrap(ret);\n }\n /**\n * @param {Vector3[]} points\n */\n set_config(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_set_config(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogpolyline_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogpolyline_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogpolyline_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} points\n */\n add_multiple_points(points) {\n const ptr0 = passArrayJsValueToWasm0(points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogpolyline_add_multiple_points(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} point\n */\n add_point(point) {\n _assertClass(point, Vector3);\n var ptr0 = point.__destroy_into_raw();\n const ret = wasm.ogpolyline_add_point(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_points() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_points(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Vector3[]}\n */\n get_raw_points() {\n const ret = wasm.ogpolyline_get_raw_points(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {boolean}\n */\n is_closed() {\n const ret = wasm.ogpolyline_is_closed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n check_closed_test() {\n wasm.ogpolyline_check_closed_test(this.__wbg_ptr);\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogpolyline_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogpolyline_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogpolyline_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogpolyline_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogpolyline_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogpolyline_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGRectangleFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogrectangle_free(ptr >>> 0, 1));\n\nexport class OGRectangle {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGRectangleFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogrectangle_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogrectangle_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogrectangle_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGRectangleFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} breadth\n */\n set_config(center, width, breadth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_config(this.__wbg_ptr, ptr0, width, breadth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogrectangle_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogrectangle_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogrectangle_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogrectangle_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_geometry() {\n const ret = wasm.ogrectangle_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogrectangle_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogrectangle_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogrectangle_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {number} distance\n * @param {number} acute_threshold_degrees\n * @param {boolean} bevel\n * @returns {string}\n */\n get_offset_serialized(distance, acute_threshold_degrees, bevel) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogrectangle_get_offset_serialized(this.__wbg_ptr, distance, acute_threshold_degrees, bevel);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSceneManagerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogscenemanager_free(ptr >>> 0, 1));\n\nexport class OGSceneManager {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSceneManagerFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogscenemanager_free(ptr, 0);\n }\n constructor() {\n const ret = wasm.ogscenemanager_new();\n this.__wbg_ptr = ret >>> 0;\n OGSceneManagerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @returns {string}\n */\n createScene(name) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_createScene(this.__wbg_ptr, ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {boolean}\n */\n removeScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeScene(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} scene_id\n */\n setCurrentScene(scene_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_setCurrentScene(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string | undefined}\n */\n getCurrentSceneId() {\n const ret = wasm.ogscenemanager_getCurrentSceneId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n listScenes() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.ogscenemanager_listScenes(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @returns {string}\n */\n getSceneSerialized(scene_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_getSceneSerialized(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @returns {boolean}\n */\n removeEntityFromScene(scene_id, entity_id) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_removeEntityFromScene(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n addBrepEntityToCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_addBrepEntityToCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n replaceBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_replaceBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInScene(scene_id, entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {string} kind\n * @param {string} brep_serialized\n */\n refreshBrepEntityInCurrentScene(entity_id, kind, brep_serialized) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(kind, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_refreshBrepEntityInCurrentScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToScene(scene_id, entity_id, line) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGLine} line\n */\n addLineToCurrentScene(entity_id, line) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(line, OGLine);\n const ret = wasm.ogscenemanager_addLineToCurrentScene(this.__wbg_ptr, ptr0, len0, line.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToScene(scene_id, entity_id, polyline) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolyline} polyline\n */\n addPolylineToCurrentScene(entity_id, polyline) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polyline, OGPolyline);\n const ret = wasm.ogscenemanager_addPolylineToCurrentScene(this.__wbg_ptr, ptr0, len0, polyline.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToScene(scene_id, entity_id, arc) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGArc} arc\n */\n addArcToCurrentScene(entity_id, arc) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(arc, OGArc);\n const ret = wasm.ogscenemanager_addArcToCurrentScene(this.__wbg_ptr, ptr0, len0, arc.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToScene(scene_id, entity_id, rectangle) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGRectangle} rectangle\n */\n addRectangleToCurrentScene(entity_id, rectangle) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(rectangle, OGRectangle);\n const ret = wasm.ogscenemanager_addRectangleToCurrentScene(this.__wbg_ptr, ptr0, len0, rectangle.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToScene(scene_id, entity_id, polygon) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGPolygon} polygon\n */\n addPolygonToCurrentScene(entity_id, polygon) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(polygon, OGPolygon);\n const ret = wasm.ogscenemanager_addPolygonToCurrentScene(this.__wbg_ptr, ptr0, len0, polygon.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToScene(scene_id, entity_id, cuboid) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCuboid} cuboid\n */\n addCuboidToCurrentScene(entity_id, cuboid) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cuboid, OGCuboid);\n const ret = wasm.ogscenemanager_addCuboidToCurrentScene(this.__wbg_ptr, ptr0, len0, cuboid.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToScene(scene_id, entity_id, cylinder) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGCylinder} cylinder\n */\n addCylinderToCurrentScene(entity_id, cylinder) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(cylinder, OGCylinder);\n const ret = wasm.ogscenemanager_addCylinderToCurrentScene(this.__wbg_ptr, ptr0, len0, cylinder.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToScene(scene_id, entity_id, sphere) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGSphere} sphere\n */\n addSphereToCurrentScene(entity_id, sphere) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(sphere, OGSphere);\n const ret = wasm.ogscenemanager_addSphereToCurrentScene(this.__wbg_ptr, ptr0, len0, sphere.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToScene(scene_id, entity_id, wedge) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToScene(this.__wbg_ptr, ptr0, len0, ptr1, len1, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} entity_id\n * @param {OGWedge} wedge\n */\n addWedgeToCurrentScene(entity_id, wedge) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wedge, OGWedge);\n const ret = wasm.ogscenemanager_addWedgeToCurrentScene(this.__wbg_ptr, ptr0, len0, wedge.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCamera(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DCameraPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DCameraPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLines(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} scene_id\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectTo2DLinesPretty(scene_id, camera_json, hlr_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectTo2DLinesPretty(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var ptr4 = ret[0];\n var len4 = ret[1];\n if (ret[3]) {\n ptr4 = 0; len4 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DCamera(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DCamera(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} camera_json\n * @param {string | null} [hlr_json]\n * @returns {string}\n */\n projectCurrentTo2DLines(camera_json, hlr_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(camera_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(hlr_json) ? 0 : passStringToWasm0(hlr_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_projectCurrentTo2DLines(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportBrepToStl(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportSceneToStl(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStl(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStlExportResult}\n */\n exportCurrentSceneToStl(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStl(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStlExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportBrepToStep(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportSceneToStep(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToStep(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGStepExportResult}\n */\n exportCurrentSceneToStep(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToStep(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGStepExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} brep_serialized\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportBrepToIfc(brep_serialized, config_json) {\n const ptr0 = passStringToWasm0(brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportBrepToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string} scene_id\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportSceneToIfc(scene_id, config_json) {\n const ptr0 = passStringToWasm0(scene_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportSceneToIfc(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [config_json]\n * @returns {OGIfcExportResult}\n */\n exportCurrentSceneToIfc(config_json) {\n var ptr0 = isLikeNone(config_json) ? 0 : passStringToWasm0(config_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogscenemanager_exportCurrentSceneToIfc(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGIfcExportResult.__wrap(ret[0]);\n }\n}\n\nconst OGSphereFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsphere_free(ptr >>> 0, 1));\n\nexport class OGSphere {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSphereFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsphere_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsphere_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsphere_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSphereFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} radius\n * @param {number} width_segments\n * @param {number} height_segments\n */\n set_config(center, radius, width_segments, height_segments) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogsphere_set_config(this.__wbg_ptr, ptr0, radius, width_segments, height_segments);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogsphere_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsphere_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsphere_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsphere_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsphere_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsphere_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsphere_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsphere_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsphere_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsphere_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsphere_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst OGStepExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstepexportresult_free(ptr >>> 0, 1));\n\nexport class OGStepExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStepExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStepExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStepExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstepexportresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get text() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_text(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstepexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGStlExportResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogstlexportresult_free(ptr >>> 0, 1));\n\nexport class OGStlExportResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(OGStlExportResult.prototype);\n obj.__wbg_ptr = ptr;\n OGStlExportResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGStlExportResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogstlexportresult_free(ptr, 0);\n }\n /**\n * @returns {Uint8Array}\n */\n get bytes() {\n const ret = wasm.ogstlexportresult_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * @returns {string}\n */\n get reportJson() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogstlexportresult_reportJson(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nconst OGSweepFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogsweep_free(ptr >>> 0, 1));\n\nexport class OGSweep {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGSweepFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogsweep_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogsweep_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGSweepFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n */\n set_config(path_points, profile_points) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3[]} path_points\n * @param {Vector3[]} profile_points\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_config_with_caps(path_points, profile_points, cap_start, cap_end) {\n const ptr0 = passArrayJsValueToWasm0(path_points, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(profile_points, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.ogsweep_set_config_with_caps(this.__wbg_ptr, ptr0, len0, ptr1, len1, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {boolean} cap_start\n * @param {boolean} cap_end\n */\n set_caps(cap_start, cap_end) {\n const ret = wasm.ogsweep_set_caps(this.__wbg_ptr, cap_start, cap_end);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogsweep_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogsweep_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogsweep_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogsweep_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogsweep_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogsweep_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogsweep_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogsweep_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogsweep_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogsweep_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n * @param {Vector3} anchor\n */\n set_anchor(anchor) {\n _assertClass(anchor, Vector3);\n var ptr0 = anchor.__destroy_into_raw();\n const ret = wasm.ogsweep_set_anchor(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n reset_anchor() {\n const ret = wasm.ogsweep_reset_anchor(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst OGWedgeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_ogwedge_free(ptr >>> 0, 1));\n\nexport class OGWedge {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n OGWedgeFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ogwedge_free(ptr, 0);\n }\n /**\n * @param {string} id\n */\n set id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.ogwedge_set_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n */\n constructor(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.ogwedge_new(ptr0, len0);\n this.__wbg_ptr = ret >>> 0;\n OGWedgeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Vector3} center\n * @param {number} width\n * @param {number} height\n * @param {number} depth\n */\n set_config(center, width, height, depth) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n const ret = wasm.ogwedge_set_config(this.__wbg_ptr, ptr0, width, height, depth);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} center\n */\n set_center(center) {\n _assertClass(center, Vector3);\n var ptr0 = center.__destroy_into_raw();\n wasm.ogwedge_set_center(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} position\n * @param {Vector3} rotation\n * @param {Vector3} scale\n */\n set_transform(position, rotation, scale) {\n _assertClass(position, Vector3);\n var ptr0 = position.__destroy_into_raw();\n _assertClass(rotation, Vector3);\n var ptr1 = rotation.__destroy_into_raw();\n _assertClass(scale, Vector3);\n var ptr2 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_transform(this.__wbg_ptr, ptr0, ptr1, ptr2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {Vector3} translation\n */\n set_translation(translation) {\n _assertClass(translation, Vector3);\n var ptr0 = translation.__destroy_into_raw();\n wasm.ogwedge_set_translation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} rotation\n */\n set_rotation(rotation) {\n _assertClass(rotation, Vector3);\n var ptr0 = rotation.__destroy_into_raw();\n wasm.ogwedge_set_rotation(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Vector3} scale\n */\n set_scale(scale) {\n _assertClass(scale, Vector3);\n var ptr0 = scale.__destroy_into_raw();\n const ret = wasm.ogwedge_set_scale(this.__wbg_ptr, ptr0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n generate_brep() {\n const ret = wasm.ogwedge_generate_brep(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n clean_geometry() {\n wasm.ogwedge_clean_geometry(this.__wbg_ptr);\n }\n generate_geometry() {\n const ret = wasm.ogwedge_generate_geometry(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {string}\n */\n get_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_brep_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_brep_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_geometry_buffer() {\n const ret = wasm.ogwedge_get_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {string}\n */\n get_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get_local_outline_geometry_serialized() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.ogwedge_get_local_outline_geometry_serialized(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float64Array}\n */\n get_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Float64Array}\n */\n get_local_outline_geometry_buffer() {\n const ret = wasm.ogwedge_get_local_outline_geometry_buffer(this.__wbg_ptr);\n var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n }\n /**\n * @returns {Vector3}\n */\n get_anchor() {\n const ret = wasm.ogarc_get_anchor(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n}\n\nconst Vector3Finalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_vector3_free(ptr >>> 0, 1));\n\nexport class Vector3 {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Vector3.prototype);\n obj.__wbg_ptr = ptr;\n Vector3Finalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n static __unwrap(jsValue) {\n if (!(jsValue instanceof Vector3)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n Vector3Finalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_vector3_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get x() {\n const ret = wasm.__wbg_get_vector3_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set x(arg0) {\n wasm.__wbg_set_vector3_x(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get y() {\n const ret = wasm.__wbg_get_vector3_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set y(arg0) {\n wasm.__wbg_set_vector3_y(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get z() {\n const ret = wasm.__wbg_get_vector3_z(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set z(arg0) {\n wasm.__wbg_set_vector3_z(this.__wbg_ptr, arg0);\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} z\n */\n constructor(x, y, z) {\n const ret = wasm.vector3_new(x, y, z);\n this.__wbg_ptr = ret >>> 0;\n Vector3Finalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n *\n * * Add the elements of another vector to this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n add(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_add(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Add a scalar value to each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n add_scalar(scalar) {\n const ret = wasm.vector3_add_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract the elements of another vector from this one.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n subtract(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_subtract(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Subtract a scalar value from each element of the vector.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n subtract_scalar(scalar) {\n const ret = wasm.vector3_subtract_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Clone the Vector3 instance and return a new one.\n *\n * @returns {Vector3}\n */\n clone() {\n const ret = wasm.vector3_clone(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Set the current vector elements to zero.\n *\n */\n zero() {\n wasm.vector3_zero(this.__wbg_ptr);\n }\n /**\n *\n * * Copy the elements from another Vector3 instance.\n *\n * @param {Vector3} other\n */\n copy(other) {\n _assertClass(other, Vector3);\n wasm.vector3_copy(this.__wbg_ptr, other.__wbg_ptr);\n }\n /**\n *\n * * Multiply the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n multiply_scalar(scalar) {\n const ret = wasm.vector3_multiply_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Multiply the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n multiply(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_multiply(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by another Vector3 instance element-wise.\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n divide(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_divide(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Divide the vector by a scalar value.\n *\n * @param {number} scalar\n * @returns {Vector3}\n */\n divide_scalar(scalar) {\n const ret = wasm.vector3_divide_scalar(this.__wbg_ptr, scalar);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Invert the vector by negating the vector elements.\n *\n * @returns {Vector3}\n */\n negate() {\n const ret = wasm.vector3_negate(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the dot product of this vector with another Vector3 instance.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n dot(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_dot(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the magnitude (length) of the vector.\n *\n * @returns {number}\n */\n magnitude() {\n const ret = wasm.vector3_magnitude(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Calculate the length of the vector.\n * * Since length is equivalent to magnitude, this method is an alias.\n *\n * @returns {number}\n */\n length() {\n const ret = wasm.vector3_length(this.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Normalize the vector\n *\n * @returns {Vector3}\n */\n normalize() {\n const ret = wasm.vector3_normalize(this.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the cross product and return the result as a new Vector3\n *\n * @param {Vector3} other\n * @returns {Vector3}\n */\n cross(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_cross(this.__wbg_ptr, other.__wbg_ptr);\n return Vector3.__wrap(ret);\n }\n /**\n *\n * * Calculate the distance between this vector and another Vector3 instance.\n * * Return the distance as a f64 value in Euclidean space.\n *\n * @param {Vector3} other\n * @returns {number}\n */\n distance(other) {\n _assertClass(other, Vector3);\n const ret = wasm.vector3_distance(this.__wbg_ptr, other.__wbg_ptr);\n return ret;\n }\n /**\n *\n * * Apply a transformation matrix to the vector.\n * * This method assumes the transformation matrix is a 4x4 matrix.\n *\n * @param {Matrix4} matrix\n */\n apply_matrix4(matrix) {\n _assertClass(matrix, Matrix4);\n var ptr0 = matrix.__destroy_into_raw();\n wasm.vector3_apply_matrix4(this.__wbg_ptr, ptr0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_getRandomValues_38097e921c2494c3 = function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments) };\n imports.wbg.__wbg_vector3_new = function(arg0) {\n const ret = Vector3.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_vector3_unwrap = function(arg0) {\n const ret = Vector3.__unwrap(arg0);\n return ret;\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat64ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('opengeometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { CSS2DObject } from \"three/examples/jsm/renderers/CSS2DRenderer.js\";\n\nfunction spotLabelElement() {\n const spotLabelElement = document.createElement(\"div\");\n spotLabelElement.style.position = \"absolute\";\n spotLabelElement.style.width = \"3px\";\n spotLabelElement.style.height = \"3px\";\n spotLabelElement.style.backgroundColor = \"blue\";\n spotLabelElement.style.pointerEvents = \"none\";\n // spotLabelElement.style.borderRadius = \"50%\";\n spotLabelElement.style.border = \"1px solid black\";\n return spotLabelElement;\n}\n\nexport class SpotLabel extends CSS2DObject {\n constructor() {\n const spotLabel = spotLabelElement();\n super(spotLabel);\n }\n}\n","/**\n * Version string exposed by the Three.js adapter at runtime.\n */\nexport const OPEN_GEOMETRY_THREE_VERSION = \"2.0.3\";\n\n/**\n * Options accepted when initializing the OpenGeometry runtime.\n * - `wasmURL`: Optional URL to the OpenGeometry wasm binary. If not provided, it defaults to a relative path.\n * - `debugMeshes`: Optional flag to enable debug meshes for visualizing geometry. Defaults to `false`.\n */\nexport interface OpenGeometryOptions {\n wasmURL?: string;\n debugMeshes?: boolean;\n}\n","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\nexport function getUUID() {\n const uuid = uuidv4();\n return uuid;\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n ParametricEditCapabilities,\n ParametricEditFamily,\n ParametricEntityType,\n ParametricPlacement,\n} from \"./types\";\nimport type { ObjectTransformation } from \"../freeform/types\";\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\n/**\n * Returns the canonical capability payload exposed by parametric wrappers.\n */\nexport function createParametricEditCapabilities(\n entityType: ParametricEntityType,\n editFamily: ParametricEditFamily\n): ParametricEditCapabilities {\n return {\n editingMode: \"parametric\",\n entityType,\n editFamily,\n canEditConfig: true,\n canEditPlacement: true,\n canConvertToFreeform: true,\n };\n}\n\n/**\n * Normalizes optional placement fields into concrete vectors.\n */\nexport function clonePlacement(\n placement: Partial<ParametricPlacement>\n): ParametricPlacement {\n return {\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\n/**\n * Converts a parametric placement payload into the freeform/object transform\n * structure expected by BRep-backed helpers.\n */\nexport function toObjectTransformation(\n placement: ParametricPlacement | ObjectTransformation\n): ObjectTransformation {\n if (\"anchor\" in placement) {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n }\n\n return {\n anchor: new Vector3(0, 0, 0),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n","import {\n OGFreeformEditor as KernelFreeformEditor,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport { FreeformGeometry } from \"../freeform\";\nimport type { ObjectTransformation } from \"../freeform/types\";\nimport type {\n EdgeInfo,\n EditOperationOptions,\n FaceInfo,\n FreeformEditCapabilities,\n FreeformEditResult,\n FreeformFeatureEditCapabilities,\n TopologyId,\n TopologyRenderData,\n TopologyVertexRenderData,\n VertexInfo,\n} from \"./types\";\n\ntype RawFreeformOperationCapabilities = {\n can_push_pull_face: boolean;\n can_move_face: boolean;\n can_extrude_face: boolean;\n can_cut_face: boolean;\n can_move_edge: boolean;\n can_move_vertex: boolean;\n can_insert_vertex_on_edge: boolean;\n can_remove_vertex: boolean;\n can_split_edge: boolean;\n can_loop_cut: boolean;\n reasons?: string[];\n};\n\ntype RawFreeformFeatureEditCapabilities = RawFreeformOperationCapabilities & {\n domain: \"face\" | \"edge\" | \"vertex\";\n topology_id: TopologyId;\n};\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction normalizeFaceInfo(face: FaceInfo): FaceInfo {\n return {\n ...face,\n centroid: toVector3(face.centroid),\n normal: toVector3(face.normal),\n };\n}\n\nfunction normalizeEdgeInfo(edge: EdgeInfo): EdgeInfo {\n return {\n ...edge,\n start: toVector3(edge.start),\n end: toVector3(edge.end),\n };\n}\n\nfunction normalizeVertexInfo(vertex: VertexInfo): VertexInfo {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeTopologyRenderData(\n topology: TopologyRenderData\n): TopologyRenderData {\n return {\n ...topology,\n vertices: topology.vertices.map((vertex) =>\n normalizeTopologyVertex(vertex)\n ),\n };\n}\n\nfunction normalizeTopologyVertex(\n vertex: TopologyVertexRenderData\n): TopologyVertexRenderData {\n return {\n ...vertex,\n position: toVector3(vertex.position),\n };\n}\n\nfunction normalizeFeatureCapabilities(\n raw: RawFreeformFeatureEditCapabilities\n): FreeformFeatureEditCapabilities {\n return {\n domain: raw.domain,\n topologyId: raw.topology_id,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction normalizeFreeformCapabilities(\n raw: RawFreeformOperationCapabilities\n): FreeformEditCapabilities {\n return {\n editingMode: \"freeform\",\n entityType: \"freeform\",\n editFamily: \"freeform\",\n canEditConfig: false,\n canEditPlacement: false,\n canConvertToFreeform: false,\n canPushPullFace: raw.can_push_pull_face,\n canMoveFace: raw.can_move_face,\n canExtrudeFace: raw.can_extrude_face,\n canCutFace: raw.can_cut_face,\n canMoveEdge: raw.can_move_edge,\n canMoveVertex: raw.can_move_vertex,\n canInsertVertexOnEdge: raw.can_insert_vertex_on_edge,\n canRemoveVertex: raw.can_remove_vertex,\n canSplitEdge: raw.can_split_edge,\n canLoopCut: raw.can_loop_cut,\n reasons: raw.reasons,\n };\n}\n\nfunction parseEditResult(payload: string): FreeformEditResult {\n const result = parseJson<FreeformEditResult>(payload);\n return {\n ...result,\n placement: normalizePlacement(result.placement),\n };\n}\n\nfunction serializeOptions(options?: EditOperationOptions): string | undefined {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n ...options,\n constraintAxis: options.constraintAxis\n ? toPlainVector3(options.constraintAxis)\n : undefined,\n constraintPlaneNormal: options.constraintPlaneNormal\n ? toPlainVector3(options.constraintPlaneNormal)\n : undefined,\n });\n}\n\n/**\n * High-level editor facade over the kernel freeform editing API.\n */\nexport class FreeformEditor {\n private readonly geometry: FreeformGeometry;\n private readonly editor: KernelFreeformEditor;\n\n constructor(\n geometry: FreeformGeometry,\n editor: KernelFreeformEditor = new KernelFreeformEditor()\n ) {\n this.geometry = geometry;\n this.editor = editor;\n }\n\n /**\n * Returns the freeform geometry currently managed by this editor.\n */\n getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n /**\n * Returns renderable topology buffers for faces, edges, and vertices.\n */\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a face id.\n */\n getFaceInfo(faceId: TopologyId): FaceInfo {\n return normalizeFaceInfo(\n parseJson<FaceInfo>(\n this.editor.getFaceInfo(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for an edge id.\n */\n getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns semantic and topological information for a vertex id.\n */\n getVertexInfo(vertexId: TopologyId): VertexInfo {\n return normalizeVertexInfo(\n parseJson<VertexInfo>(\n this.editor.getVertexInfo(this.geometry.getKernelGeometry(), vertexId)\n )\n );\n }\n\n /**\n * Returns global edit capabilities for the current freeform model.\n */\n getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single face.\n */\n getFaceEditCapabilities(faceId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getFaceEditCapabilities(this.geometry.getKernelGeometry(), faceId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single edge.\n */\n getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\n\n /**\n * Returns edit capabilities scoped to a single vertex.\n */\n getVertexEditCapabilities(\n vertexId: TopologyId\n ): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getVertexEditCapabilities(\n this.geometry.getKernelGeometry(),\n vertexId\n )\n )\n );\n }\n\n /**\n * Offset a face along its editable normal direction.\n */\n pushPullFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.pushPullFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates new side faces by extruding a face region.\n */\n extrudeFace(\n faceId: TopologyId,\n distance: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.extrudeFace(\n this.geometry.getKernelGeometry(),\n faceId,\n distance,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits a face by connecting two points sampled on its boundary edges.\n */\n cutFace(\n faceId: TopologyId,\n startEdgeId: TopologyId,\n startT: number,\n endEdgeId: TopologyId,\n endT: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.cutFace(\n this.geometry.getKernelGeometry(),\n faceId,\n startEdgeId,\n startT,\n endEdgeId,\n endT,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a face by a translation vector, subject to kernel constraints.\n */\n moveFace(\n faceId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveFace(\n this.geometry.getKernelGeometry(),\n faceId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves an edge by a translation vector, subject to kernel constraints.\n */\n moveEdge(\n edgeId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Moves a vertex by a translation vector, subject to kernel constraints.\n */\n moveVertex(\n vertexId: TopologyId,\n translation: Vector3,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.moveVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n translation,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Inserts a vertex at parametric position `t` along an edge.\n */\n insertVertexOnEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.insertVertexOnEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Splits an edge at parametric position `t`.\n */\n splitEdge(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.splitEdge(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Creates a loop cut that propagates from the selected edge when possible.\n */\n loopCut(\n edgeId: TopologyId,\n t: number,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.loopCut(\n this.geometry.getKernelGeometry(),\n edgeId,\n t,\n serializeOptions(options)\n )\n );\n }\n\n /**\n * Removes a vertex when the current topology allows the edit.\n */\n removeVertex(\n vertexId: TopologyId,\n options?: EditOperationOptions\n ): FreeformEditResult {\n return parseEditResult(\n this.editor.removeVertex(\n this.geometry.getKernelGeometry(),\n vertexId,\n serializeOptions(options)\n )\n );\n }\n}\n\n/**\n * Convenience factory for creating a freeform editor around a geometry wrapper.\n */\nexport function createFreeformEditor(\n geometry: FreeformGeometry\n): FreeformEditor {\n return new FreeformEditor(geometry);\n}\n","import {\n OGFreeformGeometry,\n Vector3,\n} from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type {\n CreateFreeformGeometryOptions,\n FreeformSource,\n ObjectTransformation,\n} from \"./types\";\n\nfunction parseJson<T>(payload: string): T {\n return JSON.parse(payload) as T;\n}\n\nfunction toVector3(value: { x: number; y: number; z: number }): Vector3 {\n return new Vector3(value.x, value.y, value.z);\n}\n\nfunction toPlainVector3(value: { x: number; y: number; z: number }) {\n return {\n x: value.x,\n y: value.y,\n z: value.z,\n };\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n\nfunction normalizePlacement(\n placement: ObjectTransformation\n): ObjectTransformation {\n return {\n anchor: toVector3(placement.anchor),\n translation: toVector3(placement.translation),\n rotation: toVector3(placement.rotation),\n scale: toVector3(placement.scale),\n };\n}\n\nfunction toObjectTransformation(\n placement: NonNullable<CreateFreeformGeometryOptions[\"placement\"]>\n): ObjectTransformation {\n return {\n anchor: cloneVector(placement.anchor, [0, 0, 0]),\n translation: cloneVector(placement.translation, [0, 0, 0]),\n rotation: cloneVector(placement.rotation, [0, 0, 0]),\n scale: cloneVector(placement.scale, [1, 1, 1]),\n };\n}\n\nfunction toPlainObjectTransformation(transform: ObjectTransformation) {\n return {\n anchor: toPlainVector3(transform.anchor),\n translation: toPlainVector3(transform.translation),\n rotation: toPlainVector3(transform.rotation),\n scale: toPlainVector3(transform.scale),\n };\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction normalizeFreeformSerialized(source: FreeformSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\n/**\n * Thin client-side wrapper around the kernel `OGFreeformGeometry` object.\n */\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n /**\n * Returns the stable kernel-side id for this freeform geometry object.\n */\n getId(): string {\n return this.geometry.id;\n }\n\n /**\n * Returns the world-space serialized BRep payload.\n */\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload.\n */\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n /**\n * Returns the serialized triangle position buffer emitted by the kernel.\n */\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n /**\n * Returns world-space triangle positions as a plain number array.\n */\n getGeometryBuffer(): number[] {\n return Array.from(this.geometry.getGeometryBuffer());\n }\n\n /**\n * Returns local-space triangle positions as a plain number array.\n */\n getLocalGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalGeometryBuffer());\n }\n\n /**\n * Returns the serialized outline buffer emitted by the kernel.\n */\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n /**\n * Returns world-space outline segment positions as a plain number array.\n */\n getOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getOutlineGeometryBuffer());\n }\n\n /**\n * Returns local-space outline segment positions as a plain number array.\n */\n getLocalOutlineGeometryBuffer(): number[] {\n return Array.from(this.geometry.getLocalOutlineGeometryBuffer());\n }\n\n /**\n * Returns the current normalized placement for this freeform geometry.\n */\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n /**\n * Replaces the full placement transform in one call.\n */\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n /**\n * Sets translation, rotation, and scale without changing the current anchor.\n */\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n /**\n * Updates only the translation component of the placement.\n */\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n /**\n * Updates only the rotation component of the placement.\n */\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n /**\n * Updates only the scale component of the placement.\n */\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\n\n /**\n * Updates the explicit modeling anchor used by downstream transforms.\n */\n setAnchor(anchor: Vector3): void {\n this.geometry.setAnchor(anchor);\n }\n\n /** @internal */\n getKernelGeometry(): OGFreeformGeometry {\n return this.geometry;\n }\n}\n\n/**\n * Creates a `FreeformGeometry` wrapper from serialized BRep JSON, a parsed\n * BRep object, or another wrapper exposing BRep accessors.\n */\nexport function createFreeformGeometry(\n source: FreeformSource,\n options?: CreateFreeformGeometryOptions\n): FreeformGeometry {\n const id = options?.id ?? `freeform-${Date.now()}`;\n const localBrepSerialized = normalizeFreeformSerialized(source);\n const geometry = new FreeformGeometry(\n new OGFreeformGeometry(id, localBrepSerialized)\n );\n\n if (options?.placement) {\n geometry.setPlacement(toObjectTransformation(options.placement));\n }\n\n return geometry;\n}\n","import { OGLine, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a line segment wrapper.\n */\nexport interface ILineOptions {\n ogid?: string;\n start: Vector3;\n end: Vector3;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Line`.\n */\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Line.setConfig(...)`.\n */\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Line` placement updates.\n */\nexport type LinePlacementUpdate = LinePlacementOptions;\n\n/**\n * Offset result returned by `Line.offset(...)`.\n */\nexport interface ILineOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Simple Line defined by Two Points\n */\nexport class Line extends THREE.Line {\n ogid: string;\n options: ILineOptions = {\n start: new Vector3(0, 0, 0.5),\n end: new Vector3(1, 0, 0.5),\n color: 0x000000,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private line: OGLine;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: ILineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.line = new OGLine(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n start: this.options.start.clone(),\n end: this.options.end.clone(),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Line\");\n }\n }\n\n setConfig(options: LineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"start\" in options || \"end\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.line.set_config(\n nextOptions.start.clone(),\n nextOptions.end.clone()\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.line.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.line.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.line.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: LinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.line.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"line\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.line.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.line.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getDXF() {\n const dxfData = this.line.get_dxf_serialized();\n return dxfData;\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ILineOffsetResult {\n const kernel = this.line as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGLine. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from 'three';\nimport { OGPolyline, Vector3 } from '../../../opengeometry/pkg/opengeometry';\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an ordered polyline wrapper.\n */\nexport interface IPolylineOptions {\n ogid?: string;\n color: number;\n points: Vector3[];\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Polyline`.\n */\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Polyline.setConfig(...)`.\n */\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Polyline` placement updates.\n */\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\n\n/**\n * Offset result returned by `Polyline.offset(...)`.\n */\nexport interface IOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Polyline wrapper backed by the kernel OGPolyline primitive.\n */\nexport class Polyline extends THREE.Line {\n ogid: string;\n options: IPolylineOptions = {\n points: [],\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n isClosed: boolean = false;\n\n private polyline: OGPolyline;\n private fatLine: Line2 | null = null;\n\n transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IPolylineOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.polyline = new OGPolyline(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n points: this.options.points.map((point) => point.clone()),\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polyline\");\n }\n }\n\n setConfig(options: PolylineConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"points\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyline.set_config(nextOptions.points.map((point) => point.clone()));\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polyline.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polyline.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polyline.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolylinePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyline.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polyline\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polyline.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n addPoint(point: Vector3) {\n if (!this.polyline) return;\n\n const { points } = this.options;\n points.push(point);\n\n if (this.options.points.length < 2) return;\n this.setConfig({\n points: this.options.points.map((currentPoint) => currentPoint.clone()),\n });\n }\n\n /**\n * Every time there are property changes, geometry needs to be discarded and regenerated.\n * This is to ensure that the geometry is always up-to-date with the current state.\n */\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyline.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n\n this.isClosed = this.polyline.is_closed();\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IOffsetResult {\n const kernel = this.polyline as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGPolyline. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGArc, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for an arc or full-circle primitive.\n */\nexport interface IArcOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n startAngle: number;\n endAngle: number;\n segments: number;\n color: number;\n fatLines?: boolean;\n width?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Arc`.\n */\nexport interface ArcPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Arc.setConfig(...)`.\n */\nexport type ArcConfigUpdate = Partial<\n Omit<IArcOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Arc` placement updates.\n */\nexport type ArcPlacementUpdate = ArcPlacementOptions;\n\n/**\n * Arc wrapper backed by the kernel OGArc primitive.\n */\nexport class Arc extends THREE.Line {\n ogid: string;\n options: IArcOptions = {\n center: new Vector3(0, 0, 0),\n radius: 3.5,\n startAngle: 0,\n endAngle: Math.PI * 2,\n segments: 32,\n color: 0x00ff00,\n fatLines: false,\n width: 20,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private arc: OGArc;\n private fatLine: Line2 | null = null;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n constructor(options?: IArcOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.arc = new OGArc(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n startAngle: this.options.startAngle,\n endAngle: this.options.endAngle,\n segments: this.options.segments,\n color: this.options.color,\n fatLines: this.options.fatLines,\n width: this.options.width,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Circle Arc\");\n }\n }\n\n setConfig(options: ArcConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"segments\" in options ||\n \"startAngle\" in options ||\n \"endAngle\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"width\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.arc.set_config(\n nextOptions.center.clone(),\n nextOptions.radius,\n nextOptions.startAngle,\n nextOptions.endAngle,\n nextOptions.segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.arc.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: ArcPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.arc.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"arc\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.arc.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.width,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.width ?? 5;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.arc.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.arc.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Arc\");\n }\n return JSON.parse(brepData);\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGRectangle, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { getUUID } from \"../utils/randomizer\";\nimport { Line2 } from 'three/examples/jsm/lines/Line2.js';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js';\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a rectangle profile wrapper.\n */\nexport interface IRectangleOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n breadth: number;\n color: number;\n fatLines?: boolean;\n lineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Rectangle`.\n */\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Rectangle.setConfig(...)`.\n */\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Rectangle` placement updates.\n */\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\n\n/**\n * Offset result returned by `Rectangle.offset(...)`.\n */\nexport interface IRectangleOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Rectangle wrapper backed by the kernel OGRectangle primitive.\n */\nexport class Rectangle extends THREE.Line {\n ogid: string;\n options: IRectangleOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n breadth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private polyLineRectangle: OGRectangle;\n private fatLine: Line2 | null = null;\n\n // set width(width: number) {\n // this.options.width = width;\n // this.polyLineRectangle.update_width(width);\n // this.generateGeometry();\n // }\n\n // set breadth(breadth: number) {\n // this.options.breadth = breadth;\n // this.polyLineRectangle.update_breadth(breadth);\n // this.generateGeometry();\n // }\n\n // set center(center: Vector3) {\n // this.options.center = center;\n // this.polyLineRectangle.update_center(center);\n // this.generateGeometry();\n // }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n if (this.fatLine && this.fatLine.material instanceof LineMaterial) {\n this.fatLine.material.color.set(color);\n }\n }\n\n // set lineWidth(lineWidth: number) {\n // this.options.lineWidth = lineWidth;\n // if (this.material instanceof THREE.LineBasicMaterial) {\n // (this.material as THREE.LineBasicMaterial).linewidth = lineWidth;\n // }\n // }\n\n // FINAL: This flow should be used for other primitives\n constructor(options?: IRectangleOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polyLineRectangle = new OGRectangle(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n breadth: this.options.breadth,\n color: this.options.color,\n fatLines: this.options.fatLines,\n lineWidth: this.options.lineWidth,\n });\n \n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Rectangle\");\n }\n }\n\n setConfig(options: RectangleConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"breadth\" in options;\n const renderChanged =\n \"color\" in options ||\n \"fatLines\" in options ||\n \"lineWidth\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.polyLineRectangle.set_config(\n nextOptions.center.clone(),\n nextOptions.width,\n nextOptions.breadth,\n );\n this.generateGeometry();\n return;\n }\n\n if (renderChanged) {\n this.updateRenderStyle();\n }\n }\n\n getAnchor() {\n const anchor = this.polyLineRectangle.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: RectanglePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polyLineRectangle.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"rectangle\", \"profile\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(\n this.polyLineRectangle.get_local_brep_serialized(),\n {\n id,\n placement: this.getPlacement(),\n }\n );\n }\n\n private getCurrentPositions() {\n const attribute = this.geometry.getAttribute(\"position\");\n if (!attribute || attribute.itemSize !== 3) {\n return [];\n }\n\n const positions = [];\n for (let index = 0; index < attribute.count; index += 1) {\n positions.push(\n attribute.getX(index),\n attribute.getY(index),\n attribute.getZ(index)\n );\n }\n\n return positions;\n }\n\n private updateRenderStyle(bufferData?: number[]) {\n const positions = bufferData ?? this.getCurrentPositions();\n\n if (this.options.fatLines) {\n if (!this.fatLine) {\n this.fatLine = new Line2(\n new LineGeometry(),\n new LineMaterial({\n color: this.options.color,\n linewidth: this.options.lineWidth,\n resolution: new THREE.Vector2(window.innerWidth, window.innerHeight),\n })\n );\n this.add(this.fatLine);\n }\n\n this.fatLine.geometry.setPositions(positions);\n (this.fatLine.material as LineMaterial).color.set(this.options.color);\n (this.fatLine.material as LineMaterial).linewidth = this.options.lineWidth ?? 1;\n (this.fatLine.material as LineMaterial).resolution.set(\n window.innerWidth,\n window.innerHeight\n );\n this.fatLine.visible = true;\n } else if (this.fatLine) {\n this.fatLine.visible = false;\n }\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.visible = !this.options.fatLines;\n }\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.polyLineRectangle.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n\n this.updateRenderStyle(bufferData);\n }\n\n getBrep() {\n const brepData = this.polyLineRectangle.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Rectangle\");\n }\n return JSON.parse(brepData);\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): IRectangleOffsetResult {\n const kernel = this.polyLineRectangle as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGRectangle. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { OGCurve, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\n\n/**\n * Construction options for a control-point-driven curve.\n */\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Curve`.\n */\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Curve.setConfig(...)`.\n */\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Curve` placement updates.\n */\nexport type CurvePlacementUpdate = CurvePlacementOptions;\n\n/**\n * Offset result returned by `Curve.offset(...)`.\n */\nexport interface ICurveOffsetResult {\n points: Vector3[];\n beveledVertexIndices: number[];\n isClosed: boolean;\n}\n\ntype OffsetKernelOutput = {\n points: Array<{ x: number; y: number; z: number }>;\n beveled_vertex_indices: number[];\n is_closed: boolean;\n};\n\n\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n\n\n/**\n * Curve wrapper backed by the kernel OGCurve primitive.\n */\nexport class Curve extends THREE.Line {\n ogid: string;\n options: ICurveOptions = {\n controlPoints: [],\n color: 0x00aa55,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private curve: OGCurve;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICurveOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n this.curve = new OGCurve(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n controlPoints: this.options.controlPoints.map((point) => point.clone()),\n color: this.options.color,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n setConfig(options: CurveConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged = \"controlPoints\" in options;\n const colorChanged = \"color\" in options;\n\n this.options = nextOptions;\n\n if (geometryChanged) {\n this.curve.set_config(\n nextOptions.controlPoints.map((point) => point.clone())\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.curve.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.curve.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.curve.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: CurvePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.curve.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"curve\", \"curve\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.curve.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private generateGeometry() {\n const bufferData = Array.from(this.curve.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (this.material instanceof THREE.LineBasicMaterial) {\n this.material.color.set(this.options.color);\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.LineBasicMaterial({ color: this.options.color });\n }\n }\n\n getOffset(\n distance: number,\n acuteThresholdDegrees: number = 35.0,\n bevel: boolean = true\n ): ICurveOffsetResult {\n const kernel = this.curve as unknown as {\n get_offset_serialized?: OffsetKernelFn;\n };\n if (typeof kernel.get_offset_serialized !== \"function\") {\n throw new Error(\n \"Offset API is not available in OGCurve. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const serialized = kernel.get_offset_serialized(\n distance,\n acuteThresholdDegrees,\n bevel\n );\n const parsed = JSON.parse(serialized) as OffsetKernelOutput;\n\n return {\n points: parsed.points.map((point) => new Vector3(point.x, point.y, point.z)),\n beveledVertexIndices: parsed.beveled_vertex_indices ?? [],\n isClosed: Boolean(parsed.is_closed),\n };\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\nimport { LineSegments2 } from \"three/examples/jsm/lines/LineSegments2.js\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\n/**\n * Outline mesh variants used by shape wrappers.\n */\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\n\n/**\n * Options for building a shape outline mesh.\n */\nexport interface ShapeOutlineMeshOptions {\n positions: number[];\n color?: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nconst DEFAULT_OUTLINE_COLOR = 0x000000;\nconst DEFAULT_OUTLINE_WIDTH = 1;\n\nfunction getOutlineResolution() {\n if (typeof window === \"undefined\") {\n return new THREE.Vector2(1, 1);\n }\n return new THREE.Vector2(window.innerWidth, window.innerHeight);\n}\n\n/**\n * Clamps outline width inputs to the supported positive finite range.\n */\nexport function sanitizeOutlineWidth(width?: number) {\n if (!Number.isFinite(width) || typeof width !== \"number\" || width <= 0) {\n return DEFAULT_OUTLINE_WIDTH;\n }\n return width;\n}\n\n/**\n * Creates either a thin or fat outline mesh from line segment positions.\n */\nexport function createShapeOutlineMesh({\n positions,\n color = DEFAULT_OUTLINE_COLOR,\n fatOutlines = false,\n outlineWidth = DEFAULT_OUTLINE_WIDTH,\n}: ShapeOutlineMeshOptions): ShapeOutlineMesh {\n if (fatOutlines) {\n const fatGeometry = new LineSegmentsGeometry();\n fatGeometry.setPositions(positions);\n const fatMaterial = new LineMaterial({\n color,\n linewidth: sanitizeOutlineWidth(outlineWidth),\n resolution: getOutlineResolution(),\n });\n const fatMesh = new LineSegments2(fatGeometry, fatMaterial);\n fatMesh.computeLineDistances();\n return fatMesh;\n }\n\n const outlineGeometry = new THREE.BufferGeometry();\n outlineGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n\n const outlineMaterial = new THREE.LineBasicMaterial({ color });\n return new THREE.LineSegments(outlineGeometry, outlineMaterial);\n}\n\n/**\n * Disposes the geometry and material owned by an outline mesh.\n */\nexport function disposeShapeOutlineMesh(mesh: ShapeOutlineMesh | null) {\n if (!mesh) {\n return;\n }\n\n mesh.geometry.dispose();\n if (Array.isArray(mesh.material)) {\n mesh.material.forEach((material) => material.dispose());\n return;\n }\n mesh.material.dispose();\n}\n\n/**\n * Updates the color of an existing outline mesh in place.\n */\nexport function setShapeOutlineColor(mesh: ShapeOutlineMesh | null, color: number) {\n if (!mesh) {\n return;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n mesh.material.color.set(color);\n return;\n }\n\n if (mesh.material instanceof LineMaterial) {\n mesh.material.color.set(color);\n }\n}\n\n/**\n * Reads the current outline color, falling back when no outline exists.\n */\nexport function getShapeOutlineColor(\n mesh: ShapeOutlineMesh | null,\n fallback: number = DEFAULT_OUTLINE_COLOR\n) {\n if (!mesh) {\n return fallback;\n }\n\n if (mesh.material instanceof THREE.LineBasicMaterial) {\n return mesh.material.color.getHex();\n }\n\n if (mesh.material instanceof LineMaterial) {\n return mesh.material.color.getHex();\n }\n\n return fallback;\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\nimport type { FreeformSource } from \"../freeform\";\n\n\ntype KernelExtrudeBrepFace = (...args: [string, number]) => string;\n\n\n/**\n * Sources accepted by the BRep-face extrusion helper.\n */\nexport type ExtrudeBrepSource = FreeformSource;\n\n/**\n * Extrudes the first face or wire in a local BRep payload into a closed solid BRep.\n */\nexport function extrudeBrepFace(\n source: ExtrudeBrepSource,\n height: number\n): string {\n const extrudeExport = (OGKernel as Record<string, unknown>).extrudeBrepFace;\n if (typeof extrudeExport !== \"function\") {\n throw new Error(\n \"extrudeBrepFace is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = extrudeExport as KernelExtrudeBrepFace;\n return kernelFunction(resolveLocalBrepSerialized(source), height);\n}\n\nfunction resolveLocalBrepSerialized(source: ExtrudeBrepSource): string {\n if (typeof source === \"string\") {\n return source;\n }\n\n if (typeof source.getLocalBrepSerialized === \"function\") {\n return source.getLocalBrepSerialized();\n }\n\n if (typeof source.getLocalBrepData === \"function\") {\n return serializeBrepLike(source.getLocalBrepData());\n }\n\n if (typeof source.getBrepSerialized === \"function\") {\n return source.getBrepSerialized();\n }\n\n if (typeof source.getBrepData === \"function\") {\n return serializeBrepLike(source.getBrepData());\n }\n\n if (typeof source.getBrep === \"function\") {\n return serializeBrepLike(source.getBrep());\n }\n\n return JSON.stringify(source);\n}\n\nfunction serializeBrepLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n","/**\n * Typed error hierarchy for boolean operations.\n *\n * The Rust kernel emits a structured `BooleanError` as JSON across the WASM\n * boundary (see `main/opengeometry/src/booleans/error.rs`). This module parses\n * that JSON and re-throws it as a typed `BooleanError` (or a more specific\n * subclass) so app code can `instanceof`-discriminate without parsing message\n * strings.\n *\n * Cutter indices are **0-based** to match `Vec` / array indexing on both\n * sides of the boundary.\n */\n\nimport * as THREE from \"three\";\n\nexport type BooleanErrorPhase =\n | \"input_validation\"\n | \"union_pre_pass\"\n | \"subtract_step\"\n | \"output_validation\";\n\nexport type BooleanErrorReason =\n | \"invalid_operand\"\n | \"malformed_input\"\n | \"mixed_operand_kinds\"\n | \"unsupported_operand_kind\"\n | \"non_coplanar_planar_operands\"\n | \"topology_error\"\n | \"kernel_failure\"\n | \"non_manifold_edges\"\n | \"open_shell\"\n | \"coincident_faces\"\n | \"degenerate_triangle\"\n | \"empty_result\"\n | \"overlapping_cutters\"\n | \"cutter_exceeds_host\";\n\ninterface KindPayload {\n code: BooleanErrorReason;\n other_index?: number;\n axis?: string;\n overshoot?: number;\n}\n\ninterface BooleanErrorJson {\n kind: KindPayload;\n phase: BooleanErrorPhase;\n cutter_index: number | null;\n message: string;\n details: string | null;\n edge_samples: Array<[{ x: number; y: number; z: number }, { x: number; y: number; z: number }]> | null;\n}\n\n/**\n * Base class for every typed boolean error. Carries the structured payload the\n * kernel emitted across WASM. Specialized subclasses (`OverlappingCuttersError`,\n * `CutterExceedsHostError`, `NonManifoldOutputError`, `CoincidentFacesError`)\n * narrow the payload for the variants that carry extra fields.\n */\nexport class BooleanError extends Error {\n readonly reason: BooleanErrorReason;\n readonly phase: BooleanErrorPhase;\n readonly cutterIndex: number | null;\n readonly details: string | null;\n readonly edgeSamples: ReadonlyArray<[THREE.Vector3, THREE.Vector3]> | null;\n\n constructor(payload: BooleanErrorJson) {\n super(payload.message);\n this.name = \"BooleanError\";\n this.reason = payload.kind.code;\n this.phase = payload.phase;\n this.cutterIndex = payload.cutter_index;\n this.details = payload.details;\n this.edgeSamples = payload.edge_samples\n ? payload.edge_samples.map(([a, b]) => [\n new THREE.Vector3(a.x, a.y, a.z),\n new THREE.Vector3(b.x, b.y, b.z),\n ] as [THREE.Vector3, THREE.Vector3])\n : null;\n }\n}\n\n/**\n * Two cutters overlap each other. `otherIndex` is the 0-based index of the\n * cutter that conflicts with the one at `cutterIndex`.\n */\nexport class OverlappingCuttersError extends BooleanError {\n readonly otherIndex: number;\n\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"OverlappingCuttersError\";\n this.otherIndex = payload.kind.other_index ?? -1;\n }\n}\n\n/**\n * A cutter extends past the host's hull along the named axis.\n */\nexport class CutterExceedsHostError extends BooleanError {\n readonly axis: \"x\" | \"y\" | \"z\";\n readonly overshoot: number;\n\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"CutterExceedsHostError\";\n const axis = (payload.kind.axis ?? \"x\").toLowerCase();\n this.axis = (axis === \"y\" || axis === \"z\" ? axis : \"x\") as \"x\" | \"y\" | \"z\";\n this.overshoot = payload.kind.overshoot ?? 0;\n }\n}\n\n/**\n * Output mesh has open or over-shared edges after a boolean. `edgeSamples`\n * carries up to ~8 sample non-manifold edges to aid app-side debugging.\n */\nexport class NonManifoldOutputError extends BooleanError {\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"NonManifoldOutputError\";\n }\n}\n\n/**\n * Cutter and host share a coplanar face. Distinct from\n * `DegenerateTriangleError` (zero-area input) — see `06a-snap-tolerance.md`.\n */\nexport class CoincidentFacesError extends BooleanError {\n constructor(payload: BooleanErrorJson) {\n super(payload);\n this.name = \"CoincidentFacesError\";\n }\n}\n\n/**\n * Parses a WASM-thrown error and returns the appropriate typed `BooleanError`\n * subclass. If the error's message is not valid `BooleanError` JSON, returns a\n * fallback `BooleanError` with `reason: \"kernel_failure\"` carrying the original\n * string, so callers always get a typed error and never have to `try/catch`\n * twice.\n */\nexport function parseBooleanError(raw: unknown): BooleanError {\n const message = extractMessage(raw);\n let payload: BooleanErrorJson | null = null;\n\n try {\n const parsed = JSON.parse(message) as Partial<BooleanErrorJson>;\n if (parsed && typeof parsed === \"object\" && parsed.kind && typeof parsed.kind === \"object\") {\n payload = {\n kind: parsed.kind as KindPayload,\n phase: (parsed.phase ?? \"input_validation\") as BooleanErrorPhase,\n cutter_index: parsed.cutter_index ?? null,\n message: parsed.message ?? message,\n details: parsed.details ?? null,\n edge_samples: parsed.edge_samples ?? null,\n };\n }\n } catch {\n payload = null;\n }\n\n if (!payload) {\n payload = {\n kind: { code: \"kernel_failure\" },\n phase: \"input_validation\",\n cutter_index: null,\n message,\n details: null,\n edge_samples: null,\n };\n }\n\n switch (payload.kind.code) {\n case \"overlapping_cutters\":\n return new OverlappingCuttersError(payload);\n case \"cutter_exceeds_host\":\n return new CutterExceedsHostError(payload);\n case \"non_manifold_edges\":\n case \"open_shell\":\n return new NonManifoldOutputError(payload);\n case \"coincident_faces\":\n return new CoincidentFacesError(payload);\n default:\n return new BooleanError(payload);\n }\n}\n\nfunction extractMessage(raw: unknown): string {\n if (raw === null || raw === undefined) {\n return \"\";\n }\n if (typeof raw === \"string\") {\n return raw;\n }\n if (raw instanceof Error) {\n return raw.message;\n }\n if (typeof raw === \"object\" && \"message\" in (raw as Record<string, unknown>)) {\n const message = (raw as Record<string, unknown>).message;\n if (typeof message === \"string\") {\n return message;\n }\n }\n try {\n return String(raw);\n } catch {\n return \"Unknown boolean error\";\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { toCreasedNormals } from \"three/examples/jsm/utils/BufferGeometryUtils.js\";\n\nimport {\n createFreeformGeometry,\n type CreateFreeformGeometryOptions,\n type FreeformGeometry,\n} from \"../freeform\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"../shapes/outline-utils\";\nimport { parseBooleanError } from \"./boolean-errors\";\n\n/**\n * Accepted operand formats for boolean helpers.\n */\nexport type BooleanOperand =\n | string\n | Record<string, unknown>\n | {\n getBrep?: () => unknown;\n getBrepData?: () => unknown;\n getBrepSerialized?: () => string;\n };\n\n/**\n * Kernel-side boolean tuning options.\n *\n * `tolerance` is in **model units** (meters by convention). When omitted, the\n * kernel auto-scales it to `operandsDiagonal * 1e-8` (clamped to a `1e-6`\n * floor in many-subtract). This drives the kernel-side polygon / face math\n * (vertex welding, plane coincidence, AABB enforcement).\n *\n * **NOTE: this tolerance does NOT control boolmesh's internal snap window.**\n * Boolmesh has its own welding tolerance that may treat faces within ~1mm\n * of each other as coincident, regardless of what `tolerance` you pass. If\n * your cutter face sits within about 0.001 m – 0.01 m of a host face you\n * may still hit a `DegenerateTriangle` / `CoincidentFaces` error path.\n *\n * **Recommended cutter overshoot for through-cuts:** `max(hostThickness *\n * 0.05, 0.01)` in model units. See `knowledge/boolean-tolerance-guide.md`.\n *\n * `mergeCoplanarFaces` (default `true`) controls whether the planar pipeline\n * merges coplanar adjacent faces in its output.\n */\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\n/**\n * Rendering options applied to the boolean result mesh.\n *\n * `color`, `opacity`, `transparent`, and `side` override the corresponding\n * fields on the host (LHS) operand's cloned material. Omit them to inherit\n * the host's appearance unchanged.\n */\nexport interface BooleanRenderOptions {\n color?: THREE.ColorRepresentation;\n opacity?: number;\n transparent?: boolean;\n side?: THREE.Side;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\n/**\n * Metadata copied from the host (LHS) operand onto the boolean result so the\n * result can drop into a scene graph without per-call plumbing.\n */\ninterface BooleanHostMetadata {\n material: THREE.Material | null;\n name: string;\n userData: Record<string, unknown> | null;\n}\n\n/**\n * Combined kernel and rendering options accepted by boolean helpers.\n */\nexport interface BooleanExecutionOptions extends BooleanRenderOptions {\n kernel?: BooleanKernelOptions;\n}\n\n/**\n * Structured report returned by the kernel boolean pipeline.\n */\nexport interface BooleanReport {\n operation: string;\n operand_kind: string;\n input_face_count: number;\n input_triangle_count: number;\n output_face_count: number;\n output_shell_count: number;\n empty: boolean;\n}\n\ninterface KernelBooleanResult {\n brepSerialized: string;\n geometrySerialized: string;\n outlineGeometrySerialized: string;\n reportJson: string;\n}\n\n\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n\ntype KernelBooleanManyFunction = (\n lhsBrepSerialized: string,\n rhsBrepsSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n\n\nconst BOOLEAN_CREASE_ANGLE = Math.PI / 5;\nconst BOOLEAN_OUTLINE_THRESHOLD_DEGREES = 26;\n\n/**\n * Renderable result mesh returned by the kernel boolean helpers.\n */\nexport class BooleanResult extends THREE.Mesh {\n ogid: string;\n report: BooleanReport | null = null;\n\n private brepSerialized = \"\";\n private brepData: Record<string, unknown> | null = null;\n private outlinePositions: number[] = [];\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n #outlineMesh: ShapeOutlineMesh | null = null;\n\n constructor(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions,\n host: BooleanOperand | null = null\n ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n\n const metadata = resolveOperandMetadata(host);\n if (metadata.name) {\n this.name = metadata.name;\n }\n if (metadata.userData) {\n this.userData = { ...metadata.userData };\n }\n\n this.applyKernelResult(kernelResult, options, metadata.material);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Updates the result mesh's color in place without re-running the boolean\n * pipeline. Accepts any value Three.js accepts (`number`, hex string, css\n * color name, or `THREE.Color`). No-op for materials without a `color` field.\n */\n set color(value: THREE.ColorRepresentation) {\n const apply = (material: THREE.Material) => {\n if (\"color\" in material) {\n (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color.set(\n value\n );\n }\n material.needsUpdate = true;\n };\n\n if (Array.isArray(this.material)) {\n this.material.forEach(apply);\n return;\n }\n apply(this.material);\n }\n\n get color(): THREE.Color | null {\n const material = Array.isArray(this.material) ? this.material[0] : this.material;\n if (!material || !(\"color\" in material)) {\n return null;\n }\n return (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color;\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(\n kernelResult: KernelBooleanResult,\n options?: BooleanRenderOptions,\n sourceMaterial: THREE.Material | null = null\n ) {\n this.disposeGeometry();\n\n this.brepSerialized = kernelResult.brepSerialized;\n this.brepData = JSON.parse(kernelResult.brepSerialized) as Record<string, unknown>;\n this.report = JSON.parse(kernelResult.reportJson) as BooleanReport;\n\n const positions = JSON.parse(kernelResult.geometrySerialized) as number[];\n const baseGeometry = new THREE.BufferGeometry();\n baseGeometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n const geometry = toCreasedNormals(baseGeometry, BOOLEAN_CREASE_ANGLE);\n geometry.computeBoundingBox();\n this.outlinePositions = getRenderableOutlinePositions(\n geometry,\n kernelResult.outlineGeometrySerialized\n );\n\n const material = buildResultMaterial(sourceMaterial, options);\n\n this.geometry = geometry;\n this.material = material;\n\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n /**\n * Returns the parsed BRep object for reuse with scene export or downstream operations.\n */\n getBrepData() {\n return this.brepData;\n }\n\n /**\n * Returns the serialized BRep JSON emitted by the kernel boolean operation.\n */\n getBrepSerialized() {\n return this.brepSerialized;\n }\n\n canConvertToFreeform() {\n return this.brepSerialized.length > 0;\n }\n\n /**\n * Converts the boolean output into a first-class freeform geometry object so\n * it can participate in direct face/edge/vertex editing.\n */\n toFreeform(options?: CreateFreeformGeometryOptions): FreeformGeometry {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This boolean result cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getBrepSerialized(), {\n id: options?.id ?? this.ogid,\n placement: options?.placement,\n });\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (!enable || this.outlinePositions.length === 0) {\n return;\n }\n\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.outlinePositions,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometry() {\n this.clearOutlineMesh();\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n return;\n }\n this.material.dispose();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n}\n\n/**\n * Computes a kernel-backed boolean union and returns a renderable result mesh.\n *\n * Accepts wrapper objects directly, including `Solid`, `Cuboid`, `Opening`,\n * and other shapes that expose BRep accessors.\n */\nexport function booleanUnion(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanUnion\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean intersection and returns a renderable result mesh.\n */\nexport function booleanIntersection(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanIntersection\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean subtraction and returns a renderable result mesh.\n *\n * Use this when you want a standalone helper rather than a shape-level\n * convenience method like `opening.subtractFrom(host)`.\n */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed repeated subtraction using a left-to-right cutter array.\n *\n * This is used by the shape-level `.subtract([...])` helpers so the heavy\n * boolean orchestration stays in the Rust/WASM layer instead of JavaScript.\n */\nexport function executeBooleanSubtractionMany(\n lhs: BooleanOperand,\n cutters: BooleanOperand[],\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>).booleanSubtractionMany;\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n \"booleanSubtractionMany is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanManyFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n let kernelResult: KernelBooleanResult;\n try {\n kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n JSON.stringify(cutters.map(resolveOperandPayload)),\n kernelOptions\n );\n } catch (error) {\n throw parseBooleanError(error);\n }\n\n return createBooleanResult(kernelResult, options, lhs);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\n *\n * @throws {BooleanError} (or a subclass) when the kernel rejects the operation.\n * See `boolean-errors.ts` for the typed hierarchy.\n */\nfunction executeBoolean(\n exportName: \"booleanUnion\" | \"booleanIntersection\" | \"booleanSubtraction\",\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>)[exportName];\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n `${exportName} is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.`\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n let kernelResult: KernelBooleanResult;\n try {\n kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n } catch (error) {\n throw parseBooleanError(error);\n }\n\n return createBooleanResult(kernelResult, options, lhs);\n}\n\n/**\n * Accepts wrapper objects, raw BRep data, or serialized JSON and normalizes\n * everything into the kernel's serialized input format.\n */\nfunction resolveOperandSerialized(operand: BooleanOperand): string {\n if (typeof operand === \"string\") {\n return operand;\n }\n\n if (typeof operand.getBrepSerialized === \"function\") {\n return serializeBrepLike(operand.getBrepSerialized());\n }\n\n if (typeof operand.getBrepData === \"function\") {\n return serializeBrepLike(operand.getBrepData());\n }\n\n if (typeof operand.getBrep === \"function\") {\n return serializeBrepLike(operand.getBrep());\n }\n\n return serializeBrepLike(operand);\n}\n\n/**\n * Parses a boolean operand into a raw BRep payload so array-backed boolean\n * calls can serialize a JSON array of BReps instead of a JSON array of strings.\n */\nfunction resolveOperandPayload(operand: BooleanOperand) {\n const serialized = resolveOperandSerialized(operand);\n try {\n return JSON.parse(serialized) as Record<string, unknown>;\n } catch {\n throw new Error(\n \"Boolean operands must resolve to valid serialized BRep JSON before array subtraction.\"\n );\n }\n}\n\n/**\n * Accepts either a parsed BRep object or an already serialized JSON payload\n * and always returns the canonical serialized form expected by the wasm API.\n */\nfunction serializeBrepLike(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n/**\n * Translates the camelCase Three-side options into the snake_case wasm payload.\n */\nfunction serializeKernelOptions(options?: BooleanKernelOptions) {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n tolerance: options.tolerance,\n merge_coplanar_faces: options.mergeCoplanarFaces,\n });\n}\n\nfunction createBooleanResult(\n kernelResult: KernelBooleanResult,\n options?: BooleanExecutionOptions,\n host: BooleanOperand | null = null\n) {\n const result = new BooleanResult(kernelResult, options, host);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\n}\n\n/**\n * Returns the material, name, and userData carried on the operand when it is\n * a Three mesh subclass (Solid, Polygon, Cuboid, Opening, BooleanResult,\n * etc.) so the result mesh can drop into a scene graph as-is. Falls back to\n * empty metadata for serialized JSON, parsed BRep objects, or anything else\n * without a reachable host mesh.\n */\nfunction resolveOperandMetadata(\n operand: BooleanOperand | null\n): BooleanHostMetadata {\n const empty: BooleanHostMetadata = { material: null, name: \"\", userData: null };\n\n if (operand === null || typeof operand !== \"object\" || !(operand instanceof THREE.Mesh)) {\n return empty;\n }\n\n const rawMaterial = (operand as THREE.Mesh).material;\n let material: THREE.Material | null = null;\n if (Array.isArray(rawMaterial)) {\n material = rawMaterial[0] ?? null;\n } else if (rawMaterial instanceof THREE.Material) {\n material = rawMaterial;\n }\n\n return {\n material,\n name: operand.name ?? \"\",\n userData: operand.userData ?? null,\n };\n}\n\n/**\n * Builds the boolean result mesh's material by cloning the host (LHS) material\n * when available so the result inherits the host's color, transparency, and\n * side mode. Caller-provided overrides on `BooleanRenderOptions` win, and the\n * polygon-offset settings that prevent z-fighting with the result outline are\n * always reapplied after cloning.\n */\nfunction buildResultMaterial(\n sourceMaterial: THREE.Material | null,\n options?: BooleanRenderOptions\n): THREE.Material {\n const material = sourceMaterial\n ? sourceMaterial.clone()\n : new THREE.MeshStandardMaterial({\n color: 0x2563eb,\n transparent: false,\n opacity: 1,\n side: THREE.FrontSide,\n });\n\n if (options?.color !== undefined && \"color\" in material) {\n (material as THREE.MeshStandardMaterial | THREE.MeshBasicMaterial).color.set(\n options.color\n );\n }\n if (options?.opacity !== undefined) {\n material.opacity = options.opacity;\n material.transparent = options.opacity < 1 || material.transparent;\n }\n if (options?.transparent !== undefined) {\n material.transparent = options.transparent;\n }\n if (options?.side !== undefined) {\n material.side = options.side;\n }\n\n material.polygonOffset = true;\n material.polygonOffsetFactor = 1;\n material.polygonOffsetUnits = 1;\n material.needsUpdate = true;\n return material;\n}\n\n/**\n * Builds a display-quality outline buffer from the rendered mesh and falls back\n * to the kernel-provided edges when the client-side extraction is empty.\n */\nfunction getRenderableOutlinePositions(\n geometry: THREE.BufferGeometry,\n fallbackSerialized: string\n) {\n const edgesGeometry = new THREE.EdgesGeometry(\n geometry,\n BOOLEAN_OUTLINE_THRESHOLD_DEGREES\n );\n const positionsAttribute = edgesGeometry.getAttribute(\"position\");\n const positions =\n positionsAttribute && positionsAttribute.count > 0\n ? Array.from(positionsAttribute.array as ArrayLike<number>)\n : [];\n edgesGeometry.dispose();\n\n if (positions.length > 0) {\n return positions;\n }\n\n return JSON.parse(fallbackSerialized) as number[];\n}\n","import { executeBooleanSubtractionMany } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\n/**\n * Operand types accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperand = BooleanOperand;\n\n/**\n * Array-only operand list accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperands = ShapeSubtractOperand[];\n\n/**\n * Options accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\n\n/**\n * Return type for shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractResult = BooleanResult;\n\n/**\n * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.\n */\nexport function subtractShapeOperand(\n host: ShapeSubtractOperand,\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n if (!Array.isArray(operands)) {\n throw new Error(\n \"shape.subtract(...) now requires an operand array. Pass shape.subtract([operand], options) even for a single cutter.\"\n );\n }\n\n return executeBooleanSubtractionMany(host, operands, options);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport { clonePlacement, toObjectTransformation } from \"../editor\";\nimport { createFreeformGeometry, type FreeformGeometry } from \"../freeform\";\nimport type { FreeformSource, ObjectTransformation } from \"../freeform/types\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport { getUUID } from \"../utils/randomizer\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\n\n/**\n * Construction options for a generic BRep-backed solid.\n */\nexport interface ISolidOptions {\n ogid?: string;\n brep: FreeformSource;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Solid`.\n */\nexport interface SolidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Additional options accepted when creating a `Solid` through face extrusion.\n */\nexport interface ExtrudeSolidOptions\n extends Omit<ISolidOptions, \"brep\" | \"ogid\" | \"anchor\" | \"translation\" | \"rotation\" | \"scale\"> {\n ogid?: string;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Generic renderable BRep-backed solid used for extrusion outputs and other\n * kernel results that are not dedicated parametric shapes.\n */\nexport class Solid extends THREE.Mesh {\n ogid: string;\n options: ISolidOptions = {\n brep: \"{}\",\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n anchor: new Vector3(0, 0, 0),\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private solid: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options: ISolidOptions) {\n super();\n\n this.ogid = options.ogid ?? getUUID();\n this.options = {\n ...this.options,\n ...options,\n ogid: this.ogid,\n anchor: cloneVector(options.anchor, [0, 0, 0]),\n translation: cloneVector(options.translation, [0, 0, 0]),\n rotation: cloneVector(options.rotation, [0, 0, 0]),\n scale: cloneVector(options.scale, [1, 1, 1]),\n };\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n this.solid = createFreeformGeometry(this.options.brep, {\n id: this.ogid,\n placement: this.getPlacementTransform(),\n });\n this.generateGeometry();\n }\n\n /**\n * Extrudes a face-like BRep source and wraps the result as a renderable solid.\n *\n * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.\n */\n static extrude(\n source: FreeformSource,\n height: number,\n options: ExtrudeSolidOptions\n ) {\n return new Solid({\n ...options,\n brep: extrudeBrepFace(source, height),\n });\n }\n\n /**\n * Returns the current placement values as cloned vectors.\n */\n getPlacement() {\n return clonePlacement(this.getPlacementTransform());\n }\n\n /**\n * Applies translation, rotation, and scale updates to the wrapped BRep.\n */\n setPlacement(placement: SolidPlacementOptions) {\n this.options.translation = cloneVector(\n placement.translation ?? this.options.translation,\n [0, 0, 0]\n );\n this.options.rotation = cloneVector(\n placement.rotation ?? this.options.rotation,\n [0, 0, 0]\n );\n this.options.scale = cloneVector(\n placement.scale ?? this.options.scale,\n [1, 1, 1]\n );\n\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getAnchor() {\n return this.getPlacementTransform().anchor.clone();\n }\n\n setAnchor(anchor: Vector3) {\n this.options.anchor = anchor.clone();\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n /**\n * Solid is always convertible back to the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct editing of this solid's BRep.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getLocalBrepSerialized(), {\n id,\n placement: this.getPlacementTransform(),\n });\n }\n\n /**\n * Returns the world-space serialized BRep payload for this solid.\n */\n getBrepSerialized() {\n return this.solid.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload for this solid.\n */\n getLocalBrepSerialized() {\n return this.solid.getLocalBrepSerialized();\n }\n\n /**\n * Returns the parsed world-space BRep object for this solid.\n */\n getBrepData() {\n const brepSerialized = this.getBrepSerialized();\n if (!brepSerialized) {\n throw new Error(\"Brep data is not available for this solid.\");\n }\n return JSON.parse(brepSerialized);\n }\n\n /**\n * Subtracts one or more boolean operands from this solid.\n *\n * This is the main shape-level boolean workflow after operations like\n * `polygon.extrude(height)` or `Solid.extrude(...)`.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Rebuilds the visible mesh and outline from the current freeform geometry.\n */\n generateGeometry() {\n const bufferData = this.solid.getGeometryBuffer();\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n let material: THREE.MeshStandardMaterial;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n material = this.material;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: false,\n opacity: 1,\n depthWrite: true,\n side: THREE.FrontSide,\n });\n this.material = material;\n }\n\n material.color.set(this.options.color);\n material.transparent = false;\n material.opacity = 1;\n material.depthWrite = true;\n material.side = THREE.FrontSide;\n material.needsUpdate = true;\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = this.solid.getOutlineGeometryBuffer();\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n this.#outlineMesh = createShapeOutlineMesh({\n positions: this.solid.getOutlineGeometryBuffer(),\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n private getPlacementTransform(): ObjectTransformation {\n return toObjectTransformation({\n anchor: cloneVector(this.options.anchor, [0, 0, 0]),\n translation: cloneVector(this.options.translation, [0, 0, 0]),\n rotation: cloneVector(this.options.rotation, [0, 0, 0]),\n scale: cloneVector(this.options.scale, [1, 1, 1]),\n });\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const attribute = geometry.getAttribute(\"position\");\n if (\n !(attribute instanceof THREE.BufferAttribute) ||\n attribute.itemSize !== 3 ||\n attribute.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n (attribute.array as Float32Array).set(positions);\n attribute.needsUpdate = true;\n }\n}\n\nfunction cloneVector(\n vector: Vector3 | undefined,\n fallback: [number, number, number]\n): Vector3 {\n return vector?.clone() ?? new Vector3(...fallback);\n}\n","import * as THREE from \"three\";\nimport { OGPolygon, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { Solid } from \"./solid\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\n\n/**\n * Construction options for a planar polygon.\n */\nexport interface IPolygonOptions {\n ogid?: string;\n vertices: Vector3[];\n holes?: Vector3[][];\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface PolygonPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial polygon config updates that regenerate the profile when geometry changes.\n */\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Placement updates accepted by `Polygon`.\n */\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\n\n/**\n * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.\n */\nexport class Polygon extends THREE.Mesh {\n ogid: string;\n options: IPolygonOptions = {\n vertices: [],\n holes: [],\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n polygon: OGPolygon;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options?: IPolygonOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polygon = new OGPolygon(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n vertices: this.options.vertices.map((vertex) => vertex.clone()),\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polygon\");\n }\n }\n\n setConfig(options: PolygonConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"vertices\" in options ||\n \"holes\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.polygon.set_config(this.options.vertices.map((vertex) => vertex.clone()));\n (this.options.holes ?? []).forEach((hole) => {\n this.polygon.add_holes(hole.map((vertex) => vertex.clone()));\n });\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polygon.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polygon.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polygon.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolygonPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polygon.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n /**\n * Returns the editing capability payload advertised by parametric wrappers.\n */\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"profile\");\n }\n\n /**\n * Polygon always supports conversion into the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct BRep editing of this polygon.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.disposeResources();\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.polygon.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.side = THREE.DoubleSide;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshBasicMaterial({\n color: this.options.color,\n side: THREE.DoubleSide,\n });\n }\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.polygon.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n addVertices(vertices: Vector3[]) {\n if (!this.polygon) return;\n this.setConfig({\n vertices: vertices.map((vertex) => vertex.clone()),\n });\n }\n\n addHole(holeVertices: Vector3[]) {\n if (!this.polygon) return;\n this.options.holes = [\n ...(this.options.holes ?? []),\n holeVertices.map((vertex) => vertex.clone()),\n ];\n this.setConfig({\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n });\n }\n\n /**\n * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.\n *\n * This is the recommended public path when a browser CAD or AEC workflow\n * starts from a planar profile and needs a boolean-ready solid.\n */\n extrude(height: number) {\n const config = this.getConfig();\n const placement = this.getPlacement();\n const solid = new Solid({\n brep: extrudeBrepFace(this.polygon.get_local_brep_serialized(), height),\n color: config.color,\n fatOutlines: config.fatOutlines,\n outlineWidth: config.outlineWidth,\n anchor: this.getAnchor(),\n translation: placement.translation.clone(),\n rotation: placement.rotation.clone(),\n scale: placement.scale.clone(),\n });\n\n solid.outline = this.outline;\n solid.outlineColor = this.outlineColor;\n return solid;\n }\n\n /**\n * Returns the serialized BRep payload for this polygon.\n */\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n /**\n * Subtracts one or more boolean operands from this polygon.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.polygon.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometryMaterial() {\n this.disposeResources();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n dispose() {\n this.disposeResources();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n\n private disposeResources() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\n }\n}\n","import { OGCylinder, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a cylinder shape.\n */\nexport interface ICylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n segments: number;\n angle: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Cylinder`.\n */\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Cylinder.setConfig(...)`.\n */\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cylinder` placement updates.\n */\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\n\n/**\n * Cylinder wrapper backed by the kernel cylindrical primitive.\n */\nexport class Cylinder extends THREE.Mesh {\n ogid: string;\n options: ICylinderOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n height: 1,\n segments: 32,\n angle: 2 * Math.PI,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n \n private cylinder: OGCylinder;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICylinderOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cylinder = new OGCylinder(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n height: this.options.height,\n segments: this.options.segments,\n angle: this.options.angle,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Cylinder\");\n }\n }\n\n setConfig(options: CylinderConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"height\" in options ||\n \"segments\" in options ||\n \"angle\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { radius, height, segments, angle, center } = this.options;\n this.cylinder.set_config(\n center.clone(),\n radius,\n height,\n angle,\n segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.cylinder.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CylinderPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cylinder.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cylinder\", \"radial\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cylinder.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.cylinder.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cylinder.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n if (!this.cylinder) return null;\n const brepData = this.cylinder.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cylinder.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cylinder.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cylinder.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Placement updates accepted by `Cuboid`.\n */\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Construction options for a cuboid shape.\n */\nexport interface ICuboidOptions extends CuboidPlacementOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\n/**\n * Partial config payload accepted by `Cuboid.setConfig(...)`.\n */\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cuboid` placement updates.\n */\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\n/**\n * Box-shaped solid wrapper backed by the kernel cuboid primitive.\n */\nexport class Cuboid extends THREE.Mesh {\n ogid: string;\n options: ICuboidOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n fatOutlines: false,\n outlineWidth: 1,\n };\n\n private cuboid: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICuboidOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cuboid = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n setConfig(options: CuboidConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.cuboid.set_config(\n this.options.center.clone(),\n this.options.width,\n this.options.height,\n this.options.depth\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n generateGeometry() {\n const geometryData = Array.from(this.cuboid.get_geometry_buffer());\n this.writePositionsToGeometry(this.geometry, geometryData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cuboid.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.cuboid) return null;\n const brepData = this.cuboid.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cuboid.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cuboid.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cuboid.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n getAnchor() {\n const anchor = this.cuboid.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CuboidPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cuboid.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cuboid.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { booleanSubtraction } from \"../operations/boolean\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for an architectural opening volume.\n */\nexport interface IOpeningOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Opening`.\n */\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Opening.setConfig(...)`.\n */\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Opening` placement updates.\n */\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\n/**\n * Opening wrapper used as a subtractive solid in architectural workflows.\n */\nexport class Opening extends THREE.Mesh {\n ogid: string;\n options: IOpeningOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 0.2,\n color: 0xdad7cd,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n }\n \n private opening: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set height(value: number) {\n this.setConfig({ height: value });\n }\n\n set depth(value: number) {\n this.setConfig({ depth: value });\n }\n\n get dimensions() {\n return {\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n };\n }\n\n constructor(options?: IOpeningOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.opening = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Opening\");\n }\n }\n\n setConfig(options: OpeningConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.opening.set_config(\n center.clone(),\n width,\n height,\n depth\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.opening.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: OpeningPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.opening.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"opening\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.opening.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.opening.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0;\n this.material.depthWrite = false;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0,\n depthWrite: false,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.opening.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.opening) return null;\n const brepData = this.opening.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this opening.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands from this opening volume.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n *\n * Prefer this helper for wall, slab, and other host-cutting workflows in\n * browser-based AEC/BIM tools.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return booleanSubtraction(host, this, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.opening.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a sphere shape.\n */\nexport interface ISphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n widthSegments: number;\n heightSegments: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sphere`.\n */\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sphere.setConfig(...)`.\n */\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sphere` placement updates.\n */\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n\ninterface ISphereKernelInstance {\n set_config: (\n ..._args: [Vector3, number, number, number]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SphereKernelConstructor = new (..._args: [string]) => ISphereKernelInstance;\n\n\n/**\n * Sphere wrapper backed by the kernel sphere primitive.\n */\nexport class Sphere extends THREE.Mesh {\n ogid: string;\n options: ISphereOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n widthSegments: 24,\n heightSegments: 16,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sphere: ISphereKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISphereOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n\n const sphereKey = [\"OG\", \"Sphere\"].join(\"\");\n const sphereExport = (OGKernel as Record<string, unknown>)[sphereKey];\n if (typeof sphereExport !== \"function\") {\n throw new Error(\n \"OGSphere is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SphereKernel = sphereExport as SphereKernelConstructor;\n this.sphere = new SphereKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n widthSegments: this.options.widthSegments,\n heightSegments: this.options.heightSegments,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sphere\");\n }\n }\n\n setConfig(options: SphereConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"widthSegments\" in options ||\n \"heightSegments\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.sphere.set_config(\n this.options.center.clone(),\n this.options.radius,\n this.options.widthSegments,\n this.options.heightSegments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sphere.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: SpherePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sphere.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sphere\", \"radial\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sphere.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sphere.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sphere.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sphere.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this sphere.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this sphere.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const lineBuffer = Array.from(this.sphere.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: lineBuffer,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGWedge, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a wedge/prism shape.\n */\nexport interface IWedgeOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Wedge`.\n */\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Wedge.setConfig(...)`.\n */\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Wedge` placement updates.\n */\nexport type WedgePlacementUpdate = WedgePlacementOptions;\n\n/**\n * Wedge wrapper backed by the kernel wedge primitive.\n */\nexport class Wedge extends THREE.Mesh {\n ogid: string;\n options: IWedgeOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private wedge: OGWedge;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: IWedgeOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.wedge = new OGWedge(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Wedge\");\n }\n }\n\n setConfig(options: WedgeConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.wedge.set_config(center.clone(), width, height, depth);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.wedge.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: WedgePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.wedge.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"wedge\", \"wedge\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.wedge.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.wedge.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n const brepData = this.wedge.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this wedge.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this wedge.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a swept solid.\n */\nexport interface ISweepOptions {\n ogid?: string;\n path: Vector3[];\n profile: Vector3[];\n color: number;\n capStart?: boolean;\n capEnd?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sweep`.\n */\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sweep.setConfig(...)`.\n */\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sweep` placement updates.\n */\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n\ninterface ISweepKernelInstance {\n set_config_with_caps: (\n ..._args: [Vector3[], Vector3[], boolean, boolean]\n ) => void;\n set_transform: (..._args: [Vector3, Vector3, Vector3]) => void;\n set_anchor: (..._args: [Vector3]) => void;\n reset_anchor: () => void;\n get_geometry_buffer(): Float64Array;\n get_brep_serialized(): string;\n get_local_brep_serialized(): string;\n get_outline_geometry_buffer(): Float64Array;\n get_anchor(): Vector3;\n}\n\ntype SweepKernelConstructor = new (..._args: [string]) => ISweepKernelInstance;\n\n\n/**\n * Sweep wrapper backed by the kernel sweep primitive.\n */\nexport class Sweep extends THREE.Mesh {\n ogid: string;\n options: ISweepOptions = {\n path: [\n new Vector3(0, 0, 0),\n new Vector3(0, 1, 0),\n ],\n profile: [\n new Vector3(-0.25, 0, -0.25),\n new Vector3(0.25, 0, -0.25),\n new Vector3(0.25, 0, 0.25),\n new Vector3(-0.25, 0, 0.25),\n ],\n color: 0x00ff00,\n capStart: true,\n capEnd: true,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private sweep: ISweepKernelInstance;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ISweepOptions) {\n super();\n\n this.ogid = options?.ogid ?? getUUID();\n const sweepExport = (OGKernel as Record<string, unknown>)[\"OGSweep\"];\n if (typeof sweepExport !== \"function\") {\n throw new Error(\n \"OGSweep is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n const SweepKernel = sweepExport as SweepKernelConstructor;\n this.sweep = new SweepKernel(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n path: this.options.path.map((point) => point.clone()),\n profile: this.options.profile.map((point) => point.clone()),\n color: this.options.color,\n capStart: this.options.capStart,\n capEnd: this.options.capEnd,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Sweep\");\n }\n\n if (this.options.path.length < 2) {\n throw new Error(\"Sweep path requires at least 2 points.\");\n }\n\n if (this.options.profile.length < 3) {\n throw new Error(\"Sweep profile requires at least 3 points.\");\n }\n }\n\n setConfig(options: SweepConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"path\" in options ||\n \"profile\" in options ||\n \"capStart\" in options ||\n \"capEnd\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.validateOptions();\n\n const path = this.options.path.map((point) => point.clone());\n const profile = this.options.profile.map((point) => point.clone());\n const capStart = this.options.capStart ?? true;\n const capEnd = this.options.capEnd ?? true;\n\n this.sweep.set_config_with_caps(path, profile, capStart, capEnd);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.sweep.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.sweep.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.sweep.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: SweepPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.sweep.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"sweep\", \"sweep\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.sweep.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.sweep.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n // this.material.transparent = true;\n // this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n // transparent: true,\n // opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n const brepData = this.sweep.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for Sweep.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this sweep.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Arc } from \"../primitives/arc\";\nimport { Curve } from \"../primitives/curve\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\n\n/**\n * Adds a basic primitives showcase to the provided scene.\n */\nexport function createPrimitivesExample(scene: THREE.Scene) {\n const line = new Line({\n start: new Vector3(-3.0, 0.0, -2.0),\n end: new Vector3(-1.0, 0.0, -1.0),\n color: 0x111827,\n });\n\n const polyline = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, 1.6),\n new Vector3(-1.4, 0.0, 2.4),\n new Vector3(-0.7, 0.0, 1.8),\n new Vector3(-0.2, 0.0, 2.6),\n ],\n color: 0x0284c7,\n });\n\n const arc = new Arc({\n center: new Vector3(1.0, 0.0, -1.0),\n radius: 1.0,\n startAngle: 0.0,\n endAngle: Math.PI * 1.5,\n segments: 32,\n color: 0xb91c1c,\n });\n\n const rectangle = new Rectangle({\n center: new Vector3(2.0, 0.0, 1.8),\n width: 1.5,\n breadth: 0.9,\n color: 0x1d4ed8,\n });\n\n const curve = new Curve({\n controlPoints: [\n new Vector3(-0.8, 0.0, -2.2),\n new Vector3(0.0, 0.0, -2.4),\n new Vector3(0.9, 0.0, -1.8),\n new Vector3(1.6, 0.0, -2.0),\n ],\n color: 0x7c3aed,\n });\n\n scene.add(line);\n scene.add(polyline);\n scene.add(arc);\n scene.add(rectangle);\n scene.add(curve);\n\n return { line, polyline, arc, rectangle, curve };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Cylinder } from \"../shapes/cylinder\";\nimport { Opening } from \"../shapes/opening\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\nimport { Wedge } from \"../shapes/wedge\";\n\n/**\n * Adds a basic shapes showcase to the provided scene.\n */\nexport function createShapesExample(scene: THREE.Scene) {\n const fatOutlineWidth = 4;\n\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.0, 0.0, -0.5),\n new Vector3(-2.2, 0.0, 0.5),\n new Vector3(-1.2, 0.0, 0.2),\n new Vector3(-1.5, 0.0, -0.8),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n polygon.outline = true;\n\n const cuboid = new Cuboid({\n center: new Vector3(0.0, 0.8, -1.2),\n width: 1.2,\n height: 1.6,\n depth: 1.0,\n color: 0x10b981,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cuboid.outline = true;\n\n const cylinder = new Cylinder({\n center: new Vector3(1.8, 0.8, -0.8),\n radius: 0.6,\n height: 1.6,\n segments: 28,\n angle: Math.PI * 2,\n color: 0xf97316,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cylinder.outline = true;\n\n const wedge = new Wedge({\n center: new Vector3(3.4, 0.8, -1.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x7c3aed,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n wedge.outline = true;\n\n const sphere = new Sphere({\n center: new Vector3(0.6, 1.0, 1.2),\n radius: 0.9,\n widthSegments: 28,\n heightSegments: 18,\n color: 0x0ea5e9,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sphere.outline = true;\n\n const opening = new Opening({\n center: new Vector3(2.4, 0.9, 1.2),\n width: 1.0,\n height: 1.8,\n depth: 0.3,\n color: 0x9ca3af,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n opening.outline = true;\n\n const sweep = new Sweep({\n path: [\n new Vector3(-2.8, 0.0, 2.4),\n new Vector3(-2.2, 0.6, 2.8),\n new Vector3(-1.4, 1.2, 2.4),\n new Vector3(-0.8, 1.7, 1.8),\n ],\n profile: [\n new Vector3(-0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, 0.2),\n new Vector3(-0.2, 0.0, 0.2),\n ],\n color: 0x14b8a6,\n capStart: true,\n capEnd: true,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sweep.outline = true;\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(cylinder);\n scene.add(wedge);\n scene.add(sphere);\n scene.add(opening);\n scene.add(sweep);\n\n return { polygon, cuboid, cylinder, wedge, sphere, opening, sweep };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Sweep } from \"../shapes/sweep\";\n\ntype KernelVertex = {\n position: {\n x: number;\n y: number;\n z: number;\n };\n};\n\ntype KernelBrep = {\n vertices: KernelVertex[];\n};\n\nfunction toVector3List(vertices: KernelVertex[]): Vector3[] {\n return vertices.map((vertex) => {\n const { x, y, z } = vertex.position;\n return new Vector3(x, y, z);\n });\n}\n\nexport function createSweepExample(scene: THREE.Scene) {\n const pathPrimitive = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, -1.0),\n new Vector3(-1.2, 0.5, 0.2),\n new Vector3(0.0, 1.1, 0.9),\n new Vector3(1.1, 1.7, 0.3),\n new Vector3(2.0, 2.2, -0.8),\n ],\n color: 0x444444,\n });\n\n const profilePrimitive = new Rectangle({\n center: new Vector3(0, 0, 0),\n width: 0.7,\n breadth: 0.4,\n color: 0x1f77b4,\n });\n\n // const profilePrimitive = new Arc();\n\n const profileBrep = profilePrimitive.getBrep() as KernelBrep;\n const profilePoints = toVector3List(profileBrep.vertices);\n\n const sweep = new Sweep({\n path: pathPrimitive.options.points.map((point) => point.clone()),\n profile: profilePoints,\n color: 0x2a9d8f,\n capStart: true,\n capEnd: false,\n fatOutlines: true,\n outlineWidth: 4,\n });\n\n scene.add(pathPrimitive);\n scene.add(profilePrimitive);\n scene.add(sweep);\n\n return {\n pathPrimitive,\n profilePrimitive,\n sweep,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Curve } from \"../primitives/curve\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction toRenderableOffsetPoints(points: Vector3[], isClosed: boolean): Vector3[] {\n const output = points.map((point) => point.clone());\n if (!isClosed || output.length === 0) {\n return output;\n }\n\n if (!areClose(output[0], output[output.length - 1])) {\n output.push(output[0].clone());\n }\n\n return output;\n}\n\nexport function createOffsetExample(scene: THREE.Scene) {\n const baseLine = new Line({\n start: new Vector3(-3.0, 0.0, -2.2),\n end: new Vector3(-0.7, 0.0, -1.1),\n color: 0x1f2937,\n });\n\n const lineOffset = baseLine.getOffset(0.35, 35.0, true);\n const lineOffsetPrimitive = new Line({\n start: lineOffset.points[0],\n end: lineOffset.points[1],\n color: 0xef4444,\n });\n\n const basePolyline = new Polyline({\n points: [\n new Vector3(-1.2, 0.0, -2.4),\n new Vector3(0.2, 0.0, -1.6),\n new Vector3(0.8, 0.0, -0.4),\n new Vector3(0.0, 0.0, -0.2),\n new Vector3(2.5, 0.0, 1.2),\n ],\n color: 0x0f172a,\n });\n\n const polylineOffset = basePolyline.getOffset(0.45, 35.0, true);\n const polylineOffsetPrimitive = new Polyline({\n points: polylineOffset.points,\n color: 0xdc2626,\n });\n\n const baseRectangle = new Rectangle({\n center: new Vector3(1.2, 0.0, -2.1),\n width: 1.6,\n breadth: 1.0,\n color: 0x1d4ed8,\n });\n\n const rectangleOffset = baseRectangle.getOffset(0.25, 40.0, true);\n const rectangleOffsetPrimitive = new Polyline({\n points: toRenderableOffsetPoints(rectangleOffset.points, rectangleOffset.isClosed),\n color: 0xf97316,\n });\n\n const baseCurve = new Curve({\n controlPoints: [\n new Vector3(-3.0, 0.0, 1.3),\n new Vector3(-2.0, 0.0, 1.7),\n new Vector3(-1.1, 0.0, 1.6),\n new Vector3(-0.4, 0.0, 2.0),\n ],\n color: 0x0ea5e9,\n });\n\n const curveOffset = baseCurve.getOffset(0.3, 45.0, true);\n const curveOffsetPrimitive = new Polyline({\n points: curveOffset.points,\n color: 0xbe123c,\n });\n\n scene.add(baseLine);\n scene.add(lineOffsetPrimitive);\n scene.add(basePolyline);\n scene.add(polylineOffsetPrimitive);\n scene.add(baseRectangle);\n scene.add(rectangleOffsetPrimitive);\n scene.add(baseCurve);\n scene.add(curveOffsetPrimitive);\n\n return {\n baseLine,\n lineOffsetPrimitive,\n basePolyline,\n polylineOffsetPrimitive,\n baseRectangle,\n rectangleOffsetPrimitive,\n baseCurve,\n curveOffsetPrimitive,\n polylineOffset,\n rectangleOffset,\n curveOffset,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Polygon } from \"../shapes/polygon\";\nimport {\n BooleanError,\n CoincidentFacesError,\n CutterExceedsHostError,\n NonManifoldOutputError,\n OverlappingCuttersError,\n} from \"../operations/boolean-errors\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction buildWallOutline(left: Vector3[], right: Vector3[]): Vector3[] {\n if (left.length === 0 || right.length === 0) {\n return [];\n }\n\n const outline = [...left.map((point) => point.clone())];\n const rightReversed = [...right.map((point) => point.clone())].reverse();\n outline.push(...rightReversed);\n\n if (outline.length > 2 && areClose(outline[0], outline[outline.length - 1])) {\n outline.pop();\n }\n\n return outline;\n}\n\nexport interface WallFromOffsetsOptions {\n /**\n * Number of doors to subtract from the extruded wall. Doors are placed at\n * evenly distributed centerline-segment midpoints. Default `0` (no cuts).\n */\n doorCount?: number;\n /**\n * Cutter overshoot in millimeters. The debt sheet's `#6a` symptom is at\n * 1mm; default 1mm so callers exercise the snap-tolerance regime by default\n * when cuts are enabled.\n */\n overshootMm?: number;\n /**\n * Wall extrusion height in meters. Default `2.6` to match the example HTML.\n */\n height?: number;\n}\n\nfunction midpoint(a: Vector3, b: Vector3): Vector3 {\n return new Vector3((a.x + b.x) * 0.5, (a.y + b.y) * 0.5, (a.z + b.z) * 0.5);\n}\n\nfunction buildDoorCutters(\n centerlinePoints: Vector3[],\n count: number,\n overshootMeters: number,\n wallThickness: number,\n doorHeight: number\n): Cuboid[] {\n const cutters: Cuboid[] = [];\n const wallDepth = wallThickness + 2 * overshootMeters;\n const doorWidth = 0.6;\n\n const segments = centerlinePoints.length - 1;\n const stride = Math.max(1, Math.floor(segments / count));\n\n for (let doorIdx = 0; doorIdx < count; doorIdx++) {\n const segmentIdx = Math.min(segments - 1, doorIdx * stride);\n const a = centerlinePoints[segmentIdx];\n const b = centerlinePoints[segmentIdx + 1];\n const mid = midpoint(a, b);\n\n cutters.push(\n new Cuboid({\n width: doorWidth,\n height: doorHeight,\n depth: wallDepth,\n center: new Vector3(0, 0, 0),\n translation: new Vector3(mid.x, doorHeight * 0.5 + 0.001, mid.z),\n color: 0xef4444,\n })\n );\n }\n\n return cutters;\n}\n\n/**\n * Renders a human-readable description for a typed `BooleanError` (or any\n * other thrown value). Used by the example HTML to surface kernel failures\n * in a status panel without losing the structured payload.\n */\nexport function describeWallSubtractError(error: unknown): string {\n if (error instanceof OverlappingCuttersError) {\n return `OverlappingCuttersError @ cutter #${error.cutterIndex} (other #${error.otherIndex}): ${error.details ?? error.message}`;\n }\n if (error instanceof CutterExceedsHostError) {\n return `CutterExceedsHostError: cutter overshoots ${error.axis} by ${error.overshoot.toExponential(3)}`;\n }\n if (error instanceof CoincidentFacesError) {\n return `CoincidentFacesError: ${error.details ?? error.message}`;\n }\n if (error instanceof NonManifoldOutputError) {\n const samples = error.edgeSamples?.length ?? 0;\n return `NonManifoldOutputError: ${samples} non-manifold edges sampled — ${error.details ?? error.message}`;\n }\n if (error instanceof BooleanError) {\n return `BooleanError (${error.reason}, phase ${error.phase}): ${error.message}`;\n }\n if (error instanceof Error) {\n return `Untyped error: ${error.message}`;\n }\n return `Untyped error: ${String(error)}`;\n}\n\nexport function createWallFromOffsetsExample(\n scene: THREE.Scene,\n options: WallFromOffsetsOptions = {}\n) {\n const centerline = new Polyline({\n points: [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n color: 0x1f2937,\n });\n\n const wallThickness = 0.45;\n const half = wallThickness * 0.5;\n const acuteThreshold = 35.0;\n const bevel = true;\n const wallHeight = options.height ?? 2.6;\n\n const leftOffset = centerline.getOffset(half, acuteThreshold, bevel);\n const rightOffset = centerline.getOffset(-half, acuteThreshold, bevel);\n\n const leftOffsetPolyline = new Polyline({\n points: leftOffset.points,\n color: 0x22c55e,\n });\n\n const rightOffsetPolyline = new Polyline({\n points: rightOffset.points,\n color: 0xf97316,\n });\n\n const wallOutline = buildWallOutline(leftOffset.points, rightOffset.points);\n if (wallOutline.length < 3) {\n throw new Error(\"Failed to create wall polygon from offsets.\");\n }\n\n const wallPolygon = new Polygon({\n vertices: wallOutline,\n color: 0x3b82f6,\n });\n\n wallPolygon.position.y = 0.01;\n\n scene.add(centerline);\n scene.add(leftOffsetPolyline);\n scene.add(rightOffsetPolyline);\n scene.add(wallPolygon);\n\n let cutResult: { wall: THREE.Object3D; cutters: Cuboid[] } | null = null;\n let cutError: unknown = null;\n\n if ((options.doorCount ?? 0) > 0) {\n const overshootMeters = (options.overshootMm ?? 1) * 0.001;\n const wallSolid = wallPolygon.extrude(wallHeight);\n const cutters = buildDoorCutters(\n [\n new Vector3(-2.6, 0.0, -1.9),\n new Vector3(-1.2, 0.0, -1.0),\n new Vector3(-0.2, 0.0, 0.1),\n new Vector3(0.6, 0.0, 0.2),\n new Vector3(0.1, 0.0, 1.0),\n new Vector3(2.6, 0.0, 2.0),\n ],\n options.doorCount ?? 0,\n overshootMeters,\n wallThickness,\n 2.1\n );\n\n try {\n const cutWall = wallSolid.subtract(cutters, {\n color: 0x3b82f6,\n transparent: false,\n opacity: 1,\n });\n scene.add(cutWall);\n cutResult = { wall: cutWall, cutters };\n } catch (error) {\n cutError = error;\n scene.add(wallSolid);\n cutResult = { wall: wallSolid, cutters };\n }\n }\n\n return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\n cutResult,\n cutError,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\n\nimport {\n BooleanExecutionOptions,\n BooleanResult,\n booleanIntersection,\n booleanSubtraction,\n booleanUnion,\n} from \"../operations/boolean\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\n\nexport type BooleanExampleOperation = \"union\" | \"intersection\" | \"subtraction\";\nexport type BooleanExampleMode = \"solid\" | \"polygon\" | \"extruded\";\n\nexport interface BooleanExampleBuildOptions extends BooleanExecutionOptions {\n mode: BooleanExampleMode;\n sphereCenter?: Vector3;\n polygonOffset?: Vector3;\n extrudedOffset?: Vector3;\n}\n\nexport interface BooleanExampleBuildResult {\n group: THREE.Group;\n lhs: THREE.Object3D;\n rhs: THREE.Object3D;\n result: BooleanResult;\n title: string;\n description: string;\n}\n\n/**\n * Builds a complete operand/result scene group for a boolean example page.\n */\nexport function createBooleanExample(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n): BooleanExampleBuildResult {\n const preset = createPreset(operation, options);\n\n const execute = getBooleanExecutor(operation);\n const result = execute(preset.lhsOperand, preset.rhsOperand, options);\n\n const group = new THREE.Group();\n group.add(preset.lhsVisual);\n group.add(preset.rhsVisual);\n group.add(result);\n\n return {\n group,\n lhs: preset.lhsVisual,\n rhs: preset.rhsVisual,\n result,\n title: preset.title,\n description: preset.description,\n };\n}\n\nfunction createPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n switch (options.mode) {\n case \"solid\":\n return createSolidPreset(operation, options);\n case \"polygon\":\n return createPolygonPreset(operation, options);\n case \"extruded\":\n return createExtrudedPreset(operation, options);\n }\n}\n\n/**\n * Builds the solid-operand preset used by the example pages.\n */\nfunction createSolidPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const base = new Cuboid({\n center: new Vector3(-0.1, 0.0, 0.0),\n width: 2.1,\n height: 1.4,\n depth: 1.6,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const tool = new Sphere({\n center: options.sphereCenter ?? new Vector3(0.45, 0.12, 0.18),\n radius: operation === \"intersection\" ? 0.88 : 0.78,\n widthSegments: 22,\n heightSegments: 16,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n base.outline = options.outline ?? true;\n tool.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Solid`,\n description: \"Cuboid and sphere overlap to demonstrate the 3D solid boolean path.\",\n lhsOperand: base,\n rhsOperand: tool,\n lhsVisual: base,\n rhsVisual: tool,\n };\n}\n\n/**\n * Builds the coplanar polygon preset used by the example pages.\n */\nfunction createPolygonPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const polygonOffset = options.polygonOffset ?? new Vector3(0.0, 0.0, 0.0);\n const lhsVertices = [\n new Vector3(-1.8, 0.0, -0.8),\n new Vector3(0.4, 0.0, -0.8),\n new Vector3(0.4, 0.0, 1.0),\n new Vector3(-1.8, 0.0, 1.0),\n ];\n const rhsVertices = translateVertices(\n operation === \"subtraction\"\n ? [\n new Vector3(-0.55, 0.0, -0.35),\n new Vector3(1.2, 0.0, -0.35),\n new Vector3(1.2, 0.0, 0.65),\n new Vector3(-0.55, 0.0, 0.65),\n ]\n : [\n new Vector3(-0.4, 0.0, -1.1),\n new Vector3(1.55, 0.0, -1.1),\n new Vector3(1.55, 0.0, 0.7),\n new Vector3(-0.4, 0.0, 0.7),\n ],\n polygonOffset\n );\n\n const lhs = new Polygon({\n vertices: lhsVertices,\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Polygon({\n vertices: rhsVertices,\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n lhs.outline = options.outline ?? true;\n rhs.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Polygon`,\n description: \"Two coplanar polygon faces exercise the planar boolean path.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\n };\n}\n\n/**\n * Builds an extrusion-first preset that exercises polygon.extrude(height) and\n * reuses the standard solid boolean pipeline.\n */\nfunction createExtrudedPreset(\n operation: BooleanExampleOperation,\n options: BooleanExampleBuildOptions\n) {\n const outlineWidth = options.outlineWidth ?? 3;\n const extrudedOffset = options.extrudedOffset ?? new Vector3(0.0, 0.0, 0.0);\n\n const wallProfile = new Polygon({\n vertices: [\n new Vector3(-2.2, 0.0, -0.18),\n new Vector3(2.2, 0.0, -0.18),\n new Vector3(2.2, 0.0, 0.18),\n new Vector3(-2.2, 0.0, 0.18),\n ],\n color: 0x60a5fa,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const openingProfile = new Polygon({\n vertices: [\n new Vector3(-0.7, 0.0, -0.34),\n new Vector3(0.9, 0.0, -0.34),\n new Vector3(0.9, 0.0, 0.34),\n new Vector3(-0.7, 0.0, 0.34),\n ],\n color: 0xf97316,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n\n const wall = wallProfile.extrude(2.8);\n const opening = openingProfile.extrude(operation === \"intersection\" ? 1.45 : 1.35);\n opening.setTranslation(\n new Vector3(extrudedOffset.x, 0.85, extrudedOffset.z)\n );\n\n wall.outline = options.outline ?? true;\n opening.outline = options.outline ?? true;\n\n return {\n title: `${capitalize(operation)} Extruded Solid`,\n description:\n \"Two polygon.extrude(height) solids overlap to demonstrate renderable BRep booleans.\",\n lhsOperand: wall,\n rhsOperand: opening,\n lhsVisual: wall,\n rhsVisual: opening,\n };\n}\n\n/**\n * Selects the exported boolean helper that matches the current example mode.\n */\nfunction getBooleanExecutor(operation: BooleanExampleOperation) {\n switch (operation) {\n case \"union\":\n return booleanUnion;\n case \"intersection\":\n return booleanIntersection;\n case \"subtraction\":\n return booleanSubtraction;\n }\n}\n\n/**\n * Formats the operation name for example titles.\n */\nfunction capitalize(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Applies a uniform translation to the polygon operand so examples can move it\n * interactively without mutating the base preset coordinates.\n */\nfunction translateVertices(vertices: Vector3[], offset: Vector3) {\n return vertices.map(\n (vertex) =>\n new Vector3(\n vertex.x + offset.x,\n vertex.y + offset.y,\n vertex.z + offset.z\n )\n );\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport {\n FreeformEditResult,\n FreeformEditor,\n createFreeformEditor,\n} from \"../editor\";\nimport { Line } from \"../primitives/line\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Cuboid } from \"../shapes/cuboid\";\n\nfunction topFaceId(freeformEditor: FreeformEditor): number | null {\n let bestFaceId: number | null = null;\n let bestY = Number.NEGATIVE_INFINITY;\n\n for (const face of freeformEditor.getTopologyRenderData().faces) {\n const info = freeformEditor.getFaceInfo(face.face_id);\n if (info.centroid.y > bestY) {\n bestY = info.centroid.y;\n bestFaceId = face.face_id;\n }\n }\n\n return bestFaceId;\n}\n\n/**\n * Demonstrates the intended editing flow for editor-controls:\n * parametric config/placement edits first, then explicit freeform conversion,\n * including wire-backed freeform edge insertion on a converted line.\n */\nexport function createEditorModesExample(scene: THREE.Scene) {\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.2, 0.0, -0.8),\n new Vector3(-2.2, 0.0, 0.4),\n new Vector3(-1.0, 0.0, 0.0),\n new Vector3(-1.5, 0.0, -1.2),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: 4,\n });\n polygon.outline = true;\n\n const polygonCapabilities = polygon.getEditCapabilities();\n polygon.setConfig({\n vertices: [\n new Vector3(-3.4, 0.0, -0.9),\n new Vector3(-2.0, 0.0, 0.6),\n new Vector3(-0.8, 0.0, -0.1),\n new Vector3(-1.6, 0.0, -1.4),\n ],\n });\n polygon.setPlacement({\n translation: new Vector3(0.0, 0.0, -0.2),\n });\n\n const cuboid = new Cuboid({\n center: new Vector3(1.2, 0.8, 0.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x10b981,\n fatOutlines: true,\n outlineWidth: 4,\n });\n cuboid.outline = true;\n\n const cuboidCapabilities = cuboid.getEditCapabilities();\n cuboid.setConfig({\n width: 1.6,\n height: 1.8,\n });\n cuboid.setPlacement({\n translation: new Vector3(0.2, 0.0, 0.0),\n rotation: new Vector3(0.0, Math.PI / 9.0, 0.0),\n });\n\n const guideLine = new Line({\n start: new Vector3(-3.4, 0.0, 1.6),\n end: new Vector3(-0.8, 0.0, 1.6),\n color: 0x475569,\n fatLines: true,\n width: 4,\n });\n guideLine.setPlacement({\n translation: new Vector3(0.0, 0.0, 0.2),\n });\n\n const guideLineCapabilities = guideLine.getEditCapabilities();\n const guideLineFreeform = guideLine.toFreeform(`${guideLine.ogid}-freeform`);\n const guideLineEditor = createFreeformEditor(guideLineFreeform);\n const guideLineEdge =\n guideLineEditor.getTopologyRenderData().edges[0]?.edge_id ?? null;\n let guideLineSplitResult: FreeformEditResult | null = null;\n\n if (guideLineEdge !== null) {\n guideLineSplitResult = guideLineEditor.splitEdge(guideLineEdge, 0.5, {\n includeTopologyRemap: true,\n });\n }\n\n const freeform = cuboid.toFreeform(`${cuboid.ogid}-freeform`);\n const freeformEditor = createFreeformEditor(freeform);\n const topFace = topFaceId(freeformEditor);\n let freeformResult: FreeformEditResult | null = null;\n\n if (topFace !== null) {\n freeformResult = freeformEditor.pushPullFace(topFace, 0.35, {\n includeTopologyRemap: true,\n });\n }\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(guideLine);\n\n return {\n polygon,\n cuboid,\n guideLine,\n polygonCapabilities,\n cuboidCapabilities,\n guideLineCapabilities,\n guideLineFreeform,\n guideLineEditor,\n guideLineSplitResult,\n freeform,\n freeformEditor,\n freeformResult,\n };\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\n\n/** A point of a returned offset region ring (kernel `Vector3` shape). */\nexport interface OffsetRegionPoint {\n x: number;\n y: number;\n z: number;\n}\n\n/** One offset region: a CW outer ring + its CCW inner-void hole rings. */\nexport interface OffsetRegion {\n /** Outer ring (CW, canonical start). */\n outer: OffsetRegionPoint[];\n /** Inner-void hole rings (CCW), e.g. the interior void of a closed loop. */\n holes: OffsetRegionPoint[][];\n}\n\ntype KernelOffsetRegionsResult = {\n regionsSerialized: string;\n};\n\ntype KernelOffsetPolylineRegions = (\n centreline: Float64Array,\n width: number,\n closed: boolean,\n miterLimit: number,\n) => KernelOffsetRegionsResult;\n\n/**\n * Offset a centreline by ±half-width into one or more filled REGIONS, via the\n * deterministic analytic offset — miters / flat bevels at `miterLimit`, concave\n * trims, and nonzero-winding resolution of reflex / closed loops. NO boolean union\n * (so it is deterministic, unlike the 3D-mesh CSG path). A simple centreline returns\n * one region; a self-crossing closed centreline (e.g. a figure-8) returns one per\n * simple sub-loop. Returns an EMPTY array for a genuinely unbuildable input (does\n * not throw, so it never looks like a kernel crash). Rings are CW-outer / CCW-holes.\n *\n * @param centrelineFlat centreline points as `[x,y,z, …]`.\n * @param width full stroke width (offset ±width/2 on each side).\n * @param miterLimit SVG stroke-miterlimit; corners sharper than this bevel. Default 4.\n */\nexport function offsetPolylineRegions(\n centrelineFlat: number[] | Float64Array,\n width: number,\n closed: boolean,\n miterLimit = 4,\n): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const flat =\n centrelineFlat instanceof Float64Array ? centrelineFlat : new Float64Array(centrelineFlat);\n const result = (buildExport as KernelOffsetPolylineRegions)(flat, width, closed, miterLimit);\n return JSON.parse(result.regionsSerialized);\n}\n\n/** One polyline in an offset group: centreline `[x,y,z, …]`, stroke width, closed flag. */\nexport interface OffsetPolyline {\n centreline: number[];\n width: number;\n closed: boolean;\n}\n\ntype KernelOffsetPolylineGroupRegions = (polylinesJson: string) => KernelOffsetRegionsResult;\n\n/**\n * Merge a GROUP of separate polylines (a crossing T / X / L overlap) into one clean\n * region by nonzero-winding union of their mitered bands — the overlapping strokes\n * merge into a single region with mitered/bevelled corners, no internal edges.\n * Returns CW-outer / CCW-hole regions (one or more); empty if nothing is buildable.\n * No CSG. Used to render/extrude an overlapping crossing as one joined mass.\n */\nexport function offsetPolylineGroupRegions(polylines: OffsetPolyline[]): OffsetRegion[] {\n const buildExport = (OGKernel as Record<string, unknown>).offsetPolylineGroupRegions;\n if (typeof buildExport !== \"function\") {\n throw new Error(\n \"offsetPolylineGroupRegions is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\",\n );\n }\n const result = (buildExport as KernelOffsetPolylineGroupRegions)(JSON.stringify(polylines));\n return JSON.parse(result.regionsSerialized);\n}\n","/**\n * Public OpenGeometry JavaScript entrypoint.\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\nimport { SpotLabel } from \"./src/markup/spotMarker\";\nimport { OPEN_GEOMETRY_THREE_VERSION, OpenGeometryOptions } from \"./src/base-types\";\n\nexport type OUTLINE_TYPE = \"front\" | \"side\" | \"top\";\n\n/**\n * Binary STL export payload returned by export helpers.\n */\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\n/**\n * STEP text export payload returned by export helpers.\n */\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * IFC text export payload returned by export helpers.\n */\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * Shared runtime entrypoint used to initialize the OpenGeometry wasm module.\n */\nexport class OpenGeometry {\n static version = OPEN_GEOMETRY_THREE_VERSION;\n static instance: OpenGeometry | null = null;\n\n private _enableDebug: boolean = false;\n\n get enableDebug() {\n return this._enableDebug;\n }\n\n /**\n * Enables or disables debug mode for OpenGeometry.\n * When enabled, it logs debug information to the console.\n * Addtionally,\n * 1. The geometry will be rendered with a semi-transparent material.\n * 2. The faces will be rendered with a random color.\n * 3. The normals will be rendered for better visualization.\n * @param value - A boolean indicating whether to enable or disable debug mode.\n */\n set enableDebug(value: boolean) {\n this._enableDebug = value;\n if (this._enableDebug) {\n console.log(\"OpenGeometry Debug Mode Enabled\");\n }\n }\n\n constructor() {}\n\n /**\n * Asynchronously initializes the OpenGeometry wasm runtime and returns a\n * cached singleton instance on subsequent calls.\n *\n * Call this before constructing `Vector3` or any kernel-backed wrapper.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n *\n * @example\n * ```ts\n * await OpenGeometry.create({\n * wasmURL: \"/opengeometry_bg.wasm\",\n * });\n * ```\n */\n static async create(options: OpenGeometryOptions) {\n if (!OpenGeometry.instance) {\n const og = new OpenGeometry();\n await og.setup(options.wasmURL);\n OpenGeometry.instance = og;\n }\n return OpenGeometry.instance;\n }\n\n private async setup(wasmURL?: string) {\n if (wasmURL) {\n await init({ module_or_path: wasmURL });\n return;\n }\n\n await init();\n }\n}\n\n/**\n * Scene manager that stores serialized BRep snapshots in wasm for projection,\n * export, and other scene-level workflows.\n */\nexport { OGSceneManager };\n\n/**\n * Shared wasm-backed vector type used throughout the public API.\n *\n * Initialize `OpenGeometry.create(...)` before constructing `Vector3`.\n */\nexport { Vector3 };\n\nexport { SpotLabel };\n\n/**\n * Primitive wrappers (line/polyline/arc/rectangle/curve).\n */\nexport * from \"./src/primitives/index\";\n/**\n * Shape wrappers (polygon/cuboid/cylinder/wedge/opening/sweep/sphere).\n */\nexport * from \"./src/shapes/index\";\n/**\n * Reusable example builders for quickly wiring demo scenes.\n */\nexport * from \"./src/examples/index\";\n/**\n * First-class freeform geometry wrapper around the kernel OGFreeformGeometry API.\n */\nexport * from \"./src/freeform/index\";\n/**\n * Editing helpers that operate on parametric entities and freeform geometry.\n */\nexport * from \"./src/editor/index\";\n/**\n * Kernel-backed modeling operations (incl. analytic polyline offset → regions).\n */\nexport * from \"./src/operations/index\";\n"],"names":["wasm","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getArrayU8FromWasm0","ptr","len","subarray","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","handleError","f","args","apply","e","__wbindgen_exn_store","debugString","val","type","description","name","length","Array","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","getStringFromWasm0","takeFromExternrefTable0","value","get","__externref_table_dealloc","extrudeBrepFace","local_brep_serialized","height","deferred3_0","deferred3_1","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr2","len2","__wbindgen_free","_assertClass","instance","klass","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","passArrayJsValueToWasm0","array","add","setUint32","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","isLikeNone","x","passArrayF64ToWasm0","offsetPolylineRegions","centreline_flat","width","closed","miter_limit","OGOffsetRegionsResult","__wrap","offsetPolylineGroupRegions","polylines_json","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr1","len1","OGBooleanResult","booleanIntersection","booleanSubtraction","booleanSubtractionMany","cutters_brep_serialized","batchUnion","operands_brep_serialized","Matrix3Finalization","FinalizationRegistry","register","unregister","__wbg_matrix3_free","Matrix3","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","constructor","matrix3_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","matrix3_set","clone","matrix3_clone","identity","matrix3_identity","determinant","matrix3_determinant","adjucate","matrix3_adjucate","inverse","matrix3_inverse","transpose","matrix3_transpose","Matrix4Finalization","__wbg_matrix4_free","Matrix4","elements","matrix4_elements","v1","matrix4_new","m9","m10","m11","m12","m13","m14","m15","matrix4_set","matrix4_clone","matrix4_identity","matrix4_determinant","matrix4_adjucate","matrix4_inverse","multiply","other","matrix4_multiply","incoming","matrix4_add","subtract","matrix4_subtract","flatten","matrix4_flatten","get_element_at","index","matrix4_get_element_at","is_zero","matrix4_is_zero","is_identity","matrix4_is_identity","matrix4_transpose","OGArcFinalization","__wbg_ogarc_free","OGArc","id","ogarc_set_id","deferred1_0","deferred1_1","ogarc_id","ogarc_new","set_config","center","radius","start_angle","end_angle","segments","Vector3","ogarc_set_config","set_center","ogarc_set_center","set_transform","position","rotation","scale","ogarc_set_transform","set_translation","translation","ogarc_set_translation","set_rotation","ogarc_set_rotation","set_scale","ogarc_set_scale","generate_geometry","ogarc_generate_geometry","dispose_points","ogarc_dispose_points","destroy","ogarc_destroy","get_brep_serialized","ogarc_get_brep_serialized","get_local_brep_serialized","ogarc_get_local_brep_serialized","get_geometry_serialized","ogarc_get_geometry_serialized","get_local_geometry_serialized","ogarc_get_local_geometry_serialized","get_geometry_buffer","ogarc_get_geometry_buffer","get_local_geometry_buffer","ogarc_get_local_geometry_buffer","get_anchor","ogarc_get_anchor","OGBooleanResultFinalization","__wbg_ogbooleanresult_free","brepSerialized","ogbooleanresult_brepSerialized","geometrySerialized","ogbooleanresult_geometrySerialized","outlineGeometrySerialized","ogbooleanresult_outlineGeometrySerialized","reportJson","ogbooleanresult_reportJson","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","depth","ogcuboid_set_config","ogcuboid_set_center","ogcuboid_set_transform","ogcuboid_set_translation","ogcuboid_set_rotation","ogcuboid_set_scale","ogcuboid_generate_geometry","ogcuboid_get_brep_serialized","ogcuboid_get_local_brep_serialized","ogcuboid_get_geometry_serialized","ogcuboid_get_local_geometry_serialized","ogcuboid_get_geometry_buffer","ogcuboid_get_local_geometry_buffer","get_outline_geometry_serialized","ogcuboid_get_outline_geometry_serialized","get_local_outline_geometry_serialized","ogcuboid_get_local_outline_geometry_serialized","get_outline_geometry_buffer","ogcuboid_get_outline_geometry_buffer","get_local_outline_geometry_buffer","ogcuboid_get_local_outline_geometry_buffer","ogcuboid_get_anchor","OGCurveFinalization","__wbg_ogcurve_free","OGCurve","ogcurve_set_id","ogcurve_id","ogcurve_new","control_points","ogcurve_set_config","ogcurve_set_transform","ogcurve_set_translation","ogcurve_set_rotation","ogcurve_set_scale","ogcurve_generate_geometry","ogcurve_get_brep_serialized","ogcurve_get_local_brep_serialized","ogcurve_get_geometry_serialized","ogcurve_get_local_geometry_serialized","ogcurve_get_geometry_buffer","ogcurve_get_local_geometry_buffer","ogcurve_get_anchor","set_anchor","anchor","ogcurve_set_anchor","reset_anchor","ogcurve_reset_anchor","get_offset_serialized","distance","acute_threshold_degrees","bevel","ogcurve_get_offset_serialized","dispose","ogcurve_dispose","OGCylinderFinalization","__wbg_ogcylinder_free","OGCylinder","ogcylinder_set_id","ogcylinder_id","ogcylinder_new","angle","ogcylinder_set_config","ogcylinder_set_center","ogcylinder_set_transform","ogcylinder_set_translation","ogcylinder_set_rotation","ogcylinder_set_scale","generate_brep","ogcylinder_generate_brep","clean_geometry","ogcylinder_clean_geometry","ogcylinder_generate_geometry","ogcylinder_get_brep_serialized","ogcylinder_get_local_brep_serialized","ogcylinder_get_geometry_serialized","ogcylinder_get_local_geometry_serialized","ogcylinder_get_geometry_buffer","ogcylinder_get_local_geometry_buffer","ogcylinder_get_outline_geometry_serialized","ogcylinder_get_local_outline_geometry_serialized","ogcylinder_get_outline_geometry_buffer","ogcylinder_get_local_outline_geometry_buffer","ogcylinder_get_anchor","OGEntityRegistryFinalization","__wbg_ogentityregistry_free","OGEntityRegistry","ogentityregistry_new","registerEntity","kind","brep_json","ogentityregistry_registerEntity","unregisterEntity","ogentityregistry_unregisterEntity","clearEntities","ogentityregistry_clearEntities","projectCurrentToViews","views_json","ogentityregistry_projectCurrentToViews","OGFreeformEditorFinalization","__wbg_ogfreeformeditor_free","OGFreeformEditor","ogfreeformeditor_new","getTopologyRenderData","geometry","deferred2_0","deferred2_1","OGFreeformGeometry","ogfreeformeditor_getTopologyRenderData","getFaceInfo","face_id","ogfreeformeditor_getFaceInfo","getEdgeInfo","edge_id","ogfreeformeditor_getEdgeInfo","getVertexInfo","vertex_id","ogfreeformeditor_getVertexInfo","getEditCapabilities","ogfreeformeditor_getEditCapabilities","getFaceEditCapabilities","ogfreeformeditor_getFaceEditCapabilities","getEdgeEditCapabilities","ogfreeformeditor_getEdgeEditCapabilities","getVertexEditCapabilities","ogfreeformeditor_getVertexEditCapabilities","pushPullFace","ogfreeformeditor_pushPullFace","moveFace","deferred4_0","deferred4_1","ogfreeformeditor_moveFace","ptr3","len3","moveEdge","ogfreeformeditor_moveEdge","moveVertex","ogfreeformeditor_moveVertex","extrudeFace","ogfreeformeditor_extrudeFace","cutFace","start_edge_id","start_t","end_edge_id","end_t","ogfreeformeditor_cutFace","insertVertexOnEdge","t","ogfreeformeditor_insertVertexOnEdge","splitEdge","ogfreeformeditor_splitEdge","loopCut","ogfreeformeditor_loopCut","removeVertex","ogfreeformeditor_removeVertex","OGFreeformGeometryFinalization","__wbg_ogfreeformgeometry_free","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getGeometryBuffer","ogfreeformgeometry_getGeometryBuffer","getLocalGeometryBuffer","ogfreeformgeometry_getLocalGeometryBuffer","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","getOutlineGeometryBuffer","ogfreeformgeometry_getOutlineGeometryBuffer","getLocalOutlineGeometryBuffer","ogfreeformgeometry_getLocalOutlineGeometryBuffer","getPlacementSerialized","ogfreeformgeometry_getPlacementSerialized","setPlacementSerialized","placement_serialized","ogfreeformgeometry_setPlacementSerialized","setTransform","ogfreeformgeometry_setTransform","setTranslation","ogfreeformgeometry_setTranslation","setRotation","ogfreeformgeometry_setRotation","setScale","ogfreeformgeometry_setScale","setAnchor","ogfreeformgeometry_setAnchor","OGIfcExportResultFinalization","__wbg_ogifcexportresult_free","OGIfcExportResult","text","ogifcexportresult_text","ogifcexportresult_reportJson","OGLineFinalization","__wbg_ogline_free","OGLine","ogline_set_id","ogline_id","ogline_new","start","end","ogline_set_config","ogline_set_transform","ogline_set_translation","ogline_set_rotation","ogline_set_scale","ogline_generate_geometry","ogline_dispose_points","ogline_destroy","ogline_get_brep_serialized","ogline_get_local_brep_serialized","ogline_get_geometry_serialized","ogline_get_local_geometry_serialized","ogline_get_geometry_buffer","ogline_get_local_geometry_buffer","ogline_get_anchor","ogline_set_anchor","ogline_reset_anchor","ogline_get_offset_serialized","get_dxf_serialized","ogline_get_dxf_serialized","OGOffsetRegionsResultFinalization","__wbg_ogoffsetregionsresult_free","regionsSerialized","ogoffsetregionsresult_regionsSerialized","OGPolygonFinalization","__wbg_ogpolygon_free","OGPolygon","ogpolygon_set_id","ogpolygon_id","ogpolygon_new","points","ogpolygon_set_config","ogpolygon_set_transform","ogpolygon_set_translation","ogpolygon_set_rotation","ogpolygon_set_scale","add_vertices","vertices","ogpolygon_add_vertices","add_holes","hole","ogpolygon_add_holes","ogpolygon_clean_geometry","ogpolygon_generate_brep","ogpolygon_generate_geometry","ogpolygon_get_brep_serialized","ogpolygon_get_local_brep_serialized","ogpolygon_get_geometry_serialized","ogpolygon_get_local_geometry_serialized","ogpolygon_get_geometry_buffer","ogpolygon_get_local_geometry_buffer","ogpolygon_get_outline_geometry_serialized","ogpolygon_get_local_outline_geometry_serialized","ogpolygon_get_outline_geometry_buffer","ogpolygon_get_local_outline_geometry_buffer","ogpolygon_get_anchor","ogpolygon_set_anchor","ogpolygon_reset_anchor","OGPolylineFinalization","__wbg_ogpolyline_free","OGPolyline","ogpolyline_set_id","ogpolyline_id","ogpolyline_new","ogpolyline_clone","ogpolyline_set_config","ogpolyline_set_transform","ogpolyline_set_translation","ogpolyline_set_rotation","ogpolyline_set_scale","ogpolyline_generate_geometry","add_multiple_points","ogpolyline_add_multiple_points","add_point","point","ogpolyline_add_point","get_points","ogpolyline_get_points","get_raw_points","ogpolyline_get_raw_points","is_closed","ogpolyline_is_closed","ogpolyline_get_offset_serialized","check_closed_test","ogpolyline_check_closed_test","ogpolyline_get_brep_serialized","ogpolyline_get_local_brep_serialized","ogpolyline_get_geometry_serialized","ogpolyline_get_local_geometry_serialized","ogpolyline_get_geometry_buffer","ogpolyline_get_local_geometry_buffer","ogpolyline_get_anchor","ogpolyline_set_anchor","ogpolyline_reset_anchor","OGRectangleFinalization","__wbg_ogrectangle_free","OGRectangle","ogrectangle_set_id","ogrectangle_id","ogrectangle_new","breadth","ogrectangle_set_config","ogrectangle_set_center","ogrectangle_set_transform","ogrectangle_set_translation","ogrectangle_set_rotation","ogrectangle_set_scale","ogrectangle_generate_geometry","ogrectangle_get_brep_serialized","ogrectangle_get_local_brep_serialized","ogrectangle_get_geometry_serialized","ogrectangle_get_local_geometry_serialized","ogrectangle_get_geometry_buffer","ogrectangle_get_local_geometry_buffer","ogrectangle_get_anchor","ogrectangle_get_offset_serialized","OGSceneManagerFinalization","__wbg_ogscenemanager_free","OGSceneManager","ogscenemanager_new","createScene","ogscenemanager_createScene","removeScene","scene_id","ogscenemanager_removeScene","setCurrentScene","ogscenemanager_setCurrentScene","getCurrentSceneId","ogscenemanager_getCurrentSceneId","listScenes","ogscenemanager_listScenes","getSceneSerialized","ogscenemanager_getSceneSerialized","removeEntityFromScene","entity_id","ogscenemanager_removeEntityFromScene","addBrepEntityToScene","brep_serialized","ogscenemanager_addBrepEntityToScene","addBrepEntityToCurrentScene","ogscenemanager_addBrepEntityToCurrentScene","replaceBrepEntityInScene","ogscenemanager_replaceBrepEntityInScene","replaceBrepEntityInCurrentScene","ogscenemanager_replaceBrepEntityInCurrentScene","refreshBrepEntityInScene","ogscenemanager_refreshBrepEntityInScene","refreshBrepEntityInCurrentScene","ogscenemanager_refreshBrepEntityInCurrentScene","addLineToScene","line","ogscenemanager_addLineToScene","addLineToCurrentScene","ogscenemanager_addLineToCurrentScene","addPolylineToScene","polyline","ogscenemanager_addPolylineToScene","addPolylineToCurrentScene","ogscenemanager_addPolylineToCurrentScene","addArcToScene","arc","ogscenemanager_addArcToScene","addArcToCurrentScene","ogscenemanager_addArcToCurrentScene","addRectangleToScene","rectangle","ogscenemanager_addRectangleToScene","addRectangleToCurrentScene","ogscenemanager_addRectangleToCurrentScene","addPolygonToScene","polygon","ogscenemanager_addPolygonToScene","addPolygonToCurrentScene","ogscenemanager_addPolygonToCurrentScene","addCuboidToScene","cuboid","ogscenemanager_addCuboidToScene","addCuboidToCurrentScene","ogscenemanager_addCuboidToCurrentScene","addCylinderToScene","cylinder","ogscenemanager_addCylinderToScene","addCylinderToCurrentScene","ogscenemanager_addCylinderToCurrentScene","addSphereToScene","sphere","OGSphere","ogscenemanager_addSphereToScene","addSphereToCurrentScene","ogscenemanager_addSphereToCurrentScene","addWedgeToScene","wedge","OGWedge","ogscenemanager_addWedgeToScene","addWedgeToCurrentScene","ogscenemanager_addWedgeToCurrentScene","projectTo2DCamera","camera_json","hlr_json","deferred5_0","deferred5_1","ogscenemanager_projectTo2DCamera","ptr4","len4","projectTo2DCameraPretty","ogscenemanager_projectTo2DCameraPretty","projectTo2DLines","ogscenemanager_projectTo2DLines","projectTo2DLinesPretty","ogscenemanager_projectTo2DLinesPretty","projectCurrentTo2DCamera","ogscenemanager_projectCurrentTo2DCamera","projectCurrentTo2DLines","ogscenemanager_projectCurrentTo2DLines","exportBrepToStl","config_json","ogscenemanager_exportBrepToStl","OGStlExportResult","exportSceneToStl","ogscenemanager_exportSceneToStl","exportCurrentSceneToStl","ogscenemanager_exportCurrentSceneToStl","exportBrepToStep","ogscenemanager_exportBrepToStep","OGStepExportResult","exportSceneToStep","ogscenemanager_exportSceneToStep","exportCurrentSceneToStep","ogscenemanager_exportCurrentSceneToStep","exportBrepToIfc","ogscenemanager_exportBrepToIfc","exportSceneToIfc","ogscenemanager_exportSceneToIfc","exportCurrentSceneToIfc","ogscenemanager_exportCurrentSceneToIfc","OGSphereFinalization","__wbg_ogsphere_free","ogsphere_set_id","ogsphere_id","ogsphere_new","width_segments","height_segments","ogsphere_set_config","ogsphere_set_center","ogsphere_set_transform","ogsphere_set_translation","ogsphere_set_rotation","ogsphere_set_scale","ogsphere_generate_brep","ogsphere_clean_geometry","ogsphere_generate_geometry","ogsphere_get_brep_serialized","ogsphere_get_local_brep_serialized","ogsphere_get_geometry_serialized","ogsphere_get_local_geometry_serialized","ogsphere_get_geometry_buffer","ogsphere_get_local_geometry_buffer","ogsphere_get_outline_geometry_serialized","ogsphere_get_local_outline_geometry_serialized","ogsphere_get_outline_geometry_buffer","ogsphere_get_local_outline_geometry_buffer","ogsphere_get_anchor","OGStepExportResultFinalization","__wbg_ogstepexportresult_free","ogstepexportresult_text","ogstepexportresult_reportJson","OGStlExportResultFinalization","__wbg_ogstlexportresult_free","bytes","ogstlexportresult_bytes","ogstlexportresult_reportJson","OGSweepFinalization","__wbg_ogsweep_free","OGSweep","ogsweep_set_id","ogsweep_id","ogsweep_new","path_points","profile_points","ogsweep_set_config","set_config_with_caps","cap_start","cap_end","ogsweep_set_config_with_caps","set_caps","ogsweep_set_caps","ogsweep_set_transform","ogsweep_set_translation","ogsweep_set_rotation","ogsweep_set_scale","ogsweep_generate_brep","ogsweep_clean_geometry","ogsweep_generate_geometry","ogsweep_get_brep_serialized","ogsweep_get_local_brep_serialized","ogsweep_get_geometry_serialized","ogsweep_get_local_geometry_serialized","ogsweep_get_geometry_buffer","ogsweep_get_local_geometry_buffer","ogsweep_get_outline_geometry_serialized","ogsweep_get_local_outline_geometry_serialized","ogsweep_get_outline_geometry_buffer","ogsweep_get_local_outline_geometry_buffer","ogsweep_get_anchor","ogsweep_set_anchor","ogsweep_reset_anchor","OGWedgeFinalization","__wbg_ogwedge_free","ogwedge_set_id","ogwedge_id","ogwedge_new","ogwedge_set_config","ogwedge_set_center","ogwedge_set_transform","ogwedge_set_translation","ogwedge_set_rotation","ogwedge_set_scale","ogwedge_generate_brep","ogwedge_clean_geometry","ogwedge_generate_geometry","ogwedge_get_brep_serialized","ogwedge_get_local_brep_serialized","ogwedge_get_geometry_serialized","ogwedge_get_local_geometry_serialized","ogwedge_get_geometry_buffer","ogwedge_get_local_geometry_buffer","ogwedge_get_outline_geometry_serialized","ogwedge_get_local_outline_geometry_serialized","ogwedge_get_outline_geometry_buffer","ogwedge_get_local_outline_geometry_buffer","Vector3Finalization","__wbg_vector3_free","__unwrap","jsValue","__wbg_get_vector3_x","arg0","__wbg_set_vector3_x","y","__wbg_get_vector3_y","__wbg_set_vector3_y","z","__wbg_get_vector3_z","__wbg_set_vector3_z","vector3_new","vector3_add","add_scalar","scalar","vector3_add_scalar","vector3_subtract","subtract_scalar","vector3_subtract_scalar","vector3_clone","zero","vector3_zero","copy","vector3_copy","multiply_scalar","vector3_multiply_scalar","vector3_multiply","divide","vector3_divide","divide_scalar","vector3_divide_scalar","negate","vector3_negate","dot","vector3_dot","magnitude","vector3_magnitude","vector3_length","normalize","vector3_normalize","cross","vector3_cross","vector3_distance","apply_matrix4","matrix","vector3_apply_matrix4","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","__wbg_get_imports","wbg","__wbg_getRandomValues_38097e921c2494c3","arg1","globalThis","crypto","getRandomValues","arguments","__wbg_vector3_new","__wbg_vector3_unwrap","__wbindgen_debug_string","setInt32","__wbindgen_init_externref_table","table","grow","__wbindgen_string_new","__wbindgen_throw","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","initSync","getPrototypeOf","Module","module_or_path","URL","import","meta","url","Request","fetch","uuidv4","cloneVector","toObjectTransformation","parseJson","toVector3","toPlainVector3","normalizePlacement","KernelFreeformEditor","serializeBrepLike","OGKernel.extrudeBrepFace","OGKernel.booleanSubtractionMany","OGKernel[\"OGSweep\"]","EPSILON","areClose","OGKernel.offsetPolylineRegions","OGKernel.offsetPolylineGroupRegions","init"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7]}