opengeometry 2.0.2 → 2.0.4

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 +34 -6
  2. package/index.d.ts +30 -13
  3. package/index.js +794 -326
  4. package/index.js.map +1 -1
  5. package/opengeometry/pkg/opengeometry.d.ts +152 -137
  6. package/opengeometry/pkg/opengeometry.js +89 -7
  7. package/opengeometry/pkg/opengeometry_bg.wasm +0 -0
  8. package/opengeometry/pkg/opengeometry_bg.wasm.d.ts +143 -137
  9. package/opengeometry_bg.wasm +0 -0
  10. package/opengeometry_bg.wasm.d.ts +143 -137
  11. package/package.json +18 -8
  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 +28 -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 +14 -1
  29. package/src/shapes/cuboid.d.ts +18 -3
  30. package/src/shapes/cylinder.d.ts +18 -3
  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 +21 -3
  34. package/src/shapes/outline-utils.d.ts +21 -0
  35. package/src/shapes/polygon.d.ts +36 -6
  36. package/src/shapes/solid.d.ts +116 -0
  37. package/src/shapes/sphere.d.ts +18 -3
  38. package/src/shapes/sweep.d.ts +18 -3
  39. package/src/shapes/wedge.d.ts +18 -3
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/**\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\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 getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n * Wasm entry point for union.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanUnion(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanUnion(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for intersection.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanIntersection(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanIntersection(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} rhs_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtraction(lhs_brep_serialized, rhs_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(rhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtraction(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\n/**\n * Wasm entry point for array-backed repeated subtraction.\n * @param {string} lhs_brep_serialized\n * @param {string} cutters_brep_serialized\n * @param {string | null} [options_json]\n * @returns {OGBooleanResult}\n */\nexport function booleanSubtractionMany(lhs_brep_serialized, cutters_brep_serialized, options_json) {\n const ptr0 = passStringToWasm0(lhs_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(cutters_brep_serialized, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.booleanSubtractionMany(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return OGBooleanResult.__wrap(ret[0]);\n}\n\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\ntype KernelBooleanManyFunction = (\n lhsBrepSerialized: string,\n rhsBrepsSerialized: 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 *\n * Accepts wrapper objects directly, including `Solid`, `Cuboid`, `Opening`,\n * and other shapes that expose BRep accessors.\n */\nexport function booleanUnion(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanUnion\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean intersection and returns a renderable result mesh.\n */\nexport function booleanIntersection(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanIntersection\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed boolean subtraction and returns a renderable result mesh.\n *\n * Use this when you want a standalone helper rather than a shape-level\n * convenience method like `opening.subtractFrom(host)`.\n */\nexport function booleanSubtraction(\n lhs: BooleanOperand,\n rhs: BooleanOperand,\n options?: BooleanExecutionOptions\n) {\n return executeBoolean(\"booleanSubtraction\", lhs, rhs, options);\n}\n\n/**\n * Computes a kernel-backed repeated subtraction using a left-to-right cutter array.\n *\n * This is used by the shape-level `.subtract([...])` helpers so the heavy\n * boolean orchestration stays in the Rust/WASM layer instead of JavaScript.\n */\nexport function executeBooleanSubtractionMany(\n lhs: BooleanOperand,\n cutters: BooleanOperand[],\n options?: BooleanExecutionOptions\n) {\n const booleanExport = (OGKernel as Record<string, unknown>).booleanSubtractionMany;\n if (typeof booleanExport !== \"function\") {\n throw new Error(\n \"booleanSubtractionMany is not available in the loaded wasm package. Rebuild opengeometry wasm bindings.\"\n );\n }\n\n const kernelFunction = booleanExport as KernelBooleanManyFunction;\n const kernelOptions = serializeKernelOptions(options?.kernel);\n const kernelResult = kernelFunction(\n resolveOperandSerialized(lhs),\n JSON.stringify(cutters.map(resolveOperandPayload)),\n kernelOptions\n );\n\n return createBooleanResult(kernelResult, 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 return createBooleanResult(kernelResult, options);\n}\n\n/**\n * Accepts wrapper objects, raw BRep data, or serialized JSON and normalizes\n * everything into the kernel's serialized input format.\n */\nfunction resolveOperandSerialized(operand: BooleanOperand): string {\n if (typeof operand === \"string\") {\n return operand;\n }\n\n if (typeof operand.getBrepSerialized === \"function\") {\n return serializeBrepLike(operand.getBrepSerialized());\n }\n\n if (typeof operand.getBrepData === \"function\") {\n return serializeBrepLike(operand.getBrepData());\n }\n\n if (typeof operand.getBrep === \"function\") {\n return serializeBrepLike(operand.getBrep());\n }\n\n return serializeBrepLike(operand);\n}\n\n/**\n * Parses a boolean operand into a raw BRep payload so array-backed boolean\n * calls can serialize a JSON array of BReps instead of a JSON array of strings.\n */\nfunction resolveOperandPayload(operand: BooleanOperand) {\n const serialized = resolveOperandSerialized(operand);\n try {\n return JSON.parse(serialized) as Record<string, unknown>;\n } catch {\n throw new Error(\n \"Boolean operands must resolve to valid serialized BRep JSON before array subtraction.\"\n );\n }\n}\n\n/**\n * Accepts either a parsed BRep object or an already serialized JSON payload\n * and always returns the canonical serialized form expected by the wasm API.\n */\nfunction serializeBrepLike(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\n/**\n * Translates the camelCase Three-side options into the snake_case wasm payload.\n */\nfunction serializeKernelOptions(options?: BooleanKernelOptions) {\n if (!options) {\n return undefined;\n }\n\n return JSON.stringify({\n tolerance: options.tolerance,\n merge_coplanar_faces: options.mergeCoplanarFaces,\n });\n}\n\nfunction createBooleanResult(\n kernelResult: KernelBooleanResult,\n options?: BooleanExecutionOptions\n) {\n const result = new BooleanResult(kernelResult, options);\n if (options?.outline ?? true) {\n result.outline = true;\n }\n return result;\n}\n\n/**\n * Builds a display-quality outline buffer from the rendered mesh and falls back\n * to the kernel-provided edges when the client-side extraction is empty.\n */\nfunction getRenderableOutlinePositions(\n geometry: THREE.BufferGeometry,\n fallbackSerialized: string\n) {\n const edgesGeometry = new THREE.EdgesGeometry(\n geometry,\n BOOLEAN_OUTLINE_THRESHOLD_DEGREES\n );\n const positionsAttribute = edgesGeometry.getAttribute(\"position\");\n const positions =\n positionsAttribute && positionsAttribute.count > 0\n ? Array.from(positionsAttribute.array as ArrayLike<number>)\n : [];\n edgesGeometry.dispose();\n\n if (positions.length > 0) {\n return positions;\n }\n\n return JSON.parse(fallbackSerialized) as number[];\n}\n","import { executeBooleanSubtractionMany } from \"../operations/boolean\";\nimport type {\n BooleanExecutionOptions,\n BooleanOperand,\n BooleanResult,\n} from \"../operations/boolean\";\n\n/**\n * Operand types accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperand = BooleanOperand;\n\n/**\n * Array-only operand list accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOperands = ShapeSubtractOperand[];\n\n/**\n * Options accepted by shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractOptions = BooleanExecutionOptions;\n\n/**\n * Return type for shape instance `.subtract(...)` helpers.\n */\nexport type ShapeSubtractResult = BooleanResult;\n\n/**\n * Executes a kernel-backed subtraction for a shape wrapper against another boolean operand.\n */\nexport function subtractShapeOperand(\n host: ShapeSubtractOperand,\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n): ShapeSubtractResult {\n if (!Array.isArray(operands)) {\n throw new Error(\n \"shape.subtract(...) now requires an operand array. Pass shape.subtract([operand], options) even for a single cutter.\"\n );\n }\n\n return executeBooleanSubtractionMany(host, operands, options);\n}\n","import { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\n\nimport { clonePlacement, toObjectTransformation } from \"../editor\";\nimport { createFreeformGeometry, type FreeformGeometry } from \"../freeform\";\nimport type { FreeformSource, ObjectTransformation } from \"../freeform/types\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\nimport { getUUID } from \"../utils/randomizer\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n getShapeOutlineColor,\n sanitizeOutlineWidth,\n setShapeOutlineColor,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\n\n/**\n * Construction options for a generic BRep-backed solid.\n */\nexport interface ISolidOptions {\n ogid?: string;\n brep: FreeformSource;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Solid`.\n */\nexport interface SolidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Additional options accepted when creating a `Solid` through face extrusion.\n */\nexport interface ExtrudeSolidOptions\n extends Omit<ISolidOptions, \"brep\" | \"ogid\" | \"anchor\" | \"translation\" | \"rotation\" | \"scale\"> {\n ogid?: string;\n anchor?: Vector3;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Generic renderable BRep-backed solid used for extrusion outputs and other\n * kernel results that are not dedicated parametric shapes.\n */\nexport class Solid extends THREE.Mesh {\n ogid: string;\n options: ISolidOptions = {\n brep: \"{}\",\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n anchor: new Vector3(0, 0, 0),\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private solid: FreeformGeometry;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options: ISolidOptions) {\n super();\n\n this.ogid = options.ogid ?? getUUID();\n this.options = {\n ...this.options,\n ...options,\n ogid: this.ogid,\n anchor: cloneVector(options.anchor, [0, 0, 0]),\n translation: cloneVector(options.translation, [0, 0, 0]),\n rotation: cloneVector(options.rotation, [0, 0, 0]),\n scale: cloneVector(options.scale, [1, 1, 1]),\n };\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n this.solid = createFreeformGeometry(this.options.brep, {\n id: this.ogid,\n placement: this.getPlacementTransform(),\n });\n this.generateGeometry();\n }\n\n /**\n * Extrudes a face-like BRep source and wraps the result as a renderable solid.\n *\n * Prefer `polygon.extrude(height)` when the source is already a `Polygon`.\n */\n static extrude(\n source: FreeformSource,\n height: number,\n options: ExtrudeSolidOptions\n ) {\n return new Solid({\n ...options,\n brep: extrudeBrepFace(source, height),\n });\n }\n\n /**\n * Returns the current placement values as cloned vectors.\n */\n getPlacement() {\n return clonePlacement(this.getPlacementTransform());\n }\n\n /**\n * Applies translation, rotation, and scale updates to the wrapped BRep.\n */\n setPlacement(placement: SolidPlacementOptions) {\n this.options.translation = cloneVector(\n placement.translation ?? this.options.translation,\n [0, 0, 0]\n );\n this.options.rotation = cloneVector(\n placement.rotation ?? this.options.rotation,\n [0, 0, 0]\n );\n this.options.scale = cloneVector(\n placement.scale ?? this.options.scale,\n [1, 1, 1]\n );\n\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getAnchor() {\n return this.getPlacementTransform().anchor.clone();\n }\n\n setAnchor(anchor: Vector3) {\n this.options.anchor = anchor.clone();\n this.solid.setPlacement(this.getPlacementTransform());\n this.generateGeometry();\n }\n\n /**\n * Solid is always convertible back to the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct editing of this solid's BRep.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.getLocalBrepSerialized(), {\n id,\n placement: this.getPlacementTransform(),\n });\n }\n\n /**\n * Returns the world-space serialized BRep payload for this solid.\n */\n getBrepSerialized() {\n return this.solid.getBrepSerialized();\n }\n\n /**\n * Returns the local-space serialized BRep payload for this solid.\n */\n getLocalBrepSerialized() {\n return this.solid.getLocalBrepSerialized();\n }\n\n /**\n * Returns the parsed world-space BRep object for this solid.\n */\n getBrepData() {\n const brepSerialized = this.getBrepSerialized();\n if (!brepSerialized) {\n throw new Error(\"Brep data is not available for this solid.\");\n }\n return JSON.parse(brepSerialized);\n }\n\n /**\n * Subtracts one or more boolean operands from this solid.\n *\n * This is the main shape-level boolean workflow after operations like\n * `polygon.extrude(height)` or `Solid.extrude(...)`.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Rebuilds the visible mesh and outline from the current freeform geometry.\n */\n generateGeometry() {\n const bufferData = this.solid.getGeometryBuffer();\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n 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 ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\nimport { extrudeBrepFace } from \"../operations/extrude\";\n\n/**\n * Construction options for a planar polygon.\n */\nexport interface IPolygonOptions {\n ogid?: string;\n vertices: Vector3[];\n holes?: Vector3[][];\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\nexport interface PolygonPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial polygon config updates that regenerate the profile when geometry changes.\n */\nexport type PolygonConfigUpdate = Partial<\n Omit<IPolygonOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Placement updates accepted by `Polygon`.\n */\nexport type PolygonPlacementUpdate = PolygonPlacementOptions;\n\n/**\n * Planar polygon mesh with support for holes, booleans, and extrusion to `Solid`.\n */\nexport class Polygon extends THREE.Mesh {\n ogid: string;\n options: IPolygonOptions = {\n vertices: [],\n holes: [],\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n polygon: OGPolygon;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n private _outlineColor = 0x000000;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(color);\n }\n }\n\n get color() {\n return this.options.color;\n }\n\n constructor(options?: IPolygonOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.polygon = new OGPolygon(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n vertices: this.options.vertices.map((vertex) => vertex.clone()),\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Polygon\");\n }\n }\n\n setConfig(options: PolygonConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"vertices\" in options ||\n \"holes\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.polygon.set_config(this.options.vertices.map((vertex) => vertex.clone()));\n (this.options.holes ?? []).forEach((hole) => {\n this.polygon.add_holes(hole.map((vertex) => vertex.clone()));\n });\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.polygon.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setAnchor(anchor: Vector3) {\n this.polygon.set_anchor(anchor.clone());\n this.generateGeometry();\n }\n\n resetAnchor() {\n this.polygon.reset_anchor();\n this.generateGeometry();\n }\n\n setPlacement(placement: PolygonPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.polygon.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n /**\n * Returns the editing capability payload advertised by parametric wrappers.\n */\n getEditCapabilities() {\n return createParametricEditCapabilities(\"polygon\", \"profile\");\n }\n\n /**\n * Polygon always supports conversion into the freeform editing wrapper.\n */\n canConvertToFreeform() {\n return true;\n }\n\n /**\n * Returns a freeform wrapper for direct BRep editing of this polygon.\n */\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.polygon.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.disposeResources();\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.polygon.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshBasicMaterial) {\n this.material.color.set(this.options.color);\n this.material.side = THREE.DoubleSide;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshBasicMaterial({\n color: this.options.color,\n side: THREE.DoubleSide,\n });\n }\n\n if (bufferData.length > 0) {\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n } else {\n this.geometry.deleteAttribute(\"normal\");\n this.geometry.boundingBox = null;\n this.geometry.boundingSphere = null;\n }\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.polygon.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n addVertices(vertices: Vector3[]) {\n if (!this.polygon) return;\n this.setConfig({\n vertices: vertices.map((vertex) => vertex.clone()),\n });\n }\n\n addHole(holeVertices: Vector3[]) {\n if (!this.polygon) return;\n this.options.holes = [\n ...(this.options.holes ?? []),\n holeVertices.map((vertex) => vertex.clone()),\n ];\n this.setConfig({\n holes: (this.options.holes ?? []).map((hole) =>\n hole.map((vertex) => vertex.clone())\n ),\n });\n }\n\n /**\n * Builds a kernel-backed `Solid` by extruding this polygon face by `height`.\n *\n * This is the recommended public path when a browser CAD or AEC workflow\n * starts from a planar profile and needs a boolean-ready solid.\n */\n extrude(height: number) {\n const config = this.getConfig();\n const placement = this.getPlacement();\n const solid = new Solid({\n brep: extrudeBrepFace(this.polygon.get_local_brep_serialized(), height),\n color: config.color,\n fatOutlines: config.fatOutlines,\n outlineWidth: config.outlineWidth,\n anchor: this.getAnchor(),\n translation: placement.translation.clone(),\n rotation: placement.rotation.clone(),\n scale: placement.scale.clone(),\n });\n\n solid.outline = this.outline;\n solid.outlineColor = this.outlineColor;\n return solid;\n }\n\n /**\n * Returns the serialized BRep payload for this polygon.\n */\n getBrepData() {\n if (!this.polygon) return null;\n const brepData = this.polygon.get_brep_serialized();\n return brepData;\n }\n\n /**\n * Subtracts one or more boolean operands from this polygon.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outlineColor(color: number) {\n this._outlineColor = color;\n setShapeOutlineColor(this.#outlineMesh, color);\n }\n\n get outlineColor() {\n return getShapeOutlineColor(this.#outlineMesh, this._outlineColor);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.polygon.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: this._outlineColor,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n disposeGeometryMaterial() {\n this.disposeResources();\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n dispose() {\n this.disposeResources();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n\n private disposeResources() {\n if (this.geometry) {\n this.geometry.dispose();\n }\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else if (this.material instanceof THREE.Material) {\n this.material.dispose();\n }\n this.clearOutlineMesh();\n }\n}\n","import { OGCylinder, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a cylinder shape.\n */\nexport interface ICylinderOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n height: number;\n segments: number;\n angle: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Cylinder`.\n */\nexport interface CylinderPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Cylinder.setConfig(...)`.\n */\nexport type CylinderConfigUpdate = Partial<\n Omit<ICylinderOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cylinder` placement updates.\n */\nexport type CylinderPlacementUpdate = CylinderPlacementOptions;\n\n/**\n * Cylinder wrapper backed by the kernel cylindrical primitive.\n */\nexport class Cylinder extends THREE.Mesh {\n ogid: string;\n options: ICylinderOptions = {\n center: new Vector3(0, 0, 0),\n radius: 1,\n height: 1,\n segments: 32,\n angle: 2 * Math.PI,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n \n private cylinder: OGCylinder;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set radius(value: number) {\n this.setConfig({ radius: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICylinderOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cylinder = new OGCylinder(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n radius: this.options.radius,\n height: this.options.height,\n segments: this.options.segments,\n angle: this.options.angle,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Cylinder\");\n }\n }\n\n setConfig(options: CylinderConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"radius\" in options ||\n \"height\" in options ||\n \"segments\" in options ||\n \"angle\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { radius, height, segments, angle, center } = this.options;\n this.cylinder.set_config(\n center.clone(),\n radius,\n height,\n angle,\n segments\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.cylinder.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CylinderPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cylinder.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cylinder\", \"radial\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cylinder.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.cylinder.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cylinder.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrep() {\n if (!this.cylinder) return null;\n const brepData = this.cylinder.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cylinder.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cylinder.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cylinder.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Placement updates accepted by `Cuboid`.\n */\nexport interface CuboidPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Construction options for a cuboid shape.\n */\nexport interface ICuboidOptions extends CuboidPlacementOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n}\n\n/**\n * Partial config payload accepted by `Cuboid.setConfig(...)`.\n */\nexport type CuboidConfigUpdate = Partial<\n Omit<ICuboidOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Cuboid` placement updates.\n */\nexport type CuboidPlacementUpdate = CuboidPlacementOptions;\n\n/**\n * Box-shaped solid wrapper backed by the kernel cuboid primitive.\n */\nexport class Cuboid extends THREE.Mesh {\n ogid: string;\n options: ICuboidOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n fatOutlines: false,\n outlineWidth: 1,\n };\n\n private cuboid: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: ICuboidOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.cuboid = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n getConfig() {\n return this.options;\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n setConfig(options: CuboidConfigUpdate) {\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n this.cuboid.set_config(\n this.options.center.clone(),\n this.options.width,\n this.options.height,\n this.options.depth\n );\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n generateGeometry() {\n const geometryData = Array.from(this.cuboid.get_geometry_buffer());\n this.writePositionsToGeometry(this.geometry, geometryData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.cuboid.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.cuboid) return null;\n const brepData = this.cuboid.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this cuboid.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this cuboid.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.cuboid.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n getAnchor() {\n const anchor = this.cuboid.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: CuboidPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.cuboid.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"cuboid\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.cuboid.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGCuboid, Vector3 } from \"./../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { booleanSubtraction } from \"../operations/boolean\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperand,\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for an architectural opening volume.\n */\nexport interface IOpeningOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Opening`.\n */\nexport interface OpeningPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Opening.setConfig(...)`.\n */\nexport type OpeningConfigUpdate = Partial<\n Omit<IOpeningOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Opening` placement updates.\n */\nexport type OpeningPlacementUpdate = OpeningPlacementOptions;\n\n/**\n * Opening wrapper used as a subtractive solid in architectural workflows.\n */\nexport class Opening extends THREE.Mesh {\n ogid: string;\n options: IOpeningOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 0.2,\n color: 0xdad7cd,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n }\n \n private opening: OGCuboid;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set width(value: number) {\n this.setConfig({ width: value });\n }\n\n set height(value: number) {\n this.setConfig({ height: value });\n }\n\n set depth(value: number) {\n this.setConfig({ depth: value });\n }\n\n get dimensions() {\n return {\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n };\n }\n\n constructor(options?: IOpeningOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.opening = new OGCuboid(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Opening\");\n }\n }\n\n setConfig(options: OpeningConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.opening.set_config(\n center.clone(),\n width,\n height,\n depth\n );\n\n this.generateGeometry();\n return;\n }\n\n if (colorChanged && this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.opening.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: OpeningPlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.opening.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"opening\", \"box\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.opening.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach(mat => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.opening.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0;\n this.material.depthWrite = false;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0,\n depthWrite: false,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.opening.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n if (!this.opening) return null;\n const brepData = this.opening.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this opening.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands from this opening volume.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n /**\n * Uses this opening volume to cut a host shape.\n *\n * Prefer this helper for wall, slab, and other host-cutting workflows in\n * browser-based AEC/BIM tools.\n */\n subtractFrom(\n host: ShapeSubtractOperand,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return booleanSubtraction(host, this, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outline_buf = Array.from(this.opening.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outline_buf,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a sphere shape.\n */\nexport interface ISphereOptions {\n ogid?: string;\n center: Vector3;\n radius: number;\n widthSegments: number;\n heightSegments: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sphere`.\n */\nexport interface SpherePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sphere.setConfig(...)`.\n */\nexport type SphereConfigUpdate = Partial<\n Omit<ISphereOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sphere` placement updates.\n */\nexport type SpherePlacementUpdate = SpherePlacementOptions;\n\n/* 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 one or more boolean operands, such as Opening volumes, from this sphere.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const lineBuffer = Array.from(this.sphere.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: lineBuffer,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import { OGWedge, Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a wedge/prism shape.\n */\nexport interface IWedgeOptions {\n ogid?: string;\n center: Vector3;\n width: number;\n height: number;\n depth: number;\n color: number;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Wedge`.\n */\nexport interface WedgePlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Wedge.setConfig(...)`.\n */\nexport type WedgeConfigUpdate = Partial<\n Omit<IWedgeOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Wedge` placement updates.\n */\nexport type WedgePlacementUpdate = WedgePlacementOptions;\n\n/**\n * Wedge wrapper backed by the kernel wedge primitive.\n */\nexport class Wedge extends THREE.Mesh {\n ogid: string;\n options: IWedgeOptions = {\n center: new Vector3(0, 0, 0),\n width: 1,\n height: 1,\n depth: 1,\n color: 0x00ff00,\n fatOutlines: false,\n outlineWidth: 1,\n translation: new Vector3(0, 0, 0),\n rotation: new Vector3(0, 0, 0),\n scale: new Vector3(1, 1, 1),\n };\n\n private wedge: OGWedge;\n #outlineMesh: ShapeOutlineMesh | null = null;\n private _outlineEnabled = false;\n private _fatOutlines = false;\n private _outlineWidth = 1;\n\n set color(color: number) {\n this.options.color = color;\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(color);\n }\n }\n\n constructor(options?: IWedgeOptions) {\n super();\n this.ogid = options?.ogid ?? getUUID();\n this.wedge = new OGWedge(this.ogid);\n\n this.options = { ...this.options, ...options };\n this.options.ogid = this.ogid;\n\n this.setConfig({\n center: this.options.center.clone(),\n width: this.options.width,\n height: this.options.height,\n depth: this.options.depth,\n color: this.options.color,\n fatOutlines: this.options.fatOutlines,\n outlineWidth: this.options.outlineWidth,\n });\n this.setPlacement({\n translation: this.options.translation?.clone(),\n rotation: this.options.rotation?.clone(),\n scale: this.options.scale?.clone(),\n });\n }\n\n validateOptions() {\n if (!this.options) {\n throw new Error(\"Options are not defined for Wedge\");\n }\n }\n\n setConfig(options: WedgeConfigUpdate) {\n this.validateOptions();\n\n const nextOptions = { ...this.options, ...options };\n const geometryChanged =\n \"center\" in options ||\n \"width\" in options ||\n \"height\" in options ||\n \"depth\" in options;\n const colorChanged = \"color\" in options;\n const outlineStyleChanged =\n \"fatOutlines\" in options ||\n \"outlineWidth\" in options;\n\n this.options = nextOptions;\n this._fatOutlines = this.options.fatOutlines ?? false;\n this._outlineWidth = sanitizeOutlineWidth(this.options.outlineWidth);\n this.options.fatOutlines = this._fatOutlines;\n this.options.outlineWidth = this._outlineWidth;\n\n if (geometryChanged) {\n const { width, height, depth, center } = this.options;\n this.wedge.set_config(center.clone(), width, height, depth);\n this.generateGeometry();\n return;\n }\n\n if (colorChanged) {\n this.color = this.options.color;\n }\n\n if (outlineStyleChanged && this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n getConfig() {\n return this.options;\n }\n\n getAnchor() {\n const anchor = this.wedge.get_anchor();\n return new Vector3(anchor.x, anchor.y, anchor.z);\n }\n\n setPlacement(placement: WedgePlacementUpdate) {\n this.options.translation = placement.translation?.clone() ?? this.options.translation;\n this.options.rotation = placement.rotation?.clone() ?? this.options.rotation;\n this.options.scale = placement.scale?.clone() ?? this.options.scale;\n\n this.wedge.set_transform(\n this.options.translation?.clone() ?? new Vector3(0, 0, 0),\n this.options.rotation?.clone() ?? new Vector3(0, 0, 0),\n this.options.scale?.clone() ?? new Vector3(1, 1, 1)\n );\n this.generateGeometry();\n }\n\n setTransform(translation: Vector3, rotation: Vector3, scale: Vector3) {\n this.setPlacement({\n translation,\n rotation,\n scale,\n });\n }\n\n setTranslation(translation: Vector3) {\n this.setPlacement({ translation });\n }\n\n setRotation(rotation: Vector3) {\n this.setPlacement({ rotation });\n }\n\n setScale(scale: Vector3) {\n this.setPlacement({ scale });\n }\n\n getPlacement() {\n return clonePlacement({\n translation: this.options.translation,\n rotation: this.options.rotation,\n scale: this.options.scale,\n });\n }\n\n getEditCapabilities() {\n return createParametricEditCapabilities(\"wedge\", \"wedge\");\n }\n\n canConvertToFreeform() {\n return true;\n }\n\n toFreeform(id: string = this.ogid) {\n if (!this.canConvertToFreeform()) {\n throw new Error(\"This entity cannot be converted to freeform.\");\n }\n return createFreeformGeometry(this.wedge.get_local_brep_serialized(), {\n id,\n placement: this.getPlacement(),\n });\n }\n\n cleanGeometry() {\n this.geometry.dispose();\n if (Array.isArray(this.material)) {\n this.material.forEach((mat) => mat.dispose());\n } else {\n this.material.dispose();\n }\n }\n\n generateGeometry() {\n const bufferData = Array.from(this.wedge.get_geometry_buffer());\n\n this.writePositionsToGeometry(this.geometry, bufferData);\n\n if (this.material instanceof THREE.MeshStandardMaterial) {\n this.material.color.set(this.options.color);\n this.material.transparent = true;\n this.material.opacity = 0.6;\n } else {\n if (Array.isArray(this.material)) {\n this.material.forEach((material) => material.dispose());\n } else {\n this.material.dispose();\n }\n\n this.material = new THREE.MeshStandardMaterial({\n color: this.options.color,\n transparent: true,\n opacity: 0.6,\n });\n }\n\n this.geometry.computeVertexNormals();\n this.geometry.computeBoundingBox();\n this.geometry.computeBoundingSphere();\n\n if (!this._outlineEnabled) {\n return;\n }\n\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n if (!this.#outlineMesh) {\n this.outline = true;\n return;\n }\n\n if (this.#outlineMesh instanceof THREE.LineSegments) {\n this.writePositionsToGeometry(this.#outlineMesh.geometry, outlineData);\n this.#outlineMesh.geometry.computeBoundingBox();\n this.#outlineMesh.geometry.computeBoundingSphere();\n return;\n }\n\n const fatGeometry = this.#outlineMesh.geometry as LineSegmentsGeometry;\n fatGeometry.setPositions(outlineData);\n\n const fatOutline = this.#outlineMesh as ShapeOutlineMesh & {\n computeLineDistances?: () => void;\n };\n fatOutline.computeLineDistances?.();\n }\n\n getBrepData() {\n const brepData = this.wedge.get_brep_serialized();\n if (!brepData) {\n throw new Error(\"Brep data is not available for this wedge.\");\n }\n return JSON.parse(brepData);\n }\n\n /**\n * Subtracts one or more boolean operands, such as Opening volumes, from this wedge.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.wedge.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n get outlineMesh() {\n return this.#outlineMesh;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as OGKernel from \"../../../opengeometry/pkg/opengeometry\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport * as THREE from \"three\";\nimport { LineSegmentsGeometry } from \"three/examples/jsm/lines/LineSegmentsGeometry.js\";\nimport { getUUID } from \"../utils/randomizer\";\nimport {\n createShapeOutlineMesh,\n disposeShapeOutlineMesh,\n sanitizeOutlineWidth,\n ShapeOutlineMesh,\n} from \"./outline-utils\";\nimport {\n clonePlacement,\n createParametricEditCapabilities,\n} from \"../editor\";\nimport { createFreeformGeometry } from \"../freeform\";\nimport { subtractShapeOperand } from \"./boolean-subtract\";\nimport type {\n ShapeSubtractOperands,\n ShapeSubtractOptions,\n ShapeSubtractResult,\n} from \"./boolean-subtract\";\n\n/**\n * Construction options for a swept solid.\n */\nexport interface ISweepOptions {\n ogid?: string;\n path: Vector3[];\n profile: Vector3[];\n color: number;\n capStart?: boolean;\n capEnd?: boolean;\n fatOutlines?: boolean;\n outlineWidth?: number;\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Placement updates accepted by `Sweep`.\n */\nexport interface SweepPlacementOptions {\n translation?: Vector3;\n rotation?: Vector3;\n scale?: Vector3;\n}\n\n/**\n * Partial config payload accepted by `Sweep.setConfig(...)`.\n */\nexport type SweepConfigUpdate = Partial<\n Omit<ISweepOptions, \"translation\" | \"rotation\" | \"scale\">\n>;\n\n/**\n * Alias for `Sweep` placement updates.\n */\nexport type SweepPlacementUpdate = SweepPlacementOptions;\n\n/* 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 one or more boolean operands, such as Opening volumes, from this sweep.\n */\n subtract(\n operands: ShapeSubtractOperands,\n options?: ShapeSubtractOptions\n ): ShapeSubtractResult {\n return subtractShapeOperand(this, operands, options);\n }\n\n set outline(enable: boolean) {\n this._outlineEnabled = enable;\n this.clearOutlineMesh();\n if (enable) {\n const outlineData = Array.from(this.sweep.get_outline_geometry_buffer());\n this.#outlineMesh = createShapeOutlineMesh({\n positions: outlineData,\n color: 0x000000,\n fatOutlines: this._fatOutlines,\n outlineWidth: this._outlineWidth,\n });\n\n this.add(this.#outlineMesh);\n }\n }\n\n get outline() {\n return this._outlineEnabled;\n }\n\n set fatOutlines(value: boolean) {\n this._fatOutlines = value;\n this.options.fatOutlines = value;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get fatOutlines() {\n return this._fatOutlines;\n }\n\n set outlineWidth(value: number) {\n this._outlineWidth = sanitizeOutlineWidth(value);\n this.options.outlineWidth = this._outlineWidth;\n if (this._outlineEnabled) {\n this.outline = true;\n }\n }\n\n get outlineWidth() {\n return this._outlineWidth;\n }\n\n private clearOutlineMesh() {\n if (!this.#outlineMesh) {\n return;\n }\n this.remove(this.#outlineMesh);\n disposeShapeOutlineMesh(this.#outlineMesh);\n this.#outlineMesh = null;\n }\n\n discardGeometry() {\n this.geometry.dispose();\n }\n\n private writePositionsToGeometry(\n geometry: THREE.BufferGeometry,\n positions: number[]\n ) {\n const existing = geometry.getAttribute(\"position\");\n if (\n !(existing instanceof THREE.BufferAttribute) ||\n existing.itemSize !== 3 ||\n existing.count !== positions.length / 3\n ) {\n geometry.setAttribute(\n \"position\",\n new THREE.Float32BufferAttribute(positions, 3)\n );\n return;\n }\n\n const array = existing.array as Float32Array;\n array.set(positions);\n existing.needsUpdate = true;\n }\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Arc } from \"../primitives/arc\";\nimport { Curve } from \"../primitives/curve\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\n\n/**\n * Adds a basic primitives showcase to the provided scene.\n */\nexport function createPrimitivesExample(scene: THREE.Scene) {\n const line = new Line({\n start: new Vector3(-3.0, 0.0, -2.0),\n end: new Vector3(-1.0, 0.0, -1.0),\n color: 0x111827,\n });\n\n const polyline = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, 1.6),\n new Vector3(-1.4, 0.0, 2.4),\n new Vector3(-0.7, 0.0, 1.8),\n new Vector3(-0.2, 0.0, 2.6),\n ],\n color: 0x0284c7,\n });\n\n const arc = new Arc({\n center: new Vector3(1.0, 0.0, -1.0),\n radius: 1.0,\n startAngle: 0.0,\n endAngle: Math.PI * 1.5,\n segments: 32,\n color: 0xb91c1c,\n });\n\n const rectangle = new Rectangle({\n center: new Vector3(2.0, 0.0, 1.8),\n width: 1.5,\n breadth: 0.9,\n color: 0x1d4ed8,\n });\n\n const curve = new Curve({\n controlPoints: [\n new Vector3(-0.8, 0.0, -2.2),\n new Vector3(0.0, 0.0, -2.4),\n new Vector3(0.9, 0.0, -1.8),\n new Vector3(1.6, 0.0, -2.0),\n ],\n color: 0x7c3aed,\n });\n\n scene.add(line);\n scene.add(polyline);\n scene.add(arc);\n scene.add(rectangle);\n scene.add(curve);\n\n return { line, polyline, arc, rectangle, curve };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Cuboid } from \"../shapes/cuboid\";\nimport { Cylinder } from \"../shapes/cylinder\";\nimport { Opening } from \"../shapes/opening\";\nimport { Polygon } from \"../shapes/polygon\";\nimport { Sphere } from \"../shapes/sphere\";\nimport { Sweep } from \"../shapes/sweep\";\nimport { Wedge } from \"../shapes/wedge\";\n\n/**\n * Adds a basic shapes showcase to the provided scene.\n */\nexport function createShapesExample(scene: THREE.Scene) {\n const fatOutlineWidth = 4;\n\n const polygon = new Polygon({\n vertices: [\n new Vector3(-3.0, 0.0, -0.5),\n new Vector3(-2.2, 0.0, 0.5),\n new Vector3(-1.2, 0.0, 0.2),\n new Vector3(-1.5, 0.0, -0.8),\n ],\n color: 0x2563eb,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n polygon.outline = true;\n\n const cuboid = new Cuboid({\n center: new Vector3(0.0, 0.8, -1.2),\n width: 1.2,\n height: 1.6,\n depth: 1.0,\n color: 0x10b981,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cuboid.outline = true;\n\n const cylinder = new Cylinder({\n center: new Vector3(1.8, 0.8, -0.8),\n radius: 0.6,\n height: 1.6,\n segments: 28,\n angle: Math.PI * 2,\n color: 0xf97316,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n cylinder.outline = true;\n\n const wedge = new Wedge({\n center: new Vector3(3.4, 0.8, -1.0),\n width: 1.2,\n height: 1.4,\n depth: 1.0,\n color: 0x7c3aed,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n wedge.outline = true;\n\n const sphere = new Sphere({\n center: new Vector3(0.6, 1.0, 1.2),\n radius: 0.9,\n widthSegments: 28,\n heightSegments: 18,\n color: 0x0ea5e9,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sphere.outline = true;\n\n const opening = new Opening({\n center: new Vector3(2.4, 0.9, 1.2),\n width: 1.0,\n height: 1.8,\n depth: 0.3,\n color: 0x9ca3af,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n opening.outline = true;\n\n const sweep = new Sweep({\n path: [\n new Vector3(-2.8, 0.0, 2.4),\n new Vector3(-2.2, 0.6, 2.8),\n new Vector3(-1.4, 1.2, 2.4),\n new Vector3(-0.8, 1.7, 1.8),\n ],\n profile: [\n new Vector3(-0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, -0.2),\n new Vector3(0.2, 0.0, 0.2),\n new Vector3(-0.2, 0.0, 0.2),\n ],\n color: 0x14b8a6,\n capStart: true,\n capEnd: true,\n fatOutlines: true,\n outlineWidth: fatOutlineWidth,\n });\n sweep.outline = true;\n\n scene.add(polygon);\n scene.add(cuboid);\n scene.add(cylinder);\n scene.add(wedge);\n scene.add(sphere);\n scene.add(opening);\n scene.add(sweep);\n\n return { polygon, cuboid, cylinder, wedge, sphere, opening, sweep };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Sweep } from \"../shapes/sweep\";\n\ntype KernelVertex = {\n position: {\n x: number;\n y: number;\n z: number;\n };\n};\n\ntype KernelBrep = {\n vertices: KernelVertex[];\n};\n\nfunction toVector3List(vertices: KernelVertex[]): Vector3[] {\n return vertices.map((vertex) => {\n const { x, y, z } = vertex.position;\n return new Vector3(x, y, z);\n });\n}\n\nexport function createSweepExample(scene: THREE.Scene) {\n const pathPrimitive = new Polyline({\n points: [\n new Vector3(-2.0, 0.0, -1.0),\n new Vector3(-1.2, 0.5, 0.2),\n new Vector3(0.0, 1.1, 0.9),\n new Vector3(1.1, 1.7, 0.3),\n new Vector3(2.0, 2.2, -0.8),\n ],\n color: 0x444444,\n });\n\n const profilePrimitive = new Rectangle({\n center: new Vector3(0, 0, 0),\n width: 0.7,\n breadth: 0.4,\n color: 0x1f77b4,\n });\n\n // const profilePrimitive = new Arc();\n\n const profileBrep = profilePrimitive.getBrep() as KernelBrep;\n const profilePoints = toVector3List(profileBrep.vertices);\n\n const sweep = new Sweep({\n path: pathPrimitive.options.points.map((point) => point.clone()),\n profile: profilePoints,\n color: 0x2a9d8f,\n capStart: true,\n capEnd: false,\n fatOutlines: true,\n outlineWidth: 4,\n });\n\n scene.add(pathPrimitive);\n scene.add(profilePrimitive);\n scene.add(sweep);\n\n return {\n pathPrimitive,\n profilePrimitive,\n sweep,\n };\n}\n","import * as THREE from \"three\";\nimport { Vector3 } from \"../../../opengeometry/pkg/opengeometry\";\nimport { Line } from \"../primitives/line\";\nimport { Polyline } from \"../primitives/polyline\";\nimport { Rectangle } from \"../primitives/rectangle\";\nimport { Curve } from \"../primitives/curve\";\n\nconst EPSILON = 1.0e-9;\n\nfunction areClose(a: Vector3, b: Vector3): boolean {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return (dx * dx + dy * dy + dz * dz) <= EPSILON * EPSILON;\n}\n\nfunction toRenderableOffsetPoints(points: Vector3[], isClosed: boolean): Vector3[] {\n const output = points.map((point) => point.clone());\n if (!isClosed || output.length === 0) {\n return output;\n }\n\n if (!areClose(output[0], output[output.length - 1])) {\n output.push(output[0].clone());\n }\n\n return output;\n}\n\nexport function createOffsetExample(scene: THREE.Scene) {\n const baseLine = new Line({\n start: new Vector3(-3.0, 0.0, -2.2),\n end: new Vector3(-0.7, 0.0, -1.1),\n color: 0x1f2937,\n });\n\n const lineOffset = baseLine.getOffset(0.35, 35.0, true);\n const lineOffsetPrimitive = new Line({\n start: lineOffset.points[0],\n end: lineOffset.points[1],\n color: 0xef4444,\n });\n\n const basePolyline = new Polyline({\n points: [\n new Vector3(-1.2, 0.0, -2.4),\n new Vector3(0.2, 0.0, -1.6),\n new Vector3(0.8, 0.0, -0.4),\n new Vector3(0.0, 0.0, -0.2),\n new Vector3(2.5, 0.0, 1.2),\n ],\n color: 0x0f172a,\n });\n\n const polylineOffset = basePolyline.getOffset(0.45, 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 * Public OpenGeometry JavaScript entrypoint.\n */\nimport init, {\n OGSceneManager,\n Vector3,\n} from \"../opengeometry/pkg/opengeometry\";\nimport { SpotLabel } from \"./src/markup/spotMarker\";\nimport { OPEN_GEOMETRY_THREE_VERSION, OpenGeometryOptions } from \"./src/base-types\";\n\nexport type OUTLINE_TYPE = \"front\" | \"side\" | \"top\";\n\n/**\n * Binary STL export payload returned by export helpers.\n */\nexport interface OGStlExportResult {\n bytes: Uint8Array;\n reportJson: string;\n}\n\n/**\n * STEP text export payload returned by export helpers.\n */\nexport interface OGStepExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * IFC text export payload returned by export helpers.\n */\nexport interface OGIfcExportResult {\n text: string;\n reportJson: string;\n}\n\n/**\n * Shared runtime entrypoint used to initialize the OpenGeometry wasm module.\n */\nexport class OpenGeometry {\n static version = OPEN_GEOMETRY_THREE_VERSION;\n static instance: OpenGeometry | null = null;\n\n private _enableDebug: boolean = false;\n\n get enableDebug() {\n return this._enableDebug;\n }\n\n /**\n * Enables or disables debug mode for OpenGeometry.\n * When enabled, it logs debug information to the console.\n * Addtionally,\n * 1. The geometry will be rendered with a semi-transparent material.\n * 2. The faces will be rendered with a random color.\n * 3. The normals will be rendered for better visualization.\n * @param value - A boolean indicating whether to enable or disable debug mode.\n */\n set enableDebug(value: boolean) {\n this._enableDebug = value;\n if (this._enableDebug) {\n console.log(\"OpenGeometry Debug Mode Enabled\");\n }\n }\n\n constructor() {}\n\n /**\n * Asynchronously initializes the OpenGeometry wasm runtime and returns a\n * cached singleton instance on subsequent calls.\n *\n * Call this before constructing `Vector3` or any kernel-backed wrapper.\n *\n * @param options - Configuration object for initializing OpenGeometry.\n * @returns A promise that resolves to a fully initialized OpenGeometry instance.\n *\n * @example\n * ```ts\n * await OpenGeometry.create({\n * wasmURL: \"/opengeometry_bg.wasm\",\n * });\n * ```\n */\n static async create(options: OpenGeometryOptions) {\n if (!OpenGeometry.instance) {\n const og = new OpenGeometry();\n await og.setup(options.wasmURL);\n OpenGeometry.instance = og;\n }\n return OpenGeometry.instance;\n }\n\n private async setup(wasmURL?: string) {\n if (wasmURL) {\n await init({ module_or_path: wasmURL });\n return;\n }\n\n await init();\n }\n}\n\n/**\n * Scene manager that stores serialized BRep snapshots in wasm for projection,\n * export, and other scene-level workflows.\n */\nexport { OGSceneManager };\n\n/**\n * Shared wasm-backed vector type used throughout the public API.\n *\n * Initialize `OpenGeometry.create(...)` before constructing `Vector3`.\n */\nexport { Vector3 };\n\nexport { SpotLabel };\n\n/**\n * Primitive wrappers (line/polyline/arc/rectangle/curve).\n */\nexport * from \"./src/primitives/index\";\n/**\n * Shape wrappers (polygon/cuboid/cylinder/wedge/opening/sweep/sphere).\n */\nexport * from \"./src/shapes/index\";\n/**\n * Reusable example builders for quickly wiring demo scenes.\n */\nexport * from \"./src/examples/index\";\n/**\n * First-class freeform geometry wrapper around the kernel OGFreeformGeometry API.\n */\nexport * from \"./src/freeform/index\";\n/**\n * Editing helpers that operate on parametric entities and freeform geometry.\n */\nexport * from \"./src/editor/index\";\n/**\n * Kernel-backed modeling operations.\n */\nexport * from \"./src/operations/index\";\n"],"names":["wasm","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getArrayU8FromWasm0","ptr","len","subarray","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","handleError","f","args","apply","e","__wbindgen_exn_store","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","extrudeBrepFace","local_brep_serialized","height","deferred3_0","deferred3_1","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr2","len2","__wbindgen_free","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","passArrayJsValueToWasm0","array","i","add","setUint32","getArrayJsValueFromWasm0","result","push","getUint32","__externref_drop_slice","isLikeNone","x","booleanUnion","lhs_brep_serialized","rhs_brep_serialized","options_json","ptr1","len1","OGBooleanResult","__wrap","booleanIntersection","booleanSubtraction","booleanSubtractionMany","cutters_brep_serialized","Matrix3Finalization","FinalizationRegistry","register","unregister","__wbg_matrix3_free","Matrix3","Object","create","prototype","__wbg_ptr","__destroy_into_raw","free","constructor","matrix3_new","m0","m1","m2","m3","m4","m5","m6","m7","m8","matrix3_set","clone","matrix3_clone","identity","matrix3_identity","determinant","matrix3_determinant","adjucate","matrix3_adjucate","inverse","matrix3_inverse","transpose","matrix3_transpose","Matrix4Finalization","__wbg_matrix4_free","Matrix4","elements","matrix4_elements","v1","matrix4_new","m9","m10","m11","m12","m13","m14","m15","matrix4_set","matrix4_clone","matrix4_identity","matrix4_determinant","matrix4_adjucate","matrix4_inverse","multiply","other","matrix4_multiply","incoming","matrix4_add","subtract","matrix4_subtract","flatten","matrix4_flatten","get_element_at","index","matrix4_get_element_at","is_zero","matrix4_is_zero","is_identity","matrix4_is_identity","matrix4_transpose","OGArcFinalization","__wbg_ogarc_free","OGArc","id","ogarc_set_id","deferred1_0","deferred1_1","ogarc_id","ogarc_new","set_config","center","radius","start_angle","end_angle","segments","Vector3","ogarc_set_config","set_center","ogarc_set_center","set_transform","position","rotation","scale","ogarc_set_transform","set_translation","translation","ogarc_set_translation","set_rotation","ogarc_set_rotation","set_scale","ogarc_set_scale","generate_geometry","ogarc_generate_geometry","dispose_points","ogarc_dispose_points","destroy","ogarc_destroy","get_brep_serialized","ogarc_get_brep_serialized","get_local_brep_serialized","ogarc_get_local_brep_serialized","get_geometry_serialized","ogarc_get_geometry_serialized","get_local_geometry_serialized","ogarc_get_local_geometry_serialized","get_geometry_buffer","ogarc_get_geometry_buffer","get_local_geometry_buffer","ogarc_get_local_geometry_buffer","get_anchor","ogarc_get_anchor","OGBooleanResultFinalization","__wbg_ogbooleanresult_free","brepSerialized","ogbooleanresult_brepSerialized","geometrySerialized","ogbooleanresult_geometrySerialized","outlineGeometrySerialized","ogbooleanresult_outlineGeometrySerialized","reportJson","ogbooleanresult_reportJson","OGCuboidFinalization","__wbg_ogcuboid_free","OGCuboid","ogcuboid_set_id","ogcuboid_id","ogcuboid_new","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.booleanSubtractionMany","OGKernel[\"OGSweep\"]","EPSILON","areClose","init"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7]}