bravais 0.1.2 → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moyo-wasm.js","names":["ret","initMoyo","moyoWasmBase64","analyze_cell","ptr0","passStringToWasm0","cell_json","wasm","len0","WASM_VECTOR_LEN","ptr1","setting","len1","ret","symprec","takeFromExternrefTable0","hall_symbol_entries_from_number","number","v1","getArrayJsValueFromWasm0","hall_symbol_entry","hall_number","operations_from_number","primitive","space_group_type","__wbg_get_imports","getStringFromWasm0","arg0","arg1","getDataViewMemory0","v","isLikeNone","debugString","val","obj","handleError","result","getArrayU8FromWasm0","arg2","table","offset","addToExternrefTable0","idx","type","description","name","length","debug","i","builtInMatches","className","mem","ptr","len","getUint8ArrayMemory0","cachedDataViewMemory0","decodeText","cachedUint8ArrayMemory0","f","args","x","realloc","buf","cachedTextEncoder","arg","malloc","code","view","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","__wbg_finalize_init","instance","__wbg_load","module","imports","e","expectedResponseType","bytes","__wbg_init","module_or_path","_virtual_moyo_wasm_default","decodeBase64","binary","base64","index","instantiate"],"sources":["../node_modules/@spglib/moyo-wasm/moyo_wasm.js","../src/symmetry/moyo-wasm.ts"],"sourcesContent":["/* @ts-self-types=\"./moyo_wasm.d.ts\" */\n\n/**\n * Analyze the symmetry of a crystal structure and return the full dataset.\n *\n * `cell_json` is a JSON-encoded [`MoyoCell`] (concatenated Cartesian basis vectors,\n * fractional `positions`, atomic `numbers`). `symprec` is the distance\n * tolerance (in the same length unit as the lattice). `setting` selects the\n * standardization convention: `\"Spglib\"` for spglib-compatible settings,\n * anything else (e.g. `\"Standard\"`) for the ITA standard setting.\n * Both returned standardized bases are right-handed. Passive rebasing preserves\n * the physical space-group type, while a Cartesian mirror exchanges enantiomorphs.\n * Lattice and positions are refined, then a proper Cartesian rotation is applied.\n * @param {string} cell_json\n * @param {number} symprec\n * @param {string} setting\n * @returns {MoyoDataset}\n */\nexport function analyze_cell(cell_json, symprec, setting) {\n const ptr0 = passStringToWasm0(cell_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(setting, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.analyze_cell(ptr0, len0, symprec, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return the arithmetic-crystal-class entry for the given `arithmetic_number` (1 - 73).\n * @param {number} arithmetic_number\n * @returns {MoyoArithmeticCrystalClass}\n */\nexport function arithmetic_crystal_class(arithmetic_number) {\n const ret = wasm.arithmetic_crystal_class(arithmetic_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return all Hall-symbol entries for the given ITA space-group `number` (1 - 230),\n * ordered by Hall number. Each entry corresponds to one setting of the space group.\n * @param {number} number\n * @returns {MoyoHallSymbolEntry[]}\n */\nexport function hall_symbol_entries_from_number(number) {\n const ret = wasm.hall_symbol_entries_from_number(number);\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/**\n * Return the Hall-symbol entry for the given `hall_number` (1 - 530).\n * @param {number} hall_number\n * @returns {MoyoHallSymbolEntry}\n */\nexport function hall_symbol_entry(hall_number) {\n const ret = wasm.hall_symbol_entry(hall_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return the layer arithmetic-crystal-class entry for the given `arithmetic_number` (1 - 43).\n * @param {number} arithmetic_number\n * @returns {MoyoLayerArithmeticCrystalClass}\n */\nexport function layer_arithmetic_crystal_class(arithmetic_number) {\n const ret = wasm.layer_arithmetic_crystal_class(arithmetic_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return the layer-group-type description for the given `number` (1 - 80).\n * @param {number} number\n * @returns {MoyoLayerGroupType}\n */\nexport function layer_group_type(number) {\n const ret = wasm.layer_group_type(number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return all layer Hall-symbol entries for the given layer-group `number` (1 - 80),\n * ordered by Hall number. Each entry corresponds to one setting of the layer group.\n * @param {number} number\n * @returns {MoyoLayerHallSymbolEntry[]}\n */\nexport function layer_hall_symbol_entries_from_number(number) {\n const ret = wasm.layer_hall_symbol_entries_from_number(number);\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/**\n * Return the layer Hall-symbol entry for the given `hall_number` (1 - 116).\n * @param {number} hall_number\n * @returns {MoyoLayerHallSymbolEntry}\n */\nexport function layer_hall_symbol_entry(hall_number) {\n const ret = wasm.layer_hall_symbol_entry(hall_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return all Wyckoff positions for the given layer Hall number (1 - 116), ordered\n * general-position-first then descending multiplicity. Returns an empty array for\n * unknown Hall numbers.\n * @param {number} hall_number\n * @returns {MoyoLayerWyckoffPosition[]}\n */\nexport function layer_wyckoff_positions(hall_number) {\n const ret = wasm.layer_wyckoff_positions(hall_number);\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/**\n * Return the magnetic Hall-symbol entry for the given `uni_number` (1 - 1651).\n * @param {number} uni_number\n * @returns {MoyoMagneticHallSymbolEntry}\n */\nexport function magnetic_hall_symbol_entry(uni_number) {\n const ret = wasm.magnetic_hall_symbol_entry(uni_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return magnetic symmetry operations for the given `uni_number` (1 - 1651).\n * @param {number} uni_number\n * @param {boolean} primitive\n * @returns {MoyoMagneticOperation[]}\n */\nexport function magnetic_operations_from_uni_number(uni_number, primitive) {\n const ret = wasm.magnetic_operations_from_uni_number(uni_number, primitive);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\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/**\n * Return the magnetic-space-group-type description for the given `uni_number` (1 - 1651).\n * @param {number} uni_number\n * @returns {MoyoMagneticSpaceGroupType}\n */\nexport function magnetic_space_group_type(uni_number) {\n const ret = wasm.magnetic_space_group_type(uni_number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return symmetry operations for the given layer-group `number` (1 - 80).\n * @param {number} number\n * @param {MoyoLayerSetting} setting\n * @param {boolean} primitive\n * @returns {MoyoOperation[]}\n */\nexport function operations_from_layer_number(number, setting, primitive) {\n const ret = wasm.operations_from_layer_number(number, setting, primitive);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\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/**\n * Return symmetry operations for the given space-group ITA `number`.\n * @param {number} number\n * @param {MoyoSetting} setting\n * @param {boolean} primitive\n * @returns {MoyoOperation[]}\n */\nexport function operations_from_number(number, setting, primitive) {\n const ret = wasm.operations_from_number(number, setting, primitive);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\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/**\n * Return the space-group-type description for the given ITA `number` (1 - 230).\n * @param {number} number\n * @returns {MoyoSpaceGroupType}\n */\nexport function space_group_type(number) {\n const ret = wasm.space_group_type(number);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Return all Wyckoff positions for the given `hall_number` (1 - 530), ordered\n * general-position-first then descending multiplicity. Returns an empty array for\n * unknown Hall numbers.\n * @param {number} hall_number\n * @returns {MoyoWyckoffPosition[]}\n */\nexport function wyckoff_positions(hall_number) {\n const ret = wasm.wyckoff_positions(hall_number);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_bce6d499ff0a4aff: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg_Number_b7972a139bfbfdf0: function(arg0) {\n const ret = Number(arg0);\n return ret;\n },\n __wbg_String_8564e559799eccda: function(arg0, arg1) {\n const ret = String(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_bigint_get_as_i64_410e28c7b761ad83: function(arg0, arg1) {\n const v = arg1;\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_boolean_get_2304fb8c853028c8: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_edece8177ad01481: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_07056af4f902c445: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_bigint_aeae3893f30ed54e: function(arg0) {\n const ret = typeof(arg0) === 'bigint';\n return ret;\n },\n __wbg___wbindgen_is_function_5cd60d5cf78b4eef: function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n },\n __wbg___wbindgen_is_object_b4593df85baada48: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_string_dde0fd9020db4434: function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n },\n __wbg___wbindgen_is_undefined_35bb9f4c7fd651d5: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_eq_c0ed08b3e0f393b9: function(arg0, arg1) {\n const ret = arg0 === arg1;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_0ad77b7717db155c: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_f73a1244370fcc2c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_d109740c0d18f4d7: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_9c31b086c2b26051: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_call_13665d9f14390edc: function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments); },\n __wbg_done_54b8da57023b7ed2: function(arg0) {\n const ret = arg0.done;\n return ret;\n },\n __wbg_entries_564a7e8b1e54ede5: function(arg0) {\n const ret = Object.entries(arg0);\n return ret;\n },\n __wbg_get_3e9a707ab7d352eb: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_98fdf51d029a75eb: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_unchecked_1dfe6d05ad91d9b7: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_53db37b06f6b9afe: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Map_16f217b9a2a08d8c: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_abd07d4bd221d50b: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_isArray_94898ed3aad6947b: function(arg0) {\n const ret = Array.isArray(arg0);\n return ret;\n },\n __wbg_isSafeInteger_01e964d144ad3a55: function(arg0) {\n const ret = Number.isSafeInteger(arg0);\n return ret;\n },\n __wbg_iterator_1441b47f341dc34f: function() {\n const ret = Symbol.iterator;\n return ret;\n },\n __wbg_length_2591a0f4f659a55c: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_56fcd3e2b7e0299d: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_02d162bc6cf02f60: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_310879b66b6e95e1: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_7ddec6de44ff8f5d: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_next_2a4e19f4f5083b0f: function(arg0) {\n const ret = arg0.next;\n return ret;\n },\n __wbg_next_6429a146bf756f93: function() { return handleError(function (arg0) {\n const ret = arg0.next();\n return ret;\n }, arguments); },\n __wbg_prototypesetcall_5f9bdc8d75e07276: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_78ea6a19f4818587: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_value_9cc0518af87a489c: function(arg0) {\n const ret = arg0.value;\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\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 \"./moyo_wasm_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\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_externrefs.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + 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\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\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 handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\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\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\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, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = 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('moyo_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","// The moyo bindings and their binary: most of the package's size, so they\n// are a chunk of their own, imported only by `loadMoyo`.\nimport initMoyo from \"@spglib/moyo-wasm\";\nimport moyoWasmBase64 from \"virtual:moyo-wasm\";\n\nexport {\n analyze_cell,\n hall_symbol_entries_from_number,\n hall_symbol_entry,\n operations_from_number,\n space_group_type,\n} from \"@spglib/moyo-wasm\";\n\nfunction decodeBase64(base64: string): Uint8Array {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\n\n/** Instantiate the module from the binary this chunk carries. */\nexport async function instantiate(): Promise<void> {\n await initMoyo({ module_or_path: decodeBase64(moyoWasmBase64) });\n}\n"],"ignoreList":[0],"mappings":";AAkBA,SAAgBG,EAAa,GAAW,GAAS,GAAS;CACtD,IAAMC,IAAOC,EAAkBC,GAAWC,EAAK,mBAAmBA,EAAK,kBAAkB,GACnFC,IAAOC,GACPC,IAAOL,EAAkBM,GAASJ,EAAK,mBAAmBA,EAAK,kBAAkB,GACjFK,IAAOH,GACPI,IAAMN,EAAK,aAAaH,GAAMI,GAAMM,GAASJ,GAAME,CAAI;CAC7D,IAAIC,EAAI,IACJ,MAAME,EAAwBF,EAAI,EAAE;CAExC,OAAOE,EAAwBF,EAAI,EAAE;AACzC;AAqBA,SAAgBG,EAAgC,GAAQ;CACpD,IAAMH,IAAMN,EAAK,gCAAgCU,CAAM;CACvD,IAAIC,IAAKC,EAAyBN,EAAI,IAAIA,EAAI,EAAE,CAAC,CAAC,MAAM;CAExD,OADAN,EAAK,gBAAgBM,EAAI,IAAIA,EAAI,KAAK,GAAG,CAAC,GACnCK;AACX;AAOA,SAAgBE,EAAkB,GAAa;CAC3C,IAAMP,IAAMN,EAAK,kBAAkBc,CAAW;CAC9C,IAAIR,EAAI,IACJ,MAAME,EAAwBF,EAAI,EAAE;CAExC,OAAOE,EAAwBF,EAAI,EAAE;AACzC;AAsIA,SAAgBS,EAAuB,GAAQ,GAAS,GAAW;CAC/D,IAAMT,IAAMN,EAAK,uBAAuBU,GAAQN,GAASY,CAAS;CAClE,IAAIV,EAAI,IACJ,MAAME,EAAwBF,EAAI,EAAE;CAExC,IAAIK,IAAKC,EAAyBN,EAAI,IAAIA,EAAI,EAAE,CAAC,CAAC,MAAM;CAExD,OADAN,EAAK,gBAAgBM,EAAI,IAAIA,EAAI,KAAK,GAAG,CAAC,GACnCK;AACX;AAOA,SAAgBM,EAAiB,GAAQ;CACrC,IAAMX,IAAMN,EAAK,iBAAiBU,CAAM;CACxC,IAAIJ,EAAI,IACJ,MAAME,EAAwBF,EAAI,EAAE;CAExC,OAAOE,EAAwBF,EAAI,EAAE;AACzC;AAeA,SAASY,IAAoB;CAmOzB,OAAO;EACH,WAAW;EACX,qBAAqB;GAnOrB,WAAW;GACX,8BAA8B,SAAS,GAAM,GAAM;IAE/C,OADY,MAAMC,EAAmBC,GAAMC,CAAI,CACtC;GACb;GACA,+BAA+B,SAAS,GAAM;IAE1C,OADY,OAAOD,CACV;GACb;GACA,+BAA+B,SAAS,GAAM,GAAM;IAEhD,IAAMjB,IAAOL,EADD,OAAOuB,CACc,GAAGrB,EAAK,mBAAmBA,EAAK,kBAAkB,GAC7EK,IAAOH;IAEb,AADAoB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOf,GAAM,EAAI,GACtDiB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOjB,GAAM,EAAI;GAC1D;GACA,qDAAqD,SAAS,GAAM,GAAM;IACtE,IAAMoB,IAAIF,GACJf,IAAM,OAAOiB,KAAO,WAAWA,IAAI,KAAA;IAEzC,AADAD,EAAmB,CAAC,CAAC,YAAYF,IAAO,GAAOI,EAAWlB,CAAG,IAAI,OAAO,CAAC,IAAIA,GAAK,EAAI,GACtFgB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAO,CAACI,EAAWlB,CAAG,GAAG,EAAI;GACtE;GACA,+CAA+C,SAAS,GAAM;IAC1D,IAAMiB,IAAIH,GACJd,IAAM,OAAOiB,KAAO,YAAYA,IAAI,KAAA;IAC1C,OAAOC,EAAWlB,CAAG,IAAI,WAAW;GACxC;GACA,gDAAgD,SAAS,GAAM,GAAM;IAEjE,IAAMH,IAAOL,EADD2B,EAAYJ,CACS,GAAGrB,EAAK,mBAAmBA,EAAK,kBAAkB,GAC7EK,IAAOH;IAEb,AADAoB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOf,GAAM,EAAI,GACtDiB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOjB,GAAM,EAAI;GAC1D;GACA,sCAAsC,SAAS,GAAM,GAAM;IAEvD,OADYiB,KAAQC;GAExB;GACA,6CAA6C,SAAS,GAAM;IAExD,OADY,OAAOD,KAAU;GAEjC;GACA,+CAA+C,SAAS,GAAM;IAE1D,OADY,OAAOA,KAAU;GAEjC;GACA,6CAA6C,SAAS,GAAM;IACxD,IAAMM,IAAMN;IAEZ,OADY,OAAOM,KAAS,cAAYA;GAE5C;GACA,6CAA6C,SAAS,GAAM;IAExD,OADY,OAAON,KAAU;GAEjC;GACA,gDAAgD,SAAS,GAAM;IAE3D,OADYA,MAAS,KAAA;GAEzB;GACA,4CAA4C,SAAS,GAAM,GAAM;IAE7D,OADYA,MAASC;GAEzB;GACA,kDAAkD,SAAS,GAAM,GAAM;IAEnE,OADYD,KAAQC;GAExB;GACA,8CAA8C,SAAS,GAAM,GAAM;IAC/D,IAAMM,IAAMN,GACNf,IAAM,OAAOqB,KAAS,WAAWA,IAAM,KAAA;IAE7C,AADAL,EAAmB,CAAC,CAAC,WAAWF,IAAO,GAAOI,EAAWlB,CAAG,IAAI,IAAIA,GAAK,EAAI,GAC7EgB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAO,CAACI,EAAWlB,CAAG,GAAG,EAAI;GACtE;GACA,8CAA8C,SAAS,GAAM,GAAM;IAC/D,IAAMqB,IAAMN,GACNf,IAAM,OAAOqB,KAAS,WAAWA,IAAM,KAAA;IAC7C,IAAIxB,IAAOqB,EAAWlB,CAAG,IAAI,IAAIR,EAAkBQ,GAAKN,EAAK,mBAAmBA,EAAK,kBAAkB,GACnGK,IAAOH;IAEX,AADAoB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOf,GAAM,EAAI,GACtDiB,EAAmB,CAAC,CAAC,SAASF,IAAO,GAAOjB,GAAM,EAAI;GAC1D;GACA,yCAAyC,SAAS,GAAM,GAAM;IAC1D,MAAU,MAAMgB,EAAmBC,GAAMC,CAAI,CAAC;GAClD;GACA,6BAA6B,WAAW;IAAE,OAAOO,EAAY,SAAU,GAAM,GAAM;KAE/E,OADYR,EAAK,KAAKC,CACb;IACb,GAAG,SAAS;GAAG;GACf,6BAA6B,SAAS,GAAM;IAExC,OADYD,EAAK;GAErB;GACA,gCAAgC,SAAS,GAAM;IAE3C,OADY,OAAO,QAAQA,CAClB;GACb;GACA,4BAA4B,WAAW;IAAE,OAAOQ,EAAY,SAAU,GAAM,GAAM;KAE9E,OADY,QAAQ,IAAIR,GAAMC,CACrB;IACb,GAAG,SAAS;GAAG;GACf,4BAA4B,SAAS,GAAM,GAAM;IAE7C,OADYD,EAAKC,MAAS;GAE9B;GACA,sCAAsC,SAAS,GAAM,GAAM;IAEvD,OADYD,EAAKC,MAAS;GAE9B;GACA,yCAAyC,SAAS,GAAM,GAAM;IAE1D,OADYD,EAAKC;GAErB;GACA,+CAA+C,SAAS,GAAM;IAC1D,IAAIQ;IACJ,IAAI;KACA,IAAST,aAAgB;IAC7B,QAAY;KACR,IAAS;IACb;IAEA,OAAO3B;GACX;GACA,uCAAuC,SAAS,GAAM;IAClD,IAAIoC;IACJ,IAAI;KACA,IAAST,aAAgB;IAC7B,QAAY;KACR,IAAS;IACb;IAEA,OAAO3B;GACX;GACA,8CAA8C,SAAS,GAAM;IACzD,IAAIoC;IACJ,IAAI;KACA,IAAST,aAAgB;IAC7B,QAAY;KACR,IAAS;IACb;IAEA,OAAO3B;GACX;GACA,gCAAgC,SAAS,GAAM;IAE3C,OADY,MAAM,QAAQ2B,CACjB;GACb;GACA,sCAAsC,SAAS,GAAM;IAEjD,OADY,OAAO,cAAcA,CACxB;GACb;GACA,iCAAiC,WAAW;IAExC,OADY,OAAO;GAEvB;GACA,+BAA+B,SAAS,GAAM;IAE1C,OADYA,EAAK;GAErB;GACA,+BAA+B,SAAS,GAAM;IAE1C,OADYA,EAAK;GAErB;GACA,4BAA4B,WAAW;IAEnC,OAAO,CAAE;GACb;GACA,4BAA4B,WAAW;IAEnC,OAAO,CAAE;GACb;GACA,4BAA4B,SAAS,GAAM;IAEvC,OAAO,IADS,WAAWA,CAClB;GACb;GACA,6BAA6B,SAAS,GAAM;IAExC,OADYA,EAAK;GAErB;GACA,6BAA6B,WAAW;IAAE,OAAOQ,EAAY,SAAU,GAAM;KAEzE,OADYR,EAAK,KACR;IACb,GAAG,SAAS;GAAG;GACf,yCAAyC,SAAS,GAAM,GAAM,GAAM;IAChE,WAAW,UAAU,IAAI,KAAKU,EAAoBV,GAAMC,CAAI,GAAGU,CAAI;GACvE;GACA,4BAA4B,SAAS,GAAM,GAAM,GAAM;IACnD,EAAKV,KAAQU;GACjB;GACA,4BAA4B,SAAS,GAAM,GAAM,GAAM;IACnD,EAAKV,MAAS,KAAKU;GACvB;GACA,8BAA8B,SAAS,GAAM;IAEzC,OADYX,EAAK;GAErB;GACA,kCAAkC,SAAS,GAAM;IAG7C,OAAO3B;GACX;GACA,kCAAkC,SAAS,GAAM;IAG7C,OAAOA;GACX;GACA,kCAAkC,SAAS,GAAM,GAAM;IAGnD,OADY0B,EAAmBC,GAAMC,CAC5B;GACb;GACA,kCAAkC,SAAS,GAAM;IAG7C,OADY,OAAO,QAAQ,IAAID,CACtB;GACb;GACA,iCAAiC,WAAW;IACxC,IAAMY,IAAQhC,EAAK,uBACbiC,IAASD,EAAM,KAAK,CAAC;IAK3B,AAJAA,EAAM,IAAI,GAAG,KAAA,CAAS,GACtBA,EAAM,IAAIC,IAAS,GAAG,KAAA,CAAS,GAC/BD,EAAM,IAAIC,IAAS,GAAG,IAAI,GAC1BD,EAAM,IAAIC,IAAS,GAAG,EAAI,GAC1BD,EAAM,IAAIC,IAAS,GAAG,EAAK;GAC/B;EAI2B;CAC/B;AACJ;AAEA,SAASC,EAAqB,GAAK;CAC/B,IAAMC,IAAMnC,EAAK,wBAAwB;CAEzC,OADAA,EAAK,sBAAsB,IAAImC,GAAKR,CAAG,GAChCQ;AACX;AAEA,SAASV,EAAY,GAAK;CAEtB,IAAMW,IAAO,OAAOV;CACpB,IAAIU,KAAQ,YAAYA,KAAQ,aAAaV,KAAO,MAChD,OAAQ,GAAGA;CAEf,IAAIU,KAAQ,UACR,OAAO,IAAIV,EAAI;CAEnB,IAAIU,KAAQ,UAAU;EAClB,IAAMC,IAAcX,EAAI;EAIpB,OAHAW,KAAe,OACR,WAEA,UAAUA,EAAY;CAErC;CACA,IAAID,KAAQ,YAAY;EACpB,IAAME,IAAOZ,EAAI;EAIb,OAHA,OAAOY,KAAQ,YAAYA,EAAK,SAAS,IAClC,YAAYA,EAAK,KAEjB;CAEf;CAEA,IAAI,MAAM,QAAQZ,CAAG,GAAG;EACpB,IAAMa,IAASb,EAAI,QACfc,IAAQ;EACZ,AAAID,IAAS,MACT,KAASd,EAAYC,EAAI,EAAE;EAE/B,KAAI,IAAIe,IAAI,GAAGA,IAAIF,GAAQ,KACvB,KAAS,OAAOd,EAAYC,EAAIe,EAAE;EAGtC,OADA,KAAS,KACFD;CACX;CAEA,IAAME,IAAiB,sBAAsB,KAAK,SAAS,KAAKhB,CAAG,CAAC,GAChEiB;CACJ,IAAID,KAAkBA,EAAe,SAAS,GAC1C,IAAYA,EAAe;MAG3B,OAAO,SAAS,KAAKhB,CAAG;CAE5B,IAAIiB,KAAa,UAIb,IAAI;EACA,OAAO,YAAY,KAAK,UAAUjB,CAAG,IAAI;CAC7C,QAAY;EACR,OAAO;CACX;CAOJ,OAJIA,aAAe,QACR,GAAGA,EAAI,KAAK,IAAIA,EAAI,QAAQ,IAAIA,EAAI,UAGxCiB;AACX;AAEA,SAAS/B,EAAyB,GAAK,GAAK;CACxC,OAAc;CACd,IAAMgC,IAAMtB,EAAmB,GACzBO,IAAS,CAAC;CAChB,KAAK,IAAI,IAAIgB,GAAK,IAAIA,IAAM,IAAIC,GAAK,KAAK,GACtC,EAAO,KAAK9C,EAAK,sBAAsB,IAAI4C,EAAI,UAAU,GAAG,EAAI,CAAC,CAAC;CAGtE,OADA5C,EAAK,uBAAuB6C,GAAKC,CAAG,GAC7BjB;AACX;AAEA,SAASC,EAAoB,GAAK,GAAK;CAEnC,OADA,OAAc,GACPiB,EAAqB,CAAC,CAAC,SAASF,IAAM,GAAGA,IAAM,IAAIC,CAAG;AACjE;AAEA,IAAIE,IAAwB;AAC5B,SAAS1B,IAAqB;CAI1B,QAHI0B,MAA0B,QAAQA,EAAsB,OAAO,aAAa,MAASA,EAAsB,OAAO,aAAa,KAAA,KAAaA,EAAsB,WAAWhD,EAAK,OAAO,YACzL,IAAwB,IAAI,SAASA,EAAK,OAAO,MAAM,IAEpDgD;AACX;AAEA,SAAS7B,EAAmB,GAAK,GAAK;CAClC,OAAO8B,EAAWJ,MAAQ,GAAGC,CAAG;AACpC;AAEA,IAAII,IAA0B;AAC9B,SAASH,IAAuB;CAI5B,QAHIG,MAA4B,QAAQA,EAAwB,eAAe,OAC3E,IAA0B,IAAI,WAAWlD,EAAK,OAAO,MAAM,IAExDkD;AACX;AAEA,SAAStB,EAAY,GAAG,GAAM;CAC1B,IAAI;EACA,OAAOuB,EAAE,MAAM,MAAMC,CAAI;CAC7B,SAAS,GAAG;EACR,IAAMjB,IAAMD,EAAqB,CAAC;EAClC,EAAK,qBAAqBC,CAAG;CACjC;AACJ;AAEA,SAASX,EAAW,GAAG;CACnB,OAAO6B,KAAyB;AACpC;AAEA,SAASvD,EAAkB,GAAK,GAAQ,GAAS;CAC7C,IAAIwD,MAAY,KAAA,GAAW;EACvB,IAAMC,IAAMC,EAAkB,OAAOC,CAAG,GAClCZ,IAAMa,EAAOH,EAAI,QAAQ,CAAC,MAAM;EAGtC,OAFAR,EAAqB,CAAC,CAAC,SAASF,GAAKA,IAAMU,EAAI,MAAM,CAAC,CAAC,IAAIA,CAAG,GAC9D,IAAkBA,EAAI,QACfV;CACX;CAEA,IAAIC,IAAMW,EAAI,QACVZ,IAAMa,EAAOZ,GAAK,CAAC,MAAM,GAEvBF,IAAMG,EAAqB,GAE7Bd,IAAS;CAEb,OAAOA,IAASa,GAAK,KAAU;EAC3B,IAAMa,IAAOF,EAAI,WAAWxB,CAAM;EAClC,IAAI0B,IAAO,KAAM;EACjB,EAAId,IAAMZ,KAAU0B;CACxB;CACA,IAAI1B,MAAWa,GAAK;EAIhB,AAHIb,MAAW,MACX,IAAMwB,EAAI,MAAMxB,CAAM,IAE1B,IAAMqB,EAAQT,GAAKC,GAAK,IAAMb,IAASwB,EAAI,SAAS,GAAG,CAAC,MAAM;EAC9D,IAAMG,IAAOb,EAAqB,CAAC,CAAC,SAASF,IAAMZ,GAAQY,IAAMC,CAAG,GAC9DxC,IAAMkD,EAAkB,WAAWC,GAAKG,CAAI;EAGlD,AADA,KAAUtD,EAAI,SACd,IAAMgD,EAAQT,GAAKC,GAAKb,GAAQ,CAAC,MAAM;CAC3C;CAGA,OADA,IAAkBA,GACXY;AACX;AAEA,SAASrC,EAAwB,GAAK;CAClC,IAAMqD,IAAQ7D,EAAK,sBAAsB,IAAImC,CAAG;CAEhD,OADAnC,EAAK,0BAA0BmC,CAAG,GAC3B0B;AACX;AAEA,IAAIC,IAAoB,IAAI,YAAY,SAAS;CAAE,WAAW;CAAM,OAAO;AAAK,CAAC;AACjFA,EAAkB,OAAO;AACzB,IAAMC,IAA0B,YAC5BC,IAAkB;AACtB,SAASf,EAAW,GAAK,GAAK;CAO1B,OANA,KAAmBH,GACfkB,KAAmBD,MACnB,IAAoB,IAAI,YAAY,SAAS;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC,GAC7ED,EAAkB,OAAO,GACzB,IAAkBhB,IAEfgB,EAAkB,OAAOf,EAAqB,CAAC,CAAC,SAASF,GAAKA,IAAMC,CAAG,CAAC;AACnF;AAEA,IAAMU,IAAoB,IAAI,YAAY;AAEpC,gBAAgBA,MAClB,EAAkB,aAAa,SAAU,GAAK,GAAM;CAChD,IAAMD,IAAMC,EAAkB,OAAOC,CAAG;CAExC,OADAG,EAAK,IAAIL,CAAG,GACL;EACH,MAAME,EAAI;EACV,SAASF,EAAI;CACjB;AACJ;AAGJ,IAAIrD,IAAkB,GAEQF;AAC9B,SAASiE,EAAoB,GAAU,GAAQ;CAO3C,OALA,IAAOC,EAAS,SAEhB,IAAwB,MACxB,IAA0B,MAC1BlE,EAAK,iBAAiB,GACfA;AACX;AAEA,eAAemE,EAAW,GAAQ,GAAS;CACvC,IAAI,OAAO,YAAa,cAAcC,aAAkB,UAAU;EAC9D,IAAI,OAAO,YAAY,wBAAyB,YAC5C,IAAI;GACA,OAAO,MAAM,YAAY,qBAAqBA,GAAQC,CAAO;EACjE,SAASC,GAAG;GAGR,IAFsBF,EAAO,MAAMG,EAAqBH,EAAO,IAAI,KAE9CA,EAAO,QAAQ,IAAI,cAAc,MAAM,oBACxD,QAAQ,KAAK,qMAAqME,CAAC;QAE9M,MAAMA;EACnB;EAGJ,IAAME,IAAQ,MAAMJ,EAAO,YAAY;EACvC,OAAO,MAAM,YAAY,YAAYI,GAAOH,CAAO;CACvD;CAAO;EACH,IAAMH,IAAW,MAAM,YAAY,YAAYE,GAAQC,CAAO;EAK1D,OAHAH,aAAoB,YAAY,WACzB;GAAE;GAAU;EAAO,IAEnBA;CAEf;CAEA,SAASK,EAAqB,GAAM;EAChC,QAAQnC,GAAR;GACI,KAAK;GAAS,KAAK;GAAQ,KAAK,WAAW,OAAO;EACtD;EACA,OAAO;CACX;AACJ;AAsBA,eAAeqC,EAAW,GAAgB;CACtC,IAAIzE,MAAS,KAAA,GAAW,OAAOA;CAW/B,AARI0E,MAAmB,KAAA,MACf,OAAO,eAAeA,CAAc,MAAM,OAAO,YAChD,sBAAmBA,IAEpB,QAAQ,KAAK,2FAA2F,IAI5GA,MAAmB,KAAA,MACnB,IAAiB,KAAA;CAErB,IAAML,IAAUnD,EAAkB;CAElC,CAAI,OAAOwD,KAAmB,YAAa,OAAO,WAAY,cAAcA,aAA0B,WAAa,OAAO,OAAQ,cAAcA,aAA0B,SACtK,IAAiB,MAAMA,CAAc;CAGzC,IAAM,EAAE,aAAU,cAAW,MAAMP,EAAW,MAAMO,GAAgBL,CAAO;CAE3E,OAAOJ,EAAoBC,GAAUE,CAAM;AAC/C;;;;;;ACnuBA,SAASQ,EAAa,GAA4B;CAChD,IAAMC,IAAS,KAAKC,CAAM,GACpBN,IAAQ,IAAI,WAAWK,EAAO,MAAM;CAC1C,KAAK,IAAIE,IAAQ,GAAGA,IAAQF,EAAO,QAAQ,KAAS,GAClD,EAAME,KAASF,EAAO,WAAWE,CAAK;CAExC,OAAOP;AACT;AAGA,eAAsBQ,IAA6B;CACjD,MAAMtF,EAAS,EAAE,gBAAgBkF,EAAajF,CAAc,EAAE,CAAC;AACjE"}
@@ -1,6 +1,6 @@
1
1
  import type { SymmetryOperation } from "../structure/types.js";
2
2
  /**
3
- * Parse one Jones-faithful operator such as `-x+1/2, y, -z+1/2` or
4
- * `2/3+x,1/3+y,1/3+z` into a rotation matrix and translation.
3
+ * Parse a symmetry operation as CIF files write it, such as
4
+ * `-x+1/2, y, -z+1/2`, into a rotation matrix and translation.
5
5
  */
6
6
  export declare function parseSymmetryOperator(text: string): SymmetryOperation;
@@ -7,6 +7,7 @@ export { SpaceGroupLookupError, ensureMoyo, operationsForSpaceGroup, } from "./s
7
7
  export { SymmetryAnalysisError, symmetryDataset, type SymmetryDataset, type SymmetryOptions, } from "./symmetry/dataset.js";
8
8
  export { typesetSymbol } from "./symmetry/symbol.js";
9
9
  export { expandStructure } from "./structure/expand.js";
10
+ export { latticeFromParameters, latticeFromVectors, } from "./structure/lattice.js";
10
11
  export { buildScene, structureElements } from "./scene/build.js";
11
12
  export { createViewer, type Viewer, type ViewerOptions, } from "./render/viewer.js";
12
13
  export { createThumbnailRenderer, type ThumbnailRenderer, } from "./render/thumbnails.js";
@@ -17,12 +18,12 @@ export type { BuildSceneOptions, SceneAtom, StructureScene, } from "./scene/buil
17
18
  export type { Bond } from "./structure/bonds.js";
18
19
  export type { Lattice, LatticeParameters, Mat3, Site, SpaceGroupInfo, Species, Structure, SymmetryOperation, Vec3, } from "./structure/types.js";
19
20
  /**
20
- * Read the first structure in a CIF. Symmetry comes from the file's operator
21
- * loop, checked to fit its atoms, or from moyo by the file's space-group
22
- * symbol or number, in the setting its atoms or its cell select; a file
23
- * naming neither is taken as listing every atom (P1). Throws
24
- * `CifSyntaxError` for text that is not CIF, `CifStructureError` for a
25
- * CIF without a usable structure, and `SpaceGroupLookupError` for a space
26
- * group the symmetry table does not know.
21
+ * Read the first structure in a CIF file. Its symmetry comes from the
22
+ * file's list of symmetry operations or, without one, from its space-group
23
+ * symbol or number; a file with neither is read as listing every atom.
24
+ *
25
+ * Throws `CifSyntaxError` for text that is not valid CIF,
26
+ * `CifStructureError` for a file without a usable structure, and
27
+ * `SpaceGroupLookupError` for an unknown space group.
27
28
  */
28
29
  export declare function readCif(text: string): Promise<Structure>;
@@ -2,14 +2,17 @@ import { OrthographicCamera, Quaternion, Scene, type WebGLRenderer } from "three
2
2
  import type { Mat3 } from "../structure/types.js";
3
3
  /** The a, b, c axes of the cell drawn in a corner, following the camera. */
4
4
  export declare class AxesGizmo {
5
- private readonly fontFamily;
6
5
  readonly scene: Scene<import("three").Object3DEventMap>;
7
6
  readonly camera: OrthographicCamera;
8
7
  private readonly axes;
8
+ /** The a, b and c arrows, built once and turned to each new cell. */
9
+ private readonly arrows;
9
10
  private readonly headlight;
10
11
  private readonly inverse;
12
+ private readonly direction;
11
13
  /** `fontFamily` is the interface font the axis letters are drawn in. */
12
14
  constructor(fontFamily: string);
15
+ /** Point the arrows along the cell's a, b and c axes. */
13
16
  setCell(cell: Mat3): void;
14
17
  /** Draw into the bottom-left `size` pixels of a renderer whose main pass is done. */
15
18
  render(renderer: WebGLRenderer, cameraQuaternion: Quaternion, size: number): void;
@@ -1,4 +1,4 @@
1
- import { DataTexture, LineBasicMaterial, MeshStandardMaterial, type Material } from "three";
1
+ import { DataTexture, LineBasicMaterial, MeshStandardMaterial } from "three";
2
2
  export declare const METALNESS = 0.1;
3
3
  export declare const ROUGHNESS = 0.6;
4
4
  export declare const AMBIENT_LIGHT_INTENSITY = 0.8;
@@ -40,4 +40,3 @@ export declare const GIZMO_AXIS_STENCIL = 1;
40
40
  * axis letters can tell what they are drawn over.
41
41
  */
42
42
  export declare function createGizmoMaterial(color: string, stencilRef: number): MeshStandardMaterial;
43
- export declare function disposeMaterial(material: Material | Material[]): void;
@@ -7,13 +7,18 @@ export interface SceneModel {
7
7
  cell: Mat3;
8
8
  /** Centre of that cell, which `group` moves to the origin. */
9
9
  center: Vec3;
10
- /** Bounds of every atom and cell corner, in the centred frame. */
10
+ /** Bounds of every atom and cell corner of every layer, in the centred frame. */
11
11
  bounds: Box3;
12
12
  /** Largest cell edge length of any layer. */
13
13
  span: number;
14
+ /** Elements of the drawn layers. */
14
15
  elements: string[];
15
16
  dispose(): void;
16
17
  }
17
18
  export declare function cellCenter(cell: Mat3): Vec3;
18
- /** Build the three.js objects for the layers, centred on the first cell. */
19
+ /**
20
+ * Build the three.js objects for the layers, centred on the first cell. A
21
+ * layer at opacity 0 is not drawn but still counts toward the centre, the
22
+ * bounds and the span.
23
+ */
19
24
  export declare function createSceneModel(layers: SceneLayer[]): SceneModel;
@@ -1,12 +1,11 @@
1
- /** Assign session colours to `elements` before drawing them, most common first. */
1
+ /** Give these elements their colours now, the more common ones first, so colours do not depend on drawing order. */
2
2
  export declare function ensureElementColors(elements: readonly string[]): void;
3
- /** The session colour of an element, assigned now if it is new. */
3
+ /** The colour of an element as a hex string such as `#e15949`, given on first use. */
4
4
  export declare function elementColor(element: string): string;
5
- /** Elements seen in this session with their colours, in order of first appearance. */
5
+ /** Every element given a colour so far, with its colour, in the order given. */
6
6
  export declare function elementColorAssignments(): [string, string][];
7
7
  /**
8
- * Forget the session's colours, for when every structure is cleared. The
9
- * palette is shared by every viewer and thumbnail renderer in the page,
10
- * which pick up new colours at their next draw.
8
+ * Forget every colour given so far, for example when all structures are
9
+ * closed. Viewers and thumbnails pick up new colours at their next draw.
11
10
  */
12
11
  export declare function resetElementColors(): void;
@@ -6,12 +6,13 @@ export interface ThumbnailRenderer {
6
6
  * Models are cached by `key` and rebuilt when the layers array changes.
7
7
  */
8
8
  render(key: string, layers: SceneLayer[], view: ViewState | null, canvas: HTMLCanvasElement): void;
9
- /** Drop the cached model of `key`. */
9
+ /** Forget the cached model of `key`. */
10
10
  release(key: string): void;
11
+ /** Free the shared WebGL context and every cached model. */
11
12
  dispose(): void;
12
13
  }
13
14
  /**
14
- * One shared WebGL context that paints small previews into ordinary 2D
15
- * canvases, so a list of structures does not open a context per card.
15
+ * Draw small previews into ordinary canvases from one shared WebGL context,
16
+ * so a list of structures does not need a context for each.
16
17
  */
17
18
  export declare function createThumbnailRenderer(): ThumbnailRenderer;
@@ -1,13 +1,13 @@
1
1
  import type { Vec3 } from "../structure/types.js";
2
2
  /**
3
- * A camera pose an app can store, restore and carry between a viewer and a
4
- * thumbnail: the same state reads the same at any canvas size.
3
+ * A view an app can save and restore, or pass between a viewer and a
4
+ * thumbnail. It looks the same at any canvas size.
5
5
  */
6
6
  export interface ViewState {
7
7
  /** Orientation of the camera as [x, y, z, w], three.js order. */
8
8
  quaternion: [number, number, number, number];
9
9
  /** The point looked at, in the centred frame: the first layer's cell centre is the origin. */
10
10
  target: Vec3;
11
- /** Zoom relative to the zoom that fits the structure in the viewport. */
11
+ /** Zoom relative to the zoom that fits every layer in the viewport. */
12
12
  scale: number;
13
13
  }
@@ -8,32 +8,30 @@ export interface ViewerOptions {
8
8
  }
9
9
  export interface Viewer {
10
10
  /**
11
- * Replace what is drawn with scenes from `buildScene`, usually of expanded
12
- * structures. The view resets to the standard orientation unless `view`
13
- * is given.
11
+ * Draw these scenes from `buildScene`, replacing what was shown. The view
12
+ * resets to the standard orientation unless `view` is given.
14
13
  */
15
14
  setLayers(layers: SceneLayer[], view?: ViewState | null): void;
16
15
  /** Remove everything drawn. */
17
16
  clear(): void;
18
- /** The current pose, or null while nothing is loaded. */
17
+ /** The current view, or null while nothing is shown. */
19
18
  getView(): ViewState | null;
20
- /** Restore a pose from `getView`, of this or another viewer. */
19
+ /** Restore a view from `getView`, of this or another viewer. */
21
20
  setView(view: ViewState): void;
22
21
  /** Back to the standard orientation, fitted to the viewport. */
23
22
  resetView(): void;
24
- /** Refit to the element's size; call after layout changes the viewer's box. */
23
+ /** Fit the canvas to the container again; the viewer does this itself when the container resizes. */
25
24
  resize(): void;
26
25
  /** Draw a frame now. */
27
26
  render(): void;
28
- /** Called after the user moves the camera. Returns the unsubscribe function. */
27
+ /** Call `listener` when the user rotates or zooms. Returns a function that removes it. */
29
28
  onInteraction(listener: () => void): () => void;
30
- /** Take the viewer out of its container and release its WebGL resources. */
29
+ /** Remove the viewer from its container and free its WebGL resources. */
31
30
  dispose(): void;
32
31
  }
33
32
  /**
34
- * Mount a crystal viewer in `container`. The viewer fills the container and
35
- * follows its size, so the container needs a height of its own. The call
36
- * gives the container the class `bravais-viewer` and adds, once per
37
- * document, a `<style id="bravais-styles">` for the overlays.
33
+ * Create a viewer inside `container`. It fills the container and follows
34
+ * its size, so give the container a height. Adds the class `bravais-viewer`
35
+ * to the container and one small stylesheet to the page.
38
36
  */
39
37
  export declare function createViewer(container: HTMLElement, options?: ViewerOptions): Viewer;
@@ -23,21 +23,24 @@ export interface StructureScene {
23
23
  /** Elements present, in order of first appearance, deuterium as hydrogen. */
24
24
  elements: string[];
25
25
  }
26
- /** One structure drawn in a viewer; several overlay, each with its own opacity. */
26
+ /** One structure to draw. A viewer can overlay several, each with its own opacity. */
27
27
  export interface SceneLayer {
28
28
  scene: StructureScene;
29
- /** 1 draws the layer solid; a lower value draws it translucent over the others. Default 1. */
29
+ /**
30
+ * From 0 to 1; default 1. Below 1 the layer is drawn see-through over the
31
+ * others. At 0 it is not drawn but still counts when fitting the view, so
32
+ * switching between two versions of a structure keeps the same framing.
33
+ */
30
34
  opacity?: number;
31
35
  }
32
36
  export interface BuildSceneOptions {
33
- /** Draw image atoms: boundary sites repeated on the opposite faces, edges and corners. Default true. */
37
+ /** Repeat atoms on the cell's faces, edges and corners on the opposite side too. Default true. */
34
38
  imageAtoms?: boolean;
35
39
  }
36
40
  /** Every chemical element on any site, in order of first appearance. */
37
41
  export declare function structureElements(structure: Structure): string[];
38
42
  /**
39
- * Atoms, bonds and cell of a structure as the renderer draws them. The sites
40
- * are drawn as listed and `operations` are not applied: pass
41
- * `expandStructure(structure)` to draw the full cell.
43
+ * Prepare a structure for drawing: its atoms, bonds and cell. Sites are
44
+ * drawn as listed; pass `expandStructure(structure)` to draw the whole cell.
42
45
  */
43
46
  export declare function buildScene(structure: Structure, options?: BuildSceneOptions): StructureScene;
@@ -16,6 +16,7 @@ export interface Bond {
16
16
  export declare function bondCutoff(elementA: string, elementB: string): number | null;
17
17
  /**
18
18
  * Bonds between the given atoms by VESTA's cutoff table. Only pairs VESTA
19
- * lists get bonds, so no metal-metal or anion-anion sticks appear.
19
+ * lists get bonds, so no metal-metal or anion-anion sticks appear. The bonds
20
+ * are ordered by `start`, then `end`, and `start` is the lower index.
20
21
  */
21
22
  export declare function findBonds(atoms: readonly BondedAtom[]): Bond[];
@@ -1,6 +1,7 @@
1
1
  import { type Structure } from "./types.js";
2
2
  /**
3
- * Apply every operation to every site and keep the distinct positions: the
4
- * full cell as an explicit list of sites (P1).
3
+ * Fill the unit cell: apply every symmetry operation to every site and keep
4
+ * each distinct position once. The result lists every atom, with the
5
+ * identity as its only operation.
5
6
  */
6
7
  export declare function expandStructure(structure: Structure): Structure;
@@ -7,5 +7,21 @@ export declare function wrap(value: number, nearOne?: number): number;
7
7
  export declare function wrapVector(fractional: Vec3): Vec3;
8
8
  /** Periodic distance of two fractional positions, per axis, below `tolerance`. */
9
9
  export declare function samePosition(p: Vec3, q: Vec3, tolerance: number): boolean;
10
+ /**
11
+ * Fractional positions bucketed by where they fall in the cell, so finding
12
+ * those within a tolerance of a position, across the periodic boundaries,
13
+ * takes a few comparisons instead of one per position. The tolerance is per
14
+ * axis, as in `samePosition`, and must stay below 1 / BUCKETS.
15
+ */
16
+ export declare class PositionIndex {
17
+ private readonly tolerance;
18
+ private readonly buckets;
19
+ private readonly positions;
20
+ constructor(tolerance: number);
21
+ /** Add a position; its index counts up from 0 in the order added. */
22
+ add(position: Vec3): number;
23
+ /** Indices of the positions within tolerance of `position`, ascending. */
24
+ near(position: Vec3): number[];
25
+ }
10
26
  /** Apply an operation to fractional coordinates (no wrapping). */
11
27
  export declare function applyOperation(operation: SymmetryOperation, fractional: Vec3): Vec3;
@@ -1,10 +1,10 @@
1
1
  import type { Lattice, LatticeParameters, Mat3, Vec3 } from "./types.js";
2
2
  /**
3
- * Cartesian row vectors for cell parameters, in the convention pymatgen uses
4
- * by default: c along z and a in the xz plane.
3
+ * A lattice from cell lengths in ångström and angles in degrees. The c axis
4
+ * points along z and a lies in the xz plane, as in pymatgen.
5
5
  */
6
6
  export declare function latticeFromParameters(parameters: LatticeParameters): Lattice;
7
- /** Cell parameters of three Cartesian row vectors. */
7
+ /** A lattice from its three cell vectors, in ångström. */
8
8
  export declare function latticeFromVectors(vectors: Mat3): Lattice;
9
9
  export declare function fractionalToCartesian(lattice: Lattice, fractional: Vec3): Vec3;
10
10
  export declare function distance(p: Vec3, q: Vec3): number;
@@ -35,9 +35,7 @@ export interface SymmetryDataset {
35
35
  standard: Structure;
36
36
  }
37
37
  /**
38
- * Analyse the symmetry of what a structure actually contains. The structure
39
- * is expanded to every atom in its cell and handed to moyo, which finds the
40
- * space group from the atoms alone, so the result does not depend on how,
41
- * or whether, the file named it.
38
+ * Find the space group of a structure from its atoms alone, whatever the
39
+ * file says. See `SymmetryDataset` for what the result holds.
42
40
  */
43
41
  export declare function symmetryDataset(structure: Structure, options?: SymmetryOptions): Promise<SymmetryDataset>;
@@ -0,0 +1,8 @@
1
+ import type * as MoyoBindings from "./moyo-wasm.js";
2
+ /**
3
+ * Import the moyo chunk and instantiate its module, once. A failed attempt
4
+ * is not kept: the next call tries again.
5
+ */
6
+ export declare function loadMoyo(): Promise<void>;
7
+ /** The moyo bindings, once `loadMoyo` has resolved. */
8
+ export declare function moyo(): typeof MoyoBindings;
@@ -0,0 +1,3 @@
1
+ export { analyze_cell, hall_symbol_entries_from_number, hall_symbol_entry, operations_from_number, space_group_type, } from "@spglib/moyo-wasm";
2
+ /** Instantiate the module from the binary this chunk carries. */
3
+ export declare function instantiate(): Promise<void>;
@@ -4,10 +4,9 @@ export declare class SpaceGroupLookupError extends Error {
4
4
  constructor(message: string);
5
5
  }
6
6
  /**
7
- * Instantiate the bundled moyo WebAssembly module once, ahead of first use.
8
- * Every function that needs moyo calls this itself, so calling it is only a
9
- * way to pay the start-up cost early. A failed instantiation is not cached:
10
- * the next call tries again.
7
+ * Load moyo, the symmetry library, ahead of first use. This is optional:
8
+ * everything that needs moyo loads it. If loading fails, the next call tries
9
+ * again.
11
10
  */
12
11
  export declare function ensureMoyo(): Promise<void>;
13
12
  /**
@@ -46,9 +45,9 @@ export interface OperationSetting {
46
45
  */
47
46
  export declare function operationSettings(info: SpaceGroupInfo): Promise<OperationSetting[]>;
48
47
  /**
49
- * The operations of a space group named by Hall symbol, Hermann-Mauguin
50
- * symbol or number: those of the setting a suffix such as `:H` selects,
51
- * otherwise of the standard setting. Throws `SpaceGroupLookupError` when
52
- * the table has no such group.
48
+ * The symmetry operations of a space group given by Hall symbol,
49
+ * Hermann-Mauguin symbol or number, in the setting a suffix such as `:H`
50
+ * names, or else the standard setting. Throws `SpaceGroupLookupError` for
51
+ * an unknown group.
53
52
  */
54
53
  export declare function operationsForSpaceGroup(info: SpaceGroupInfo): Promise<SymmetryOperation[]>;
@@ -1,10 +1,8 @@
1
1
  /**
2
- * A Hermann-Mauguin symbol the way textbooks print it: no spaces, screw
3
- * axes with subscripts and rotoinversion axes with a bar, so `F m -3 m`
4
- * becomes Fm3̅m and `P 2_1/c` becomes P2₁/c. The ASCII forms of moyo and
5
- * spglib (`2_1`) and of CIF files (`21`, the digits run together) are both
6
- * read. A setting suffix such as `:H` is kept after a space. A symbol
7
- * written without spaces is only given bars and underscore subscripts,
8
- * since `F432` cannot be told from a screw axis without them.
2
+ * Write a space-group symbol the way textbooks print it: `F m -3 m` becomes
3
+ * Fm3̅m and `P 2_1/c` becomes P2₁/c. A setting suffix such as `:H` is kept.
4
+ * A screw axis written as two digits, as CIF files do (`P 1 21/c 1`), is
5
+ * recognised only when the symbol has spaces, since in `F432` the digits
6
+ * are separate axes.
9
7
  */
10
8
  export declare function typesetSymbol(symbol: string): string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bravais",
3
- "version": "0.1.2",
4
- "description": "Crystal structure viewer: reads CIFs, applies their symmetry, repeats boundary sites, finds bonds with VESTA's cutoffs and renders with three.js.",
3
+ "version": "0.1.4",
4
+ "description": "A minimal crystal structure viewer for the web: reads CIF files and draws them with three.js.",
5
5
  "license": "MIT",
6
6
  "author": "Jiacheng Wang",
7
7
  "repository": {
@@ -24,14 +24,15 @@
24
24
  "materials-science"
25
25
  ],
26
26
  "type": "module",
27
+ "sideEffects": false,
27
28
  "main": "./dist/bravais.js",
28
29
  "types": "./dist/types/index.d.ts",
29
30
  "exports": {
30
31
  ".": {
31
32
  "types": "./dist/types/index.d.ts",
32
- "import": "./dist/bravais.js",
33
33
  "default": "./dist/bravais.js"
34
- }
34
+ },
35
+ "./package.json": "./package.json"
35
36
  },
36
37
  "files": [
37
38
  "dist",