opengeometry 2.0.2 → 2.0.3

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.
Files changed (39) hide show
  1. package/README.md +1 -1
  2. package/index.d.ts +12 -0
  3. package/index.js +683 -283
  4. package/index.js.map +1 -1
  5. package/opengeometry/pkg/opengeometry.d.ts +207 -197
  6. package/opengeometry/pkg/opengeometry.js +76 -14
  7. package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
  8. package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +202 -197
  9. package/opengeometry_bg.wasm +0 -0
  10. package/opengeometry_bg.wasm.d.ts +202 -197
  11. package/package.json +1 -1
  12. package/src/base-types.d.ts +7 -1
  13. package/src/editor/freeform.d.ts +63 -0
  14. package/src/editor/index.d.ts +3 -0
  15. package/src/editor/parametric.d.ts +10 -0
  16. package/src/editor/types.d.ts +72 -0
  17. package/src/freeform/geometry.d.ts +59 -0
  18. package/src/freeform/index.d.ts +3 -0
  19. package/src/freeform/types.d.ts +12 -0
  20. package/src/operations/boolean.d.ts +15 -0
  21. package/src/operations/extrude.d.ts +9 -0
  22. package/src/operations/index.d.ts +1 -0
  23. package/src/primitives/arc.d.ts +15 -0
  24. package/src/primitives/curve.d.ts +18 -0
  25. package/src/primitives/line.d.ts +15 -0
  26. package/src/primitives/polyline.d.ts +18 -0
  27. package/src/primitives/rectangle.d.ts +18 -0
  28. package/src/shapes/boolean-subtract.d.ts +9 -0
  29. package/src/shapes/cuboid.d.ts +15 -0
  30. package/src/shapes/cylinder.d.ts +15 -0
  31. package/src/shapes/extrusion.d.ts +64 -0
  32. package/src/shapes/index.d.ts +1 -0
  33. package/src/shapes/opening.d.ts +15 -0
  34. package/src/shapes/outline-utils.d.ts +21 -0
  35. package/src/shapes/polygon.d.ts +30 -3
  36. package/src/shapes/solid.d.ts +111 -0
  37. package/src/shapes/sphere.d.ts +15 -0
  38. package/src/shapes/sweep.d.ts +15 -0
  39. package/src/shapes/wedge.d.ts +15 -0
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/boolean.ts","../main/main/opengeometry-three/src/shapes/boolean-subtract.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\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\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\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\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\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\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/**\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\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 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 {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 {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 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.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.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.ogline_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_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","import { \n // OGLine, \n // Vector3 \n} from \"./../../opengeometry/pkg/opengeometry\";\n\nexport const OPEN_GEOMETRY_THREE_VERSION = '0.0.6';\n\nexport interface OpenGeometryOptions {\n wasmURL?: string;\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\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\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\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\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 getFreeformGeometry(): FreeformGeometry {\n return this.geometry;\n }\n\n getTopologyRenderData(): TopologyRenderData {\n return normalizeTopologyRenderData(\n parseJson<TopologyRenderData>(\n this.editor.getTopologyRenderData(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeInfo(edgeId: TopologyId): EdgeInfo {\n return normalizeEdgeInfo(\n parseJson<EdgeInfo>(\n this.editor.getEdgeInfo(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 getEditCapabilities(): FreeformEditCapabilities {\n return normalizeFreeformCapabilities(\n parseJson<RawFreeformOperationCapabilities>(\n this.editor.getEditCapabilities(this.geometry.getKernelGeometry())\n )\n );\n }\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 getEdgeEditCapabilities(edgeId: TopologyId): FreeformFeatureEditCapabilities {\n return normalizeFeatureCapabilities(\n parseJson<RawFreeformFeatureEditCapabilities>(\n this.editor.getEdgeEditCapabilities(this.geometry.getKernelGeometry(), edgeId)\n )\n );\n }\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 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 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 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 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 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 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 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 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 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 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\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\nexport class FreeformGeometry {\n private readonly geometry: OGFreeformGeometry;\n\n constructor(geometry: OGFreeformGeometry) {\n this.geometry = geometry;\n }\n\n getId(): string {\n return this.geometry.id;\n }\n\n getBrepSerialized(): string {\n return this.geometry.getBrepSerialized();\n }\n\n getLocalBrepSerialized(): string {\n return this.geometry.getLocalBrepSerialized();\n }\n\n getGeometrySerialized(): string {\n return this.geometry.getGeometrySerialized();\n }\n\n getOutlineGeometrySerialized(): string {\n return this.geometry.getOutlineGeometrySerialized();\n }\n\n getPlacement(): ObjectTransformation {\n return normalizePlacement(\n parseJson<ObjectTransformation>(this.geometry.getPlacementSerialized())\n );\n }\n\n setPlacement(transform: ObjectTransformation): void {\n this.geometry.setPlacementSerialized(\n JSON.stringify(toPlainObjectTransformation(transform))\n );\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3): void {\n this.geometry.setTransform(translation, rotation, scale);\n }\n\n setTranslation(translation: Vector3): void {\n this.geometry.setTranslation(translation);\n }\n\n setRotation(rotation: Vector3): void {\n this.geometry.setRotation(rotation);\n }\n\n setScale(scale: Vector3): void {\n this.geometry.setScale(scale);\n }\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\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\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\nexport interface LinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type LineConfigUpdate = Partial<\n Omit<ILineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type LinePlacementUpdate = LinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\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\nexport interface PolylinePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type PolylineConfigUpdate = Partial<\n Omit<IPolylineOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolylinePlacementUpdate = PolylinePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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// import { IArcOptions } from \"../base-types\";\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\nexport interface ArcPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type ArcConfigUpdate = Partial<\n Omit<IArcOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type ArcPlacementUpdate = ArcPlacementOptions;\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\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\nexport interface RectanglePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type RectangleConfigUpdate = Partial<\n Omit<IRectangleOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type RectanglePlacementUpdate = RectanglePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\nexport interface ICurveOptions {\n ogid?: string;\n controlPoints: Vector3[];\n color: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface CurvePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CurveConfigUpdate = Partial<\n Omit<ICurveOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CurvePlacementUpdate = CurvePlacementOptions;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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\nexport type ShapeOutlineMesh = THREE.LineSegments | LineSegments2;\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\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\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\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\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\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\";\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\";\n\nexport type BooleanOperand =\n | string\n | Record<string, unknown>\n | {\n getBrep?: () => unknown;\n getBrepData?: () => unknown;\n getBrepSerialized?: () => string;\n };\n\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\nexport interface BooleanRenderOptions {\n color?: number;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\nexport interface BooleanExecutionOptions extends BooleanRenderOptions {\n kernel?: BooleanKernelOptions;\n}\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/* eslint-disable no-unused-vars */\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n/* eslint-enable no-unused-vars */\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 ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n this.applyKernelResult(kernelResult, options?.color ?? 0x2563eb);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(kernelResult: KernelBooleanResult, color: number = 0x2563eb) {\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 = new THREE.MeshStandardMaterial({\n color,\n transparent: true,\n opacity: 0.82,\n side: THREE.FrontSide,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n });\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 */\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 */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\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 const kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n\n const result = new BooleanResult(kernelResult, options);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\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 * 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\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 { booleanSubtraction } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\nexport type ShapeSubtractOperand = BooleanOperand;\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\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 operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n return booleanSubtraction(host, operand, options);\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 { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\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 transformationMatrix: THREE.Matrix4 = new THREE.Matrix4();\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 // private _placement: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\n // private _yaw: number = 0;\n // Store local center offset to align outlines\n // TODO: Can this be moved to Engine? It can increase performance | Needs to be used in other shapes too\n private _geometryCenterOffset = new THREE.Vector3();\n\n // TODO: Make Options Optional\n // constructor(vertices?: Vector3[]) // If no vertices are provided, it will be an empty polygon\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 // TODO: THIS MIGHT HELP WITH SHARING THE POSITION with KERNEL when something is changed\n // const originalSet = this.position.set.bind(this.position);\n // this.position.set = (x: number, y: number, z: number) => {\n // console.log(`Position set to (${x}, ${y}, ${z})`);\n // // your custom logic here (e.g., notify OpenGeometry)\n // return originalSet(x, y, z);\n // };\n\n // // Optional: Override copy if you're using .copy() too\n // const originalCopy = this.position.copy.bind(this.position);\n // this.position.copy = (v: THREE.Vector3) => {\n // console.log(`Position copied from ${v.x}, ${v.y}, ${v.z}`);\n // return originalCopy(v);\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 getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"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.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n // /**\n // * Sets the placement of the polygon in 3D space.\n // * @param x X-coordinate\n // * @param y Y-coordinate\n // * @param z Z-coordinate\n // */\n // placement(x: number, y: number, z: number) {\n // this._placement.set(x, y, z);\n \n // // Do the recalculation of position based on the placement\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n\n // const center = new THREE.Vector3();\n // clonedObject.geometry.boundingBox.getCenter(center);\n // const min = clonedObject.geometry.boundingBox.min;\n // this.position.set(\n // center.x + this._placement.x - min.x,\n // // this._placement.y,\n // 0.01, // Set Y to a small value to avoid z-fighting\n // center.z + this._placement.z - min.z\n // );\n // }\n\n // positionToPlacement() {\n // const clonedObject = this.clone();\n // clonedObject.rotation.set(0, 0, 0);\n // clonedObject.geometry.computeBoundingBox();\n // if (!clonedObject.geometry.boundingBox) return;\n // const min = clonedObject.geometry.boundingBox.min;\n\n // this._placement.set(\n // this.position.x + min.x,\n // this.position.y + min.y,\n // this.position.z + min.z\n // );\n\n // // console.log(\"Placement set to:\", this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // /**\n // * Rotates the polygon around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // */\n // set yaw(angle: number) {\n // this._yaw = angle;\n \n // this.rotation.set(0, 0, 0);\n // this.rotation.y = THREE.MathUtils.degToRad(this._yaw);\n // }\n\n // get yaw() {\n // return this._yaw;\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.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 // this.geometry.computeBoundingBox();\n // const originalCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(originalCenter);\n // console.log(\"Original Center:\", originalCenter.x, originalCenter.y, originalCenter.z);\n\n // this.geometry.center();\n // this.geometry.computeBoundingBox();\n // const newCenter = new THREE.Vector3();\n // this.geometry.boundingBox?.getCenter(newCenter);\n // console.log(\"New Center after centering:\", newCenter.x, newCenter.y, newCenter.z);\n\n // if (!this.geometry.boundingBox) return;\n // const min = this.geometry.boundingBox.min;\n // // console.log(\"Position before centering:\", this.position.x, this.position.y, this.position.z);\n // console.log(\"Bounding Box Min:\", min.x, min.y, min.z);\n // this.position.set(-min.x, 0, -min.z);\n\n // if (this._placement) {\n // this.placement(this._placement.x, this._placement.y, this._placement.z);\n // }\n\n // console.log(\"New Position after centering:\", this.position.x, this.position.y, this.position.z);\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 saveTransformationToBREP() {\n if (!this.polygon) return;\n }\n\n // /**\n // * Rotates the object around the Y-axis.\n // * @param angle Rotation angle in Degrees\n // * @returns \n // * @summary If rotation methods from threejs is used, it will rotate around the first vertex which might not be desired.\n // */\n // rotateOnYAxis(angle: number) {\n // if (!this.polygon) return;\n // }\n\n // resetVertices() {\n // if (!this.polygon) return;\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n // }\n\n // addVertex(threeVertex: Vector3) {\n // if (this.isTriangulated) {\n // this.layerVertices = [];\n // this.geometry.dispose();\n // this.polygon?.clear_vertices();\n // this.isTriangulated = false;\n\n // for (const vertex of this.layerBackVertices) {\n // this.layerVertices.push(vertex.clone());\n // }\n\n // };\n\n // const backupVertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerBackVertices.push(backupVertex);\n\n // const vertex = new Vector3(\n // parseFloat(threeVertex.x.toFixed(2)),\n // // when doing the parse operation getting -0 instead of 0\n // 0,\n // parseFloat(threeVertex.z.toFixed(2))\n // );\n // this.layerVertices.push(vertex);\n\n // if (this.layerVertices.length > 3) {\n // this.polygon?.add_vertices(this.layerVertices);\n // const bufFlush = this.polygon?.triangulate();\n \n // if (!bufFlush) {\n // return;\n // }\n // this.addFlushBufferToScene(bufFlush);\n\n // this.isTriangulated = true;\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 // extrude(height: number) {\n // if (!this.polygon) return;\n // const extruded_buff = this.polygon.extrude_by_height(height);\n // console.log(extruded_buff);\n // this.generateExtrudedGeometry(extruded_buff);\n // }\n\n // generateExtrudedGeometry(extruded_buff: string) {\n // // THIS WORKS\n // const flushBuffer = JSON.parse(extruded_buff);\n // console.log(flushBuffer);\n\n // const geometry = new THREE.BufferGeometry();\n // geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(flushBuffer), 3));\n // geometry.computeVertexNormals();\n // this.geometry = geometry;\n\n // const material = new THREE.MeshStandardMaterial({\n // color: 0x00ff00, \n // side: THREE.FrontSide, \n // transparent: true, \n // opacity: 0.5, \n // // wireframe: true\n // });\n // this.material = material;\n // }\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 another boolean operand from this polygon.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 // TODO: Do we need a separate method for Hole Outlines?\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\n // this.#outlineMesh.geometry.center();\n // this.#outlineMesh.applyMatrix4(this.transformationMatrix);\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 // bTree() {\n // if (!this.polygon) return;\n // const bTree = this.polygon.binary_tree();\n // const parsedData = JSON.parse(bTree);\n // console.log(parsedData);\n // }\n\n disposeGeometryMaterial() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\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 // // console.log(\"Disposing OG - Polygon\");\n // this.geometry.dispose();\n // if (this.material instanceof THREE.Material) {\n // this.material.dispose();\n // }\n // if (this.#outlineMesh) {\n // this.#outlineMesh.geometry.dispose();\n // if (this.#outlineMesh.material instanceof THREE.Material) {\n // this.#outlineMesh.material.dispose();\n // }\n // }\n // this.polygon = null;\n // this.layerVertices = [];\n // this.layerBackVertices = [];\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 { 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 ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\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 another boolean operand, such as an Opening, from this cylinder.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\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\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\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 another boolean operand, such as an Opening, from this cuboid.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\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 another boolean operand from this opening volume.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(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 ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 another boolean operand, such as an Opening, from this sphere.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type WedgePlacementUpdate = WedgePlacementOptions;\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 another boolean operand, such as an Opening, from this wedge.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\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\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 another boolean operand, such as an Opening, from this sweep.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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, 90.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 { Polyline } from \"../primitives/polyline\";\nimport { Polygon } from \"../shapes/polygon\";\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 function createWallFromOffsetsExample(scene: THREE.Scene) {\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 = 90.0;\n const bevel = true;\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 return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\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\";\nimport { Sweep } from \"../shapes/sweep\";\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 = options.mode === \"solid\"\n ? createSolidPreset(operation, options)\n : options.mode === \"polygon\"\n ? createPolygonPreset(operation, options)\n : createExtrudedPreset(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\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 the straight-sweep solid preset used to demonstrate extruded booleans.\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 const path = [\n new Vector3(0.0, 0.0, 0.0),\n new Vector3(0.0, 1.6, 0.0),\n ];\n const lhsProfile = [\n new Vector3(-2.0, 0.0, -0.65),\n new Vector3(2.1, 0.0, -0.65),\n new Vector3(1.75, 0.0, 0.7),\n new Vector3(-1.55, 0.0, 0.7),\n ];\n const rhsProfile = operation === \"subtraction\"\n ? [\n new Vector3(-0.42, 0.0, -0.24),\n new Vector3(0.42, 0.0, -0.24),\n new Vector3(0.42, 0.0, 0.24),\n new Vector3(-0.42, 0.0, 0.24),\n ]\n : [\n new Vector3(-0.8, 0.0, -0.42),\n new Vector3(0.72, 0.0, -0.42),\n new Vector3(0.72, 0.0, 0.42),\n new Vector3(-0.8, 0.0, 0.42),\n ];\n\n const lhs = new Sweep({\n path,\n profile: lhsProfile,\n color: 0x60a5fa,\n capStart: true,\n capEnd: true,\n fatOutlines: options.fatOutlines ?? true,\n outlineWidth,\n });\n const rhs = new Sweep({\n path: path.map((point) => point.clone()),\n profile: rhsProfile,\n color: 0xf97316,\n capStart: true,\n capEnd: true,\n translation: extrudedOffset.clone(),\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)} Extruded Solids`,\n description: \"Two capped straight sweeps demonstrate boolean operations on extruded solid profiles.\",\n lhsOperand: lhs,\n rhsOperand: rhs,\n lhsVisual: lhs,\n rhsVisual: rhs,\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 * OpenGeometry Three.js adapter entrypoint.\n * @module @opengeometry/kernel-three\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\n// Vector3 is also available in opengeometry package\n// import { Vector3 } from \"@opengeometry/openmaths\";\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\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\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 creates and initializes an instance of OpenGeometry.\n *\n * This factory method sets up the OpenGeometry engine by linking it with the\n * rendering context and the WebAssembly module. It ensures all required\n * options are provided and prepares the instance for 3D geometry operations.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n * @throws If any of the required options (`container`, `scene`, or `camera`) are missing.\n *\n * @example\n * ```ts\n * const openGeometry = await OpenGeometry.create({\n * container: document.getElementById('myContainer')!,\n * scene: threeScene,\n * camera: threeCamera,\n * wasmURL: '/assets/opengeometry.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\nexport {\n OGSceneManager,\n Vector3,\n SpotLabel,\n}\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","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","getStringFromWasm0","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","_assertClass","instance","klass","name","takeFromExternrefTable0","value","get","__externref_table_dealloc","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","add","setUint32","isLikeNone","x","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr1","len1","ptr2","len2","OGBooleanResult","__wrap","booleanIntersection","booleanSubtraction","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","__wbindgen_free","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","height","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","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","deferred3_0","deferred3_1","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","local_brep_serialized","ogfreeformgeometry_new","ogfreeformgeometry_id","getBrepSerialized","ogfreeformgeometry_getBrepSerialized","getLocalBrepSerialized","ogfreeformgeometry_getLocalBrepSerialized","getGeometrySerialized","ogfreeformgeometry_getGeometrySerialized","getOutlineGeometrySerialized","ogfreeformgeometry_getOutlineGeometrySerialized","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","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","kind","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_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[\"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.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\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\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\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\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\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 * @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 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_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 */\nexport interface OpenGeometryOptions {\n wasmURL?: string;\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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/* eslint-disable no-unused-vars */\ntype OffsetKernelFn = (\n distance: number,\n acuteThresholdDegrees: number,\n bevel: boolean\n) => string;\n/* eslint-enable no-unused-vars */\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/* eslint-disable no-unused-vars */\ntype KernelExtrudeBrepFace = (...args: [string, number]) => string;\n/* eslint-enable no-unused-vars */\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","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\";\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 */\nexport interface BooleanKernelOptions {\n tolerance?: number;\n mergeCoplanarFaces?: boolean;\n}\n\n/**\n * Rendering options applied to the boolean result mesh.\n */\nexport interface BooleanRenderOptions {\n color?: number;\n outline?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\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/* eslint-disable no-unused-vars */\ntype KernelBooleanFunction = (\n lhsBrepSerialized: string,\n rhsBrepSerialized: string,\n optionsJson?: string\n) => KernelBooleanResult;\n/* eslint-enable no-unused-vars */\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 ) {\n super();\n this.ogid = getUUID();\n this._fatOutlines = options?.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(options?.outlineWidth);\n this.applyKernelResult(kernelResult, options?.color ?? 0x2563eb);\n\n if (options?.outline ?? false) {\n this.outline = true;\n }\n }\n\n /**\n * Rebuilds the mesh, cached BRep payload, and outline geometry from the kernel output.\n */\n applyKernelResult(kernelResult: KernelBooleanResult, color: number = 0x2563eb) {\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 = new THREE.MeshStandardMaterial({\n color,\n transparent: true,\n opacity: 0.82,\n side: THREE.FrontSide,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n });\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 */\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 */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Normalizes mixed wrapper/raw operands, invokes the wasm boolean export, and\n * returns the renderable result wrapper.\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 const kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n resolveOperandSerialized(rhs),\n kernelOptions\n );\n\n const result = new BooleanResult(kernelResult, options);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\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 * 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\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 { booleanSubtraction } 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 * 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 operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n return booleanSubtraction(host, operand, 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 ShapeSubtractOperand,\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 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 another boolean operand from this solid.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 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 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 ShapeSubtractOperand,\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 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 another boolean operand from this polygon.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\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 another boolean operand, such as an Opening, from this cylinder.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\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 another boolean operand, such as an Opening, from this cuboid.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\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 another boolean operand from this opening volume.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(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 ShapeSubtractOperand,\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/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 another boolean operand, such as an Opening, from this sphere.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\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 another boolean operand, such as an Opening, from this wedge.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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 ShapeSubtractOperand,\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/* eslint-disable no-unused-vars */\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/* eslint-enable no-unused-vars */\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 another boolean operand, such as an Opening, from this sweep.\n */\n subtract(\n operand: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operand, 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, 90.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 { Polyline } from \"../primitives/polyline\";\nimport { Polygon } from \"../shapes/polygon\";\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 function createWallFromOffsetsExample(scene: THREE.Scene) {\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 = 90.0;\n const bevel = true;\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 return {\n centerline,\n leftOffsetPolyline,\n rightOffsetPolyline,\n wallPolygon,\n leftOffset,\n rightOffset,\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 * OpenGeometry Three.js adapter entrypoint.\n * @module @opengeometry/kernel-three\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\n// Vector3 is also available in opengeometry package\n// import { Vector3 } from \"@opengeometry/openmaths\";\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 creates and initializes an instance of OpenGeometry.\n *\n * This factory method sets up the OpenGeometry engine by linking it with the\n * rendering context and the WebAssembly module. It ensures all required\n * options are provided and prepares the instance for 3D geometry operations.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n * @throws If any of the required options (`container`, `scene`, or `camera`) are missing.\n *\n * @example\n * ```ts\n * const openGeometry = await OpenGeometry.create({\n * container: document.getElementById('myContainer')!,\n * scene: threeScene,\n * camera: threeCamera,\n * wasmURL: '/assets/opengeometry.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\nexport {\n OGSceneManager,\n Vector3,\n SpotLabel,\n}\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","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","getStringFromWasm0","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","ret","_assertClass","instance","klass","name","takeFromExternrefTable0","value","get","__externref_table_dealloc","cachedFloat64ArrayMemory0","getFloat64ArrayMemory0","Float64Array","getArrayF64FromWasm0","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","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","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","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","kind","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_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[\"OGSweep\"]","EPSILON","areClose","init"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7]}