mind-elixir 5.1.0 → 5.2.0-beta.1

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 (54) hide show
  1. package/LICENSE +21 -21
  2. package/dist/MindElixir.iife.js +9 -10
  3. package/dist/MindElixir.js +839 -829
  4. package/dist/MindElixirLite.iife.js +14 -15
  5. package/dist/MindElixirLite.js +690 -680
  6. package/dist/example.iife.js +7 -2
  7. package/dist/example.js +78 -19
  8. package/dist/style.css +1 -1
  9. package/dist/types/{arrow.d.ts → src/arrow.d.ts} +1 -1
  10. package/dist/types/src/dev.d.ts +1 -0
  11. package/dist/types/src/exampleData/1.d.ts +3 -0
  12. package/dist/types/{index.d.ts → src/index.d.ts} +13 -14
  13. package/dist/types/{methods.d.ts → src/methods.d.ts} +10 -10
  14. package/dist/types/{nodeOperation.d.ts → src/nodeOperation.d.ts} +1 -1
  15. package/dist/types/{plugin → src/plugin}/keypress.d.ts +1 -1
  16. package/dist/types/{summary.d.ts → src/summary.d.ts} +3 -2
  17. package/dist/types/{types → src/types}/dom.d.ts +2 -1
  18. package/dist/types/{types → src/types}/index.d.ts +4 -2
  19. package/dist/types/src/utils/index.d.ts +440 -0
  20. package/dist/types/{utils → src/utils}/pubsub.d.ts +2 -2
  21. package/dist/types/{utils → src/utils}/svg.d.ts +15 -5
  22. package/package.json +107 -105
  23. package/readme.md +432 -432
  24. package/dist/types/dev.d.ts +0 -1
  25. package/dist/types/exampleData/1.d.ts +0 -3
  26. package/dist/types/exampleData/markdown.d.ts +0 -8
  27. package/dist/types/utils/index.d.ts +0 -40
  28. package/dist/types/utils/markdown.d.ts +0 -25
  29. /package/dist/types/{const.d.ts → src/const.d.ts} +0 -0
  30. /package/dist/types/{docs.d.ts → src/docs.d.ts} +0 -0
  31. /package/dist/types/{exampleData → src/exampleData}/1.cn.d.ts +0 -0
  32. /package/dist/types/{exampleData → src/exampleData}/2.d.ts +0 -0
  33. /package/dist/types/{exampleData → src/exampleData}/3.d.ts +0 -0
  34. /package/dist/types/{exampleData → src/exampleData}/htmlText.d.ts +0 -0
  35. /package/dist/types/{i18n.d.ts → src/i18n.d.ts} +0 -0
  36. /package/dist/types/{interact.d.ts → src/interact.d.ts} +0 -0
  37. /package/dist/types/{linkDiv.d.ts → src/linkDiv.d.ts} +0 -0
  38. /package/dist/types/{mouse.d.ts → src/mouse.d.ts} +0 -0
  39. /package/dist/types/{plugin → src/plugin}/contextMenu.d.ts +0 -0
  40. /package/dist/types/{plugin → src/plugin}/exportImage.d.ts +0 -0
  41. /package/dist/types/{plugin → src/plugin}/nodeDraggable.d.ts +0 -0
  42. /package/dist/types/{plugin → src/plugin}/operationHistory.d.ts +0 -0
  43. /package/dist/types/{plugin → src/plugin}/selection.d.ts +0 -0
  44. /package/dist/types/{plugin → src/plugin}/toolBar.d.ts +0 -0
  45. /package/dist/types/{types → src/types}/global.d.ts +0 -0
  46. /package/dist/types/{utils → src/utils}/LinkDragMoveHelper.d.ts +0 -0
  47. /package/dist/types/{utils → src/utils}/dom.d.ts +0 -0
  48. /package/dist/types/{utils → src/utils}/domManipulation.d.ts +0 -0
  49. /package/dist/types/{utils → src/utils}/dragMoveHelper.d.ts +0 -0
  50. /package/dist/types/{utils → src/utils}/generateBranch.d.ts +0 -0
  51. /package/dist/types/{utils → src/utils}/layout-ssr.d.ts +0 -0
  52. /package/dist/types/{utils → src/utils}/layout.d.ts +0 -0
  53. /package/dist/types/{utils → src/utils}/objectManipulation.d.ts +0 -0
  54. /package/dist/types/{utils → src/utils}/theme.d.ts +0 -0
@@ -1,3 +1,8 @@
1
1
  var example=function(){"use strict";return{nodeData:{id:"me-root",topic:"Mind Elixir",tags:["Mind Map Core"],children:[{topic:"logo2",id:"56dae51a90d350a8",direction:0,expanded:!0,children:[{id:"use-image",topic:"mind-elixir",image:{url:"https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png",height:100,width:90,fit:"contain"}}]},{topic:"What is Mind Elixir",id:"bd4313fbac40284b",direction:0,expanded:!0,children:[{topic:"A mind map core",id:"beeb823afd6d2114"},{topic:"Free",id:"c1f068377de9f3a0"},{topic:"Open-Source",id:"c1f06d38a09f23ca"},{topic:"Framework agnostic",id:"c1f06e4cbcf16463",expanded:!0,children:[{topic:"Use without JavaScript framework",id:"c1f06e4cbcf16464"},{topic:"Pluginable",id:"c1f06e4cbcf16465"}]},{topic:"Use in your own project",id:"c1f1f11a7fbf7550",children:[{topic:"import MindElixir from 'mind-elixir'",id:"c1f1e245b0a89f9b"},{topic:"new MindElixir({...}).init(data)",id:"c1f1ebc7072c8928"}]},{topic:"Key Features",id:"c1f0723c07b408d7",expanded:!0,children:[{topic:"Fluent UX",id:"c1f09612fd89920d"},{topic:"Well designed",id:"c1f09612fd89920e"},{topic:"Mobile friendly",id:"c1f09612fd89920f"},{topic:"Lightweight & High performance",id:"c1f09612fd899210"}]}]},{topic:"Efficient Shortcuts",id:"bd1b66c4b56754d9",direction:0,expanded:!0,children:[{topic:"Tab - Create a child node",id:"bd1b6892bcab126a"},{topic:"Enter - Create a sibling node",id:"bd1b6b632a434b27"},{topic:"F1 - Center the Map",id:"bd1b983085187c0a"},{topic:"F2 - Begin Editing",id:"bd1b983085187c0b"},{topic:"Ctrl + C/V - Copy/Paste",id:"bd1b983085187c0c"},{topic:"Ctrl + +/- - Zoom In/Out",id:"bd1b983085187c0d"}]},{topic:"Advanced Features",id:"bd1b66c4b56754da",direction:0,expanded:!0,children:[{topic:"Bulk operations supported",id:"bd1b6892bcab126b",tags:["New"]},{topic:"Undo / Redo",id:"bd1b6b632a434b28",tags:["New"]},{topic:"Summarize nodes",id:"bd1b983085187c0e"},{topic:"Easily Styling with CSS variables",id:"bd1b983085187c0f",tags:["New"]}]},{topic:"Focus mode",id:"bd1b9b94a9a7a913",direction:1,expanded:!0,children:[{topic:"Right click and select Focus Mode",id:"bd1bb2ac4bbab458"},{topic:"Right click and select Cancel Focus Mode",id:"bd1bb4b14d6697c3"}]},{topic:"Left menu",id:"bd1b9d1816ede134",direction:0,expanded:!0,children:[{topic:"Node distribution",id:"bd1ba11e620c3c1a",expanded:!0,children:[{topic:"Left",id:"bd1c1cb51e6745d3"},{topic:"Right",id:"bd1c1e12fd603ff6"},{topic:"Both l & r",id:"bd1c1f03def5c97b"}]}]},{topic:"Bottom menu",id:"bd1ba66996df4ba4",direction:1,expanded:!0,children:[{topic:"Full screen",id:"bd1ba81d9bc95a7e"},{topic:"Return to Center",id:"bd1babdd5c18a7a2"},{topic:"Zoom in",id:"bd1bae68e0ab186e"},{topic:"Zoom out",id:"bd1bb06377439977"}]},{topic:"Link",id:"bd1beff607711025",direction:0,expanded:!0,children:[{topic:"Right click and select Link",id:"bd1bf320da90046a"},{topic:"Click the target you want to link",id:"bd1bf6f94ff2e642"},{topic:"Modify link with control points",id:"bd1c0c4a487bd036"},{topic:"Bidirectional link is",id:"4da8dbbc7b71be99"},{topic:"Also available.",id:"4da8ded27033a710"}]},{topic:"Node style",id:"bd1c217f9d0b20bd",direction:0,expanded:!0,children:[{topic:"Font Size",id:"bd1c24420cd2c2f5",style:{fontSize:"32px",color:"#3298db"}},{topic:"Font Color",id:"bd1c2a59b9a2739c",style:{color:"#c0392c"}},{topic:"Background Color",id:"bd1c2de33f057eb4",style:{color:"#bdc3c7",background:"#2c3e50"}},{topic:"Add tags",id:"bd1cff58364436d0",tags:["Completed"]},{topic:"Add icons",id:"bd1d0317f7e8a61a",icons:["😂"],tags:["www"]},{topic:"Bolder",id:"bd41fd4ca32322a4",style:{fontWeight:"bold"}},{topic:"Hyper link",id:"bd41fd4ca32322a5",hyperLink:"https://github.com/ssshooter/mind-elixir-core"}]},{topic:"Draggable",id:"bd1f03fee1f63bc6",direction:1,expanded:!0,children:[{topic:`Drag a node to another node
2
- and the former one will become a child node of latter one`,id:"bd1f07c598e729dc"}]},{topic:"Export & Import",id:"beeb7586973430db",direction:1,expanded:!0,children:[{topic:"Export as SVG",id:"beeb7a6bec2d68e6"},{topic:"Export as PNG",id:"beeb7a6bec2d68e7",tags:["New"]},{topic:"Export JSON data",id:"beeb784cc189375f"},{topic:"Export as HTML",id:"beeb7a6bec2d68f5"}]},{topic:"Ecosystem",id:"beeb7586973430dc",direction:1,expanded:!0,children:[{topic:"@mind-elixir/node-menu",id:"beeb7586973430dd",hyperLink:"https://github.com/ssshooter/node-menu"},{topic:"@mind-elixir/export-xmind",id:"beeb7586973430de",hyperLink:"https://github.com/ssshooter/export-xmind"},{topic:"mind-elixir-react",id:"beeb7586973430df",hyperLink:"https://github.com/ssshooter/mind-elixir-react"}]},{topic:"dangerouslySetInnerHTML",id:"c00a1cf60baa44f0",style:{background:"#f1c40e"},children:[{topic:"Katex",id:"c00a2264f4532611",children:[{topic:"",id:"c00a2264f4532612",dangerouslySetInnerHTML:'<div class="math math-display"><span class="katex-display"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.4em;vertical-align:-0.95em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size1">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.85em;"><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">x</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.35em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.85em;"><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.35em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size1">]</span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">a</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">b</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">c</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">d</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></div>'}]},{topic:"Code Block",id:"c00a2264fdaw32612",children:[{topic:"",id:"c00a2264f4532613",dangerouslySetInnerHTML:`<pre class="language-javascript"><code class="language-javascript"><span class="token keyword">let</span> message <span class="token operator">=</span> <span class="token string">'Hello world'</span>
3
- <span class="token function">alert</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span></code></pre>`}]},{topic:"Customized Div",id:"c00a2264f4532615",children:[{topic:"",id:"c00a2264f4532614",dangerouslySetInnerHTML:'<div><style>.title{font-size:50px}</style><div class="title">Title</div><div style="color: red; font-size: 20px;">Hello world</div></div>'}]}],direction:1},{topic:"Theme System",id:"bd42dad21aaf6baf",direction:1,expanded:!0,children:[{topic:"Built-in Themes",id:"bd42e1d0163ebf05",expanded:!0,children:[{topic:"Latte (Light)",id:"bd42e619051878b4",style:{background:"#ffffff",color:"#444446"}},{topic:"Dark Theme",id:"bd42e97d7ac35e9a",style:{background:"#252526",color:"#ffffff"}}]},{topic:"Custom CSS Variables",id:"bd42e1d0163ebf06",tags:["Flexible"]},{topic:"Color Palette Customization",id:"bd42e1d0163ebf07",tags:["10 Colors"]}]}],expanded:!0},arrows:[{id:"ac5fb1df7345e9c4",label:"Render",from:"beeb784cc189375f",to:"beeb7a6bec2d68f5",delta1:{x:142.8828125,y:-57},delta2:{x:146.1171875,y:45},bidirectional:!1},{id:"4da8e3367b63b640",label:"Bidirectional!",from:"4da8dbbc7b71be99",to:"4da8ded27033a710",delta1:{x:-186,y:7},delta2:{x:-155,y:28},bidirectional:!0,style:{stroke:"#8839ef",labelColor:"#8839ef",strokeWidth:"2",strokeDasharray:"2,5",opacity:"1"}}],summaries:[{id:"a5e68e6a2ce1b648",parent:"bd42e1d0163ebf04",start:0,end:1,label:"summary"},{id:"a5e6978f1bc69f4a",parent:"bd4313fbac40284b",start:3,end:5,label:"summary"}],direction:2,theme:{name:"Latte",palette:["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"32px","--main-gap-y":"12px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#4c4f69","--root-border-color":"rgba(0, 0, 0, 0)","--main-color":"#444446","--main-bgcolor":"#ffffff","--topic-padding":"3px","--color":"#777777","--bgcolor":"#f6f6f6","--selected":"#4dc4ff","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea","--map-padding":"50px 80px"}}}}();
2
+ and the former one will become a child node of latter one`,id:"bd1f07c598e729dc"}]},{topic:"Export & Import",id:"beeb7586973430db",direction:1,expanded:!0,children:[{topic:"Export as SVG",id:"beeb7a6bec2d68e6"},{topic:"Export as PNG",id:"beeb7a6bec2d68e7",tags:["New"]},{topic:"Export JSON data",id:"beeb784cc189375f"},{topic:"Export as HTML",id:"beeb7a6bec2d68f5"}]},{topic:"Ecosystem",id:"beeb7586973430dc",direction:1,expanded:!0,children:[{topic:"@mind-elixir/node-menu",id:"beeb7586973430dd",hyperLink:"https://github.com/ssshooter/node-menu"},{topic:"@mind-elixir/export-xmind",id:"beeb7586973430de",hyperLink:"https://github.com/ssshooter/export-xmind"},{topic:"mind-elixir-react",id:"beeb7586973430df",hyperLink:"https://github.com/ssshooter/mind-elixir-react"}]},{topic:"dangerouslySetInnerHTML",id:"c00a1cf60baa44f0",style:{background:"#f1c40e"},children:[{topic:"Code Block",id:"c00a2264fdaw32612",children:[{topic:"",id:"c00a2264f4532613",dangerouslySetInnerHTML:`<pre class="language-javascript"><code class="language-javascript"><span class="token keyword">let</span> message <span class="token operator">=</span> <span class="token string">'Hello world'</span>
3
+ <span class="token function">alert</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span></code></pre>`}]},{topic:"Customized Div",id:"c00a2264f4532615",children:[{topic:"",id:"c00a2264f4532614",dangerouslySetInnerHTML:'<div><style>.title{font-size:50px}</style><div class="title">Title</div><div style="color: red; font-size: 20px;">Hello world</div></div>'}]}],direction:1},{topic:"KaTeX",id:"markdown-complex-math",direction:1,expanded:!0,children:[{topic:"Normal distribution: $$f(x) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$$",id:"markdown-normal-dist",useMd:!0},{topic:"Fourier transform: $$F(\\omega) = \\int_{-\\infty}^{\\infty} f(t) e^{-i\\omega t} dt$$",id:"markdown-fourier",useMd:!0},{topic:"Taylor series: $$f(x) = \\sum_{n=0}^{\\infty} \\frac{f^{(n)}(a)}{n!}(x-a)^n$$",id:"markdown-taylor",useMd:!0},{topic:"Schrödinger equation: $$i\\hbar\\frac{\\partial}{\\partial t}\\Psi = \\hat{H}\\Psi$$",id:"markdown-schrodinger",useMd:!0}]},{topic:"Basic Markdown Examples",id:"markdown-basic-examples",direction:1,expanded:!0,children:[{topic:"# Heading 1",id:"markdown-headings",useMd:!0},{topic:"**Bold text** and *italic text* and ***bold italic***",id:"markdown-emphasis",useMd:!0},{topic:`- Unordered list item 1
4
+ - Unordered list item 2`,id:"markdown-lists",useMd:!0},{topic:"[Link to GitHub](https://github.com) and `inline code`",id:"markdown-links-code",useMd:!0},{topic:`> This is a blockquote
5
+ > with multiple lines`,id:"markdown-blockquote",useMd:!0},{topic:'```javascript\nconst greeting = "Hello World!";\nconsole.log(greeting);\n```',id:"markdown-code-block",useMd:!0},{topic:`| Column 1 | Column 2 | Column 3 |
6
+ |----------|----------|----------|
7
+ | Row 1 | Data 1 | Info 1 |
8
+ | Row 2 | Data 2 | Info 2 |`,id:"markdown-table",useMd:!0}]},{topic:"Theme System",id:"bd42dad21aaf6baf",direction:1,expanded:!0,children:[{topic:"Built-in Themes",id:"bd42e1d0163ebf05",expanded:!0,children:[{topic:"Latte (Light)",id:"bd42e619051878b4",style:{background:"#ffffff",color:"#444446"}},{topic:"Dark Theme",id:"bd42e97d7ac35e9a",style:{background:"#252526",color:"#ffffff"}}]},{topic:"Custom CSS Variables",id:"bd42e1d0163ebf06",tags:["Flexible"]},{topic:"Color Palette Customization",id:"bd42e1d0163ebf07",tags:["10 Colors"]}]}],expanded:!0},arrows:[{id:"ac5fb1df7345e9c4",label:"Render",from:"beeb784cc189375f",to:"beeb7a6bec2d68f5",delta1:{x:142.8828125,y:-57},delta2:{x:146.1171875,y:45},bidirectional:!1},{id:"4da8e3367b63b640",label:"Bidirectional!",from:"4da8dbbc7b71be99",to:"4da8ded27033a710",delta1:{x:-186,y:7},delta2:{x:-155,y:28},bidirectional:!0,style:{stroke:"#8839ef",labelColor:"#8839ef",strokeWidth:"2",strokeDasharray:"2,5",opacity:"1"}}],summaries:[{id:"a5e6978f1bc69f4a",parent:"bd4313fbac40284b",start:3,end:5,label:"This is a summary section that groups together related nodes to show their logical connection and relationship. You can customize this text to provide more context about the grouped items."}],direction:2,theme:{name:"Latte",palette:["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"32px","--main-gap-y":"12px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#4c4f69","--root-border-color":"rgba(0, 0, 0, 0)","--main-color":"#444446","--main-bgcolor":"#ffffff","--topic-padding":"3px","--color":"#777777","--bgcolor":"#f6f6f6","--selected":"#4dc4ff","--accent-color":"#e64553","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea","--map-padding":"50px 80px"}}}}();
package/dist/example.js CHANGED
@@ -370,17 +370,6 @@ and the former one will become a child node of latter one`,
370
370
  background: "#f1c40e"
371
371
  },
372
372
  children: [
373
- {
374
- topic: "Katex",
375
- id: "c00a2264f4532611",
376
- children: [
377
- {
378
- topic: "",
379
- id: "c00a2264f4532612",
380
- dangerouslySetInnerHTML: '<div class="math math-display"><span class="katex-display"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.4em;vertical-align:-0.95em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size1">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.85em;"><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">x</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.35em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.85em;"><span style="top:-3.01em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.35em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size1">]</span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">a</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">b</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">c</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">d</span></span></span></span><span class="vlist-s">&ZeroWidthSpace;</span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></div>'
381
- }
382
- ]
383
- },
384
373
  {
385
374
  topic: "Code Block",
386
375
  id: "c00a2264fdaw32612",
@@ -419,6 +408,82 @@ and the former one will become a child node of latter one`,
419
408
  ],
420
409
  direction: 1
421
410
  },
411
+ {
412
+ topic: "KaTeX",
413
+ id: "markdown-complex-math",
414
+ direction: 1,
415
+ expanded: !0,
416
+ children: [
417
+ {
418
+ topic: "Normal distribution: $$f(x) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$$",
419
+ id: "markdown-normal-dist",
420
+ useMd: !0
421
+ },
422
+ {
423
+ topic: "Fourier transform: $$F(\\omega) = \\int_{-\\infty}^{\\infty} f(t) e^{-i\\omega t} dt$$",
424
+ id: "markdown-fourier",
425
+ useMd: !0
426
+ },
427
+ {
428
+ topic: "Taylor series: $$f(x) = \\sum_{n=0}^{\\infty} \\frac{f^{(n)}(a)}{n!}(x-a)^n$$",
429
+ id: "markdown-taylor",
430
+ useMd: !0
431
+ },
432
+ {
433
+ topic: "Schrödinger equation: $$i\\hbar\\frac{\\partial}{\\partial t}\\Psi = \\hat{H}\\Psi$$",
434
+ id: "markdown-schrodinger",
435
+ useMd: !0
436
+ }
437
+ ]
438
+ },
439
+ {
440
+ topic: "Basic Markdown Examples",
441
+ id: "markdown-basic-examples",
442
+ direction: 1,
443
+ expanded: !0,
444
+ children: [
445
+ {
446
+ topic: "# Heading 1",
447
+ id: "markdown-headings",
448
+ useMd: !0
449
+ },
450
+ {
451
+ topic: "**Bold text** and *italic text* and ***bold italic***",
452
+ id: "markdown-emphasis",
453
+ useMd: !0
454
+ },
455
+ {
456
+ topic: `- Unordered list item 1
457
+ - Unordered list item 2`,
458
+ id: "markdown-lists",
459
+ useMd: !0
460
+ },
461
+ {
462
+ topic: "[Link to GitHub](https://github.com) and `inline code`",
463
+ id: "markdown-links-code",
464
+ useMd: !0
465
+ },
466
+ {
467
+ topic: `> This is a blockquote
468
+ > with multiple lines`,
469
+ id: "markdown-blockquote",
470
+ useMd: !0
471
+ },
472
+ {
473
+ topic: '```javascript\nconst greeting = "Hello World!";\nconsole.log(greeting);\n```',
474
+ id: "markdown-code-block",
475
+ useMd: !0
476
+ },
477
+ {
478
+ topic: `| Column 1 | Column 2 | Column 3 |
479
+ |----------|----------|----------|
480
+ | Row 1 | Data 1 | Info 1 |
481
+ | Row 2 | Data 2 | Info 2 |`,
482
+ id: "markdown-table",
483
+ useMd: !0
484
+ }
485
+ ]
486
+ },
422
487
  {
423
488
  topic: "Theme System",
424
489
  id: "bd42dad21aaf6baf",
@@ -503,19 +568,12 @@ and the former one will become a child node of latter one`,
503
568
  }
504
569
  ],
505
570
  summaries: [
506
- {
507
- id: "a5e68e6a2ce1b648",
508
- parent: "bd42e1d0163ebf04",
509
- start: 0,
510
- end: 1,
511
- label: "summary"
512
- },
513
571
  {
514
572
  id: "a5e6978f1bc69f4a",
515
573
  parent: "bd4313fbac40284b",
516
574
  start: 3,
517
575
  end: 5,
518
- label: "summary"
576
+ label: "This is a summary section that groups together related nodes to show their logical connection and relationship. You can customize this text to provide more context about the grouped items."
519
577
  }
520
578
  ],
521
579
  direction: 2,
@@ -540,6 +598,7 @@ and the former one will become a child node of latter one`,
540
598
  "--color": "#777777",
541
599
  "--bgcolor": "#f6f6f6",
542
600
  "--selected": "#4dc4ff",
601
+ "--accent-color": "#e64553",
543
602
  "--panel-color": "#444446",
544
603
  "--panel-bgcolor": "#ffffff",
545
604
  "--panel-border-color": "#eaeaea",
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .map-container{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;-webkit-user-select:none;user-select:none;height:100%;width:100%;overflow:hidden;font-size:15px;outline:none;touch-action:none;background-color:var(--bgcolor)}.map-container *{box-sizing:border-box}.map-container::-webkit-scrollbar{width:0px;height:0px}.map-container .selected{outline:2px solid var(--selected);outline-offset:1px}.map-container .hyper-link{text-decoration:none;margin-left:.3em}.map-container me-main>me-wrapper>me-parent>me-epd{top:50%;transform:translateY(-50%)}.map-container me-epd{top:100%;transform:translateY(-50%)}.map-container .lhs{direction:rtl}.map-container .lhs>me-wrapper>me-parent>me-epd{left:-10px}.map-container .lhs me-epd{left:5px}.map-container .lhs me-tpc{direction:ltr}.map-container .rhs>me-wrapper>me-parent>me-epd{right:-10px}.map-container .rhs me-epd{right:5px}.map-container .map-canvas{position:relative;-webkit-user-select:none;user-select:none;width:fit-content;transform:scale(1)}.map-container .map-canvas me-nodes{position:relative;display:flex;justify-content:center;align-items:center;height:max-content;width:max-content;padding:var(--map-padding)}.map-container me-main>me-wrapper{position:relative;margin:var(--main-gap-y) var(--main-gap-x)}.map-container me-main>me-wrapper>me-parent{margin:10px;padding:0}.map-container me-main>me-wrapper>me-parent>me-tpc{border-radius:var(--main-radius);background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);padding:8px 25px}.map-container me-wrapper{display:block;pointer-events:none;width:fit-content}.map-container me-children,.map-container me-parent{display:inline-block;vertical-align:middle}.map-container me-root{position:relative;margin:45px 0}.map-container me-root me-tpc{font-size:25px;color:var(--root-color);padding:10px 30px;border-radius:var(--root-radius);border:var(--root-border-color) 2px solid;background-color:var(--root-bgcolor)}.map-container me-parent{position:relative;cursor:pointer;padding:6px var(--node-gap-x);margin-top:var(--node-gap-y)}.map-container me-parent me-tpc{position:relative;border-radius:3px;color:var(--color);padding:var(--topic-padding)}.map-container me-parent me-tpc .insert-preview{position:absolute;width:100%;left:0;z-index:9}.map-container me-parent me-tpc .show{background:#7ad5ff;pointer-events:none;opacity:.7;border-radius:3px}.map-container me-parent me-tpc .before{height:14px;top:-14px}.map-container me-parent me-tpc .in{height:100%;top:0}.map-container me-parent me-tpc .after{height:14px;bottom:-14px}.map-container me-parent me-epd{position:absolute;height:18px;width:18px;opacity:.8;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NDcxNzI0MiIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNDgwaC0xMzguNjY2NjY3VjM0MS4zMzMzMzNjMC0xNy4wNjY2NjctMTQuOTMzMzMzLTMyLTMyLTMycy0zMiAxNC45MzMzMzMtMzIgMzJ2MTM4LjY2NjY2N0gzNDEuMzMzMzMzYy0xNy4wNjY2NjcgMC0zMiAxNC45MzMzMzMtMzIgMzJzMTQuOTMzMzMzIDMyIDMyIDMyaDEzOC42NjY2NjdWNjgyLjY2NjY2N2MwIDE3LjA2NjY2NyAxNC45MzMzMzMgMzIgMzIgMzJzMzItMTQuOTMzMzMzIDMyLTMydi0xMzguNjY2NjY3SDY4Mi42NjY2NjdjMTcuMDY2NjY3IDAgMzItMTQuOTMzMzMzIDMyLTMycy0xNC45MzMzMzMtMzItMzItMzJ6Ij48L3BhdGg+Cjwvc3ZnPg==);background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:all;z-index:9}.map-container me-parent me-epd.minus{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NTU2NDk4NSIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNTQ0SDM0MS4zMzMzMzNjLTE3LjA2NjY2NyAwLTMyLTE0LjkzMzMzMy0zMi0zMnMxNC45MzMzMzMtMzIgMzItMzJoMzQxLjMzMzMzNGMxNy4wNjY2NjcgMCAzMiAxNC45MzMzMzMgMzIgMzJzLTE0LjkzMzMzMyAzMi0zMiAzMnoiPjwvcGF0aD4KPC9zdmc+)!important;transition:opacity .3s;opacity:0}@media (hover: hover){.map-container me-parent me-epd.minus:hover{opacity:.8}}@media (hover: none){.map-container me-parent me-epd.minus{opacity:.8}}.map-container .icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.map-container .lines,.map-container .summary,.map-container .subLines,.map-container .topiclinks,.map-container .linkcontroller{position:absolute;height:102%;width:100%;top:0;left:0}.map-container .topiclinks,.map-container .linkcontroller,.map-container .summary,.map-container .topiclinks .selected,.map-container .linkcontroller .selected,.map-container .summary .selected{pointer-events:none}.map-container .summary>g,.map-container .topiclinks>g{cursor:pointer;pointer-events:stroke}.map-container .lines,.map-container .subLines{pointer-events:none;z-index:-1}.map-container .topiclinks *,.map-container .linkcontroller *{z-index:100}.map-container #input-box{position:absolute;top:0;left:0;width:max-content;max-width:35em;z-index:11;direction:ltr;-webkit-user-select:auto;user-select:auto;pointer-events:auto;color:var(--color);background-color:var(--bgcolor)}.map-container me-tpc{display:block;max-width:35em;white-space:pre-wrap;pointer-events:all}.map-container me-tpc>*{pointer-events:none}.map-container me-tpc>a,.map-container me-tpc>iframe{pointer-events:auto}.map-container me-tpc>.text{display:inline-block}.map-container me-tpc>.text a{pointer-events:auto}.map-container me-tpc>img{display:block;margin-bottom:8px;object-fit:cover}.map-container .circle{position:absolute;height:10px;width:10px;margin-top:-5px;margin-left:-5px;border-radius:100%;background:#757575;border:2px solid #ffffff;z-index:10;cursor:pointer}.map-container .tags{direction:ltr}.map-container .tags span{display:inline-block;border-radius:3px;padding:2px 4px;background:#d6f0f8;color:#276f86;margin:2px 4px 0 0;font-size:12px;line-height:1.3em}.map-container .icons{display:inline-block;direction:ltr;margin-left:5px}.map-container .icons span{display:inline-block;line-height:1.3em}.map-container .mind-elixir-ghost{position:fixed;top:-100%;left:-100%;box-sizing:content-box;opacity:.5;background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);max-width:200px;width:fit-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:8px 16px;border-radius:6px}.map-container .selection-area{background:#4f90f22d;border:1px solid #4f90f2}.map-container .context-menu{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99}.map-container .context-menu .menu-list{position:fixed;list-style:none;margin:0;padding:0;color:var(--panel-color);box-shadow:0 12px 15px #0003;border-radius:5px;overflow:hidden}.map-container .context-menu .menu-list li{min-width:200px;overflow:hidden;white-space:nowrap;padding:6px 10px;background:var(--panel-bgcolor);border-bottom:1px solid var(--panel-border-color);cursor:pointer}.map-container .context-menu .menu-list li span{line-height:20px}.map-container .context-menu .menu-list li a{color:#333;text-decoration:none}.map-container .context-menu .menu-list li.disabled{display:none}.map-container .context-menu .menu-list li:hover{filter:brightness(.95)}.map-container .context-menu .menu-list li:last-child{border-bottom:0}.map-container .context-menu .menu-list li span:last-child{float:right}.map-container .context-menu .key{font-size:10px;background-color:#f1f1f1;color:#333;padding:2px 5px;border-radius:3px}.map-container .tips{position:absolute;bottom:28px;left:50%;transform:translate(-50%);color:var(--panel-color);background:var(--panel-bgcolor);opacity:.8;padding:5px 10px;border-radius:5px;font-weight:700}.mind-elixir-toolbar{position:absolute;color:var(--panel-color);background:var(--panel-bgcolor);padding:10px;border-radius:5px;box-shadow:0 1px 2px #0003}.mind-elixir-toolbar svg{display:inline-block}.mind-elixir-toolbar span:active{opacity:.5}.mind-elixir-toolbar.rb{right:20px;bottom:20px}.mind-elixir-toolbar.rb span+span{margin-left:10px}.mind-elixir-toolbar.lt{font-size:20px;left:20px;top:20px}.mind-elixir-toolbar.lt span{display:block}.mind-elixir-toolbar.lt span+span{margin-top:10px}
1
+ .map-container{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;-webkit-user-select:none;user-select:none;height:100%;width:100%;overflow:hidden;font-size:15px;outline:none;touch-action:none;background-color:var(--bgcolor)}.map-container *{box-sizing:border-box}.map-container::-webkit-scrollbar{width:0px;height:0px}.map-container .selected{outline:2px solid var(--selected);outline-offset:1px}.map-container .hyper-link{text-decoration:none;margin-left:.3em}.map-container me-main>me-wrapper>me-parent>me-epd{top:50%;transform:translateY(-50%)}.map-container me-epd{top:100%;transform:translateY(-50%)}.map-container .lhs{direction:rtl}.map-container .lhs>me-wrapper>me-parent>me-epd{left:-10px}.map-container .lhs me-epd{left:5px}.map-container .lhs me-tpc{direction:ltr}.map-container .rhs>me-wrapper>me-parent>me-epd{right:-10px}.map-container .rhs me-epd{right:5px}.map-container .map-canvas{position:relative;-webkit-user-select:none;user-select:none;width:fit-content;transform:scale(1)}.map-container .map-canvas me-nodes{position:relative;display:flex;justify-content:center;align-items:center;height:max-content;width:max-content;padding:var(--map-padding)}.map-container me-main>me-wrapper{position:relative;margin:var(--main-gap-y) var(--main-gap-x)}.map-container me-main>me-wrapper>me-parent{margin:10px;padding:0}.map-container me-main>me-wrapper>me-parent>me-tpc{border-radius:var(--main-radius);background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);padding:8px 25px}.map-container me-wrapper{display:block;pointer-events:none;width:fit-content}.map-container me-children,.map-container me-parent{display:inline-block;vertical-align:middle}.map-container me-root{position:relative;margin:45px 0;z-index:10}.map-container me-root me-tpc{font-size:25px;color:var(--root-color);padding:10px 30px;border-radius:var(--root-radius);border:var(--root-border-color) 2px solid;background-color:var(--root-bgcolor)}.map-container me-parent{position:relative;cursor:pointer;padding:6px var(--node-gap-x);margin-top:var(--node-gap-y);z-index:10}.map-container me-parent me-tpc{position:relative;border-radius:3px;color:var(--color);padding:var(--topic-padding)}.map-container me-parent me-tpc .insert-preview{position:absolute;width:100%;left:0;z-index:9}.map-container me-parent me-tpc .show{background:#7ad5ff;pointer-events:none;opacity:.7;border-radius:3px}.map-container me-parent me-tpc .before{height:14px;top:-14px}.map-container me-parent me-tpc .in{height:100%;top:0}.map-container me-parent me-tpc .after{height:14px;bottom:-14px}.map-container me-parent me-epd{position:absolute;height:18px;width:18px;opacity:.8;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHQ9IjE2NTY2NTQ3MTcyNDIiIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiDQogICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+DQogICAgPHBhdGggZD0iTTUxMiA3NC42NjY2NjdDMjcwLjkzMzMzMyA3NC42NjY2NjcgNzQuNjY2NjY3IDI3MC45MzMzMzMgNzQuNjY2NjY3IDUxMlMyNzAuOTMzMzMzIDk0OS4zMzMzMzMgNTEyIDk0OS4zMzMzMzMgOTQ5LjMzMzMzMyA3NTMuMDY2NjY3IDk0OS4zMzMzMzMgNTEyIDc1My4wNjY2NjcgNzQuNjY2NjY3IDUxMiA3NC42NjY2Njd6IiBzdHJva2Utd2lkdGg9IjU0IiBzdHJva2U9J2JsYWNrJyBmaWxsPSd3aGl0ZScgPjwvcGF0aD4NCiAgICA8cGF0aCBkPSJNNjgyLjY2NjY2NyA0ODBoLTEzOC42NjY2NjdWMzQxLjMzMzMzM2MwLTE3LjA2NjY2Ny0xNC45MzMzMzMtMzItMzItMzJzLTMyIDE0LjkzMzMzMy0zMiAzMnYxMzguNjY2NjY3SDM0MS4zMzMzMzNjLTE3LjA2NjY2NyAwLTMyIDE0LjkzMzMzMy0zMiAzMnMxNC45MzMzMzMgMzIgMzIgMzJoMTM4LjY2NjY2N1Y2ODIuNjY2NjY3YzAgMTcuMDY2NjY3IDE0LjkzMzMzMyAzMiAzMiAzMnMzMi0xNC45MzMzMzMgMzItMzJ2LTEzOC42NjY2NjdINjgyLjY2NjY2N2MxNy4wNjY2NjcgMCAzMi0xNC45MzMzMzMgMzItMzJzLTE0LjkzMzMzMy0zMi0zMi0zMnoiPjwvcGF0aD4NCjwvc3ZnPg==);background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:all;z-index:9}.map-container me-parent me-epd.minus{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHQ9IjE2NTY2NTU1NjQ5ODUiIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiDQogICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+DQogICAgPHBhdGggZD0iTTUxMiA3NC42NjY2NjdDMjcwLjkzMzMzMyA3NC42NjY2NjcgNzQuNjY2NjY3IDI3MC45MzMzMzMgNzQuNjY2NjY3IDUxMlMyNzAuOTMzMzMzIDk0OS4zMzMzMzMgNTEyIDk0OS4zMzMzMzMgOTQ5LjMzMzMzMyA3NTMuMDY2NjY3IDk0OS4zMzMzMzMgNTEyIDc1My4wNjY2NjcgNzQuNjY2NjY3IDUxMiA3NC42NjY2Njd6IiBzdHJva2Utd2lkdGg9IjU0IiBzdHJva2U9J2JsYWNrJyBmaWxsPSd3aGl0ZScgPjwvcGF0aD4NCiAgICA8cGF0aCBkPSJNNjgyLjY2NjY2NyA1NDRIMzQxLjMzMzMzM2MtMTcuMDY2NjY3IDAtMzItMTQuOTMzMzMzLTMyLTMyczE0LjkzMzMzMy0zMiAzMi0zMmgzNDEuMzMzMzM0YzE3LjA2NjY2NyAwIDMyIDE0LjkzMzMzMyAzMiAzMnMtMTQuOTMzMzMzIDMyLTMyIDMyeiI+PC9wYXRoPg0KPC9zdmc+)!important;transition:opacity .3s;opacity:0}@media (hover: hover){.map-container me-parent me-epd.minus:hover{opacity:.8}}@media (hover: none){.map-container me-parent me-epd.minus{opacity:.8}}.map-container .icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.map-container .lines,.map-container .summary,.map-container .subLines,.map-container .topiclinks,.map-container .linkcontroller{position:absolute;height:102%;width:100%;top:0;left:0}.map-container .topiclinks,.map-container .linkcontroller,.map-container .summary{pointer-events:none;z-index:20}.map-container .summary>g,.map-container .topiclinks>g{cursor:pointer;pointer-events:stroke;z-index:20}.map-container .lines,.map-container .subLines{pointer-events:none}.map-container #input-box{position:absolute;top:0;left:0;width:max-content;max-width:35em;direction:ltr;-webkit-user-select:auto;user-select:auto;pointer-events:auto;color:var(--color);background-color:var(--bgcolor);z-index:100}.map-container me-tpc{display:block;max-width:35em;white-space:pre-wrap;pointer-events:all}.map-container me-tpc>*{pointer-events:none}.map-container me-tpc>a,.map-container me-tpc>iframe{pointer-events:auto}.map-container me-tpc>.text{display:inline-block}.map-container me-tpc>.text a{pointer-events:auto}.map-container me-tpc>img{display:block;margin-bottom:8px;object-fit:cover}.map-container .circle{position:absolute;height:10px;width:10px;margin-top:-5px;margin-left:-5px;border-radius:100%;background:#757575;border:2px solid #ffffff;z-index:50;cursor:pointer}.map-container .tags{direction:ltr}.map-container .tags span{display:inline-block;border-radius:3px;padding:2px 4px;background:#d6f0f8;color:#276f86;margin:2px 4px 0 0;font-size:12px;line-height:1.3em}.map-container .icons{display:inline-block;direction:ltr;margin-left:5px}.map-container .icons span{display:inline-block;line-height:1.3em}.map-container .mind-elixir-ghost{position:fixed;top:-100%;left:-100%;box-sizing:content-box;opacity:.5;background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);max-width:200px;width:fit-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:8px 16px;border-radius:6px}.map-container .selection-area{background:#4f90f22d;border:1px solid #4f90f2}.map-container .svg-label{position:absolute;left:0;top:0;display:flex;align-items:center;word-wrap:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;line-height:1.2;padding:2px;pointer-events:auto;cursor:pointer;z-index:10;max-width:200px;border-radius:3px;padding:var(--topic-padding)}.map-container .context-menu{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99}.map-container .context-menu .menu-list{position:fixed;list-style:none;margin:0;padding:0;color:var(--panel-color);box-shadow:0 12px 15px #0003;border-radius:5px;overflow:hidden}.map-container .context-menu .menu-list li{min-width:200px;overflow:hidden;white-space:nowrap;padding:6px 10px;background:var(--panel-bgcolor);border-bottom:1px solid var(--panel-border-color);cursor:pointer}.map-container .context-menu .menu-list li span{line-height:20px}.map-container .context-menu .menu-list li a{color:#333;text-decoration:none}.map-container .context-menu .menu-list li.disabled{display:none}.map-container .context-menu .menu-list li:hover{filter:brightness(.95)}.map-container .context-menu .menu-list li:last-child{border-bottom:0}.map-container .context-menu .menu-list li span:last-child{float:right}.map-container .context-menu .key{font-size:10px;background-color:#f1f1f1;color:#333;padding:2px 5px;border-radius:3px}.map-container .tips{position:absolute;bottom:28px;left:50%;transform:translate(-50%);color:var(--panel-color);background:var(--panel-bgcolor);opacity:.8;padding:5px 10px;border-radius:5px;font-weight:700}.mind-elixir-toolbar{position:absolute;color:var(--panel-color);background:var(--panel-bgcolor);padding:10px;border-radius:5px;box-shadow:0 1px 2px #0003}.mind-elixir-toolbar svg{display:inline-block}.mind-elixir-toolbar span:active{opacity:.5}.mind-elixir-toolbar.rb{right:20px;bottom:20px}.mind-elixir-toolbar.rb span+span{margin-left:10px}.mind-elixir-toolbar.lt{font-size:20px;left:20px;top:20px}.mind-elixir-toolbar.lt span{display:block}.mind-elixir-toolbar.lt span+span{margin-top:10px}
@@ -82,7 +82,7 @@ export type ArrowOptions = {
82
82
  };
83
83
  };
84
84
  export declare const createArrow: (this: MindElixirInstance, from: Topic, to: Topic, options?: ArrowOptions) => void;
85
- export declare const createArrowFrom: (this: MindElixirInstance, arrow: Omit<Arrow, "id">) => void;
85
+ export declare const createArrowFrom: (this: MindElixirInstance, arrow: Omit<Arrow, 'id'>) => void;
86
86
  export declare const removeArrow: (this: MindElixirInstance, linkSvg?: CustomSvg) => void;
87
87
  export declare const selectArrow: (this: MindElixirInstance, link: CustomSvg) => void;
88
88
  export declare const unselectArrow: (this: MindElixirInstance) => void;
@@ -0,0 +1 @@
1
+ import 'katex/dist/katex.min.css';
@@ -0,0 +1,3 @@
1
+ import type { MindElixirData } from '../index';
2
+ declare const _default: MindElixirData;
3
+ export default _default;
@@ -7,8 +7,8 @@ declare namespace MindElixir {
7
7
  export var prototype: {
8
8
  init(this: MindElixirInstance, data: MindElixirData): Error | undefined;
9
9
  destroy(this: Partial<MindElixirInstance>): void;
10
- exportSvg: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Blob;
11
- exportPng: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Promise<Blob | null>;
10
+ exportSvg: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string | undefined) => Blob;
11
+ exportPng: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string | undefined) => Promise<Blob | null>;
12
12
  createSummary: (this: MindElixirInstance) => void;
13
13
  createSummaryFrom: (this: MindElixirInstance, summary: Omit<import("./summary").Summary, "id">) => void;
14
14
  removeSummary: (this: MindElixirInstance, id: string) => void;
@@ -21,7 +21,7 @@ declare namespace MindElixir {
21
21
  tidyArrow(this: MindElixirInstance): void;
22
22
  createArrow: (this: MindElixirInstance, from: Topic, to: Topic, options?: import("./arrow").ArrowOptions) => void;
23
23
  createArrowFrom: (this: MindElixirInstance, arrow: Omit<import("./arrow").Arrow, "id">) => void;
24
- removeArrow: (this: MindElixirInstance, linkSvg?: import("./docs").CustomSvg) => void;
24
+ removeArrow: (this: MindElixirInstance, linkSvg?: import("./docs").CustomSvg | undefined) => void;
25
25
  selectArrow: (this: MindElixirInstance, link: import("./docs").CustomSvg) => void;
26
26
  unselectArrow: (this: MindElixirInstance) => void;
27
27
  rmSubline: (this: MindElixirInstance, tpc: Topic) => Promise<void>;
@@ -40,7 +40,7 @@ declare namespace MindElixir {
40
40
  beginEdit: (this: MindElixirInstance, el?: Topic | undefined) => Promise<void>;
41
41
  setNodeTopic: (this: MindElixirInstance, el: Topic, topic: string) => Promise<void>;
42
42
  scrollIntoView: (this: MindElixirInstance, el: HTMLElement) => void;
43
- selectNode: (this: MindElixirInstance, tpc: Topic, isNewNode?: boolean, e?: MouseEvent) => void;
43
+ selectNode: (this: MindElixirInstance, tpc: Topic, isNewNode?: boolean | undefined, e?: MouseEvent | undefined) => void;
44
44
  selectNodes: (this: MindElixirInstance, tpc: Topic[]) => void;
45
45
  unselectNodes: (this: MindElixirInstance, tpc: Topic[]) => void;
46
46
  clearSelection: (this: MindElixirInstance) => void;
@@ -48,8 +48,7 @@ declare namespace MindElixir {
48
48
  getData: (this: MindElixirInstance) => MindElixirData;
49
49
  enableEdit: (this: MindElixirInstance) => void;
50
50
  disableEdit: (this: MindElixirInstance) => void;
51
- scale: (this: MindElixirInstance, scaleVal: number, // summary container
52
- offset?: {
51
+ scale: (this: MindElixirInstance, scaleVal: number, offset?: {
53
52
  x: number;
54
53
  y: number;
55
54
  }) => void;
@@ -63,15 +62,15 @@ declare namespace MindElixir {
63
62
  initRight: (this: MindElixirInstance) => void;
64
63
  initSide: (this: MindElixirInstance) => void;
65
64
  setLocale: (this: MindElixirInstance, locale: import("./i18n").Locale) => void;
66
- expandNode: (this: MindElixirInstance, el: Topic, isExpand?: boolean) => void;
67
- expandNodeAll: (this: MindElixirInstance, el: Topic, isExpand?: boolean) => void;
68
- refresh: (this: MindElixirInstance, data?: MindElixirData) => void;
65
+ expandNode: (this: MindElixirInstance, el: Topic, isExpand?: boolean | undefined) => void;
66
+ expandNodeAll: (this: MindElixirInstance, el: Topic, isExpand?: boolean | undefined) => void;
67
+ refresh: (this: MindElixirInstance, data?: MindElixirData | undefined) => void;
69
68
  getObjById: (id: string, data: import("./docs").NodeObj) => import("./docs").NodeObj | null;
70
69
  generateNewObj: (this: MindElixirInstance) => import("./docs").NodeObjExport;
71
70
  layout: (this: MindElixirInstance) => void;
72
- linkDiv: (this: MindElixirInstance, mainNode?: import("./docs").Wrapper) => void;
71
+ linkDiv: (this: MindElixirInstance, mainNode?: import("./docs").Wrapper | undefined) => void;
73
72
  editTopic: (this: MindElixirInstance, el: Topic) => void;
74
- createWrapper: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj, omitChildren?: boolean) => {
73
+ createWrapper: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj, omitChildren?: boolean | undefined) => {
75
74
  grp: import("./docs").Wrapper;
76
75
  top: import("./docs").Parent;
77
76
  tpc: Topic;
@@ -82,7 +81,7 @@ declare namespace MindElixir {
82
81
  };
83
82
  createChildren: (this: MindElixirInstance, wrappers: import("./docs").Wrapper[]) => import("./docs").Children;
84
83
  createTopic: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj) => Topic;
85
- findEle: (this: MindElixirInstance, id: string, el?: HTMLElement) => Topic;
84
+ findEle: (this: MindElixirInstance, id: string, el?: HTMLElement | undefined) => Topic;
86
85
  changeTheme: (this: MindElixirInstance, theme: import("./docs").Theme, shouldRefresh?: boolean) => void;
87
86
  };
88
87
  export var LEFT: number;
@@ -90,8 +89,8 @@ declare namespace MindElixir {
90
89
  export var SIDE: number;
91
90
  export var THEME: import("./docs").Theme;
92
91
  export var DARK_THEME: import("./docs").Theme;
93
- export var version: any;
94
- export var E: (this: MindElixirInstance, id: string, el?: HTMLElement) => Topic;
92
+ export var version: string;
93
+ export var E: (this: MindElixirInstance, id: string, el?: HTMLElement | undefined) => Topic;
95
94
  var _a: (topic: string) => MindElixirData;
96
95
  export { _a as new };
97
96
  }
@@ -13,8 +13,8 @@ export type MindElixirMethods = typeof methods;
13
13
  declare const methods: {
14
14
  init(this: MindElixirInstance, data: MindElixirData): Error | undefined;
15
15
  destroy(this: Partial<MindElixirInstance>): void;
16
- exportSvg: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Blob;
17
- exportPng: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Promise<Blob | null>;
16
+ exportSvg: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string | undefined) => Blob;
17
+ exportPng: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string | undefined) => Promise<Blob | null>;
18
18
  createSummary: (this: MindElixirInstance) => void;
19
19
  createSummaryFrom: (this: MindElixirInstance, summary: Omit<summary.Summary, "id">) => void;
20
20
  removeSummary: (this: MindElixirInstance, id: string) => void;
@@ -27,7 +27,7 @@ declare const methods: {
27
27
  tidyArrow(this: MindElixirInstance): void;
28
28
  createArrow: (this: MindElixirInstance, from: import("./index").Topic, to: import("./index").Topic, options?: arrow.ArrowOptions) => void;
29
29
  createArrowFrom: (this: MindElixirInstance, arrow: Omit<arrow.Arrow, "id">) => void;
30
- removeArrow: (this: MindElixirInstance, linkSvg?: import("./index").CustomSvg) => void;
30
+ removeArrow: (this: MindElixirInstance, linkSvg?: import("./index").CustomSvg | undefined) => void;
31
31
  selectArrow: (this: MindElixirInstance, link: import("./index").CustomSvg) => void;
32
32
  unselectArrow: (this: MindElixirInstance) => void;
33
33
  rmSubline: (this: MindElixirInstance, tpc: import("./index").Topic) => Promise<void>;
@@ -46,7 +46,7 @@ declare const methods: {
46
46
  beginEdit: (this: MindElixirInstance, el?: import("./index").Topic | undefined) => Promise<void>;
47
47
  setNodeTopic: (this: MindElixirInstance, el: import("./index").Topic, topic: string) => Promise<void>;
48
48
  scrollIntoView: (this: MindElixirInstance, el: HTMLElement) => void;
49
- selectNode: (this: MindElixirInstance, tpc: import("./index").Topic, isNewNode?: boolean, e?: MouseEvent) => void;
49
+ selectNode: (this: MindElixirInstance, tpc: import("./index").Topic, isNewNode?: boolean | undefined, e?: MouseEvent | undefined) => void;
50
50
  selectNodes: (this: MindElixirInstance, tpc: import("./index").Topic[]) => void;
51
51
  unselectNodes: (this: MindElixirInstance, tpc: import("./index").Topic[]) => void;
52
52
  clearSelection: (this: MindElixirInstance) => void;
@@ -68,15 +68,15 @@ declare const methods: {
68
68
  initRight: (this: MindElixirInstance) => void;
69
69
  initSide: (this: MindElixirInstance) => void;
70
70
  setLocale: (this: MindElixirInstance, locale: import("./i18n").Locale) => void;
71
- expandNode: (this: MindElixirInstance, el: import("./index").Topic, isExpand?: boolean) => void;
72
- expandNodeAll: (this: MindElixirInstance, el: import("./index").Topic, isExpand?: boolean) => void;
73
- refresh: (this: MindElixirInstance, data?: MindElixirData) => void;
71
+ expandNode: (this: MindElixirInstance, el: import("./index").Topic, isExpand?: boolean | undefined) => void;
72
+ expandNodeAll: (this: MindElixirInstance, el: import("./index").Topic, isExpand?: boolean | undefined) => void;
73
+ refresh: (this: MindElixirInstance, data?: MindElixirData | undefined) => void;
74
74
  getObjById: (id: string, data: import("./types").NodeObj) => import("./types").NodeObj | null;
75
75
  generateNewObj: (this: MindElixirInstance) => import("./types").NodeObjExport;
76
76
  layout: (this: MindElixirInstance) => void;
77
- linkDiv: (this: MindElixirInstance, mainNode?: import("./index").Wrapper) => void;
77
+ linkDiv: (this: MindElixirInstance, mainNode?: import("./index").Wrapper | undefined) => void;
78
78
  editTopic: (this: MindElixirInstance, el: import("./index").Topic) => void;
79
- createWrapper: (this: MindElixirInstance, nodeObj: import("./types").NodeObj, omitChildren?: boolean) => {
79
+ createWrapper: (this: MindElixirInstance, nodeObj: import("./types").NodeObj, omitChildren?: boolean | undefined) => {
80
80
  grp: import("./index").Wrapper;
81
81
  top: import("./index").Parent;
82
82
  tpc: import("./index").Topic;
@@ -87,7 +87,7 @@ declare const methods: {
87
87
  };
88
88
  createChildren: (this: MindElixirInstance, wrappers: import("./index").Wrapper[]) => import("./index").Children;
89
89
  createTopic: (this: MindElixirInstance, nodeObj: import("./types").NodeObj) => import("./index").Topic;
90
- findEle: (this: MindElixirInstance, id: string, el?: HTMLElement) => import("./index").Topic;
90
+ findEle: (this: MindElixirInstance, id: string, el?: HTMLElement | undefined) => import("./index").Topic;
91
91
  changeTheme: (this: MindElixirInstance, theme: import("./types").Theme, shouldRefresh?: boolean) => void;
92
92
  };
93
93
  export default methods;
@@ -2,7 +2,7 @@ import type { Topic } from './types/dom';
2
2
  import { type MindElixirInstance, type NodeObj } from './types/index';
3
3
  export declare const rmSubline: (tpc: Topic) => void;
4
4
  export declare const reshapeNode: (this: MindElixirInstance, tpc: Topic, patchData: Partial<NodeObj>) => void;
5
- export declare const insertSibling: (this: MindElixirInstance, type: "before" | "after", el?: Topic, node?: NodeObj) => void;
5
+ export declare const insertSibling: (this: MindElixirInstance, type: 'before' | 'after', el?: Topic, node?: NodeObj) => void;
6
6
  export declare const insertParent: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
7
7
  export declare const addChild: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
8
8
  export declare const copyNode: (this: MindElixirInstance, node: Topic, to: Topic) => void;
@@ -1,5 +1,5 @@
1
1
  import type { KeypressOptions, MindElixirInstance } from '../types/index';
2
- export declare const handleZoom: (mei: MindElixirInstance, direction: "in" | "out", offset?: {
2
+ export declare const handleZoom: (mei: MindElixirInstance, direction: 'in' | 'out', offset?: {
3
3
  x: number;
4
4
  y: number;
5
5
  }) => void;
@@ -19,11 +19,12 @@ export interface Summary {
19
19
  end: number;
20
20
  }
21
21
  export type SummarySvgGroup = SVGGElement & {
22
- children: [SVGPathElement, SVGTextElement];
22
+ children: [SVGPathElement, SVGForeignObjectElement];
23
23
  summaryObj: Summary;
24
+ labelElement?: HTMLDivElement;
24
25
  };
25
26
  export declare const createSummary: (this: MindElixirInstance) => void;
26
- export declare const createSummaryFrom: (this: MindElixirInstance, summary: Omit<Summary, "id">) => void;
27
+ export declare const createSummaryFrom: (this: MindElixirInstance, summary: Omit<Summary, 'id'>) => void;
27
28
  export declare const removeSummary: (this: MindElixirInstance, id: string) => void;
28
29
  export declare const selectSummary: (this: MindElixirInstance, el: SummarySvgGroup) => void;
29
30
  export declare const unselectSummary: (this: MindElixirInstance) => void;
@@ -46,7 +46,8 @@ export type CustomLine = SVGPathElement;
46
46
  export type CustomArrow = SVGPathElement;
47
47
  export interface CustomSvg extends SVGGElement {
48
48
  arrowObj: Arrow;
49
- label: SVGTextElement;
49
+ label: SVGForeignObjectElement;
50
+ labelElement?: HTMLDivElement;
50
51
  line: SVGPathElement;
51
52
  arrow1: SVGPathElement;
52
53
  arrow2: SVGPathElement;
@@ -42,6 +42,7 @@ export type Theme = {
42
42
  '--color': string;
43
43
  '--bgcolor': string;
44
44
  '--selected': string;
45
+ '--accent-color': string;
45
46
  '--root-color': string;
46
47
  '--root-bgcolor': string;
47
48
  '--root-border-color': string;
@@ -64,7 +65,7 @@ export interface KeypressOptions {
64
65
  * @public
65
66
  */
66
67
  export interface MindElixirInstance extends Omit<Required<Options>, 'markdown' | 'imageProxy'>, MindElixirMethods {
67
- markdown?: (markdown: string) => string;
68
+ markdown?: (markdown: string, obj: NodeObj) => string;
68
69
  imageProxy?: (url: string) => string;
69
70
  dragged: Topic[] | null;
70
71
  el: HTMLElement;
@@ -88,6 +89,7 @@ export interface MindElixirInstance extends Omit<Required<Options>, 'markdown' |
88
89
  lines: SVGElement;
89
90
  summarySvg: SVGElement;
90
91
  linkController: SVGElement;
92
+ labelContainer: HTMLElement;
91
93
  P2: HTMLElement;
92
94
  P3: HTMLElement;
93
95
  line1: SVGElement;
@@ -142,7 +144,7 @@ export interface Options {
142
144
  * If not provided, markdown will be disabled
143
145
  * @default undefined
144
146
  */
145
- markdown?: (markdown: string) => string;
147
+ markdown?: (markdown: string, obj: NodeObj) => string;
146
148
  /**
147
149
  * Image proxy function to handle image URLs, mainly used to solve CORS issues
148
150
  * If provided, all image URLs will be processed through this function before setting to img src