@solid-labs/fab-one-widget 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geo_wasm-CDwm1q1Z.js","sources":["../../wasm/galileo-core-geo/pkg/geo_wasm.js"],"sourcesContent":["/* @ts-self-types=\"./geo_wasm.d.ts\" */\n\n/**\n * Result of the align-to-origin transform.\n */\nexport class AlignResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(AlignResult.prototype);\n obj.__wbg_ptr = ptr;\n AlignResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n AlignResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_alignresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.alignresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float32Array}\n */\n mpt() {\n const ret = wasm.alignresult_mpt(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n origin() {\n const ret = wasm.alignresult_origin(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.alignresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Returns [ox, oy, oz, r00, r01, r02, r10, r11, r12, r20, r21, r22]\n * To transform a point p: rotated = R * (p - [ox,oy,oz])\n * @returns {Float32Array}\n */\n transform() {\n const ret = wasm.alignresult_transform(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) AlignResult.prototype[Symbol.dispose] = AlignResult.prototype.free;\n\n/**\n * Result of batch cross-sections along a line.\n */\nexport class BatchCrossSectionResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(BatchCrossSectionResult.prototype);\n obj.__wbg_ptr = ptr;\n BatchCrossSectionResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n BatchCrossSectionResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_batchcrosssectionresult_free(ptr, 0);\n }\n /**\n * @returns {Float32Array}\n */\n all_loop_points() {\n const ret = wasm.batchcrosssectionresult_all_loop_points(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n circumferences() {\n const ret = wasm.batchcrosssectionresult_circumferences(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n count() {\n const ret = wasm.batchcrosssectionresult_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.batchcrosssectionresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Uint32Array}\n */\n offsets() {\n const ret = wasm.batchcrosssectionresult_offsets(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) BatchCrossSectionResult.prototype[Symbol.dispose] = BatchCrossSectionResult.prototype.free;\n\n/**\n * Result of cross-section detection.\n */\nexport class CrossSectionResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CrossSectionResult.prototype);\n obj.__wbg_ptr = ptr;\n CrossSectionResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CrossSectionResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_crosssectionresult_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n circumference() {\n const ret = wasm.crosssectionresult_circumference(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.crosssectionresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {boolean}\n */\n is_closed() {\n const ret = wasm.crosssectionresult_is_closed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {Float32Array}\n */\n loop_points() {\n const ret = wasm.crosssectionresult_loop_points(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n plane_normal() {\n const ret = wasm.crosssectionresult_plane_normal(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) CrossSectionResult.prototype[Symbol.dispose] = CrossSectionResult.prototype.free;\n\n/**\n * Result of inner shell extraction via ray-casting from interior point.\n */\nexport class ExtractInnerShellResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ExtractInnerShellResult.prototype);\n obj.__wbg_ptr = ptr;\n ExtractInnerShellResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ExtractInnerShellResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_extractinnershellresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.extractinnershellresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.extractinnershellresult_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n inner_count() {\n const ret = wasm.extractinnershellresult_inner_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Float32Array}\n */\n interior_point() {\n const ret = wasm.extractinnershellresult_interior_point(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.extractinnershellresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n total_count() {\n const ret = wasm.extractinnershellresult_total_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n}\nif (Symbol.dispose) ExtractInnerShellResult.prototype[Symbol.dispose] = ExtractInnerShellResult.prototype.free;\n\n/**\n * Result of fill_small_holes.\n */\nexport class FillHolesResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(FillHolesResult.prototype);\n obj.__wbg_ptr = ptr;\n FillHolesResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n FillHolesResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_fillholesresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.fillholesresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n holes_filled() {\n const ret = wasm.fillholesresult_holes_filled(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.fillholesresult_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.fillholesresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) FillHolesResult.prototype[Symbol.dispose] = FillHolesResult.prototype.free;\n\n/**\n * Result of weld_and_keep_largest: holds positions + indices.\n * Access via getters since wasm_bindgen can't return tuples.\n */\nexport class MeshResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(MeshResult.prototype);\n obj.__wbg_ptr = ptr;\n MeshResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n MeshResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_meshresult_free(ptr, 0);\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.meshresult_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.meshresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {string}\n */\n stats() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.meshresult_stats(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\nif (Symbol.dispose) MeshResult.prototype[Symbol.dispose] = MeshResult.prototype.free;\n\n/**\n * Stage 1 result: fully preprocessed mesh ready for interactive steps.\n *\n * Chains four operations in a single WASM call (no JS round-trips):\n * 1. Unit detection & conversion (m → mm)\n * 2. AABB center → origin\n * 3. Vertex welding + largest-component extraction\n * 4. Small-hole filling\n */\nexport class PreprocessResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(PreprocessResult.prototype);\n obj.__wbg_ptr = ptr;\n PreprocessResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PreprocessResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_preprocessresult_free(ptr, 0);\n }\n /**\n * @returns {Float32Array}\n */\n bbox_size() {\n const ret = wasm.preprocessresult_bbox_size(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {string}\n */\n detected_unit() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.preprocessresult_detected_unit(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n holes_filled() {\n const ret = wasm.preprocessresult_holes_filled(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Uint32Array}\n */\n indices() {\n const ret = wasm.preprocessresult_indices(this.__wbg_ptr);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {string}\n */\n log() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.preprocessresult_log(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n max_dimension() {\n const ret = wasm.preprocessresult_max_dimension(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.preprocessresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(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 unit_converted() {\n const ret = wasm.preprocessresult_unit_converted(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n weld_stats() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.preprocessresult_weld_stats(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\nif (Symbol.dispose) PreprocessResult.prototype[Symbol.dispose] = PreprocessResult.prototype.free;\n\n/**\n * Result of centroid-based alignment refinement.\n */\nexport class RefineAlignmentResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(RefineAlignmentResult.prototype);\n obj.__wbg_ptr = ptr;\n RefineAlignmentResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RefineAlignmentResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_refinealignmentresult_free(ptr, 0);\n }\n /**\n * @returns {Float32Array}\n */\n centroid_axis() {\n const ret = wasm.refinealignmentresult_centroid_axis(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n correction_angle() {\n const ret = wasm.refinealignmentresult_correction_angle(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.refinealignmentresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float32Array}\n */\n mpt() {\n const ret = wasm.refinealignmentresult_mpt(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n origin() {\n const ret = wasm.refinealignmentresult_origin(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.refinealignmentresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n rotation() {\n const ret = wasm.refinealignmentresult_rotation(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) RefineAlignmentResult.prototype[Symbol.dispose] = RefineAlignmentResult.prototype.free;\n\n/**\n * Result of secondary PCA alignment.\n */\nexport class SecondaryPcaResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(SecondaryPcaResult.prototype);\n obj.__wbg_ptr = ptr;\n SecondaryPcaResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n SecondaryPcaResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_secondarypcaresult_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.secondarypcaresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {Float32Array}\n */\n mpt() {\n const ret = wasm.secondarypcaresult_mpt(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n origin() {\n const ret = wasm.secondarypcaresult_origin(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.secondarypcaresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n transform() {\n const ret = wasm.secondarypcaresult_transform(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) SecondaryPcaResult.prototype[Symbol.dispose] = SecondaryPcaResult.prototype.free;\n\n/**\n * Result of shell detection at MPT.\n */\nexport class ShellDetectResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ShellDetectResult.prototype);\n obj.__wbg_ptr = ptr;\n ShellDetectResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ShellDetectResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_shelldetectresult_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n avg_thickness() {\n const ret = wasm.shelldetectresult_avg_thickness(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n details() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.shelldetectresult_details(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n double_hit_count() {\n const ret = wasm.shelldetectresult_double_hit_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Float32Array}\n */\n hit_points() {\n const ret = wasm.shelldetectresult_hit_points(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {Float32Array}\n */\n hit_ray_lines() {\n const ret = wasm.shelldetectresult_hit_ray_lines(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(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_double_shell() {\n const ret = wasm.shelldetectresult_is_double_shell(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n max_thickness() {\n const ret = wasm.shelldetectresult_max_thickness(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n min_thickness() {\n const ret = wasm.shelldetectresult_min_thickness(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Float32Array}\n */\n miss_ray_lines() {\n const ret = wasm.shelldetectresult_miss_ray_lines(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n ray_count() {\n const ret = wasm.shelldetectresult_ray_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Float32Array}\n */\n surface_normal() {\n const ret = wasm.shelldetectresult_surface_normal(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n thickness() {\n const ret = wasm.shelldetectresult_thickness(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) ShellDetectResult.prototype[Symbol.dispose] = ShellDetectResult.prototype.free;\n\n/**\n * Result of subdividing the origin→projection line into ~1\" spaced points.\n */\nexport class SubdivideLineResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(SubdivideLineResult.prototype);\n obj.__wbg_ptr = ptr;\n SubdivideLineResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n SubdivideLineResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_subdividelineresult_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n count() {\n const ret = wasm.subdividelineresult_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {Float32Array}\n */\n points() {\n const ret = wasm.subdividelineresult_points(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * @returns {number}\n */\n spacing() {\n const ret = wasm.subdividelineresult_spacing(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n total_distance() {\n const ret = wasm.subdividelineresult_total_distance(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) SubdivideLineResult.prototype[Symbol.dispose] = SubdivideLineResult.prototype.free;\n\n/**\n * Result of detect_and_convert_units: holds positions + detection info.\n */\nexport class UnitConversionResult {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(UnitConversionResult.prototype);\n obj.__wbg_ptr = ptr;\n UnitConversionResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n UnitConversionResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_unitconversionresult_free(ptr, 0);\n }\n /**\n * @returns {boolean}\n */\n converted() {\n const ret = wasm.unitconversionresult_converted(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n detected_unit() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.unitconversionresult_detected_unit(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n max_dimension() {\n const ret = wasm.unitconversionresult_max_dimension(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Float32Array}\n */\n positions() {\n const ret = wasm.unitconversionresult_positions(this.__wbg_ptr);\n var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) UnitConversionResult.prototype[Symbol.dispose] = UnitConversionResult.prototype.free;\n\n/**\n * Translate geometry so `origin_pt` maps to (0,0,0), then rotate so the\n * vector from `origin_pt` to its projection on the cross-section plane\n * aligns with the +Y axis.\n *\n * `positions`: flat [x,y,z,...] vertex positions\n * `origin_pt`: [x,y,z] the origin point (will become 0,0,0)\n * `mpt`: [x,y,z] the MPT point on the surface\n * `plane_normal`: [nx,ny,nz] the cross-section plane normal\n * @param {Float32Array} positions\n * @param {Float32Array} origin_pt\n * @param {Float32Array} mpt\n * @param {Float32Array} plane_normal\n * @returns {AlignResult}\n */\nexport function align_to_origin(positions, origin_pt, mpt, plane_normal) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF32ToWasm0(origin_pt, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(plane_normal, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.align_to_origin(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n return AlignResult.__wrap(ret);\n}\n\n/**\n * Slice the mesh at each Y height from the given points.\n *\n * After PCA alignment (step 7), the mesh is Y-aligned: origin at (0,0,0),\n * MPT along +Y. Cross-sections are horizontal planes (normal = Y axis)\n * at each subdivision point's Y coordinate.\n *\n * `positions`: flat [x,y,z,...] indexed mesh positions (PCA-aligned)\n * `indices`: flat [i0,i1,i2,...] triangle indices\n * `y_values`: Y coordinates to slice at\n * `max_gap`: maximum gap to bridge when chaining segments (mm)\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {Float32Array} y_values\n * @param {number} max_gap\n * @returns {BatchCrossSectionResult}\n */\nexport function batch_cross_sections_y(positions, indices, y_values, max_gap) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(y_values, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.batch_cross_sections_y(ptr0, len0, ptr1, len1, ptr2, len2, max_gap);\n return BatchCrossSectionResult.__wrap(ret);\n}\n\n/**\n * Same as `batch_cross_sections_y` but picks the **inner** (smallest substantial)\n * loop at each height. For double-shell meshes this selects the inner wall.\n *\n * Uses a tight chaining tolerance (no gap bridging) to prevent inner+outer\n * wall segments from merging into one figure-8 loop.\n *\n * \"Substantial\" = circumference >= 30% of the largest loop at that height.\n * Among substantial loops, picks the one with the smallest circumference.\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {Float32Array} y_values\n * @param {number} _max_gap\n * @returns {BatchCrossSectionResult}\n */\nexport function batch_cross_sections_y_inner(positions, indices, y_values, _max_gap) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(y_values, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.batch_cross_sections_y_inner(ptr0, len0, ptr1, len1, ptr2, len2, _max_gap);\n return BatchCrossSectionResult.__wrap(ret);\n}\n\n/**\n * Compute bounding box from a flat f32 position array [x,y,z, x,y,z, ...]\n * Returns [min_x, min_y, min_z, max_x, max_y, max_z]\n * @param {Float32Array} positions\n * @returns {Float32Array}\n */\nexport function bounding_box(positions) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.bounding_box(ptr0, len0);\n var v2 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n}\n\n/**\n * Translate positions so their AABB center is at origin.\n * Takes flat [x,y,z,...], returns new flat [x,y,z,...].\n * @param {Float32Array} positions\n * @returns {Float32Array}\n */\nexport function center_to_origin(positions) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.center_to_origin(ptr0, len0);\n var v2 = getArrayF32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n}\n\n/**\n * Detect if positions are in meters or millimeters based on bounding box size.\n * If max AABB dimension < `meter_threshold` (default: 10), assumes meters and scales to mm (*1000).\n * Otherwise assumes already in mm and passes through.\n * @param {Float32Array} positions\n * @param {number} meter_threshold\n * @returns {UnitConversionResult}\n */\nexport function detect_and_convert_units(positions, meter_threshold) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.detect_and_convert_units(ptr0, len0, meter_threshold);\n return UnitConversionResult.__wrap(ret);\n}\n\n/**\n * Detect if the surface at `mpt` is single or double shell.\n *\n * Strategy: compute the surface normal at `mpt` (from the closest triangle),\n * then cast rays in a cone of directions around that normal (both sides).\n * For each ray, count surface intersections. If we consistently find pairs\n * of hits with small gaps, it's a double shell.\n *\n * `positions`: flat [x,y,z,...] indexed geometry positions\n * `indices`: flat [i0,i1,i2,...] triangle indices\n * `mpt`: [x,y,z] the MPT point on the surface\n * `max_thickness`: maximum expected wall thickness — hits farther than this are ignored\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {Float32Array} mpt\n * @param {number} max_thickness\n * @returns {ShellDetectResult}\n */\nexport function detect_shell(positions, indices, mpt, max_thickness) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.detect_shell(ptr0, len0, ptr1, len1, ptr2, len2, max_thickness);\n return ShellDetectResult.__wrap(ret);\n}\n\n/**\n * Step 5a: Extract the inner shell from a double-walled mesh.\n *\n * Strategy: multi-point face-visibility.\n * 1. Use `hit_points` (outer wall hits from detect_shell) to compute the cavity\n * direction: vector from mean-outer-hit toward MPT = inward = cavity direction.\n * 2. Generate a cluster of probe points at multiple depths inside the cavity,\n * spread laterally for concave-socket robustness.\n * 3. For every triangle, cast a ray from each probe toward the face centroid;\n * if the FIRST hit is that triangle from ANY probe → inner shell.\n *\n * `mpt`: user-placed point on the inner surface\n * `wall_thickness`: median wall thickness from detect_shell\n * `hit_points`: outer-wall hit points from detect_shell [x,y,z,...] (may be empty)\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {Float32Array} mpt\n * @param {number} wall_thickness\n * @param {Float32Array} hit_points\n * @returns {ExtractInnerShellResult}\n */\nexport function extract_inner_shell(positions, indices, mpt, wall_thickness, hit_points) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(hit_points, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.extract_inner_shell(ptr0, len0, ptr1, len1, ptr2, len2, wall_thickness, ptr3, len3);\n return ExtractInnerShellResult.__wrap(ret);\n}\n\n/**\n * Find and fill small boundary holes in an indexed mesh.\n *\n * A \"hole\" is a closed boundary loop of edges that each appear in exactly one triangle.\n * Loops whose total perimeter is < `max_perimeter` are filled via fan triangulation\n * from the loop centroid.\n *\n * `positions`: flat [x,y,z,...] vertex positions\n * `indices`: flat [i0,i1,i2,...] triangle indices\n * `max_perimeter`: maximum hole perimeter in mm to close (e.g. 40.0)\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {number} max_perimeter\n * @returns {FillHolesResult}\n */\nexport function fill_small_holes(positions, indices, max_perimeter) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.fill_small_holes(ptr0, len0, ptr1, len1, max_perimeter);\n return FillHolesResult.__wrap(ret);\n}\n\n/**\n * Find the cross-section plane through `mpt` that gives the smallest circumference.\n *\n * Strategy:\n * 1. Build rotation axes: the surface normal + 8 perturbed axes (±5° tilts)\n * 2. For each axis, coarse scan 90 plane orientations (2° steps)\n * 3. Refine: ±2° around best at 0.1° steps\n * 4. Score loops by circumference × closedness × proximity to MPT\n *\n * `positions`: flat [x,y,z,...] indexed geometry positions\n * `indices`: flat [i0,i1,i2,...] triangle indices\n * `mpt`: [x,y,z] the MPT point on the surface\n * `surface_normal`: [nx,ny,nz] surface normal at MPT\n * `max_gap`: maximum gap to bridge when chaining segments into loops (mm)\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {Float32Array} mpt\n * @param {Float32Array} surface_normal\n * @param {number} max_gap\n * @returns {CrossSectionResult}\n */\nexport function find_min_cross_section(positions, indices, mpt, surface_normal, max_gap) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(surface_normal, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.find_min_cross_section(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, max_gap);\n return CrossSectionResult.__wrap(ret);\n}\n\n/**\n * Initialize panic hook for better WASM error messages in the browser console.\n * Called automatically on WASM module init.\n */\nexport function init() {\n wasm.init();\n}\n\n/**\n * Stage 1: preprocess a raw mesh in one shot.\n *\n * Accepts raw geometry (positions + optional indices) and runs all four\n * automatic preprocessing steps without crossing the WASM boundary in between.\n *\n * **Parameters**\n * - `positions`: flat `[x,y,z, …]` vertex positions\n * - `indices`: flat `[i0,i1,i2, …]` triangle indices (pass empty array for non-indexed)\n * - `meter_threshold`: max AABB dimension (in model units) below which the\n * geometry is assumed to be in meters and scaled ×1000 to mm (default: `10.0`)\n * - `weld_tolerance`: distance within which vertices are merged (default: `1e-4`)\n * - `max_hole_perimeter`: boundary loops shorter than this (mm) are fan-filled (default: `300.0`)\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {number} meter_threshold\n * @param {number} weld_tolerance\n * @param {number} max_hole_perimeter\n * @returns {PreprocessResult}\n */\nexport function preprocess_mesh(positions, indices, meter_threshold, weld_tolerance, max_hole_perimeter) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.preprocess_mesh(ptr0, len0, ptr1, len1, meter_threshold, weld_tolerance, max_hole_perimeter);\n return PreprocessResult.__wrap(ret);\n}\n\n/**\n * Build a BVH from flat triangle positions and ray-cast against it.\n * `positions`: flat [x,y,z, ...] with every 9 floats = 1 triangle\n * `ray_origin`: [ox, oy, oz]\n * `ray_dir`: [dx, dy, dz]\n * Returns indices of triangles whose AABBs the ray intersects.\n * @param {Float32Array} positions\n * @param {Float32Array} ray_origin\n * @param {Float32Array} ray_dir\n * @returns {Uint32Array}\n */\nexport function ray_cast_bvh(positions, ray_origin, ray_dir) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF32ToWasm0(ray_origin, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(ray_dir, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.ray_cast_bvh(ptr0, len0, ptr1, len1, ptr2, len2);\n var v4 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v4;\n}\n\n/**\n * Step 9: Refine alignment using cross-section centroids.\n *\n * Computes PCA on the centroids of cross-section loops to find the \"true\"\n * limb axis, then rotates the mesh so this axis aligns with +Y.\n *\n * `centroids`: flat [x,y,z,...] centroid of each cross-section loop\n * `all_positions`: flat [x,y,z,...] full mesh positions\n * `origin_pt`: [x,y,z]\n * `mpt`: [x,y,z]\n * @param {Float32Array} centroids\n * @param {Float32Array} all_positions\n * @param {Float32Array} origin_pt\n * @param {Float32Array} mpt\n * @returns {RefineAlignmentResult}\n */\nexport function refine_alignment(centroids, all_positions, origin_pt, mpt) {\n const ptr0 = passArrayF32ToWasm0(centroids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF32ToWasm0(all_positions, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(origin_pt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.refine_alignment(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n return RefineAlignmentResult.__wrap(ret);\n}\n\n/**\n * Compute PCA on `selected_positions` (the region of interest),\n * then apply the resulting rotation to `all_positions` (full mesh).\n *\n * The principal axis (longest variance) aligns with +Y.\n * Ensures `origin_pt.y < mpt.y` after rotation (origin below MPT).\n *\n * `selected_positions`: flat [x,y,z,...] of selected region vertices\n * `all_positions`: flat [x,y,z,...] of full mesh\n * `origin_pt`: [x,y,z]\n * `mpt`: [x,y,z]\n * @param {Float32Array} selected_positions\n * @param {Float32Array} all_positions\n * @param {Float32Array} origin_pt\n * @param {Float32Array} mpt\n * @returns {SecondaryPcaResult}\n */\nexport function secondary_pca(selected_positions, all_positions, origin_pt, mpt) {\n const ptr0 = passArrayF32ToWasm0(selected_positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF32ToWasm0(all_positions, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(origin_pt, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.secondary_pca(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n return SecondaryPcaResult.__wrap(ret);\n}\n\n/**\n * Step 8: Subdivide the line from `origin_pt` to its projection onto the\n * cross-section plane into points spaced roughly 1 inch (25.4 mm) apart.\n *\n * `origin_pt`: [x,y,z] the origin point\n * `mpt`: [x,y,z] a point on the cross-section plane\n * `plane_normal`: [nx,ny,nz] the cross-section plane normal\n *\n * Returns the series of evenly-spaced points along the line (both endpoints included).\n * @param {Float32Array} origin_pt\n * @param {Float32Array} mpt\n * @param {Float32Array} plane_normal\n * @returns {SubdivideLineResult}\n */\nexport function subdivide_origin_to_plane(origin_pt, mpt, plane_normal) {\n const ptr0 = passArrayF32ToWasm0(origin_pt, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayF32ToWasm0(mpt, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArrayF32ToWasm0(plane_normal, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.subdivide_origin_to_plane(ptr0, len0, ptr1, len1, ptr2, len2);\n return SubdivideLineResult.__wrap(ret);\n}\n\n/**\n * Weld close vertices, find connected components, keep only the largest mesh.\n *\n * `positions`: flat [x,y,z,...] — non-indexed (every 9 floats = 1 triangle)\n * `tolerance`: distance within which vertices are merged\n *\n * For indexed input, use `weld_and_keep_largest_indexed`.\n * @param {Float32Array} positions\n * @param {number} tolerance\n * @returns {MeshResult}\n */\nexport function weld_and_keep_largest(positions, tolerance) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.weld_and_keep_largest(ptr0, len0, tolerance);\n return MeshResult.__wrap(ret);\n}\n\n/**\n * Same as above but for indexed geometry.\n * `positions`: flat [x,y,z,...]\n * `indices`: flat [i0,i1,i2, ...] triangle indices\n * `tolerance`: weld distance\n * @param {Float32Array} positions\n * @param {Uint32Array} indices\n * @param {number} tolerance\n * @returns {MeshResult}\n */\nexport function weld_and_keep_largest_indexed(positions, indices, tolerance) {\n const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(indices, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.weld_and_keep_largest_indexed(ptr0, len0, ptr1, len1, tolerance);\n return MeshResult.__wrap(ret);\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\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 return {\n __proto__: null,\n \"./geo_wasm_bg.js\": import0,\n };\n}\n\nconst AlignResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_alignresult_free(ptr >>> 0, 1));\nconst BatchCrossSectionResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_batchcrosssectionresult_free(ptr >>> 0, 1));\nconst CrossSectionResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_crosssectionresult_free(ptr >>> 0, 1));\nconst ExtractInnerShellResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_extractinnershellresult_free(ptr >>> 0, 1));\nconst FillHolesResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_fillholesresult_free(ptr >>> 0, 1));\nconst MeshResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_meshresult_free(ptr >>> 0, 1));\nconst PreprocessResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_preprocessresult_free(ptr >>> 0, 1));\nconst RefineAlignmentResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_refinealignmentresult_free(ptr >>> 0, 1));\nconst SecondaryPcaResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_secondarypcaresult_free(ptr >>> 0, 1));\nconst ShellDetectResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_shelldetectresult_free(ptr >>> 0, 1));\nconst SubdivideLineResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_subdividelineresult_free(ptr >>> 0, 1));\nconst UnitConversionResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_unitconversionresult_free(ptr >>> 0, 1));\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nlet cachedDataViewMemory0 = null;\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\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\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 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 = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = 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}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\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 } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && 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 { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (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 if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\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 (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 (module_or_path === undefined) {\n module_or_path = new URL('geo_wasm_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 const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n"],"names":["AlignResult","ptr","obj","AlignResultFinalization","wasm","deferred1_0","deferred1_1","ret","getStringFromWasm0","v1","getArrayF32FromWasm0","BatchCrossSectionResult","BatchCrossSectionResultFinalization","getArrayU32FromWasm0","CrossSectionResult","CrossSectionResultFinalization","ExtractInnerShellResult","ExtractInnerShellResultFinalization","FillHolesResult","FillHolesResultFinalization","MeshResult","MeshResultFinalization","PreprocessResult","PreprocessResultFinalization","RefineAlignmentResult","RefineAlignmentResultFinalization","SecondaryPcaResult","SecondaryPcaResultFinalization","ShellDetectResult","ShellDetectResultFinalization","SubdivideLineResult","SubdivideLineResultFinalization","UnitConversionResult","UnitConversionResultFinalization","align_to_origin","positions","origin_pt","mpt","plane_normal","ptr0","passArrayF32ToWasm0","len0","WASM_VECTOR_LEN","ptr1","len1","ptr2","len2","ptr3","len3","batch_cross_sections_y","indices","y_values","max_gap","passArray32ToWasm0","batch_cross_sections_y_inner","_max_gap","bounding_box","v2","center_to_origin","detect_and_convert_units","meter_threshold","detect_shell","max_thickness","extract_inner_shell","wall_thickness","hit_points","fill_small_holes","max_perimeter","find_min_cross_section","surface_normal","init","preprocess_mesh","weld_tolerance","max_hole_perimeter","ray_cast_bvh","ray_origin","ray_dir","v4","refine_alignment","centroids","all_positions","secondary_pca","selected_positions","subdivide_origin_to_plane","weld_and_keep_largest","tolerance","weld_and_keep_largest_indexed","__wbg_get_imports","arg0","arg1","deferred0_0","deferred0_1","passStringToWasm0","getDataViewMemory0","table","offset","len","getFloat32ArrayMemory0","getUint32ArrayMemory0","cachedDataViewMemory0","cachedFloat32ArrayMemory0","decodeText","cachedUint32ArrayMemory0","cachedUint8ArrayMemory0","getUint8ArrayMemory0","arg","malloc","realloc","buf","cachedTextEncoder","mem","code","view","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","module","__wbg_load","imports","e","expectedResponseType","bytes","type","initSync","__wbg_init","module_or_path"],"mappings":"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"}
@@ -5,7 +5,7 @@ export interface GirthManagerWidgetProps {
5
5
  request: WidgetRequest;
6
6
  /** Called when "Continue to Next Step" is clicked with the full response payload */
7
7
  onComplete?: (response: WidgetResponse) => void;
8
- /** Pre-loaded WASM module. Must be loaded and initialized before passing. */
8
+ /** Pre-loaded WASM module (optional auto-loaded from bundle if not set). */
9
9
  wasmModule?: WasmModule | null;
10
10
  }
11
- export declare const GirthManagerWidget: ({ request, onComplete, wasmModule }: GirthManagerWidgetProps) => import("react/jsx-runtime").JSX.Element;
11
+ export declare const GirthManagerWidget: ({ request, onComplete, wasmModule: externalWasm }: GirthManagerWidgetProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,29 +1,32 @@
1
1
  import type { WidgetRequest, WidgetResponse } from "./types";
2
2
  /**
3
- * Custom Element wrapper for Angular integration.
3
+ * Custom Element wrapper for Angular / vanilla JS integration.
4
+ *
5
+ * WASM is loaded automatically from the bundled package — no manual
6
+ * loading required. Just set the `request` property:
4
7
  *
5
8
  * Usage in Angular:
6
- * // In the component class:
7
9
  * async ngAfterViewInit() {
8
- * const wasm = await import('geo-wasm');
9
- * await wasm.default();
10
- * this.widgetEl.nativeElement.wasmModule = wasm;
11
10
  * this.widgetEl.nativeElement.request = { spacing_type: 'BK', scan_url: '...' };
12
11
  * }
13
12
  *
14
- * // In the template:
15
13
  * <girth-manager-widget #widgetEl (widgetComplete)="onComplete($event)"></girth-manager-widget>
14
+ *
15
+ * To provide your own WASM module (advanced), set `wasmModule` before `request`.
16
16
  */
17
17
  declare class GirthManagerWidgetElement extends HTMLElement {
18
18
  private _root;
19
19
  private _request;
20
20
  private _wasmModule;
21
+ private _wasmLoading;
21
22
  static get observedAttributes(): string[];
22
23
  get request(): WidgetRequest | null;
23
24
  set request(value: WidgetRequest | string | null);
24
- /** Set the pre-loaded WASM v2 module (geo-wasm). Must be set before or alongside request. */
25
+ /** Set a pre-loaded WASM module (optional auto-loaded from bundle if not set). */
25
26
  get wasmModule(): unknown;
26
27
  set wasmModule(value: unknown);
28
+ /** Auto-load WASM from the bundled package export */
29
+ private _autoLoadWasm;
27
30
  connectedCallback(): void;
28
31
  disconnectedCallback(): void;
29
32
  /**
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { G as a, a as c, c as i, g as s } from "./GirthManagerWidget-tuN27SL6.js";
1
+ import { G as a, a as c, c as i, g as s } from "./GirthManagerWidget-CwgHrdSO.js";
2
2
  export {
3
3
  a as GirthManagerWidget,
4
4
  c as arrayToCircumference,
@@ -1,94 +1,104 @@
1
1
  import { createElement as i } from "react";
2
- import { createRoot as s } from "react-dom/client";
3
- import { G as o } from "./GirthManagerWidget-tuN27SL6.js";
4
- class n extends HTMLElement {
5
- constructor() {
6
- super(...arguments), this._root = null, this._request = null, this._wasmModule = void 0, this._handleComplete = (t) => {
7
- this.dispatchEvent(
8
- new CustomEvent("widgetComplete", {
2
+ import { createRoot as r } from "react-dom/client";
3
+ import { G as o, __tla as __tla_0 } from "./GirthManagerWidget-CwgHrdSO.js";
4
+ let a;
5
+ let __tla = Promise.all([
6
+ (() => {
7
+ try {
8
+ return __tla_0;
9
+ } catch {
10
+ }
11
+ })()
12
+ ]).then(async () => {
13
+ a = class extends HTMLElement {
14
+ constructor() {
15
+ super(...arguments), this._root = null, this._request = null, this._wasmModule = void 0, this._wasmLoading = false, this._handleComplete = (t) => {
16
+ this.dispatchEvent(new CustomEvent("widgetComplete", {
9
17
  detail: t,
10
18
  bubbles: true,
11
19
  composed: true
12
- })
13
- );
14
- };
15
- }
16
- static get observedAttributes() {
17
- return ["request"];
18
- }
19
- get request() {
20
- return this._request;
21
- }
22
- set request(t) {
23
- if (typeof t == "string")
24
- try {
20
+ }));
21
+ };
22
+ }
23
+ static get observedAttributes() {
24
+ return [
25
+ "request"
26
+ ];
27
+ }
28
+ get request() {
29
+ return this._request;
30
+ }
31
+ set request(t) {
32
+ if (typeof t == "string") try {
25
33
  this._request = JSON.parse(t);
26
34
  } catch {
27
35
  console.error("[GirthManagerWidget] Invalid JSON for request attribute:", t);
28
36
  return;
29
37
  }
30
- else
31
- this._request = t;
32
- this._render();
33
- }
34
- /** Set the pre-loaded WASM v2 module (geo-wasm). Must be set before or alongside request. */
35
- get wasmModule() {
36
- return this._wasmModule;
37
- }
38
- set wasmModule(t) {
39
- this._wasmModule = t, this._render();
40
- }
41
- connectedCallback() {
42
- const t = this.attachShadow({ mode: "open" }), e = document.createElement("div");
43
- e.style.width = "100%", e.style.height = "100%", t.appendChild(e), this._root = s(e);
44
- const r = this.getAttribute("request");
45
- if (r && !this._request)
46
- try {
47
- this._request = JSON.parse(r);
38
+ else this._request = t;
39
+ this._request && !this._wasmModule && this._autoLoadWasm(), this._render();
40
+ }
41
+ get wasmModule() {
42
+ return this._wasmModule;
43
+ }
44
+ set wasmModule(t) {
45
+ this._wasmModule = t, this._render();
46
+ }
47
+ async _autoLoadWasm() {
48
+ if (!(this._wasmModule || this._wasmLoading)) {
49
+ this._wasmLoading = true;
50
+ try {
51
+ const t = await import("./geo_wasm-CDwm1q1Z.js");
52
+ await t.default(), this._wasmModule = t, this._render();
53
+ } catch (t) {
54
+ console.error("[GirthManagerWidget] Failed to auto-load WASM:", t);
55
+ } finally {
56
+ this._wasmLoading = false;
57
+ }
58
+ }
59
+ }
60
+ connectedCallback() {
61
+ const t = this.attachShadow({
62
+ mode: "open"
63
+ }), e = document.createElement("div");
64
+ e.style.width = "100%", e.style.height = "100%", t.appendChild(e), this._root = r(e);
65
+ const s = this.getAttribute("request");
66
+ if (s && !this._request) try {
67
+ this._request = JSON.parse(s);
48
68
  } catch {
49
69
  console.error("[GirthManagerWidget] Invalid JSON in request attribute");
50
70
  }
51
- this._render();
52
- }
53
- disconnectedCallback() {
54
- var _a;
55
- (_a = this._root) == null ? void 0 : _a.unmount(), this._root = null;
56
- }
57
- /**
58
- * Reset the widget to its initial state without removing it from the DOM.
59
- * Unmounts and re-mounts the React tree, clearing all internal state
60
- * (Zustand store, WASM memory, landmarks, measurements).
61
- *
62
- * Usage in Angular:
63
- * this.widgetEl.nativeElement.reset();
64
- * this.widgetEl.nativeElement.request = { ... }; // re-initialize
65
- */
66
- reset() {
67
- var _a;
68
- if (!this._root) return;
69
- this._root.unmount();
70
- const t = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("div");
71
- t && (this._root = s(t)), this._request = null, this._wasmModule = void 0;
72
- }
73
- attributeChangedCallback(t, e, r) {
74
- if (t === "request" && r)
75
- try {
76
- this._request = JSON.parse(r), this._render();
71
+ this._request && !this._wasmModule && this._autoLoadWasm(), this._render();
72
+ }
73
+ disconnectedCallback() {
74
+ var _a;
75
+ (_a = this._root) == null ? void 0 : _a.unmount(), this._root = null;
76
+ }
77
+ reset() {
78
+ var _a;
79
+ if (!this._root) return;
80
+ this._root.unmount();
81
+ const t = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("div");
82
+ t && (this._root = r(t)), this._request = null;
83
+ }
84
+ attributeChangedCallback(t, e, s) {
85
+ if (t === "request" && s) try {
86
+ this._request = JSON.parse(s), this._render();
77
87
  } catch {
78
88
  console.error("[GirthManagerWidget] Invalid JSON in request attribute");
79
89
  }
80
- }
81
- _render() {
82
- !this._root || !this._request || this._root.render(
83
- i(o, {
90
+ }
91
+ _render() {
92
+ !this._root || !this._request || this._root.render(i(o, {
84
93
  request: this._request,
85
94
  onComplete: this._handleComplete,
86
95
  wasmModule: this._wasmModule
87
- })
88
- );
89
- }
90
- }
91
- customElements.get("girth-manager-widget") || customElements.define("girth-manager-widget", n);
96
+ }));
97
+ }
98
+ };
99
+ customElements.get("girth-manager-widget") || customElements.define("girth-manager-widget", a);
100
+ });
92
101
  export {
93
- n as GirthManagerWidgetElement
102
+ a as GirthManagerWidgetElement,
103
+ __tla
94
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"web-component.js","sources":["../src/web-component.ts"],"sourcesContent":["import { createElement } from \"react\"\nimport { createRoot, type Root } from \"react-dom/client\"\nimport { GirthManagerWidget } from \"./GirthManagerWidget\"\nimport type { WidgetRequest, WidgetResponse } from \"./types\"\n\n/**\n * Custom Element wrapper for Angular integration.\n *\n * Usage in Angular:\n * // In the component class:\n * async ngAfterViewInit() {\n * const wasm = await import('geo-wasm');\n * await wasm.default();\n * this.widgetEl.nativeElement.wasmModule = wasm;\n * this.widgetEl.nativeElement.request = { spacing_type: 'BK', scan_url: '...' };\n * }\n *\n * // In the template:\n * <girth-manager-widget #widgetEl (widgetComplete)=\"onComplete($event)\"></girth-manager-widget>\n */\nclass GirthManagerWidgetElement extends HTMLElement {\n private _root: Root | null = null\n private _request: WidgetRequest | null = null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _wasmModule: any = undefined\n\n static get observedAttributes() {\n return [\"request\"]\n }\n\n get request(): WidgetRequest | null {\n return this._request\n }\n\n set request(value: WidgetRequest | string | null) {\n if (typeof value === \"string\") {\n try {\n this._request = JSON.parse(value)\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON for request attribute:\", value)\n return\n }\n } else {\n this._request = value\n }\n this._render()\n }\n\n /** Set the pre-loaded WASM v2 module (geo-wasm). Must be set before or alongside request. */\n get wasmModule() {\n return this._wasmModule\n }\n\n set wasmModule(value: unknown) {\n this._wasmModule = value\n this._render()\n }\n\n connectedCallback() {\n const shadow = this.attachShadow({ mode: \"open\" })\n const container = document.createElement(\"div\")\n container.style.width = \"100%\"\n container.style.height = \"100%\"\n shadow.appendChild(container)\n this._root = createRoot(container)\n\n // Parse request from attribute if set before connection\n const attrValue = this.getAttribute(\"request\")\n if (attrValue && !this._request) {\n try {\n this._request = JSON.parse(attrValue)\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON in request attribute\")\n }\n }\n\n this._render()\n }\n\n disconnectedCallback() {\n this._root?.unmount()\n this._root = null\n }\n\n /**\n * Reset the widget to its initial state without removing it from the DOM.\n * Unmounts and re-mounts the React tree, clearing all internal state\n * (Zustand store, WASM memory, landmarks, measurements).\n *\n * Usage in Angular:\n * this.widgetEl.nativeElement.reset();\n * this.widgetEl.nativeElement.request = { ... }; // re-initialize\n */\n reset() {\n if (!this._root) return\n // Unmount the current React tree (clears all component state)\n this._root.unmount()\n // Re-create the root on the same container\n const container = this.shadowRoot?.querySelector(\"div\")\n if (container) {\n this._root = createRoot(container)\n }\n this._request = null\n this._wasmModule = undefined\n }\n\n attributeChangedCallback(name: string, _oldValue: string, newValue: string) {\n if (name === \"request\" && newValue) {\n try {\n this._request = JSON.parse(newValue)\n this._render()\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON in request attribute\")\n }\n }\n }\n\n private _handleComplete = (response: WidgetResponse) => {\n this.dispatchEvent(\n new CustomEvent(\"widgetComplete\", {\n detail: response,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n private _render() {\n if (!this._root || !this._request) return\n\n this._root.render(\n createElement(GirthManagerWidget, {\n request: this._request,\n onComplete: this._handleComplete,\n wasmModule: this._wasmModule,\n })\n )\n }\n}\n\n// Register the custom element\nif (!customElements.get(\"girth-manager-widget\")) {\n customElements.define(\"girth-manager-widget\", GirthManagerWidgetElement)\n}\n\nexport { GirthManagerWidgetElement }\nexport type { WidgetRequest, WidgetResponse }\n"],"names":["GirthManagerWidgetElement","response","value","shadow","container","createRoot","attrValue","name","_oldValue","newValue","createElement","GirthManagerWidget"],"mappings":";;;AAoBA,MAAMA,UAAkC,YAAY;AAAA,EAApD,cAAA;AAAA,UAAA,GAAA,SAAA,GACI,KAAQ,QAAqB,MAC7B,KAAQ,WAAiC,MAEzC,KAAQ,cAAmB,QA6F3B,KAAQ,kBAAkB,CAACC,MAA6B;AACpD,WAAK;AAAA,QACD,IAAI,YAAY,kBAAkB;AAAA,UAC9B,QAAQA;AAAA,UACR,SAAS;AAAA,UACT,UAAU;AAAA,QAAA,CACb;AAAA,MAAA;AAAA,IAET;AAAA,EAAA;AAAA,EAnGA,WAAW,qBAAqB;AAC5B,WAAO,CAAC,SAAS;AAAA,EACrB;AAAA,EAEA,IAAI,UAAgC;AAChC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,QAAQC,GAAsC;AAC9C,QAAI,OAAOA,KAAU;AACjB,UAAI;AACA,aAAK,WAAW,KAAK,MAAMA,CAAK;AAAA,MACpC,QAAQ;AACJ,gBAAQ,MAAM,4DAA4DA,CAAK;AAC/E;AAAA,MACJ;AAAA;AAEA,WAAK,WAAWA;AAEpB,SAAK,QAAA;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAWA,GAAgB;AAC3B,SAAK,cAAcA,GACnB,KAAK,QAAA;AAAA,EACT;AAAA,EAEA,oBAAoB;AAChB,UAAMC,IAAS,KAAK,aAAa,EAAE,MAAM,QAAQ,GAC3CC,IAAY,SAAS,cAAc,KAAK;AAC9C,IAAAA,EAAU,MAAM,QAAQ,QACxBA,EAAU,MAAM,SAAS,QACzBD,EAAO,YAAYC,CAAS,GAC5B,KAAK,QAAQC,EAAWD,CAAS;AAGjC,UAAME,IAAY,KAAK,aAAa,SAAS;AAC7C,QAAIA,KAAa,CAAC,KAAK;AACnB,UAAI;AACA,aAAK,WAAW,KAAK,MAAMA,CAAS;AAAA,MACxC,QAAQ;AACJ,gBAAQ,MAAM,wDAAwD;AAAA,MAC1E;AAGJ,SAAK,QAAA;AAAA,EACT;AAAA,EAEA,uBAAuB;AACnB,SAAK,OAAO,QAAA,GACZ,KAAK,QAAQ;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,QAAQ;AACJ,QAAI,CAAC,KAAK,MAAO;AAEjB,SAAK,MAAM,QAAA;AAEX,UAAMF,IAAY,KAAK,YAAY,cAAc,KAAK;AACtD,IAAIA,MACA,KAAK,QAAQC,EAAWD,CAAS,IAErC,KAAK,WAAW,MAChB,KAAK,cAAc;AAAA,EACvB;AAAA,EAEA,yBAAyBG,GAAcC,GAAmBC,GAAkB;AACxE,QAAIF,MAAS,aAAaE;AACtB,UAAI;AACA,aAAK,WAAW,KAAK,MAAMA,CAAQ,GACnC,KAAK,QAAA;AAAA,MACT,QAAQ;AACJ,gBAAQ,MAAM,wDAAwD;AAAA,MAC1E;AAAA,EAER;AAAA,EAYQ,UAAU;AACd,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,YAEzB,KAAK,MAAM;AAAA,MACPC,EAAcC,GAAoB;AAAA,QAC9B,SAAS,KAAK;AAAA,QACd,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,MAAA,CACpB;AAAA,IAAA;AAAA,EAET;AACJ;AAGK,eAAe,IAAI,sBAAsB,KAC1C,eAAe,OAAO,wBAAwBX,CAAyB;"}
1
+ {"version":3,"file":"web-component.js","sources":["../src/web-component.ts"],"sourcesContent":["import { createElement } from \"react\"\nimport { createRoot, type Root } from \"react-dom/client\"\nimport { GirthManagerWidget } from \"./GirthManagerWidget\"\nimport type { WidgetRequest, WidgetResponse } from \"./types\"\n\n/**\n * Custom Element wrapper for Angular / vanilla JS integration.\n *\n * WASM is loaded automatically from the bundled package no manual\n * loading required. Just set the `request` property:\n *\n * Usage in Angular:\n * async ngAfterViewInit() {\n * this.widgetEl.nativeElement.request = { spacing_type: 'BK', scan_url: '...' };\n * }\n *\n * <girth-manager-widget #widgetEl (widgetComplete)=\"onComplete($event)\"></girth-manager-widget>\n *\n * To provide your own WASM module (advanced), set `wasmModule` before `request`.\n */\nclass GirthManagerWidgetElement extends HTMLElement {\n private _root: Root | null = null\n private _request: WidgetRequest | null = null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _wasmModule: any = undefined\n private _wasmLoading = false\n\n static get observedAttributes() {\n return [\"request\"]\n }\n\n get request(): WidgetRequest | null {\n return this._request\n }\n\n set request(value: WidgetRequest | string | null) {\n if (typeof value === \"string\") {\n try {\n this._request = JSON.parse(value)\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON for request attribute:\", value)\n return\n }\n } else {\n this._request = value\n }\n // Auto-load WASM from bundle if not externally provided\n if (this._request && !this._wasmModule) {\n this._autoLoadWasm()\n }\n this._render()\n }\n\n /** Set a pre-loaded WASM module (optional auto-loaded from bundle if not set). */\n get wasmModule() {\n return this._wasmModule\n }\n\n set wasmModule(value: unknown) {\n this._wasmModule = value\n this._render()\n }\n\n /** Auto-load WASM from the bundled package export */\n private async _autoLoadWasm() {\n if (this._wasmModule || this._wasmLoading) return\n this._wasmLoading = true\n try {\n const wasm = await import(\"geo-wasm\")\n await wasm.default()\n this._wasmModule = wasm\n this._render()\n } catch (err) {\n console.error(\"[GirthManagerWidget] Failed to auto-load WASM:\", err)\n } finally {\n this._wasmLoading = false\n }\n }\n\n connectedCallback() {\n const shadow = this.attachShadow({ mode: \"open\" })\n const container = document.createElement(\"div\")\n container.style.width = \"100%\"\n container.style.height = \"100%\"\n shadow.appendChild(container)\n this._root = createRoot(container)\n\n // Parse request from attribute if set before connection\n const attrValue = this.getAttribute(\"request\")\n if (attrValue && !this._request) {\n try {\n this._request = JSON.parse(attrValue)\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON in request attribute\")\n }\n }\n\n // Auto-load WASM from bundle if not externally provided\n if (this._request && !this._wasmModule) {\n this._autoLoadWasm()\n }\n\n this._render()\n }\n\n disconnectedCallback() {\n this._root?.unmount()\n this._root = null\n }\n\n /**\n * Reset the widget to its initial state without removing it from the DOM.\n * Unmounts and re-mounts the React tree, clearing all internal state\n * (Zustand store, WASM memory, landmarks, measurements).\n *\n * Usage in Angular:\n * this.widgetEl.nativeElement.reset();\n * this.widgetEl.nativeElement.request = { ... }; // re-initialize\n */\n reset() {\n if (!this._root) return\n // Unmount the current React tree (clears all component state)\n this._root.unmount()\n // Re-create the root on the same container\n const container = this.shadowRoot?.querySelector(\"div\")\n if (container) {\n this._root = createRoot(container)\n }\n this._request = null\n // Keep _wasmModule it's reusable across resets\n }\n\n attributeChangedCallback(name: string, _oldValue: string, newValue: string) {\n if (name === \"request\" && newValue) {\n try {\n this._request = JSON.parse(newValue)\n this._render()\n } catch {\n console.error(\"[GirthManagerWidget] Invalid JSON in request attribute\")\n }\n }\n }\n\n private _handleComplete = (response: WidgetResponse) => {\n this.dispatchEvent(\n new CustomEvent(\"widgetComplete\", {\n detail: response,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n private _render() {\n if (!this._root || !this._request) return\n\n this._root.render(\n createElement(GirthManagerWidget, {\n request: this._request,\n onComplete: this._handleComplete,\n wasmModule: this._wasmModule,\n })\n )\n }\n}\n\n// Register the custom element\nif (!customElements.get(\"girth-manager-widget\")) {\n customElements.define(\"girth-manager-widget\", GirthManagerWidgetElement)\n}\n\nexport { GirthManagerWidgetElement }\nexport type { WidgetRequest, WidgetResponse }\n"],"names":["GirthManagerWidgetElement","response","value","wasm","err","shadow","container","createRoot","attrValue","name","_oldValue","newValue","createElement","GirthManagerWidget"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solid-labs/fab-one-widget",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/girth-manager-web-widget/src/index.d.ts",