@celldl/editor 0.20260212.0 → 0.20260217.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +13 -0
  2. package/dist/CellDLEditor-ZFePDCI0.js +13851 -0
  3. package/dist/CellDLEditor-ZFePDCI0.js.map +1 -0
  4. package/dist/CellDLEditor.css +1 -1
  5. package/dist/CellDLEditor.es.js +6 -5
  6. package/dist/app/src/App.vue.d.ts +2 -0
  7. package/dist/app/src/common/common.d.ts +8 -0
  8. package/dist/app/src/common/constants.d.ts +5 -0
  9. package/dist/app/src/common/electron.d.ts +5 -0
  10. package/dist/app/src/common/electronApi.d.ts +8 -0
  11. package/dist/app/src/common/settings.d.ts +18 -0
  12. package/dist/app/src/common/version.d.ts +7 -0
  13. package/dist/app/src/common/vueCommon.d.ts +9 -0
  14. package/dist/app/src/main.d.ts +1 -0
  15. package/dist/{vendor-DFPLRrnP.js → index--lsZkhLY.js} +24316 -30274
  16. package/dist/index--lsZkhLY.js.map +1 -0
  17. package/dist/index.d.ts +54 -16
  18. package/dist/{index-DtCZg5ZV.js → oxigraph-Dx4bu2IN.js} +221 -843
  19. package/dist/oxigraph-Dx4bu2IN.js.map +1 -0
  20. package/dist/package.json.d.ts +106 -0
  21. package/dist/src/CellDL/SVGElements/boundedelement.d.ts +21 -0
  22. package/dist/src/CellDL/SVGElements/index.d.ts +66 -0
  23. package/dist/src/CellDL/SVGElements/linearpath.d.ts +11 -0
  24. package/dist/src/CellDL/SVGElements/pathelement.d.ts +53 -0
  25. package/dist/src/CellDL/SVGElements/rectilinearpath.d.ts +50 -0
  26. package/dist/src/CellDL/SVGElements/svgconnection.d.ts +22 -0
  27. package/dist/src/CellDL/celldlObjects/index.d.ts +151 -0
  28. package/dist/src/CellDL/components/index.d.ts +39 -0
  29. package/dist/src/CellDL/components/properties.d.ts +61 -0
  30. package/dist/src/CellDL/connections/index.d.ts +35 -0
  31. package/dist/src/CellDL/connections/pathmaker.d.ts +38 -0
  32. package/dist/src/CellDL/diagram/index.d.ts +45 -0
  33. package/dist/src/CellDL/editor/alerts.d.ts +27 -0
  34. package/dist/src/CellDL/editor/editguides.d.ts +31 -0
  35. package/dist/src/CellDL/editor/editorframe.d.ts +13 -0
  36. package/dist/src/CellDL/editor/index.d.ts +40 -0
  37. package/dist/src/CellDL/editor/panzoom.d.ts +30 -0
  38. package/dist/src/CellDL/editor/selectionbox.d.ts +17 -0
  39. package/dist/src/CellDL/editor/undoredo.d.ts +46 -0
  40. package/dist/src/CellDL/geometry/controls.d.ts +53 -0
  41. package/dist/src/CellDL/geometry/index.d.ts +92 -0
  42. package/dist/src/CellDL/geometry/intersections.d.ts +6 -0
  43. package/dist/src/CellDL/geometry/pathutils.d.ts +12 -0
  44. package/dist/src/CellDL/geometry/spatialindex.d.ts +22 -0
  45. package/dist/src/CellDL/geometry/transforms.d.ts +21 -0
  46. package/dist/src/CellDL/geometry/units.d.ts +23 -0
  47. package/dist/src/CellDL/utils.d.ts +6 -0
  48. package/dist/src/assets/oxigraph/web.d.ts +279 -0
  49. package/dist/src/common/EditorTypes.d.ts +39 -0
  50. package/dist/src/common/common.d.ts +7 -0
  51. package/dist/src/common/constants.d.ts +5 -0
  52. package/dist/src/common/points.d.ts +57 -0
  53. package/dist/src/common/styling.d.ts +36 -0
  54. package/dist/src/common/svgUtils.d.ts +48 -0
  55. package/dist/src/common/themeCssVariables.d.ts +9 -0
  56. package/dist/src/common/types.d.ts +23 -0
  57. package/dist/src/common/vueCommon.d.ts +9 -0
  58. package/dist/src/components/CellDLEditor.vue.d.ts +19 -0
  59. package/dist/src/components/WrappedEditor.vue.d.ts +19 -0
  60. package/dist/src/components/panels/FillStyle.vue.d.ts +20 -0
  61. package/dist/src/components/panels/PathStyle.vue.d.ts +20 -0
  62. package/dist/src/components/panels/PropertiesPanel.vue.d.ts +21 -0
  63. package/dist/src/components/popovers/ComponentPopover.vue.d.ts +19 -0
  64. package/dist/src/components/popovers/ConnectionStylePopover.vue.d.ts +19 -0
  65. package/dist/src/components/toolbar/EditorToolbar.vue.d.ts +23 -0
  66. package/dist/src/components/toolbar/ToolButton.vue.d.ts +26 -0
  67. package/dist/src/components/toolbar/ToolPanel.vue.d.ts +2 -0
  68. package/dist/src/components/toolbar/ToolPopover.vue.d.ts +3 -0
  69. package/dist/src/components/widgets/InputWidget.vue.d.ts +34 -0
  70. package/dist/src/libopencor/locUIJsonApi.d.ts +54 -0
  71. package/dist/src/mathjax/index.d.ts +2 -0
  72. package/dist/src/metadata/index.d.ts +50 -0
  73. package/dist/src/metadata/namespaces.d.ts +46 -0
  74. package/dist/src/metadata/oxigraphStore.d.ts +61 -0
  75. package/dist/src/metadata/oximock.d.ts +36 -0
  76. package/dist/src/metadata/store.d.ts +23 -0
  77. package/dist/src/plugins/bondgraph/definitions.d.ts +6 -0
  78. package/dist/src/plugins/bondgraph/index.d.ts +40 -0
  79. package/dist/src/plugins/bondgraph/utils.d.ts +27 -0
  80. package/dist/src/plugins/index.d.ts +75 -0
  81. package/dist/vite.config.d.ts +3 -0
  82. package/dist/vite.lib.config.d.ts +3 -0
  83. package/package.json +4 -3
  84. package/dist/CellDLEditor-CRG_Fjg2.js +0 -7262
  85. package/dist/CellDLEditor-CRG_Fjg2.js.map +0 -1
  86. package/dist/index-DtCZg5ZV.js.map +0 -1
  87. package/dist/vendor-DFPLRrnP.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DtCZg5ZV.js","sources":["../src/assets/oxigraph/web.js","../src/components/WrappedEditor.vue","../src/common/points.ts","../src/CellDL/geometry/units.ts","../src/common/styling.ts","../src/mathjax/index.ts","../src/CellDL/utils.ts","../src/common/svgUtils.ts","../src/CellDL/editor/editguides.ts"],"sourcesContent":["let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\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 ptr = ptr >>> 0;\n return decodeText(ptr, 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\nconst BlankNodeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_blanknode_free(ptr >>> 0, 1));\n\nconst DefaultGraphFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_defaultgraph_free(ptr >>> 0, 1));\n\nconst LiteralFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_literal_free(ptr >>> 0, 1));\n\nconst NamedNodeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_namednode_free(ptr >>> 0, 1));\n\nconst QuadFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_quad_free(ptr >>> 0, 1));\n\nconst StoreFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_store_free(ptr >>> 0, 1));\n\nconst VariableFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_variable_free(ptr >>> 0, 1));\n\nexport class BlankNode {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(BlankNode.prototype);\n obj.__wbg_ptr = ptr;\n BlankNodeFinalization.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 BlankNodeFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_blanknode_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.blanknode_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.blanknode_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.blanknode_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.blanknode_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) BlankNode.prototype[Symbol.dispose] = BlankNode.prototype.free;\n\nexport class DefaultGraph {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(DefaultGraph.prototype);\n obj.__wbg_ptr = ptr;\n DefaultGraphFinalization.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 DefaultGraphFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_defaultgraph_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.defaultgraph_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.defaultgraph_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.defaultgraph_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.defaultgraph_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) DefaultGraph.prototype[Symbol.dispose] = DefaultGraph.prototype.free;\n\nexport class Literal {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Literal.prototype);\n obj.__wbg_ptr = ptr;\n LiteralFinalization.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 LiteralFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_literal_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.literal_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.literal_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {NamedNode}\n */\n get datatype() {\n const ret = wasm.literal_datatype(this.__wbg_ptr);\n return NamedNode.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n get language() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.literal_language(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get direction() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.literal_direction(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.literal_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.literal_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) Literal.prototype[Symbol.dispose] = Literal.prototype.free;\n\nexport class NamedNode {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(NamedNode.prototype);\n obj.__wbg_ptr = ptr;\n NamedNodeFinalization.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 NamedNodeFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_namednode_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.namednode_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.namednode_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.namednode_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.namednode_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) NamedNode.prototype[Symbol.dispose] = NamedNode.prototype.free;\n\nexport class Quad {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Quad.prototype);\n obj.__wbg_ptr = ptr;\n QuadFinalization.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 QuadFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_quad_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n get graph() {\n const ret = wasm.quad_graph(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.quad_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.quad_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {any}\n */\n get object() {\n const ret = wasm.quad_object(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get subject() {\n const ret = wasm.quad_subject(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get predicate() {\n const ret = wasm.quad_predicate(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.quad_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.quad_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) Quad.prototype[Symbol.dispose] = Quad.prototype.free;\n\nexport class Store {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StoreFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_store_free(ptr, 0);\n }\n /**\n * @param {any} subject\n * @param {any} predicate\n * @param {any} object\n * @param {any} graph_name\n * @returns {any[]}\n */\n match(subject, predicate, object, graph_name) {\n const ret = wasm.store_match(this.__wbg_ptr, subject, predicate, object, graph_name);\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 * @param {any} quad\n */\n add(quad) {\n const ret = wasm.store_add(this.__wbg_ptr, quad);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {any} quad\n * @returns {boolean}\n */\n has(quad) {\n const ret = wasm.store_has(this.__wbg_ptr, quad);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {any} quads\n */\n constructor(quads) {\n const ret = wasm.store_new(quads);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n StoreFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} options\n * @param {any} from_graph_name\n * @returns {string}\n */\n dump(options, from_graph_name) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.store_dump(this.__wbg_ptr, options, from_graph_name);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {string} data\n * @param {any} options\n * @param {any} base_iri\n * @param {any} to_graph_name\n */\n load(data, options, base_iri, to_graph_name) {\n const ptr0 = passStringToWasm0(data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.store_load(this.__wbg_ptr, ptr0, len0, options, base_iri, to_graph_name);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {number}\n */\n get size() {\n const ret = wasm.store_size(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n }\n /**\n * @param {string} query\n * @param {any} options\n * @returns {any}\n */\n query(query, options) {\n const ptr0 = passStringToWasm0(query, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.store_query(this.__wbg_ptr, ptr0, len0, options);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {any} quad\n */\n delete(quad) {\n const ret = wasm.store_delete(this.__wbg_ptr, quad);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {string} update\n * @param {any} options\n */\n update(update, options) {\n const ptr0 = passStringToWasm0(update, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.store_update(this.__wbg_ptr, ptr0, len0, options);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) Store.prototype[Symbol.dispose] = Store.prototype.free;\n\nexport class Variable {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Variable.prototype);\n obj.__wbg_ptr = ptr;\n VariableFinalization.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 VariableFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_variable_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get value() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.variable_value(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} other\n * @returns {boolean}\n */\n equals(other) {\n const ret = wasm.variable_equals(this.__wbg_ptr, other);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get termType() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.variable_term_type(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.variable_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_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) Variable.prototype[Symbol.dispose] = Variable.prototype.free;\n\n/**\n * @param {string | null} [value]\n * @returns {BlankNode}\n */\nexport function blankNode(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.blankNode(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return BlankNode.__wrap(ret[0]);\n}\n\n/**\n * @returns {DefaultGraph}\n */\nexport function defaultGraph() {\n const ret = wasm.defaultGraph();\n return DefaultGraph.__wrap(ret);\n}\n\n/**\n * @param {any} original\n * @returns {any}\n */\nexport function fromQuad(original) {\n const ret = wasm.fromQuad(original);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {any} original\n * @returns {any}\n */\nexport function fromTerm(original) {\n const ret = wasm.fromTerm(original);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string | null | undefined} value\n * @param {any} language_or_datatype\n * @returns {Literal}\n */\nexport function literal(value, language_or_datatype) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.literal(ptr0, len0, language_or_datatype);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return Literal.__wrap(ret[0]);\n}\n\nexport function main() {\n wasm.main();\n}\n\n/**\n * @param {string} value\n * @returns {NamedNode}\n */\nexport function namedNode(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.namedNode(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return NamedNode.__wrap(ret[0]);\n}\n\n/**\n * @param {any} subject\n * @param {any} predicate\n * @param {any} object\n * @param {any} graph\n * @returns {Quad}\n */\nexport function quad(subject, predicate, object, graph) {\n const ret = wasm.quad(subject, predicate, object, graph);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return Quad.__wrap(ret[0]);\n}\n\n/**\n * @param {any} subject\n * @param {any} predicate\n * @param {any} object\n * @returns {Quad}\n */\nexport function triple(subject, predicate, object) {\n const ret = wasm.triple(subject, predicate, object);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return Quad.__wrap(ret[0]);\n}\n\n/**\n * @param {string} value\n * @returns {Variable}\n */\nexport function variable(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.variable(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return Variable.__wrap(ret[0]);\n}\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\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 && EXPECTED_RESPONSE_TYPES.has(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 {\n throw e;\n }\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\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_falsy_7b9692021c137978 = function(arg0) {\n const ret = !arg0;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_null_dfda7d66506c95b5 = function(arg0) {\n const ret = arg0 === null;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_string_704ef9c8fc131030 = function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = 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 imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_blanknode_new = function(arg0) {\n const ret = BlankNode.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_call_abb4ff46ce38be40 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_defaultgraph_new = function(arg0) {\n const ret = DefaultGraph.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_done_62ea16af4ce34b24 = function(arg0) {\n const ret = arg0.done;\n return ret;\n };\n imports.wbg.__wbg_error_7534b8e9a36f1ab4 = 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 imports.wbg.__wbg_getRandomValues_1c61fac11405ffdc = function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments) };\n imports.wbg.__wbg_get_af9dab7e9603ea93 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_has_0e670569d65d3a45 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_iterator_27b7c8b35ab3e86b = function() {\n const ret = Symbol.iterator;\n return ret;\n };\n imports.wbg.__wbg_literal_new = function(arg0) {\n const ret = Literal.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_namednode_new = function(arg0) {\n const ret = NamedNode.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_25f239778d6112b9 = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_5d6c450557b476e1 = function(arg0, arg1) {\n const ret = new URIError(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_new_b546ae120718850e = function() {\n const ret = new Map();\n return ret;\n };\n imports.wbg.__wbg_new_df1173567d5ff028 = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_next_138a17bbf04e926c = function(arg0) {\n const ret = arg0.next;\n return ret;\n };\n imports.wbg.__wbg_next_3cfe5c0fe2a4cc53 = function() { return handleError(function (arg0) {\n const ret = arg0.next();\n return ret;\n }, arguments) };\n imports.wbg.__wbg_now_69d776cd24f5215b = function() {\n const ret = Date.now();\n return ret;\n };\n imports.wbg.__wbg_push_7d9be8f38fc13975 = function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n };\n imports.wbg.__wbg_quad_new = function(arg0) {\n const ret = Quad.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_efaaf145b9377369 = function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n };\n imports.wbg.__wbg_stack_0ed75d68575b0f3c = 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 imports.wbg.__wbg_value_57b7b035e117f7ee = function(arg0) {\n const ret = arg0.value;\n return ret;\n };\n imports.wbg.__wbg_variable_new = function(arg0) {\n const ret = Variable.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_warn_abfbd6cbabf2a1e9 = function(arg0, arg1) {\n console.warn(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__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 imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n 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 (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('web_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 };\nexport default __wbg_init;\n","<template lang=\"pug\">\n CellDLEditor.grow(\n :editorCommand=\"editorCommand\"\n :theme=\"theme\"\n @editorData=\"onEditorData\"\n @error=\"onError\"\n )\n</template>\n\n<script setup lang=\"ts\">\nimport * as vue from 'vue'\n\n// Load oxigraph's WASM module before the editor is imported\nimport initOxigraph from '@oxigraph/web.js'\nimport * as oxigraph from '@oxigraph/web.js'\n\nconst CellDLEditor = vue.defineAsyncComponent(async () => {\n const wasm = await initOxigraph()\n globalThis.oxigraph = oxigraph\n return import('./CellDLEditor.vue')\n})\n\nimport type {\n CellDLEditorProps,\n EditorData\n} from '../../index'\n\nconst props = defineProps<CellDLEditorProps>()\n\nconst emit = defineEmits<{\n 'editor-data': [data: EditorData],\n 'error': [msg: string]\n}>()\n\nfunction onEditorData(data: EditorData) {\n emit('editor-data', data)\n}\n\nfunction onError(msg: string) {\n emit('error', msg)\n}\n</script>\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nimport { GRID_SNAP_RESOLUTION, GRID_SPACING } from '@editor/editor/editguides'\n\n//==============================================================================\n\nexport interface PointLike {\n x: number\n y: number\n}\n\nexport type PointArray = [number, number]\n\n//==============================================================================\n\n// Two points are considered to be the same if the square of the distance between\n// them is no bigger than POINT_EPSILON_SQUARED\n\nexport const POINT_EPSILON = 1e-4\nexport const POINT_EPSILON_SQUARED = POINT_EPSILON * POINT_EPSILON\n\n//==============================================================================\n\nexport class Point implements PointLike {\n constructor(\n readonly x: number = 0,\n readonly y: number = 0\n ) {}\n\n static fromPoint(point: PointLike): Point {\n return new Point(point.x, point.y)\n }\n\n static fromArray(coords: PointArray): Point {\n return new Point(coords[0], coords[1])\n }\n\n asArray(): PointArray {\n return [this.x, this.y]\n }\n\n add(point: PointLike): Point {\n return Point.fromPoint(PointMath.add(this, point))\n }\n\n colinear(p1: PointLike, p2: PointLike, between: boolean = false): boolean {\n return PointMath.colinear(this, p1, p2, between)\n }\n\n copy(): Point {\n return new Point(this.x, this.y)\n }\n\n distance(point: PointLike): number {\n return PointMath.distance(this, point)\n }\n\n equals(point: PointLike): boolean {\n return PointMath.equals(this, point)\n }\n\n isZero(): boolean {\n return PointMath.isZero(this)\n }\n\n apply(fn: (n: number) => number): Point {\n return Point.fromPoint(PointMath.apply(this, fn))\n }\n\n scalarScale(scale: number): Point {\n return Point.fromPoint(PointMath.scalarScale(this, scale))\n }\n\n scale(scale: PointLike): Point {\n return Point.fromPoint(PointMath.scale(this, scale))\n }\n\n snapTo(point: PointLike, snapDistance: number = (GRID_SPACING * GRID_SNAP_RESOLUTION) / 2): Point {\n return new Point(\n Math.abs(this.x - point.x) <= snapDistance ? point.x : this.x,\n Math.abs(this.y - point.y) <= snapDistance ? point.y : this.y\n )\n }\n\n subtract(point: PointLike): Point {\n return Point.fromPoint(PointMath.subtract(this, point))\n }\n\n toString(): string {\n return `(${this.x}, ${this.y})`\n }\n}\n\n//==============================================================================\n\nexport class PointMath {\n static add(p1: PointLike, p2: PointLike): Point {\n return new Point(p1.x + p2.x, p1.y + p2.y)\n }\n\n static apply(p1: PointLike, fn: (number: number) => number): Point {\n return new Point(fn(p1.x), fn(p1.y))\n }\n\n static colinear(p0: PointLike, p1: PointLike, p2: PointLike, between: boolean = false): boolean {\n const d0 = PointMath.distance(p0, p1)\n const d1 = PointMath.distance(p1, p2)\n const d2 = PointMath.distance(p0, p2)\n if (d2 > d0 && d2 > d1) {\n return d0 + d1 < d2 * (1 + POINT_EPSILON)\n } else if (between) {\n return false\n } else if (d1 > d0 && d1 > d2) {\n return d0 + d2 < d1 * (1 + POINT_EPSILON)\n } else {\n return d1 + d2 < d0 * (1 + POINT_EPSILON)\n }\n }\n\n static distance(p1: PointLike, p2: PointLike): number {\n return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2)\n }\n\n static equals(p1: PointLike, p2: PointLike): boolean {\n return (p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2 <= POINT_EPSILON_SQUARED\n }\n\n static isZero(pt: PointLike): boolean {\n return pt.x ** 2 + pt.y ** 2 <= POINT_EPSILON_SQUARED\n }\n\n static scalarScale(p1: PointLike, scale: number): Point {\n return new Point(scale * p1.x, scale * p1.y)\n }\n\n static scale(p1: PointLike, scale: PointLike): Point {\n return new Point(scale.x * p1.x, scale.y * p1.y)\n }\n\n static subtract(p1: PointLike, p2: PointLike): Point {\n return new Point(p1.x - p2.x, p1.y - p2.y)\n }\n}\n\n//==============================================================================\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nexport const EM_SIZE = 16 // Pixels, sets ``font-size`` in CellDLStylesheet\nexport const EX_SIZE = EM_SIZE / 2\n\nconst CM_PER_INCH = 2.54\nconst MM_PER_INCH = 10 * CM_PER_INCH\n\nconst POINTS_PER_INCH = 72\nconst PICAS_PER_INCH = 6\nconst PIXELS_PER_INCH = 96\n\n//==============================================================================\n\nconst __unit_scaling: Map<string, number | null> = new Map([\n ['px', 1],\n ['in', PIXELS_PER_INCH],\n ['cm', PIXELS_PER_INCH / CM_PER_INCH],\n ['mm', PIXELS_PER_INCH / MM_PER_INCH],\n ['pt', PIXELS_PER_INCH / POINTS_PER_INCH],\n ['pc', PIXELS_PER_INCH / PICAS_PER_INCH],\n ['%', null], // 1/100.0 of viewport dimension\n ['em', EM_SIZE], // em/pt depends on current font size\n ['ex', EX_SIZE] // ex/pt depends on current font size\n])\n\nconst __unit_length_re = /(.*)(em|ex|px|in|cm|mm|pt|pc|%)/\n\nexport function lengthToPixels(length: string | number | null): number | null {\n if (typeof length !== 'string') {\n return length\n }\n const match = length.match(__unit_length_re)\n if (match === null || match.length < 3) {\n return +length\n } else {\n // @ts-expect-error:\n const scaling = __unit_scaling.get(match[2])\n if (scaling !== null && scaling !== undefined) {\n // @ts-expect-error:\n return scaling * +match[1]\n }\n }\n return null\n}\n\nexport function pixelsToLength(pixels: string | number, units: string): string | null {\n const scaling = __unit_scaling.get(units)\n if (scaling !== null && scaling !== undefined) {\n return `${Math.round((+pixels * 1000) / scaling) / 1000}${units}`\n }\n return null\n}\n\n//==============================================================================\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nimport { EM_SIZE } from '@editor/geometry/units'\n\n//==============================================================================\n\nexport const CONNECTION_ARROW_SIZE = [4, 4] // [W, H] pixels\nexport const CONNECTION_SPLAY_PADDING = 16 // If <= 1.0 then fraction of elements width and height else pixels\nexport const MAX_CONNECTION_SPLAY_PADDING = 20 // pixels\n\nexport const CONNECTION_COLOUR = '#567'\nexport const OLD_CONNECTION_COLOUR = \"#334155\" // For auto update of `stroke` in <path> elements\n\nexport const CONNECTION_WIDTH = 2 // pixels\nexport const CONNECTION_DASH = 2 // * width\n\nexport const INTERFACE_PORT_RADIUS = 4 // pixels\nexport const SELECTION_STROKE_WIDTH = 3 // pixels\n\n//==============================================================================\n\nexport const CELLDL_BACKGROUND_CLASS = 'celldl-background'\n\n//==============================================================================\n\nexport function arrowMarkerDefinition(markerId: string, markerType: string): string {\n // see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker\n const W = 1\n return `<marker id=\"${markerId}\" viewBox=\"0 0 ${5.5 * W} ${5 * W}\" class=\"${markerType}\"\n refX=\"${5 * W}\" refY=\"${2.5 * W}\" orient=\"auto-start-reverse\" markerUnits=\"strokeWidth\"\n markerWidth=\"${CONNECTION_ARROW_SIZE[0]}\" markerHeight=\"${CONNECTION_ARROW_SIZE[1]}\">\n <path fill=\"context-stroke\" stroke=\"context-stroke\" d=\"M0,0 L${5.05 * W},${2.2 * W} L${5.05 * W},${2.8 * W} L0,${5 * W} L${W},${2.5 * W} z\" />\n </marker>`\n}\n\n//==============================================================================\n\nexport type GradientStop = {\n offset: string\n colour: string\n}\n\nexport function gradientDefinition(type: string, gradientId: string, stops: GradientStop[]): string {\n return `<${type}Gradient id=\"${gradientId}\">${stops\n .map((def) => `<stop offset=\"${def.offset}\" stop-color=\"${def.colour}\" />`)\n .join('\\n ')}</${type}Gradient>`\n}\n\n//==============================================================================\n\nexport const CellDLStylesheet = [\n `svg{font-size:${EM_SIZE}px}`,\n /* Conduits */\n '.celldl-Conduit{z-index:9999}',\n /* Connections */\n `.celldl-Connection{stroke-linejoin:round;fill:none}`,\n /* Compartments */\n '.celldl-Compartment>rect.compartment{fill:#CCC;opacity:0.6;stroke:#444;rx:10px;ry:10px}',\n /* Interfaces */\n `.celldl-InterfacePort{fill:red;r:${INTERFACE_PORT_RADIUS}px}`,\n `.celldl-Unconnected{fill:red;fill-opacity:0.1;stroke:red;r:${INTERFACE_PORT_RADIUS}px}`\n].join('')\n\n//==============================================================================\n","/*************************************************************************\n *\n * direct/tex2svg\n *\n * Uses MathJax v3 to convert a TeX string to an SVG string.\n *\n * ----------------------------------------------------------------------\n *\n * Copyright (c) 2018 The MathJax Consortium\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Load the packages needed for MathJax\nimport { mathjax } from '@mathjax/src/js/mathjax.js'\nimport { TeX, type TexError } from '@mathjax/src/js/input/tex.js'\nimport { SVG } from '@mathjax/src/js/output/svg.js'\nimport { liteAdaptor } from '@mathjax/src/js/adaptors/liteAdaptor.js'\nimport { RegisterHTMLHandler } from '@mathjax/src/js/handlers/html.js'\nimport { STATE } from '@mathjax/src/js/core/MathItem.js'\nimport '@mathjax/src/js/util/asyncLoad/esm.js'\n\nimport '@mathjax/src/js/input/tex/base/BaseConfiguration.js'\nimport '@mathjax/src/js/input/tex/ams/AmsConfiguration.js'\nimport '@mathjax/src/js/input/tex/color/ColorConfiguration'\nimport '@mathjax/src/js/input/tex/mhchem/MhchemConfiguration'\n\n//==============================================================================\n\nimport { EM_SIZE, EX_SIZE } from '@editor/geometry/units'\n\n//==============================================================================\n\n// Create DOM adaptor and register it for HTML documents\nconst adaptor = liteAdaptor({ fontSize: EM_SIZE })\nRegisterHTMLHandler(adaptor)\n\n//==============================================================================\n\nconst tex = new TeX({\n packages: ['base', 'ams', 'color', 'mhchem'],\n formatError(_: any, error: TexError) {\n throw Error(`LaTeX: ${error.message}`)\n }\n})\nconst svg = new SVG({\n fontCache: 'local'\n})\n\nconst html = mathjax.document('', {\n InputJax: tex,\n OutputJax: svg,\n renderActions: {\n removeLatex: [ // remove LaTeX specific attributes\n STATE.CONVERT + 1,\n () => {},\n (math: any, _doc: any) => {\n math.root.walkTree((node: any) => {\n const attributes = node.attributes\n attributes.unset('data-latex')\n attributes.unset('data-latex-item')\n })\n }\n ]\n }\n})\n\n//==============================================================================\n\nexport function latexAsSvgString(latex: string): string {\n const node = html.convert(latex, {\n display: false, // process as inline math\n em: EM_SIZE,\n ex: EX_SIZE\n })\n return adaptor.innerHTML(node)\n}\n\nexport function latexAsSvgDocument(latex: string): XMLDocument {\n const svg = latexAsSvgString(latex)\n return new DOMParser().parseFromString(svg, 'image/svg+xml')\n}\n\n//==============================================================================\n//==============================================================================\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nimport type { Pair } from '@renderer/common/types'\n\n//==============================================================================\n\nexport function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n//==============================================================================\n\nexport function round(length: number, decimalPlaces: number = 3): number {\n const tenPower = 10 ** decimalPlaces\n return Math.round(tenPower * length) / tenPower\n}\n\nexport function roundEqual(l1: number, l2: number, decimalPlaces: number = 3): boolean {\n const tenPower = 10 ** decimalPlaces\n return Math.round(tenPower * l1) / tenPower === Math.round(tenPower * l2) / tenPower\n}\n\n//==============================================================================\n\nexport function* range(startOrStop: number, stop: number | null = null, step: number | null = null) {\n if (stop === null) {\n stop = startOrStop\n startOrStop = 0\n }\n if (step === null) {\n step = 1\n }\n for (let x = startOrStop; x < stop; x += step) {\n yield x\n }\n}\n\n//==============================================================================\n\n// From https://stackoverflow.com/a/65064026\n\nexport function pairwise<T>(a: T[]): Pair<T>[] {\n return a.flatMap((x: T) => {\n return a.flatMap((y: T): Pair<T>[] => {\n return x !== y ? [[x, y]] : []\n })\n })\n}\n\n//==============================================================================\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nimport { Buffer } from 'buffer'\n\n//==============================================================================\n\nimport type { PointLike } from '@renderer/common/points'\nimport { CONNECTION_COLOUR, CONNECTION_WIDTH, CONNECTION_DASH } from '@renderer/common/styling'\nimport type { StringProperties } from '@renderer/common/types'\nimport { latexAsSvgDocument } from '@renderer/mathjax/index'\n\nimport type { Extent } from '@editor/geometry/index'\nimport { lengthToPixels, pixelsToLength } from '@editor/geometry/units'\nimport { round } from '@editor/utils'\n\n//==============================================================================\n\nexport const SVG_URI = 'http://www.w3.org/2000/svg'\n\n//==============================================================================\n\nexport interface INodeStyle {\n gradientFill: boolean\n colours: string[]\n direction?: string\n}\n\nexport interface IPathStyle {\n colour: string // defaut is CONNECTION_COLOUR (with opacity of 0.7)\n width: number // default is CONNECTION_WIDTH (but +2 when selected)\n dashed: boolean // set `dashed` class`\n}\n\n//==============================================================================\n\nexport interface LatexMathSvgOptions {\n background?: string|string[]\n border?: string\n 'border-width'?: string\n class?: string\n 'corner-radius'?: string\n 'middle-colour'?: string\n 'min-height'?: string\n 'min-width'?: string\n padding?: string\n 'vertical-align'?: string\n}\n\n//==============================================================================\n\nexport function svgSize(svgDocument: Document): PointLike | null {\n const svgElement = svgDocument.documentElement\n const width = lengthToPixels(svgElement.getAttribute('width'))\n const height = lengthToPixels(svgElement.getAttribute('height'))\n if (width && height) {\n return {\n x: width,\n y: height\n }\n }\n return null\n}\n\nexport function getViewbox(svgElement: SVGGraphicsElement): Extent {\n return svgElement\n .getAttribute('viewBox')\n ?.split(' ')\n .map((n) => +n) as Extent\n}\n\n//==============================================================================\n\ntype Attributes = StringProperties\n\nexport function createSVGElement(tagName: string, attributes: Attributes): SVGElement {\n const element = document.createElementNS(SVG_URI, tagName)\n for (const [key, value] of Object.entries(attributes)) {\n element.setAttribute(key, value)\n }\n return element\n}\n\nfunction attributePairs(attributes: Attributes): string {\n const attributePairs: string[] = []\n for (const [key, value] of Object.entries(attributes)) {\n attributePairs.push(` ${key}=\"${value}\"`)\n }\n return attributePairs.join('')\n}\n\n//==============================================================================\n\nfunction svgCircleAttributes(c: PointLike, r: number, attributes: Attributes): Attributes {\n return Object.assign({}, attributes, {\n cx: `${c.x}`,\n cy: `${c.y}`,\n r: `${r}`\n })\n}\n\nexport function svgCircle(centre: PointLike, radius: number, attributes: Attributes = {}): string {\n return `<circle${attributePairs(svgCircleAttributes(centre, radius, attributes))}/>`\n}\n\nexport function svgCircleElement(centre: PointLike, radius: number, attributes: Attributes = {}): SVGCircleElement {\n return createSVGElement('circle', svgCircleAttributes(centre, radius, attributes)) as SVGCircleElement\n}\n\n//==============================================================================\n\nexport function svgPath(points: PointLike[], attributes: Attributes = {}): string {\n const description = svgPathDescription(points)\n return description ? `<path${attributePairs(attributes)} d=\"${description}\"/>` : ''\n}\n\nexport function svgPathDescription(points: PointLike[]): string {\n const pts = points.map((pt) => `${pt.x},${pt.y}`)\n return pts.length > 1 ? `M${pts.join(' L')}` : ''\n}\n\nexport function svgPathElement(points: PointLike[], attributes: Attributes = {}): SVGPathElement {\n const description = svgPathDescription(points)\n return createSVGElement('path', Object.assign({}, attributes, { d: description })) as SVGPathElement\n}\n\n//==============================================================================\n\nfunction svgRectAttributes(tl: PointLike, br: PointLike, attributes: Attributes): Attributes {\n return Object.assign({}, attributes, {\n x: `${Math.min(tl.x, br.x)}`,\n y: `${Math.min(tl.y, br.y)}`,\n width: `${Math.abs(br.x - tl.x)}`,\n height: `${Math.abs(br.y - tl.y)}`\n })\n}\n\nexport function svgRect(topLeft: PointLike, bottomRight: PointLike, attributes: Attributes = {}): string {\n return `<rect${attributePairs(svgRectAttributes(topLeft, bottomRight, attributes))}/>`\n}\n\nexport function svgRectElement(\n topLeft: PointLike,\n bottomRight: PointLike,\n attributes: StringProperties = {}\n): SVGRectElement {\n return createSVGElement('rect', svgRectAttributes(topLeft, bottomRight, attributes)) as SVGRectElement\n}\n\n//==============================================================================\n//==============================================================================\n\n// Minimal CSS needed for stand-alone image\nexport const LatexStyleRules = [\n 'svg {color: black}', // default value of ``currentColor``\n 'svg a{fill:blue;stroke:blue}',\n // Round the corners of filled background rectangles\n '[data-mml-node=\"mstyle\"]>rect[data-bgcolor=\"true\"]{rx: 8%; ry: 12%}',\n '[data-mml-node=\"merror\"]>g{fill:red;stroke:red}',\n '[data-mml-node=\"merror\"]>rect[data-background]{fill:yellow;stroke:none}',\n '[data-frame],[data-line]{stroke-width:70px;fill:none}',\n '.mjx-dashed{stroke-dasharray:140}',\n '.mjx-dotted{stroke-linecap:round;stroke-dasharray:0,140}',\n 'use[data-c]{stroke-width:3px}'\n].join('')\n\n//==============================================================================\n\nfunction getLengthFromOptions(options: LatexMathSvgOptions, key: string): number {\n // @ts-expect-error: `key` is an option\n const length = key in options ? lengthToPixels(options[key]) : null\n return length || 0\n}\n\n//==============================================================================\n\nfunction latexToSvgRect(latex: string, suffix: string,\n options: LatexMathSvgOptions={},\n includeStyleRules:boolean=false): string\n{\n let svgDocument = latexAsSvgDocument(latex)\n let svgElement: SVGSVGElement = (<Element>svgDocument.documentElement) as SVGSVGElement\n const svgWidth = lengthToPixels(svgElement.getAttribute('width')) || 0\n const svgHeight = lengthToPixels(svgElement.getAttribute('height')) || 0\n const gradient: string[] = []\n if (svgWidth && svgHeight) {\n let viewBox = getViewbox(svgElement)\n const scale = [viewBox[2]/svgWidth, viewBox[3]/svgHeight]\n const border = ('border' in options) ? getLengthFromOptions(options, 'border-width') : 0\n const padding = getLengthFromOptions(options, 'padding')\n let width = scale[0]!*Math.max(2*border + 2*padding + svgWidth, getLengthFromOptions(options, 'min-width'))\n const extrawidth = width - scale[0]!*svgWidth\n const left = viewBox[0] - extrawidth/2\n let right = left + width\n\n let height = scale[1]!*Math.max(2*border + 2*padding + svgHeight, getLengthFromOptions(options, 'min-height'))\n const extraHeight = height - scale[1]!*svgHeight\n let top = viewBox[1] - extraHeight/2\n let bottom = top + height\n\n const rectSize = ` width=\"${round(width-2*border*scale[0]!)}\" height=\"${round(height-2*border*scale[1]!)}\"`\n if (suffix !== '') {\n const suffixLatex = (suffix !== '') ? `\\\\;${suffix}` : ''\n svgDocument = latexAsSvgDocument(`${latex}${suffixLatex}`)\n svgElement = (<Element>svgDocument.documentElement) as SVGSVGElement\n viewBox = getViewbox(svgElement)\n right = Math.max(right, viewBox[0] + viewBox[2] + scale[0]!*padding)\n top = Math.min(top, viewBox[1] - scale[1]!*(padding + border))\n bottom = Math.max(bottom, viewBox[1] + viewBox[3] + scale[1]!*(padding + border))\n\n // We add `data-centre-x` and `data-centre-y` attributes to the root <svg> element,\n // giving the ratios needed to find the centre of the unsuffixed text.\n svgElement.dataset.centreX = `${round(0.5*width/(right - left))}`\n svgElement.dataset.centreY = `${round(0.5*height/(bottom - top))}`\n width = right - left\n height = bottom - top\n }\n let verticalAlign = scale[1]!*getLengthFromOptions(options, 'vertical-align')\n if (verticalAlign) {\n bottom = -verticalAlign\n top = bottom - height\n } else {\n verticalAlign = -bottom\n }\n svgElement.style.setProperty('vertical-align', pixelsToLength(verticalAlign/scale[1]!, 'ex'))\n viewBox[0] = round(left)\n viewBox[1] = round(top)\n viewBox[2] = round(width)\n viewBox[3] = round(height)\n svgElement.setAttribute('viewBox', viewBox.map(n => '' + n).join(' '))\n svgElement.setAttribute('width', pixelsToLength(width/scale[0]!, 'ex')!)\n svgElement.setAttribute('height', pixelsToLength(height/scale[1]!, 'ex')!)\n\n let fill: string\n const dataFillStyle: string[] = []\n if (!options.background) {\n fill = 'transparent'\n dataFillStyle.push(fill)\n } else if (Array.isArray(options.background)) {\n const stopColours: string[] = [...options.background]\n let direction = 'H'\n if (stopColours.length && ['H', 'V'].includes(stopColours[0]!)) {\n direction = stopColours.shift()!\n }\n if (stopColours.length === 0) {\n fill = 'transparent'\n dataFillStyle.push(fill)\n } else if (stopColours.length === 1) {\n fill = stopColours[0]!.trim()\n dataFillStyle.push(fill)\n } else {\n dataFillStyle.push(direction)\n const gradientFillId = 'fill'\n const transform = (direction === 'V') ? 'gradientTransform=\"rotate(90)\"' : ''\n gradient.push(`<linearGradient id=\"${gradientFillId}\" ${transform}>`)\n if (stopColours.length === 2 && options['middle-colour']) {\n let colour = stopColours[0]!.trim()\n gradient.push(`<stop stop-color=\"${colour}\" offset=\"0%\"/>`)\n dataFillStyle.push(colour)\n gradient.push(`<stop stop-color=\"${options['middle-colour']}\" offset=\"50%\"/>`)\n colour = stopColours[1]!.trim()\n gradient.push(`<stop stop-color=\"${colour}\" offset=\"100%\"/>`)\n dataFillStyle.push(colour)\n } else {\n const stops = stopColours.length - 1\n stopColours.forEach((colour: string, index: number) => {\n colour = colour.trim()\n gradient.push(`<stop stop-color=\"${colour}\" offset=\"${100*index/stops}%\"/>`)\n dataFillStyle.push(colour)\n })\n }\n gradient.push('</linearGradient>')\n fill = `url(#${gradientFillId})`\n }\n } else {\n fill = options.background.trim()\n dataFillStyle.push(fill)\n }\n const stroke = border ? ` stroke=\"${options['border']}\" stroke-width=\"${round(scale[0]!*border)}\"` : ''\n const radius = getLengthFromOptions(options, 'corner-radius');\n const cornerRadius = radius ? ` rx=\"${round(radius*scale[0]!)}\"` : ''\n const topLeft = `x=\"${round(viewBox[0]+border*scale[0]!)}\" y=\"${round(viewBox[1]+border*scale[1]!)}\"`\n const rectClass = options.class ? ` class=\"${options['class']}\"` : ''\n const bgRect = `<rect ${topLeft}${rectSize} fill=\"${fill}\" data-fill-style=\"${dataFillStyle.join(' ')}\"${stroke}${cornerRadius}${rectClass}></rect>`\n svgElement.firstElementChild!.insertAdjacentHTML('afterend', bgRect)\n\n if (suffix !== '') {\n const topLeft = `x=\"${viewBox[0]+border*scale[0]!}\" y=\"${viewBox[1]+border*scale[1]!}\"`;\n const boundingRect = `<rect ${topLeft} width=\"${width-2*border*scale[0]!}\"\n height=\"${height-2*border*scale[1]!}\"></rect>`\n svgElement.insertAdjacentHTML('afterbegin', boundingRect)\n }\n }\n const svgSerialiser = new XMLSerializer()\n let svg = svgSerialiser.serializeToString(svgDocument)\n if (gradient.length) {\n svg = svg.replace(/<defs>/, `<defs>${gradient.join('')}`)\n }\n return includeStyleRules ? svg.replace(/<defs>/, `<defs><style>${LatexStyleRules}</style>`) : svg\n}\n\n//==============================================================================\n\nexport class LatexMathSvg {\n static #svgCache: Map<string, string> = new Map()\n\n static svgRect(latex: string, suffix: string = '', options: LatexMathSvgOptions = {}): string {\n let svg = ''\n const key = `${latex}${suffix}-${JSON.stringify(options)}`\n if (LatexMathSvg.#svgCache.has(key)) {\n svg = LatexMathSvg.#svgCache.get(key)!\n } else {\n svg = latexToSvgRect(latex, suffix, options)\n LatexMathSvg.#svgCache.set(key, svg)\n }\n return svg\n }\n}\n\n//==============================================================================\n\nexport function base64Svg(svg: string): string {\n return `data:image/svg+xml;base64,${Buffer.from(svg, 'utf8').toString('base64')}`\n}\n\n//==============================================================================\n\nexport function getSvgImageFromBase64(svgText: string): string|undefined {\n const base64 = svgText.match(/data:image\\/svg\\+xml;base64,(?<base64>.*)/)\n if (base64) {\n return Buffer.from(base64.groups!.base64!, 'base64').toString('utf8')\n }\n}\n\n//==============================================================================\n\nexport function getSvgFillStyle(svgText: string): string[] {\n const dataUrl = svgText.match(/<image href=\"(?<dataUrl>.*)\"><\\/image>/)\n if (!dataUrl) {\n return []\n }\n const svgData = getSvgImageFromBase64(dataUrl.groups!.dataUrl!)\n if (svgData) {\n const fillStyle = svgData.match(/ data-fill-style=\"(?<fillStyle>[^\"]*)\"/)\n if (fillStyle) {\n return fillStyle.groups!.fillStyle!.split(' ')\n }\n const fill = svgData.match(/ fill=\"(?<fill>[^\"]*)\"/)\n if (fill && !fill.groups!.fill!.startsWith('url(')) {\n return fill\n }\n // Shouldn't get here...\n return ['yellow']\n }\n return []\n}\n\n//==============================================================================\n\nexport function getSvgPathStyle(svgElement: SVGGraphicsElement): IPathStyle {\n return {\n colour: svgElement.getAttribute('stroke') || CONNECTION_COLOUR,\n width: lengthToPixels(svgElement.getAttribute('stroke-width')) || CONNECTION_WIDTH,\n dashed: svgElement.hasAttribute('stroke-dasharray')\n }\n}\n\nexport function setSvgPathStyle(svgElement: SVGGraphicsElement, pathStyle: IPathStyle) {\n svgElement.setAttribute('stroke', pathStyle.colour)\n svgElement.setAttribute('stroke-width', String(pathStyle.width))\n if (pathStyle.dashed) {\n svgElement.setAttribute('stroke-dasharray', String(CONNECTION_DASH*pathStyle.width))\n } else {\n svgElement.removeAttribute('stroke-dasharray')\n }\n}\n\n//==============================================================================\n//==============================================================================\n","/******************************************************************************\n\nCellDL Editor\n\nCopyright (c) 2022 - 2025 David Brooks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n******************************************************************************/\n\nimport type { ViewState } from '@renderer/common/EditorTypes'\nimport { Point, type PointLike } from '@renderer/common/points'\nimport { getViewbox, SVG_URI } from '@renderer/common/svgUtils'\nimport type { CellDLDiagram } from '@editor/diagram/index'\nimport type { CellDLMoveableObject } from '@editor/celldlObjects/index'\nimport type { Extent } from '@editor/geometry/index'\nimport { range } from '@editor/utils'\n\n//==============================================================================\n\nexport const EDITOR_GRID_CLASS = 'alignment-grid'\n\nexport const GRID_SNAP_RESOLUTION = 0.5 // Fraction of GRID_SPACING\nexport const GRID_SPACING = 10 // Pixels\n\n// Within EPSILON pixels apart is considered to be aligned\nconst EPSILON = 0.1\n\n//==============================================================================\n\n// Menu options and/or panel dialog\n//\n// Grid on/off\n// Grid spacing, pattern (major/minor)\n//\n// Component guides -- centre, edges\n//\n// Dragable guides from frame\n//\n// Snap centre, edges to guides/grid\n//\n\n//==============================================================================\n\nexport type GridAlignOptions = {\n fullSnap?: boolean\n noAlign?: boolean\n noAlignX?: boolean\n noAlignY?: boolean\n resolution?: number\n snapGrid?: boolean\n}\n\ntype GridOptions = {\n gridSpacing: number // pixels\n resolution: number\n snapGrid: boolean\n fullSnap: boolean\n}\n\n// Needs to match what's passed to the CellDLEditor component as `viewState`\n\nconst defaultGridOptions: GridOptions = {\n gridSpacing: GRID_SPACING,\n resolution: GRID_SNAP_RESOLUTION,\n snapGrid: true,\n fullSnap: true,\n}\n\nexport const DEFAULT_VIEW_STATE: ViewState = {\n showGrid: true,\n gridSpacing: GRID_SPACING,\n snapToGrid: defaultGridOptions.snapGrid ? (defaultGridOptions.fullSnap ? 1 : 0.5) : 0\n}\n\n//==============================================================================\n\nclass AlignmentGrid {\n #options: GridOptions\n #gridSpacing: number\n #gridLinesElement: SVGPathElement | null = null\n\n constructor(celldlDiagram: CellDLDiagram, options = {}) {\n this.#options = {...defaultGridOptions, ...options}\n this.#gridSpacing = +(this.#options.gridSpacing || 0)\n if (this.#gridSpacing) {\n const viewbox = getViewbox(celldlDiagram.svgDiagram)\n this.#gridLinesElement = this.#lineElement(this.#gridLines(viewbox))\n celldlDiagram.addEditorElement(this.#gridLinesElement, true)\n this.redraw(viewbox)\n }\n }\n\n #lineElement(lineDescription: string): SVGPathElement {\n const pathElement = document.createElementNS(SVG_URI, 'path')\n pathElement.classList.add(EDITOR_GRID_CLASS)\n pathElement.setAttribute('d', lineDescription)\n return pathElement\n }\n\n #gridMultiple(x: number): number {\n return this.#gridSpacing * Math.round(x / this.#gridSpacing)\n }\n\n #gridLines(viewbox: Extent) {\n const left = this.#gridMultiple(viewbox[0] - this.#gridSpacing)\n const top = this.#gridMultiple(viewbox[1] - this.#gridSpacing)\n const right = this.#gridMultiple(viewbox[0] + viewbox[2] + this.#gridSpacing)\n const bottom = this.#gridMultiple(viewbox[1] + viewbox[3] + this.#gridSpacing)\n return [\n ...[...range(top, bottom, this.#gridSpacing)].map((y) => `M${left},${y}L${right},${y}`),\n ...[...range(left, right, this.#gridSpacing)].map((x) => `M${x},${top}L${x},${bottom}`)\n ].join(' ')\n }\n\n #fullAlign(x: number): number {\n return this.#options.gridSpacing * Math.round(x / this.#options.gridSpacing)\n }\n\n #partAlign(x: number, resolution: number): number {\n // We make the grid 2x finer and so only snap\n // if within +/-25% of original grid.\n const sp = resolution * this.#options.gridSpacing\n const a = sp * Math.round(x / sp)\n return a % this.#options.gridSpacing === 0 ? a : x\n }\n\n align(point: PointLike, options: GridAlignOptions = {}): Point {\n const alignOptions = {...this.#options, ...options}\n if (alignOptions.snapGrid && alignOptions.gridSpacing !== 0) {\n const alignMethod = alignOptions.fullSnap ? this.#fullAlign.bind(this) : this.#partAlign.bind(this)\n const resolution = alignOptions.resolution\n if (options.noAlign || (options.noAlignX && options.noAlignY)) {\n return Point.fromPoint(point)\n } else if (!options.noAlignX && !options.noAlignY) {\n return new Point(alignMethod(point.x, resolution), alignMethod(point.y, resolution))\n } else if (options.noAlignX) {\n return new Point(point.x, alignMethod(point.y, resolution))\n } else if (options.noAlignY) {\n return new Point(alignMethod(point.x, resolution), point.y)\n }\n }\n return Point.fromPoint(point)\n }\n\n setOptions(options = {}) {\n this.#options = {...this.#options, ...options}\n }\n\n show(visible: boolean = true) {\n if (this.#gridLinesElement) {\n if (visible) {\n this.#gridLinesElement.removeAttribute('visibility')\n } else {\n this.#gridLinesElement.setAttribute('visibility', 'hidden')\n }\n }\n }\n\n redraw(viewbox: Extent) {\n if (this.#gridLinesElement) {\n this.#gridLinesElement.setAttribute('d', this.#gridLines(viewbox))\n }\n }\n}\n\n//==============================================================================\n\nclass IntervalGuide {\n #centre: number\n #svgElement: SVGPathElement\n #useCount: number = 0\n\n constructor(position: number, type: string, extent: [number, number]) {\n this.#centre = position\n this.#useCount = 1\n this.#svgElement = document.createElementNS(SVG_URI, 'path')\n this.#svgElement.classList.add('alignment-guide')\n if (type === 'H') {\n this.#svgElement.setAttribute('d', `M${extent[0]},${position}h${extent[1]}`)\n } else {\n this.#svgElement.setAttribute('d', `M${position},${extent[0]}v${extent[1]}`)\n }\n }\n\n get centre() {\n return this.#centre\n }\n\n get svgElement() {\n return this.#svgElement\n }\n\n get useCount() {\n return this.#useCount\n }\n\n addUser() {\n this.#useCount += 1\n }\n\n removeUser() {\n this.#useCount -= 1\n if (this.#useCount <= 0) {\n this.#svgElement.remove()\n }\n }\n\n show(visible: boolean = true) {\n if (visible) {\n this.#svgElement.classList.add('visible')\n } else {\n this.#svgElement.classList.remove('visible')\n }\n }\n}\n\n//==============================================================================\n\nclass ComponentGuideGroup {\n #svgGroup: SVGGElement\n #intervalGuides: IntervalGuide[] = []\n #lastMatched: IntervalGuide | null = null\n #extent: [number, number]\n #type: string // 'H' | 'V'\n\n constructor(type: string, extent: [number, number]) {\n this.#svgGroup = document.createElementNS(SVG_URI, 'g')\n this.#svgGroup.id = `${type}-alignment-guides`\n this.#extent = extent\n this.#type = type\n }\n\n get svgGroup() {\n return this.#svgGroup\n }\n\n add(position: number): IntervalGuide {\n const n = this.match(position)\n let guide: IntervalGuide\n if (n >= 0) {\n // @ts-expect-error: `n` is a valid index\n guide = this.#intervalGuides[n]\n guide.addUser()\n } else {\n guide = new IntervalGuide(position, this.#type, this.#extent)\n this.#intervalGuides.splice(-(n + 1), 0, guide)\n this.#svgGroup.appendChild(guide.svgElement)\n }\n return guide\n }\n\n match(position: number): number {\n if (this.#lastMatched !== null) {\n this.#lastMatched.show(false)\n this.#lastMatched = null\n }\n let L = 0\n let R = this.#intervalGuides.length - 1\n while (L <= R) {\n const m = Math.floor((L + R) / 2)\n // @ts-expect-error: `m` is a valid index\n const delta = position - this.#intervalGuides[m].centre\n if (Math.abs(delta) < EPSILON) {\n return m\n } else if (delta < 0) {\n R = m - 1\n } else if (delta > 0) {\n L = m + 1\n }\n }\n // want position at which to insert new interval guide (L+1)\n return -(L + 1)\n }\n\n remove(position: number) {\n const n = this.match(position)\n if (n >= 0) {\n // @ts-expect-error: `n` is a valid index\n this.#intervalGuides[n].removeUser()\n // @ts-expect-error: `n` is a valid index\n if (this.#intervalGuides[n].useCount <= 0) {\n this.#intervalGuides.splice(n, 1)\n }\n }\n }\n\n show(position: number): number | null {\n const guideIndex = this.match(position)\n if (guideIndex >= 0) {\n // @ts-expect-error: `guideIndex` is a valid index\n this.#lastMatched = this.#intervalGuides[guideIndex]\n // @ts-expect-error: `guideIndex` is a valid index\n this.#lastMatched.show()\n // @ts-expect-error: `guideIndex` is a valid index\n return this.#lastMatched.centre\n } else {\n return 0\n }\n }\n\n setTransform(viewbox: Extent) {\n if (this.#type === 'H') {\n const scale = viewbox[2] / this.#extent[1]\n this.#svgGroup.setAttribute(\n 'transform',\n `matrix(${scale}, 0, 0, 1, ${viewbox[0] - scale * this.#extent[0]}, 0)`\n )\n } else {\n const scale = viewbox[3] / this.#extent[1]\n this.#svgGroup.setAttribute(\n 'transform',\n `matrix(1, 0, 0, ${scale}, 0, ${viewbox[1] - scale * this.#extent[0]})`\n )\n }\n }\n}\n\n//==============================================================================\n\nclass ComponentGuides {\n #horizontalGuideGroup: ComponentGuideGroup\n #verticalGuideGroup: ComponentGuideGroup\n #knownComponents: Set<CellDLMoveableObject> = new Set()\n\n constructor(celldlDiagram: CellDLDiagram) {\n const extent = getViewbox(celldlDiagram.svgDiagram)\n this.#horizontalGuideGroup = new ComponentGuideGroup('H', [extent[0], extent[2]])\n this.#verticalGuideGroup = new ComponentGuideGroup('V', [extent[1], extent[3]])\n celldlDiagram.addEditorElement(this.#horizontalGuideGroup.svgGroup)\n celldlDiagram.addEditorElement(this.#verticalGuideGroup.svgGroup)\n }\n\n addComponent(component: CellDLMoveableObject) {\n if (!this.#knownComponents.has(component)) {\n const centroid = component.celldlSvgElement!.centroid\n this.#horizontalGuideGroup.add(centroid.y)\n this.#verticalGuideGroup.add(centroid.x)\n this.#knownComponents.add(component)\n }\n }\n\n matchGuide(component: CellDLMoveableObject): Array<number | null> {\n this.removeComponent(component)\n const centroid = component.celldlSvgElement!.centroid\n return [this.#horizontalGuideGroup.show(centroid.y), this.#verticalGuideGroup.show(centroid.x)]\n }\n\n removeComponent(component: CellDLMoveableObject) {\n if (this.#knownComponents.has(component)) {\n const centroid = component.celldlSvgElement!.centroid\n this.#horizontalGuideGroup.remove(centroid.y)\n this.#verticalGuideGroup.remove(centroid.x)\n this.#knownComponents.delete(component)\n }\n }\n\n setTransform(viewbox: Extent) {\n this.#horizontalGuideGroup.setTransform(viewbox)\n this.#verticalGuideGroup.setTransform(viewbox)\n }\n}\n\n//==============================================================================\n\nclass EditGuides {\n static #instance: EditGuides | null = null\n\n #alignmentGrid: AlignmentGrid | null = null\n #componentGuides: ComponentGuides | null = null\n\n private constructor() {\n if (EditGuides.#instance) {\n throw new Error('Use EditGuides.instance instead of `new`')\n }\n EditGuides.#instance = this\n }\n\n static get instance() {\n if (!EditGuides.#instance) {\n EditGuides.#instance = new EditGuides()\n }\n return EditGuides.#instance\n }\n\n gridAlign(point: PointLike, options: GridAlignOptions = {}): Point {\n return this.#alignmentGrid ? this.#alignmentGrid.align(point, options) : Point.fromPoint(point)\n }\n\n addGuide(component: CellDLMoveableObject) {\n if (this.#componentGuides) {\n this.#componentGuides.addComponent(component)\n }\n }\n\n matchGuide(component: CellDLMoveableObject): Array<number | null> {\n return this.#componentGuides ? this.#componentGuides.matchGuide(component) : [null, null]\n }\n\n newDiagram(celldlDiagram: CellDLDiagram, showGrid: boolean) {\n this.#alignmentGrid = new AlignmentGrid(celldlDiagram)\n this.setState({showGrid: showGrid})\n this.#componentGuides = new ComponentGuides(celldlDiagram)\n }\n\n setState(state: ViewState) {\n if (this.#alignmentGrid) {\n if (state.showGrid !== undefined) {\n this.#alignmentGrid.show(state.showGrid)\n }\n if (state.snapToGrid !== undefined) {\n this.#alignmentGrid.setOptions({\n snapGrid: state.snapToGrid > 0,\n fullSnap: state.snapToGrid === 1\n })\n }\n }\n }\n\n viewboxUpdated(viewbox: Extent) {\n if (this.#alignmentGrid) {\n this.#alignmentGrid.redraw(viewbox)\n }\n if (this.#componentGuides) {\n this.#componentGuides.setTransform(viewbox)\n }\n }\n\n removeGuide(component: CellDLMoveableObject) {\n if (this.#componentGuides) {\n this.#componentGuides.removeComponent(component)\n }\n }\n}\n\n//==============================================================================\n\nexport const editGuides = EditGuides.instance\n\n//==============================================================================\n"],"names":["wasm","addToExternrefTable0","obj","idx","getArrayJsValueFromWasm0","ptr","len","mem","getDataViewMemory0","result","i","getArrayU8FromWasm0","getUint8ArrayMemory0","cachedDataViewMemory0","getStringFromWasm0","decodeText","cachedUint8ArrayMemory0","handleError","f","args","e","isLikeNone","x","passStringToWasm0","arg","malloc","realloc","buf","cachedTextEncoder","WASM_VECTOR_LEN","offset","code","view","ret","takeFromExternrefTable0","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","BlankNodeFinalization","DefaultGraphFinalization","LiteralFinalization","NamedNodeFinalization","QuadFinalization","StoreFinalization","VariableFinalization","BlankNode","deferred1_0","deferred1_1","other","DefaultGraph","Literal","NamedNode","Quad","Store","subject","predicate","object","graph_name","v1","quad","quads","options","from_graph_name","deferred2_0","deferred2_1","ptr1","len1","data","base_iri","to_graph_name","ptr0","len0","query","update","Variable","blankNode","defaultGraph","fromQuad","original","fromTerm","literal","language_or_datatype","main","namedNode","graph","triple","variable","EXPECTED_RESPONSE_TYPES","__wbg_load","module","imports","bytes","instance","__wbg_get_imports","arg0","arg1","val","deferred0_0","deferred0_1","arg2","table","__wbg_finalize_init","__wbg_init","initSync","module_or_path","CellDLEditor","vue","initOxigraph","oxigraph","emit","__emit","onEditorData","onError","msg","POINT_EPSILON","POINT_EPSILON_SQUARED","Point","y","point","coords","PointMath","p1","p2","between","fn","scale","snapDistance","GRID_SPACING","GRID_SNAP_RESOLUTION","p0","d0","d1","d2","pt","EM_SIZE","EX_SIZE","CM_PER_INCH","MM_PER_INCH","POINTS_PER_INCH","PICAS_PER_INCH","PIXELS_PER_INCH","__unit_scaling","__unit_length_re","lengthToPixels","length","match","scaling","pixelsToLength","pixels","units","CONNECTION_ARROW_SIZE","CONNECTION_SPLAY_PADDING","MAX_CONNECTION_SPLAY_PADDING","CONNECTION_COLOUR","OLD_CONNECTION_COLOUR","CONNECTION_WIDTH","CONNECTION_DASH","INTERFACE_PORT_RADIUS","SELECTION_STROKE_WIDTH","CELLDL_BACKGROUND_CLASS","arrowMarkerDefinition","markerId","markerType","CellDLStylesheet","adaptor","liteAdaptor","RegisterHTMLHandler","tex","TeX","_","error","svg","SVG","html","mathjax","STATE","math","_doc","node","attributes","latexAsSvgString","latex","latexAsSvgDocument","round","decimalPlaces","tenPower","roundEqual","l1","l2","range","startOrStop","stop","step","SVG_URI","getViewbox","svgElement","n","createSVGElement","tagName","element","key","attributePairs","svgCircleAttributes","c","r","svgCircle","centre","radius","svgCircleElement","svgPath","points","description","svgPathDescription","pts","svgPathElement","svgRectAttributes","tl","br","svgRect","topLeft","bottomRight","svgRectElement","LatexStyleRules","getLengthFromOptions","latexToSvgRect","suffix","includeStyleRules","svgDocument","svgWidth","svgHeight","gradient","viewBox","border","padding","width","extrawidth","left","right","height","extraHeight","top","bottom","rectSize","suffixLatex","verticalAlign","fill","dataFillStyle","stopColours","direction","gradientFillId","transform","colour","stops","index","stroke","cornerRadius","rectClass","bgRect","boundingRect","LatexMathSvg","#svgCache","base64Svg","Buffer","getSvgImageFromBase64","svgText","base64","getSvgFillStyle","dataUrl","svgData","fillStyle","getSvgPathStyle","setSvgPathStyle","pathStyle","EDITOR_GRID_CLASS","EPSILON","defaultGridOptions","DEFAULT_VIEW_STATE","AlignmentGrid","#options","#gridSpacing","#gridLinesElement","celldlDiagram","viewbox","#lineElement","#gridLines","lineDescription","pathElement","#gridMultiple","#fullAlign","#partAlign","resolution","sp","a","alignOptions","alignMethod","visible","IntervalGuide","#centre","#svgElement","#useCount","position","type","extent","ComponentGuideGroup","#svgGroup","#intervalGuides","#lastMatched","#extent","#type","guide","L","R","m","delta","guideIndex","ComponentGuides","#horizontalGuideGroup","#verticalGuideGroup","#knownComponents","component","centroid","EditGuides","#instance","#alignmentGrid","#componentGuides","showGrid","state","editGuides"],"mappings":"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"}