jekyll-obsidian-site 0.2.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 (191) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +133 -0
  4. data/website/_config.yml +21 -0
  5. data/website/_includes/website/archive-timeline.html +8 -0
  6. data/website/_includes/website/blog-ledger.html +19 -0
  7. data/website/_includes/website/blog-navigation.html +7 -0
  8. data/website/_includes/website/comments.html +22 -0
  9. data/website/_includes/website/contact-icon.html +14 -0
  10. data/website/_includes/website/context-tags.html +7 -0
  11. data/website/_includes/website/context.html +3 -0
  12. data/website/_includes/website/dialogs.html +71 -0
  13. data/website/_includes/website/docs-navigation.html +7 -0
  14. data/website/_includes/website/docs-tree.html +8 -0
  15. data/website/_includes/website/footer.html +14 -0
  16. data/website/_includes/website/github-icon.html +3 -0
  17. data/website/_includes/website/head.html +41 -0
  18. data/website/_includes/website/header.html +35 -0
  19. data/website/_includes/website/language-switcher.html +16 -0
  20. data/website/_includes/website/local-graph.html +25 -0
  21. data/website/_includes/website/note-header.html +35 -0
  22. data/website/_includes/website/outline.html +9 -0
  23. data/website/_includes/website/page-actions.html +34 -0
  24. data/website/_includes/website/portfolio-grid.html +36 -0
  25. data/website/_includes/website/portfolio-topics.html +4 -0
  26. data/website/_includes/website/post-cards.html +16 -0
  27. data/website/_includes/website/related-articles.html +7 -0
  28. data/website/_includes/website/relations.html +16 -0
  29. data/website/_includes/website/source-actions.html +28 -0
  30. data/website/_includes/website/system-page.html +31 -0
  31. data/website/_includes/website/tab-collection.html +28 -0
  32. data/website/_includes/website/tag-filter.html +12 -0
  33. data/website/_layouts/website-docs.html +20 -0
  34. data/website/_layouts/website-minimal.html +93 -0
  35. data/website/_layouts/website-redirect.html +17 -0
  36. data/website/assets/chunks/abnfDiagram-N423BO3Z-TSORAEI2.js +1 -0
  37. data/website/assets/chunks/architecture-TIHT7OUA-OUC5PEC7.js +1 -0
  38. data/website/assets/chunks/architectureDiagram-T3A2C74G-6P5MB2DJ.js +36 -0
  39. data/website/assets/chunks/blockDiagram-VBNYF7ZC-ZWINYROZ.js +132 -0
  40. data/website/assets/chunks/c4Diagram-5PPSVZJV-R5RMEAOT.js +10 -0
  41. data/website/assets/chunks/chunk-22DRK7VS.js +1 -0
  42. data/website/assets/chunks/chunk-25REBZ7M.js +2 -0
  43. data/website/assets/chunks/chunk-2RQCUDTG.js +1 -0
  44. data/website/assets/chunks/chunk-34FHPXU4.js +1 -0
  45. data/website/assets/chunks/chunk-57XXJOQN.js +10 -0
  46. data/website/assets/chunks/chunk-6DCNDVBX.js +2 -0
  47. data/website/assets/chunks/chunk-6DHFEWGX.js +1 -0
  48. data/website/assets/chunks/chunk-6VQ47JJS.js +2 -0
  49. data/website/assets/chunks/chunk-7CSIRG7W.js +127 -0
  50. data/website/assets/chunks/chunk-A43YELH5.js +1 -0
  51. data/website/assets/chunks/chunk-AIX6IH4O.js +1 -0
  52. data/website/assets/chunks/chunk-B3K7RH5O.js +88 -0
  53. data/website/assets/chunks/chunk-CBGUD2NP.js +1 -0
  54. data/website/assets/chunks/chunk-D3WOCELE.js +1 -0
  55. data/website/assets/chunks/chunk-D6FURU6X.js +1 -0
  56. data/website/assets/chunks/chunk-DGEGT77F.js +1 -0
  57. data/website/assets/chunks/chunk-DN52R6U7.js +1 -0
  58. data/website/assets/chunks/chunk-E3T3IFAC.js +1 -0
  59. data/website/assets/chunks/chunk-EIBFAW37.js +1 -0
  60. data/website/assets/chunks/chunk-ERWOH47R.js +1 -0
  61. data/website/assets/chunks/chunk-ETOVTYWF.js +1 -0
  62. data/website/assets/chunks/chunk-GHD3PFWA.js +231 -0
  63. data/website/assets/chunks/chunk-GMBKQ7NZ.js +1 -0
  64. data/website/assets/chunks/chunk-GQM25EPP.js +156 -0
  65. data/website/assets/chunks/chunk-GSOU4UTT.js +1 -0
  66. data/website/assets/chunks/chunk-HEMELP7J.js +1 -0
  67. data/website/assets/chunks/chunk-HZ5I5NJO.js +1 -0
  68. data/website/assets/chunks/chunk-IP56FOSI.js +70 -0
  69. data/website/assets/chunks/chunk-L7BMR7WL.js +1 -0
  70. data/website/assets/chunks/chunk-LGUG3SQB.js +1 -0
  71. data/website/assets/chunks/chunk-LOMHZYS2.js +1 -0
  72. data/website/assets/chunks/chunk-MII4VZEB.js +3 -0
  73. data/website/assets/chunks/chunk-MYMJLHQL.js +62 -0
  74. data/website/assets/chunks/chunk-NBH7YOBD.js +15 -0
  75. data/website/assets/chunks/chunk-NCOVM3YF.js +1 -0
  76. data/website/assets/chunks/chunk-OAGTSILX.js +1 -0
  77. data/website/assets/chunks/chunk-OCX5OCIU.js +321 -0
  78. data/website/assets/chunks/chunk-OE3NOVIH.js +1 -0
  79. data/website/assets/chunks/chunk-PLP5XUTJ.js +1 -0
  80. data/website/assets/chunks/chunk-PNOERP6G.js +1 -0
  81. data/website/assets/chunks/chunk-QBPQ7DPE.js +1 -0
  82. data/website/assets/chunks/chunk-RWFFDL53.js +1 -0
  83. data/website/assets/chunks/chunk-SEGIW3MP.js +1 -0
  84. data/website/assets/chunks/chunk-SZDMZNUS.js +1 -0
  85. data/website/assets/chunks/chunk-T2QBAPVT.js +1 -0
  86. data/website/assets/chunks/chunk-UE533OZ7.js +1 -0
  87. data/website/assets/chunks/chunk-UTWOJE2A.js +1 -0
  88. data/website/assets/chunks/chunk-VOCDYA3H.js +1 -0
  89. data/website/assets/chunks/chunk-VYZZPKGK.js +161 -0
  90. data/website/assets/chunks/chunk-WWLZIRS6.js +1 -0
  91. data/website/assets/chunks/chunk-XNXYDBKX.js +32 -0
  92. data/website/assets/chunks/chunk-XQUIO562.js +1 -0
  93. data/website/assets/chunks/chunk-Y2XVFW7T.js +2 -0
  94. data/website/assets/chunks/chunk-YORIST7Z.js +1 -0
  95. data/website/assets/chunks/chunk-Z2WBQPVY.js +206 -0
  96. data/website/assets/chunks/classDiagram-JCYQIIEL-OFDVDDIM.js +1 -0
  97. data/website/assets/chunks/classDiagram-v2-OCEON4UE-E36B6BGQ.js +1 -0
  98. data/website/assets/chunks/cose-bilkent-JH36ORCC-CBAW64AB.js +1 -0
  99. data/website/assets/chunks/cynefin-VYW2F7L2-CBO6DLNV.js +1 -0
  100. data/website/assets/chunks/cynefinDiagram-MW4NZA55-DFINLOUY.js +62 -0
  101. data/website/assets/chunks/dagre-VZM6K2ZE-BZFBSZAH.js +4 -0
  102. data/website/assets/chunks/diagram-7IWD3JNH-XQHTVOU2.js +30 -0
  103. data/website/assets/chunks/diagram-B4RE2ZJO-FTSXBZJR.js +3 -0
  104. data/website/assets/chunks/diagram-LBJQPF4R-ZSZW4OLH.js +24 -0
  105. data/website/assets/chunks/diagram-Q27KOJAE-2IV5TVCJ.js +24 -0
  106. data/website/assets/chunks/diagram-UB23O5K3-D6PDUTFL.js +41 -0
  107. data/website/assets/chunks/ebnfDiagram-BXEA7PRR-C6MAER3M.js +1 -0
  108. data/website/assets/chunks/erDiagram-JOGREHBK-EDAD2H5M.js +85 -0
  109. data/website/assets/chunks/eventmodeling-45OFAUF4-4K577DMF.js +1 -0
  110. data/website/assets/chunks/flowDiagram-UKHOOZJN-545F4YX3.js +1 -0
  111. data/website/assets/chunks/ganttDiagram-PKOTCBZU-7A7EKMY3.js +292 -0
  112. data/website/assets/chunks/gitGraph-TEB2WS4Q-3WUB7WYQ.js +1 -0
  113. data/website/assets/chunks/gitGraphDiagram-DS77QQ5N-A5UWV5FF.js +106 -0
  114. data/website/assets/chunks/info-DKCQHKI2-EOOHI7XS.js +1 -0
  115. data/website/assets/chunks/infoDiagram-6WML65LV-CWIOOWJP.js +2 -0
  116. data/website/assets/chunks/ishikawaDiagram-WSZJBQD7-CEASQVDL.js +70 -0
  117. data/website/assets/chunks/journeyDiagram-NVQOT4AX-LYG3S2AW.js +139 -0
  118. data/website/assets/chunks/kanban-definition-27J2QSJJ-HCC6KAYI.js +89 -0
  119. data/website/assets/chunks/katex-F4MQ6FB3.js +257 -0
  120. data/website/assets/chunks/mindmap-definition-FAOFIHXS-JMGSM3RE.js +96 -0
  121. data/website/assets/chunks/packet-7NZHBO7P-W3SJA3MY.js +1 -0
  122. data/website/assets/chunks/pegDiagram-VL7TDLO6-4JO3Y3Z3.js +1 -0
  123. data/website/assets/chunks/pie-RZYD4A2V-YOIQBTY7.js +1 -0
  124. data/website/assets/chunks/pieDiagram-7S7Q4E2Y-VFQ7SE46.js +39 -0
  125. data/website/assets/chunks/quadrantDiagram-CIZ2JOQS-JISDI2S6.js +7 -0
  126. data/website/assets/chunks/radar-I7S5WNFK-NMKP5AZO.js +1 -0
  127. data/website/assets/chunks/railroad-3IZDKUUU-7MOIV7CI.js +1 -0
  128. data/website/assets/chunks/railroad-abnf-AHOZXSZD-HXNH5SLO.js +1 -0
  129. data/website/assets/chunks/railroad-ebnf-EBAXGLYW-OWDJEWMK.js +1 -0
  130. data/website/assets/chunks/railroad-peg-LSFZ7HO6-ASSINGP5.js +1 -0
  131. data/website/assets/chunks/railroadDiagram-AXF67PYL-AFV5VP5F.js +1 -0
  132. data/website/assets/chunks/requirementDiagram-LRYGKXZP-RNRPEHHN.js +84 -0
  133. data/website/assets/chunks/sankeyDiagram-W5VNT64P-O54R2L3E.js +40 -0
  134. data/website/assets/chunks/sequenceDiagram-SI44F4Z6-42WISKJ7.js +162 -0
  135. data/website/assets/chunks/sizeCapture-X5ZJPWSS-LRN2Q37T.js +1 -0
  136. data/website/assets/chunks/stateDiagram-OKZ733FA-BWIBJXIR.js +1 -0
  137. data/website/assets/chunks/stateDiagram-v2-UEYNNEHI-L73LHL3L.js +1 -0
  138. data/website/assets/chunks/swimlanes-SLNWSIFB-ECOAE7LQ.js +1 -0
  139. data/website/assets/chunks/swimlanesDiagram-ULZ7WXOC-3CKKKFZZ.js +8 -0
  140. data/website/assets/chunks/timeline-definition-Z64GVDOM-HR2OL5G7.js +120 -0
  141. data/website/assets/chunks/treeView-QDETBFTQ-C6D5WFJA.js +1 -0
  142. data/website/assets/chunks/treemap-6X3UGDF4-JFCDMSCA.js +1 -0
  143. data/website/assets/chunks/vennDiagram-T6HMQDX7-62WAAPTF.js +34 -0
  144. data/website/assets/chunks/wardley-OPB4EBWU-RQIOII7I.js +1 -0
  145. data/website/assets/chunks/wardleyDiagram-T6FBY63Y-KUXO3NHV.js +78 -0
  146. data/website/assets/chunks/xychartDiagram-ELKLHX3M-I54W4HJ7.js +7 -0
  147. data/website/assets/color-scheme-bootstrap-4H4ZR4BW.js +1 -0
  148. data/website/assets/docs-3WBBQT6K.css +1 -0
  149. data/website/assets/docs-W3D5DWQF.js +1 -0
  150. data/website/assets/docs-navigation-75ALFYBA.js +1 -0
  151. data/website/assets/graph-QWL54LWD.js +1 -0
  152. data/website/assets/manifest.json +314 -0
  153. data/website/assets/math-7JTH4OWZ.js +21 -0
  154. data/website/assets/mermaid-RXC6URG4.js +10 -0
  155. data/website/assets/minimal-3NPTDWQX.js +1 -0
  156. data/website/assets/minimal-E2VATXXS.css +1 -0
  157. data/website/assets/previews-FMHOX7UX.js +1 -0
  158. data/website/assets/search-BH73JZDU.js +1 -0
  159. data/website/assets/search-worker-SM4IM4J7.js +1 -0
  160. data/website/exe/jekyll-obsidian +5 -0
  161. data/website/lib/jekyll_obsidian/adapter.rb +733 -0
  162. data/website/lib/jekyll_obsidian/built_in_themes.rb +855 -0
  163. data/website/lib/jekyll_obsidian/cli.rb +84 -0
  164. data/website/lib/jekyll_obsidian/content_policy.rb +194 -0
  165. data/website/lib/jekyll_obsidian/destination_registry.rb +39 -0
  166. data/website/lib/jekyll_obsidian/directory_indexes.rb +30 -0
  167. data/website/lib/jekyll_obsidian/external_media.rb +371 -0
  168. data/website/lib/jekyll_obsidian/front_matter.rb +453 -0
  169. data/website/lib/jekyll_obsidian/github_markdown.rb +664 -0
  170. data/website/lib/jekyll_obsidian/html_publication.rb +206 -0
  171. data/website/lib/jekyll_obsidian/initializer.rb +68 -0
  172. data/website/lib/jekyll_obsidian/localized_compiler.rb +1044 -0
  173. data/website/lib/jekyll_obsidian/media_policy.rb +41 -0
  174. data/website/lib/jekyll_obsidian/ofm_scanner.rb +493 -0
  175. data/website/lib/jekyll_obsidian/output_text.rb +13 -0
  176. data/website/lib/jekyll_obsidian/preview.rb +93 -0
  177. data/website/lib/jekyll_obsidian/published_markdown.rb +32 -0
  178. data/website/lib/jekyll_obsidian/raw_html_manifest.rb +66 -0
  179. data/website/lib/jekyll_obsidian/runtime.rb +197 -0
  180. data/website/lib/jekyll_obsidian/site_compilation.rb +147 -0
  181. data/website/lib/jekyll_obsidian/site_navigation.rb +517 -0
  182. data/website/lib/jekyll_obsidian/url_builder.rb +163 -0
  183. data/website/lib/jekyll_obsidian/value_objects.rb +198 -0
  184. data/website/lib/jekyll_obsidian/vault_compiler.rb +2771 -0
  185. data/website/lib/jekyll_obsidian/version.rb +6 -0
  186. data/website/lib/jekyll_obsidian/workspace_layout.rb +104 -0
  187. data/website/lib/jekyll_obsidian.rb +22 -0
  188. data/website/scripts/audit-site.rb +120 -0
  189. data/website/scripts/templates/pages.yml +55 -0
  190. data/website/scripts/verify-site-urls.rb +585 -0
  191. metadata +319 -0
@@ -0,0 +1,10 @@
1
+ import{a as Ze}from"./chunks/chunk-VOCDYA3H.js";import{a as Je,b as er}from"./chunks/chunk-XNXYDBKX.js";import{a as sr}from"./chunks/chunk-34FHPXU4.js";import"./chunks/chunk-57XXJOQN.js";import"./chunks/chunk-MYMJLHQL.js";import"./chunks/chunk-YORIST7Z.js";import"./chunks/chunk-QBPQ7DPE.js";import"./chunks/chunk-XQUIO562.js";import"./chunks/chunk-GSOU4UTT.js";import{a as nr}from"./chunks/chunk-IP56FOSI.js";import{b as or}from"./chunks/chunk-CBGUD2NP.js";import{b as xe,d as rr,m as Se,o as tr,p as G,q as ar,r as ir}from"./chunks/chunk-6DCNDVBX.js";import"./chunks/chunk-22DRK7VS.js";import{B as We,C as ee,D as be,E as re,F as Xe,O as Ke,Q as Ee,R as Qe,da as X,ea as te,g as Ne,h as ze,j as J,m as He,n as ye,o as Pe,p as Ve,q as Ge,r as qe,s as we,t as Ue,u as V,v as Be,w as W,y as Ye,z as je}from"./chunks/chunk-7CSIRG7W.js";import{b as g,c as he}from"./chunks/chunk-ERWOH47R.js";import{a as i}from"./chunks/chunk-EIBFAW37.js";import{a as Re,d as Ie,e as Oe,f as Fe,g as $e}from"./chunks/chunk-SZDMZNUS.js";import{b as ke}from"./chunks/chunk-GMBKQ7NZ.js";import{e as R}from"./chunks/chunk-LGUG3SQB.js";import"./chunks/chunk-UE533OZ7.js";import"./chunks/chunk-6DHFEWGX.js";var q="comm",ae="rule",ie="decl";var dr="@media",cr="@import";var lr="@supports";var mr="@namespace",K="@keyframes";var oe="@layer",ur="@scope";var pr=Math.abs,z=String.fromCharCode;function ne(e){return e.trim()}function Q(e,r,t){return e.replace(r,t)}function k(e,r){return e.charCodeAt(r)|0}function I(e,r,t){return e.slice(r,t)}function b(e){return e.length}function se(e){return e.length}function U(e,r){return r.push(e),e}var de=1,B=1,fr=0,x=0,h=0,j="";function ce(e,r,t,a,o,n,d,c){return{value:e,root:r,parent:t,type:a,props:o,children:n,line:de,column:B,length:d,return:"",siblings:c}}function gr(){return h}function vr(){return h=x>0?k(j,--x):0,B--,h===10&&(B=1,de--),h}function S(){return h=x<fr?k(j,x++):0,B++,h===10&&(B=1,de++),h}function O(){return k(j,x)}function Z(){return x}function le(e,r){return I(j,e,r)}function Y(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function hr(e){return de=B=1,fr=b(j=e),x=0,[]}function yr(e){return j="",e}function me(e){return ne(le(x-1,De(e===91?e+2:e===40?e+1:e)))}function wr(e){for(;(h=O())&&h<33;)S();return Y(e)>2||Y(h)>3?"":" "}function br(e,r){for(;--r&&S()&&!(h<48||h>102||h>57&&h<65||h>70&&h<97););return le(e,Z()+(r<6&&O()==32&&S()==32))}function De(e){for(;S();)switch(h){case e:return x;case 34:case 39:e!==34&&e!==39&&De(h);break;case 40:e===41&&De(e);break;case 92:S();break}return x}function Er(e,r){for(;S()&&e+h!==57;)if(e+h===84&&O()===47)break;return"/*"+le(r,x-1)+"*"+z(e===47?e:S())}function xr(e){for(;!Y(O());)S();return le(e,x)}function Tr(e){return yr(ue("",null,null,null,[""],e=hr(e),0,[0],e))}function ue(e,r,t,a,o,n,d,c,s){for(var u=0,p=0,l=d,y=0,T=0,L=0,f=1,_=1,M=1,w=0,v=0,C="",P=o,A=n,E=a,m=C;_;)switch(L=v,v=S()){case 40:L!=108&&k(m,l-1)==58?(w++,m+="("):m+=me(v);break;case 41:w--,m+=")";break;case 34:case 39:case 91:m+=me(v);break;case 9:case 10:case 13:case 32:if(w>0){m+=z(v);break}m+=wr(L);break;case 92:m+=br(Z()-1,7);continue;case 47:switch(O()){case 42:case 47:U(Nt(Er(S(),Z()),r,t,s),s),(Y(L||1)==5||Y(O()||1)==5)&&b(m)&&I(m,-1,void 0)!==" "&&(m+=" ");break;default:m+="/"}break;case 123*f:c[u++]=b(m)*M;case 125*f:case 59:case 0:if(w>0&&v){m+=z(v);break}switch(v){case 0:case 125:_=0;case 59+p:M==-1&&(m=Q(m,/\f/g,"")),T>0&&(b(m)-l||f===0)&&U(T>32?Dr(m+";",a,t,l-1,s):Dr(Q(m," ","")+";",a,t,l-2,s),s);break;case 59:m+=";";default:if(U(E=Sr(m,r,t,u,p,o,c,C,P=[],A=[],l,n),n),v===123)if(p===0)ue(m,r,E,E,P,n,l,c,A);else{switch(y){case 99:if(k(m,3)===110)break;case 108:if(k(m,2)===97)break;default:p=0;case 100:case 109:case 115:}p?ue(e,E,E,a&&U(Sr(e,E,E,0,0,o,c,C,o,P=[],l,A),A),o,A,l,c,a?P:A):ue(m,E,E,E,[""],A,0,c,A)}}u=p=T=0,f=M=1,C=m="",l=d;break;case 58:l=1+b(m),T=L;default:if(f<1){if(v==123)--f;else if(v==125&&f++==0&&vr()==125)continue}switch(m+=z(v),v*f){case 38:M=p>0?1:(m+="\f",-1);break;case 44:if(w>0)break;c[u++]=(b(m)-1)*M,M=1;break;case 64:O()===45&&(m+=me(S())),y=O(),p=l=b(C=m+=xr(Z())),v++;break;case 45:L===45&&b(m)==2&&(f=0)}}return n}function Sr(e,r,t,a,o,n,d,c,s,u,p,l){for(var y=o-1,T=o===0?n:[""],L=se(T),f=0,_=0,M=0;f<a;++f)for(var w=0,v=I(e,y+1,y=pr(_=d[f])),C=e;w<L;++w)(C=ne(_>0?T[w]+" "+v:Q(v,/&\f/g,T[w])))&&(s[M++]=C);return ce(e,r,t,o===0?ae:c,s,u,p,l)}function Nt(e,r,t,a){return ce(e,r,t,q,z(gr()),I(e,2,-2),0,a)}function Dr(e,r,t,a,o){return ce(e,r,t,ie,I(e,0,a),I(e,a+1,-1),a,o)}function pe(e,r){for(var t="",a=0;a<e.length;a++)t+=r(e[a],a,e,r)||"";return t}function Lr(e,r,t,a){switch(e.type){case oe:if(e.children.length)break;case cr:case mr:case ie:return e.return=e.return||e.value;case q:return"";case K:return e.return=e.value+"{"+pe(e.children,a)+"}";case ae:if(!b(e.value=e.props.join(",")))return""}return b(t=pe(e.children,a))?e.return=e.value+"{"+t+"}":""}function Mr(e){var r=se(e);return function(t,a,o,n){for(var d="",c=0;c<r;c++)d+=e[c](t,a,o,n)||"";return d}}var kr="c4",zt=i(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),Ht=i(async()=>{let{diagram:e}=await import("./chunks/c4Diagram-5PPSVZJV-R5RMEAOT.js");return{id:kr,diagram:e}},"loader"),Pt={id:kr,detector:zt,loader:Ht},Vt=Pt,Ir="flowchart",Gt=i((e,r)=>r?.flowchart?.defaultRenderer==="dagre-wrapper"||r?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(e),"detector"),qt=i(async()=>{let{diagram:e}=await import("./chunks/flowDiagram-UKHOOZJN-545F4YX3.js");return{id:Ir,diagram:e}},"loader"),Ut={id:Ir,detector:Gt,loader:qt},Bt=Ut,Or="flowchart-v2",Yt=i((e,r)=>r?.flowchart?.defaultRenderer==="dagre-d3"?!1:(r?.flowchart?.defaultRenderer==="elk"&&(r.layout="elk"),/^\s*graph/.test(e)&&r?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(e)),"detector"),jt=i(async()=>{let{diagram:e}=await import("./chunks/flowDiagram-UKHOOZJN-545F4YX3.js");return{id:Or,diagram:e}},"loader"),Wt={id:Or,detector:Yt,loader:jt},Xt=Wt,Fr="swimlane",Kt=i(e=>/^\s*swimlane-beta\b/.test(e),"detector"),Qt=i(async()=>{let{diagram:e}=await import("./chunks/swimlanesDiagram-ULZ7WXOC-3CKKKFZZ.js");return{id:Fr,diagram:e}},"loader"),Zt={id:Fr,detector:Kt,loader:Qt},Jt=Zt,$r="er",ea=i(e=>/^\s*erDiagram/.test(e),"detector"),ra=i(async()=>{let{diagram:e}=await import("./chunks/erDiagram-JOGREHBK-EDAD2H5M.js");return{id:$r,diagram:e}},"loader"),ta={id:$r,detector:ea,loader:ra},aa=ta,Nr="gitGraph",ia=i(e=>/^\s*gitGraph/.test(e),"detector"),oa=i(async()=>{let{diagram:e}=await import("./chunks/gitGraphDiagram-DS77QQ5N-A5UWV5FF.js");return{id:Nr,diagram:e}},"loader"),na={id:Nr,detector:ia,loader:oa},sa=na,zr="gantt",da=i(e=>/^\s*gantt/.test(e),"detector"),ca=i(async()=>{let{diagram:e}=await import("./chunks/ganttDiagram-PKOTCBZU-7A7EKMY3.js");return{id:zr,diagram:e}},"loader"),la={id:zr,detector:da,loader:ca},ma=la,Hr="info",ua=i(e=>/^\s*info/.test(e),"detector"),pa=i(async()=>{let{diagram:e}=await import("./chunks/infoDiagram-6WML65LV-CWIOOWJP.js");return{id:Hr,diagram:e}},"loader"),fa={id:Hr,detector:ua,loader:pa},Pr="pie",ga=i(e=>/^\s*pie/.test(e),"detector"),va=i(async()=>{let{diagram:e}=await import("./chunks/pieDiagram-7S7Q4E2Y-VFQ7SE46.js");return{id:Pr,diagram:e}},"loader"),ha={id:Pr,detector:ga,loader:va},Vr="quadrantChart",ya=i(e=>/^\s*quadrantChart/.test(e),"detector"),wa=i(async()=>{let{diagram:e}=await import("./chunks/quadrantDiagram-CIZ2JOQS-JISDI2S6.js");return{id:Vr,diagram:e}},"loader"),ba={id:Vr,detector:ya,loader:wa},Ea=ba,Gr="xychart",xa=i(e=>/^\s*xychart(-beta)?/.test(e),"detector"),Sa=i(async()=>{let{diagram:e}=await import("./chunks/xychartDiagram-ELKLHX3M-I54W4HJ7.js");return{id:Gr,diagram:e}},"loader"),Da={id:Gr,detector:xa,loader:Sa},Ta=Da,qr="requirement",La=i(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),Ma=i(async()=>{let{diagram:e}=await import("./chunks/requirementDiagram-LRYGKXZP-RNRPEHHN.js");return{id:qr,diagram:e}},"loader"),Ca={id:qr,detector:La,loader:Ma},Aa=Ca,Ur="sequence",_a=i(e=>/^\s*sequenceDiagram/.test(e),"detector"),Ra=i(async()=>{let{diagram:e}=await import("./chunks/sequenceDiagram-SI44F4Z6-42WISKJ7.js");return{id:Ur,diagram:e}},"loader"),ka={id:Ur,detector:_a,loader:Ra},Ia=ka,Br="class",Oa=i((e,r)=>r?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e),"detector"),Fa=i(async()=>{let{diagram:e}=await import("./chunks/classDiagram-JCYQIIEL-OFDVDDIM.js");return{id:Br,diagram:e}},"loader"),$a={id:Br,detector:Oa,loader:Fa},Na=$a,Yr="classDiagram",za=i((e,r)=>/^\s*classDiagram/.test(e)&&r?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e),"detector"),Ha=i(async()=>{let{diagram:e}=await import("./chunks/classDiagram-v2-OCEON4UE-E36B6BGQ.js");return{id:Yr,diagram:e}},"loader"),Pa={id:Yr,detector:za,loader:Ha},Va=Pa,jr="state",Ga=i((e,r)=>r?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e),"detector"),qa=i(async()=>{let{diagram:e}=await import("./chunks/stateDiagram-OKZ733FA-BWIBJXIR.js");return{id:jr,diagram:e}},"loader"),Ua={id:jr,detector:Ga,loader:qa},Ba=Ua,Wr="stateDiagram",Ya=i((e,r)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&r?.state?.defaultRenderer==="dagre-wrapper"),"detector"),ja=i(async()=>{let{diagram:e}=await import("./chunks/stateDiagram-v2-UEYNNEHI-L73LHL3L.js");return{id:Wr,diagram:e}},"loader"),Wa={id:Wr,detector:Ya,loader:ja},Xa=Wa,Xr="journey",Ka=i(e=>/^\s*journey/.test(e),"detector"),Qa=i(async()=>{let{diagram:e}=await import("./chunks/journeyDiagram-NVQOT4AX-LYG3S2AW.js");return{id:Xr,diagram:e}},"loader"),Za={id:Xr,detector:Ka,loader:Qa},Ja=Za,ei=i((e,r,t)=>{g.debug(`rendering svg for syntax error
2
+ `);let a=Ze(r),o=a.append("g");a.attr("viewBox","0 0 2412 512"),Ke(a,100,512,!0),o.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),o.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),o.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),o.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),o.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),o.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),o.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),o.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${t}`)},"draw"),Kr={draw:ei},ri=Kr,ti={db:{},renderer:Kr,parser:{parse:i(()=>{},"parse")}},ai=ti,Qr="flowchart-elk",ii=i((e,r={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&r?.flowchart?.defaultRenderer==="elk"?(r.layout="elk",!0):!1,"detector"),oi=i(async()=>{let{diagram:e}=await import("./chunks/flowDiagram-UKHOOZJN-545F4YX3.js");return{id:Qr,diagram:e}},"loader"),ni={id:Qr,detector:ii,loader:oi},si=ni,Zr="timeline",di=i(e=>/^\s*timeline/.test(e),"detector"),ci=i(async()=>{let{diagram:e}=await import("./chunks/timeline-definition-Z64GVDOM-HR2OL5G7.js");return{id:Zr,diagram:e}},"loader"),li={id:Zr,detector:di,loader:ci},mi=li,Jr="mindmap",ui=i(e=>/^\s*mindmap/.test(e),"detector"),pi=i(async()=>{let{diagram:e}=await import("./chunks/mindmap-definition-FAOFIHXS-JMGSM3RE.js");return{id:Jr,diagram:e}},"loader"),fi={id:Jr,detector:ui,loader:pi},gi=fi,et="kanban",vi=i(e=>/^\s*kanban/.test(e),"detector"),hi=i(async()=>{let{diagram:e}=await import("./chunks/kanban-definition-27J2QSJJ-HCC6KAYI.js");return{id:et,diagram:e}},"loader"),yi={id:et,detector:vi,loader:hi},wi=yi,rt="sankey",bi=i(e=>/^\s*sankey(-beta)?/.test(e),"detector"),Ei=i(async()=>{let{diagram:e}=await import("./chunks/sankeyDiagram-W5VNT64P-O54R2L3E.js");return{id:rt,diagram:e}},"loader"),xi={id:rt,detector:bi,loader:Ei},Si=xi,tt="packet",Di=i(e=>/^\s*packet(-beta)?/.test(e),"detector"),Ti=i(async()=>{let{diagram:e}=await import("./chunks/diagram-LBJQPF4R-ZSZW4OLH.js");return{id:tt,diagram:e}},"loader"),Li={id:tt,detector:Di,loader:Ti},at="radar",Mi=i(e=>/^\s*radar-beta/.test(e),"detector"),Ci=i(async()=>{let{diagram:e}=await import("./chunks/diagram-UB23O5K3-D6PDUTFL.js");return{id:at,diagram:e}},"loader"),Ai={id:at,detector:Mi,loader:Ci},it="block",_i=i(e=>/^\s*block(-beta)?/.test(e),"detector"),Ri=i(async()=>{let{diagram:e}=await import("./chunks/blockDiagram-VBNYF7ZC-ZWINYROZ.js");return{id:it,diagram:e}},"loader"),ki={id:it,detector:_i,loader:Ri},Ii=ki,ot="treeView",Oi=i(e=>/^\s*treeView-beta/.test(e),"detector"),Fi=i(async()=>{let{diagram:e}=await import("./chunks/diagram-7IWD3JNH-XQHTVOU2.js");return{id:ot,diagram:e}},"loader"),$i={id:ot,detector:Oi,loader:Fi},Ni=$i,nt="architecture",zi=i(e=>/^\s*architecture/.test(e),"detector"),Hi=i(async()=>{let{diagram:e}=await import("./chunks/architectureDiagram-T3A2C74G-6P5MB2DJ.js");return{id:nt,diagram:e}},"loader"),Pi={id:nt,detector:zi,loader:Hi},Vi=Pi,st="eventmodeling",Gi=i(e=>/^\s*eventmodeling/.test(e),"detector"),qi=i(async()=>{let{diagram:e}=await import("./chunks/diagram-B4RE2ZJO-FTSXBZJR.js");return{id:st,diagram:e}},"loader"),Ui={id:st,detector:Gi,loader:qi},Bi=Ui,dt="ishikawa",Yi=i(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),ji=i(async()=>{let{diagram:e}=await import("./chunks/ishikawaDiagram-WSZJBQD7-CEASQVDL.js");return{id:dt,diagram:e}},"loader"),Wi={id:dt,detector:Yi,loader:ji},ct="venn",Xi=i(e=>/^\s*venn-beta/.test(e),"detector"),Ki=i(async()=>{let{diagram:e}=await import("./chunks/vennDiagram-T6HMQDX7-62WAAPTF.js");return{id:ct,diagram:e}},"loader"),Qi={id:ct,detector:Xi,loader:Ki},Zi=Qi,lt="treemap",Ji=i(e=>/^\s*treemap/.test(e),"detector"),eo=i(async()=>{let{diagram:e}=await import("./chunks/diagram-Q27KOJAE-2IV5TVCJ.js");return{id:lt,diagram:e}},"loader"),ro={id:lt,detector:Ji,loader:eo},mt="wardley",to=i(e=>/^\s*wardley-beta/i.test(e),"detector"),ao=i(async()=>{let{diagram:e}=await import("./chunks/wardleyDiagram-T6FBY63Y-KUXO3NHV.js");return{id:mt,diagram:e}},"loader"),io={id:mt,detector:to,loader:ao},oo=io,ut="cynefin",no=i(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),"detector"),so=i(async()=>{let{diagram:e}=await import("./chunks/cynefinDiagram-MW4NZA55-DFINLOUY.js");return{id:ut,diagram:e}},"loader"),co={id:ut,detector:no,loader:so},pt="railroad",lo=i(e=>/^\s*railroad-beta/i.test(e),"detector"),mo=i(async()=>{let{diagram:e}=await import("./chunks/railroadDiagram-AXF67PYL-AFV5VP5F.js");return{id:pt,diagram:e}},"loader"),uo={id:pt,detector:lo,loader:mo},ft="railroadEbnf",po=i(e=>/^\s*railroad-ebnf-beta/i.test(e),"detector"),fo=i(async()=>{let{diagram:e}=await import("./chunks/ebnfDiagram-BXEA7PRR-C6MAER3M.js");return{id:ft,diagram:e}},"loader"),go={id:ft,detector:po,loader:fo},gt="railroadAbnf",vo=i(e=>/^\s*railroad-abnf-beta/i.test(e),"detector"),ho=i(async()=>{let{diagram:e}=await import("./chunks/abnfDiagram-N423BO3Z-TSORAEI2.js");return{id:gt,diagram:e}},"loader"),yo={id:gt,detector:vo,loader:ho},vt="railroadPeg",wo=i(e=>/^\s*railroad-peg-beta/i.test(e),"detector"),bo=i(async()=>{let{diagram:e}=await import("./chunks/pegDiagram-VL7TDLO6-4JO3Y3Z3.js");return{id:vt,diagram:e}},"loader"),Eo={id:vt,detector:wo,loader:bo},Cr=!1,ge=i(()=>{Cr||(Cr=!0,X("error",ai,e=>e.toLowerCase().trim()==="error"),X("---",{db:{clear:i(()=>{},"clear")},styles:{},renderer:{draw:i(()=>{},"draw")},parser:{parse:i(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:i(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),re(si,gi,Vi),re(Vt,wi,Va,Na,aa,ma,fa,ha,Aa,Ia,Jt,Xt,Bt,mi,sa,Xa,Ba,Ja,Ea,Si,Li,Ta,Ii,Bi,Ni,Ai,Wi,ro,uo,go,yo,Eo,Zi,oo,co))},"addDiagrams"),xo=i(async()=>{g.debug("Loading registered diagrams");let r=(await Promise.allSettled(Object.entries(ee).map(async([t,{detector:a,loader:o}])=>{if(o)try{te(t)}catch{try{let{diagram:n,id:d}=await o();X(d,n,a)}catch(n){throw g.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete ee[t],n}}}))).filter(t=>t.status==="rejected");if(r.length>0){g.error(`Failed to load ${r.length} external diagrams`);for(let t of r)g.error(t);throw new Error(`Failed to load ${r.length} external diagrams`)}},"loadRegisteredDiagrams"),So="graphics-document document";function ht(e,r){e.attr("role",So),r!==""&&e.attr("aria-roledescription",r)}i(ht,"setA11yDiagramInfo");function yt(e,r,t,a){if(e.insert!==void 0){if(t){let o=`chart-desc-${a}`;e.attr("aria-describedby",o),e.insert("desc",":first-child").attr("id",o).text(t)}if(r){let o=`chart-title-${a}`;e.attr("aria-labelledby",o),e.insert("title",":first-child").attr("id",o).text(r)}}}i(yt,"addSVGa11yTitleDescription");var Le=class wt{constructor(r,t,a,o,n){this.type=r,this.text=t,this.db=a,this.parser=o,this.renderer=n}static{i(this,"Diagram")}static async fromText(r,t={}){let a=V(),o=be(r,a);r=ar(r)+`
3
+ `;try{te(o)}catch{let u=Xe(o);if(!u)throw new We(`Diagram ${o} not found.`);let{id:p,diagram:l}=await u();X(p,l)}let{db:n,parser:d,renderer:c,init:s}=te(o);return d.parser&&(d.parser.yy=n),n.clear?.(),s?.(a),t.title&&n.setDiagramTitle?.(t.title),await d.parse(r),new wt(o,r,n,d,c)}async render(r,t){await this.renderer.draw(this.text,r,t,this)}getParser(){return this.parser}getType(){return this.type}},Ar=[],Do=i(()=>{Ar.forEach(e=>{e()}),Ar=[]},"attachFunctions"),To=i(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function bt(e){let r=e.match(je);if(!r)return{text:e,metadata:{}};let t=r[1],a=t?r[2].split(`
4
+ `).map(d=>d.startsWith(t)?d.slice(t.length):d).join(`
5
+ `):r[2],o=er(a,{schema:Je})??{};o=typeof o=="object"&&!Array.isArray(o)?o:{};let n={};return o.displayMode&&(n.displayMode=o.displayMode.toString()),o.title&&(n.title=o.title.toString()),o.config&&(n.config=o.config),{text:e.slice(r[0].length),metadata:n}}i(bt,"extractFrontMatter");var Lo=i(e=>e.replace(/\r\n?/g,`
6
+ `).replace(/<(\w+)([^>]*)>/g,(r,t,a)=>"<"+t+a.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Mo=i(e=>{let{text:r,metadata:t}=bt(e),{displayMode:a,title:o,config:n={}}=t;return a&&(n.gantt||(n.gantt={}),n.gantt.displayMode=a),{title:o,config:n,text:r}},"processFrontmatter"),Co=i(e=>{let r=G.detectInit(e)??{},t=G.detectDirective(e,"wrap");return Array.isArray(t)?r.wrap=t.some(({type:a})=>a==="wrap"):t?.type==="wrap"&&(r.wrap=!0),{text:rr(e),directive:r}},"processDirectives");function Ce(e){let r=Lo(e),t=Mo(r),a=Co(t.text),o=tr(t.config,a.directive);return e=To(a.text),{code:e,title:t.title,config:o}}i(Ce,"preprocessDiagram");function Et(e){let r=new TextEncoder().encode(e),t=Array.from(r,a=>String.fromCodePoint(a)).join("");return btoa(t)}i(Et,"toBase64");var Ao=5e4,_o="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Ro="sandbox",ko="loose",Io="http://www.w3.org/2000/svg",Oo="http://www.w3.org/1999/xlink",Fo="http://www.w3.org/1999/xhtml",$o="100%",No="100%",zo="border:0;margin:0;",Ho="margin:0",Po="allow-top-navigation-by-user-activation allow-popups",Vo='The "iframe" tag is not supported by your browser.',Go=["foreignobject"],qo=["dominant-baseline"];function Ae(e){let r=Ce(e);return W(),Be(r.config??{}),r}i(Ae,"processAndSetConfigs");async function xt(e,r){ge();try{let{code:t,config:a}=Ae(e);return{diagramType:(await Dt(t)).type,config:a}}catch(t){if(r?.suppressErrors)return!1;throw t}}i(xt,"parse");var _r=i((e,r,t=[])=>{let a=He(`{ ${t.join(" !important; ")} !important; }`);return`.${e} ${r} ${a}`},"cssImportantStyles"),Uo=i((e,r=new Map)=>{let t=new CSSStyleSheet;if(e.fontFamily!==void 0&&t.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,t.cssRules.length),e.altFontFamily!==void 0&&t.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,t.cssRules.length),r instanceof Map){let c=Ye(e)?["> *","span"]:["rect","polygon","ellipse","circle","path"];r.forEach(s=>{xe(s.styles)||c.forEach(u=>{t.insertRule(_r(s.id,u,s.styles),t.cssRules.length)}),xe(s.textStyles)||t.insertRule(_r(s.id,"tspan",(s?.textStyles||[]).map(u=>u.replace("color","fill"))),t.cssRules.length)})}let a="";if(e.themeCSS!==void 0)if(typeof t.replaceSync=="function"){let o=new CSSStyleSheet;o.replaceSync(e.themeCSS),a=Ee(o)+`
7
+ `}else a+=`${e.themeCSS}
8
+ `;return a+Ee(t)},"createCssStyles"),Bo=i((e,r)=>pe(Tr(`${e}{${r}}`),Mr([i(function(a,o,n,d){if(a.type==="rule"&&Array.isArray(a.props)){if(a.parent&&a.parent.type===K)return;a.props=a.props.map(c=>c===e&&Array.isArray(a.children)&&a.children.every(u=>u.type!=="decl"?!1:new Set(["font-family","font-size","fill"]).has(u.props))||(c.startsWith(`${e} `)||c.startsWith(`${e}>`))&&!c.startsWith(`${e} ||`)?c:`${e} ${c}`)}else a.type.startsWith("@")&&([...[dr,lr,oe,ur,"@container","@starting-style"],K].includes(a.type)||(g.warn(`Removing unsupported at-rule ${a.type} from CSS`),a.type=q))},"addNamespace"),Lr])),"compileCSS"),Yo=i((e,r,t,a)=>{let o=Uo(e,t),n=Qe(r,o,{...e.themeVariables,theme:e.theme,look:e.look},a);return Bo(a,n)},"createUserStyles"),jo=i((e="",r,t)=>{let a=e;return!t&&!r&&(a=a.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),a=ir(a),a=a.replace(/<br>/g,"<br/>"),a},"cleanUpSvgCode"),Wo=i((e="",r)=>{let t=r?.viewBox?.baseVal?.height?r.viewBox.baseVal.height+"px":No,a=Et(`<body style="${Ho}">${e}</body>`);return`<iframe style="width:${$o};height:${t};${zo}" src="data:text/html;charset=UTF-8;base64,${a}" sandbox="${Po}">
9
+ ${Vo}
10
+ </iframe>`},"putIntoIFrame"),Rr=i((e,r,t,a,o)=>{let n=e.append("div");n.attr("id",t),a&&n.attr("style",a);let d=n.append("svg").attr("id",r).attr("width","100%").attr("xmlns",Io);return o&&d.attr("xmlns:xlink",o),d.append("g"),e},"appendDivSvgG");function Me(e,r){return e.append("iframe").attr("id",r).attr("style","width: 100%; height: 100%;").attr("sandbox","")}i(Me,"sandboxedIframe");var Xo=i((e,r,t,a)=>{e.getElementById(r)?.remove(),e.getElementById(t)?.remove(),e.getElementById(a)?.remove()},"removeExistingElements"),Ko=i(async function(e,r,t){ge();let a=Ae(r);r=a.code;let o=V();g.debug(o),r.length>(o?.maxTextSize??Ao)&&(r=_o);let n=`#${e}`,d="i"+e,c="#"+d,s="d"+e,u="#"+s,p=i(()=>{let ve=R(y?c:u).node();ve&&"remove"in ve&&ve.remove()},"removeTempElements"),l=R(document.body),y=o.securityLevel===Ro,T=o.securityLevel===ko,L=o.fontFamily;if(t!==void 0){if(t&&(t.innerHTML=""),y){let D=Me(R(t),d);l=R(D.nodes()[0].contentDocument.body),l.node().style.margin="0"}else l=R(t);Rr(l,e,s,`font-family: ${L}`,Oo)}else{if(Xo(document,e,s,d),y){let D=Me(R(document.body),d);l=R(D.nodes()[0].contentDocument.body),l.node().style.margin="0"}else l=R("body");Rr(l,e,s)}let f,_;try{f=await Le.fromText(r,{title:a.title})}catch(D){if(o.suppressErrorRendering)throw p(),D;f=await Le.fromText("error"),_=D}let M=l.select(u).node(),w=f.type,v=M.firstChild,C=v.firstChild,P=f.renderer.getClasses?.(r,f),A=Yo(o,w,P,n),E=document.createElement("style");E.innerHTML=A,v.insertBefore(E,C);try{await f.renderer.draw(r,e,"11.16.1",f)}catch(D){throw o.suppressErrorRendering?p():ri.draw(r,e,"11.16.1"),D}let m=l.select(`${u} svg`),Ot=f.db.getAccTitle?.(),Ft=f.db.getAccDescription?.();Tt(w,m,Ot,Ft),l.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",Fo);let N=l.select(u).node().innerHTML;if(g.debug("config.arrowMarkerAbsolute",o.arrowMarkerAbsolute),N=jo(N,y,Pe(o.arrowMarkerAbsolute)),y){let D=l.select(u+" svg").node();N=Wo(N,D)}else T||(N=Ne.sanitize(N,{ADD_TAGS:Go,ADD_ATTR:qo,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Do(),_)throw _;return p(),{diagramType:w,svg:N,bindFunctions:f.db.bindFunctions}},"render");function St(e={}){let r=ze({},e);r?.fontFamily&&!r.themeVariables?.fontFamily&&(r.themeVariables||(r.themeVariables={}),r.themeVariables.fontFamily=r.fontFamily),Ge(r),r?.theme&&r.theme in J?r.themeVariables=J[r.theme].getThemeVariables(r.themeVariables):r&&(r.themeVariables=J.default.getThemeVariables(r.themeVariables));let t=typeof r=="object"?Ve(r):we();he(t.logLevel),ge()}i(St,"initialize");var Dt=i((e,r={})=>{let{code:t}=Ce(e);return Le.fromText(t,r)},"getDiagramFromText");function Tt(e,r,t,a){ht(r,e),yt(r,t,a,r.attr("id"))}i(Tt,"addA11yInfo");var H=Object.freeze({render:Ko,parse:xt,getDiagramFromText:Dt,initialize:St,getConfig:V,setConfig:Ue,getSiteConfig:we,updateSiteConfig:qe,reset:i(()=>{W()},"reset"),globalReset:i(()=>{W(ye)},"globalReset"),defaultConfig:ye});he(V().logLevel);W(V());var Qo=i((e,r,t)=>{g.warn(e),Se(e)?(t&&t(e.str,e.hash),r.push({...e,message:e.str,error:e})):(t&&t(e),e instanceof Error&&r.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),Lt=i(async function(e={querySelector:".mermaid"}){try{await Zo(e)}catch(r){if(Se(r)&&g.error(r.str),F.parseError&&F.parseError(r),!e.suppressErrors)throw g.error("Use the suppressErrors option to suppress these errors"),r}},"run"),Zo=i(async function({postRenderCallback:e,querySelector:r,nodes:t}={querySelector:".mermaid"}){let a=H.getConfig();g.debug(`${e?"":"No "}Callback function found`);let o;if(t)o=t;else if(r)o=document.querySelectorAll(r);else throw new Error("Nodes and querySelector are both undefined");g.debug(`Found ${o.length} diagrams`),a?.startOnLoad!==void 0&&(g.debug("Start On Load: "+a?.startOnLoad),H.updateSiteConfig({startOnLoad:a?.startOnLoad}));let n=new G.InitIDGenerator(a.deterministicIds,a.deterministicIDSeed),d,c=[];for(let s of Array.from(o)){if(g.info("Rendering diagram: "+s.id),s.getAttribute("data-processed"))continue;s.setAttribute("data-processed","true");let u=`mermaid-${n.next()}`;d=s.innerHTML,d=nr(G.entityDecode(d)).trim().replace(/<br\s*\/?>/gi,"<br/>");let p=G.detectInit(d);p&&g.debug("Detected early reinit: ",p);try{let{svg:l,bindFunctions:y}=await _t(u,d,s);s.innerHTML=l,e&&await e(u),y&&y(s)}catch(l){Qo(l,c,F.parseError)}}if(c.length>0)throw c[0]},"runThrowsErrors"),Mt=i(function(e){H.initialize(e)},"initialize"),Jo=i(async function(e,r,t){g.warn("mermaid.init is deprecated. Please use run instead."),e&&Mt(e);let a={postRenderCallback:t,querySelector:".mermaid"};typeof r=="string"?a.querySelector=r:r&&(r instanceof HTMLElement?a.nodes=[r]:a.nodes=r),await Lt(a)},"init"),en=i(async(e,{lazyLoad:r=!0}={})=>{ge(),re(...e),r===!1&&await xo()},"registerExternalDiagrams"),Ct=i(function(){if(F.startOnLoad){let{startOnLoad:e}=H.getConfig();e&&F.run().catch(r=>g.error("Mermaid failed to initialize",r))}},"contentLoaded");typeof document<"u"&&window.addEventListener("load",Ct,!1);var rn=i(function(e){F.parseError=e},"setParseErrorHandler"),fe=[],Te=!1,At=i(async()=>{if(!Te){for(Te=!0;fe.length>0;){let e=fe.shift();if(e)try{await e()}catch(r){g.error("Error executing queue",r)}}Te=!1}},"executeQueue"),tn=i(async(e,r)=>new Promise((t,a)=>{let o=i(()=>new Promise((n,d)=>{H.parse(e,r).then(c=>{n(c),t(c)},c=>{g.error("Error parsing",c),F.parseError?.(c),d(c),a(c)})}),"performCall");fe.push(o),At().catch(a)}),"parse"),_t=i((e,r,t)=>new Promise((a,o)=>{let n=i(()=>new Promise((d,c)=>{H.render(e,r,t).then(s=>{d(s),a(s)},s=>{g.error("Error parsing",s),F.parseError?.(s),c(s),o(s)})}),"performCall");fe.push(n),At().catch(o)}),"render"),an=i(()=>Object.keys(ee).map(e=>({id:e})),"getRegisteredDiagramsMetadata"),F={startOnLoad:!0,mermaidAPI:H,parse:tn,render:_t,init:Jo,run:Lt,registerExternalDiagrams:en,registerLayoutLoaders:sr,initialize:Mt,parseError:void 0,contentLoaded:Ct,setParseErrorHandler:rn,detectType:be,registerIconPacks:or,getRegisteredDiagramsMetadata:an},_e=F;var Rt=!1,kt=Symbol.for("jekyll-obsidian.mermaid-interaction-controller");function $(e,r){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()||r}function on(){return Array.from(document.querySelectorAll("pre:has(> code.language-mermaid), [data-mermaid]:not([data-mermaid-rendered])"))}function nn(e){let r=document.createElement("template");r.innerHTML=e;let t=Array.from(r.content.childNodes).filter(o=>o.nodeType!==Node.TEXT_NODE||!!o.textContent?.trim()),[a]=t;if(t.length!==1||!(a instanceof SVGSVGElement))throw new Error("Invalid Mermaid SVG");return a}function sn(e){if(e.querySelector(":scope > button[data-mermaid-expand]"))return;let t=e.closest(".note-content")?.dataset.expandDiagramLabel||"Expand diagram",a=document.createElement("button");a.className="source-copy__button mermaid-diagram__expand",a.type="button",a.dataset.mermaidExpand="",a.setAttribute("aria-label",t),a.title=t,a.lang=document.documentElement.lang,a.dir=document.documentElement.dir,a.append($e()),e.append(a)}function It(e,r){let t=e.querySelector(":scope > svg"),a=e.closest(".note-content");t&&Ie({source:t,opener:r,kind:"mermaid",title:e.dataset.diagramLabel||"Diagram",closeLabel:a?.dataset.closeDiagramLabel||"Close diagram",lang:a?.lang||document.documentElement.lang,dir:a?.dir||document.documentElement.dir})}function dn(){let e=document;e[kt]||(document.addEventListener("click",r=>{let t=r.target;if(!(t instanceof Element))return;let a=t.closest("[data-mermaid-expand]");if(a){let d=a.closest("[data-mermaid-rendered]");d&&It(d,a);return}if(t.closest("[data-copy-source], a[href], button, input, select, textarea"))return;let o=t.closest("[data-mermaid-rendered]"),n=o?.querySelector(":scope > [data-mermaid-expand]");o&&n&&It(o,n)}),e[kt]=!0)}async function cn(){dn(),Rt||(Rt=!0,document.addEventListener(Re,()=>{let t=Array.from(document.querySelectorAll("[data-mermaid-rendered]")),o=Oe()?.closest("[data-mermaid-rendered]"),n=o?t.indexOf(o):-1;n>=0&&Fe();for(let d of t){let c=d.querySelector("template[data-website-copy-source]")?.content.textContent;if(!c)continue;let s=document.createElement("pre");s.dataset.websiteMermaid="true",s.dataset.diagramLabel=d.dataset.diagramLabel||"Diagram";let u=document.createElement("code");u.className="language-mermaid",u.textContent=c,s.append(u),d.replaceWith(s)}cn().then(()=>{n<0||document.querySelectorAll("[data-mermaid-rendered]")[n]?.querySelector(":scope > [data-mermaid-expand]")?.focus()})}));let e=on();if(e.length===0)return;await document.fonts?.ready;let r=getComputedStyle(document.body);_e.initialize({startOnLoad:!1,securityLevel:"strict",theme:"base",fontFamily:r.fontFamily||"system-ui, sans-serif",themeVariables:{fontSize:r.fontSize||"16px",background:$("--surface","#ffffff"),primaryColor:$("--violet-soft","#ece9ff"),primaryTextColor:$("--ink","#202333"),primaryBorderColor:$("--violet","#6e5bd4"),lineColor:$("--graphite","#5e6678"),secondaryColor:$("--teal-soft","#dcefee"),tertiaryColor:$("--frost","#f7f8fc"),noteBkgColor:$("--surface","#ffffff"),noteTextColor:$("--ink","#202333")}}),await Promise.all(e.map(async(t,a)=>{let o=t.matches("pre")?t.querySelector("code")?.textContent??"":t.textContent??"";if(o.trim())try{let n=`website-mermaid-${a}`,d=await _e.render(n,o),c=nn(d.svg),s=document.createElement("figure");s.className="mermaid-diagram",s.dataset.mermaidRendered="";let u=t.dataset.diagramLabel||"Diagram";s.dataset.diagramLabel=u;let p=document.importNode(c,!0);p.setAttribute("role","img"),p.setAttribute("aria-label",u),s.append(p),t.replaceWith(s),ke(s,o,"diagram"),sn(s);let l=s.querySelector("template[data-website-copy-source]");l&&(l.dataset.mermaidSource=""),d.bindFunctions?.(s)}catch{t.dataset.mermaidError="true",t.setAttribute("aria-label","Diagram source; rendering failed")}}))}export{cn as renderMermaid};
@@ -0,0 +1 @@
1
+ import{a as i}from"./chunks/chunk-WWLZIRS6.js";import"./chunks/chunk-SZDMZNUS.js";import"./chunks/chunk-GMBKQ7NZ.js";import"./chunks/chunk-UE533OZ7.js";import"./chunks/chunk-D6FURU6X.js";import"./chunks/chunk-6DHFEWGX.js";i();
@@ -0,0 +1 @@
1
+ @layer reset,tokens,base,composition,content,components,utilities;@layer reset{*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-size:106.25%;text-size-adjust:100%;scroll-behavior:smooth}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}img,picture,video,canvas,svg{display:block;max-inline-size:100%}button,input,textarea,select{font:inherit}}@layer tokens{:root{color-scheme:light;--frost: #f8f6ef;--surface: #fffdf7;--ink: #24231f;--graphite: #65625b;--violet: #236f86;--teal: #a64f2d;--violet-soft: #e8e8e3;--teal-soft: #f3e4da;--line: #e1ddd3;--line-strong: #c9c3b7;--code-surface: #ffffff;--shadow: 0 20px 64px rgb(44 39 29 / 8%);--overlay: rgb(24 27 39 / 44%);--danger: #a83d56;--focus-ring: 0 0 0 3px rgb(35 111 134 / 25%);--article-width: 760px;--rail-width: 288px;--page-gutter: clamp(1rem, 3vw, 2.5rem);--font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--font-article: var(--font-system);--font-ui: var(--font-system)}:root[data-color-scheme=dark]{color-scheme:dark;--frost: #111113;--surface: #1b1b1f;--ink: #ededf0;--graphite: #a7a7ae;--violet: #78b7ff;--teal: #e59a73;--violet-soft: #1d2a38;--teal-soft: #3b2922;--line: #303036;--line-strong: #46464d;--code-surface: #151518;--shadow: 0 20px 70px rgb(0 0 0 / 26%);--overlay: rgb(4 5 10 / 68%);--danger: #ff93a8;--focus-ring: 0 0 0 3px rgb(120 183 255 / 28%)}@media(prefers-color-scheme:dark){:root:not([data-color-scheme=light]){color-scheme:dark;--frost: #111113;--surface: #1b1b1f;--ink: #ededf0;--graphite: #a7a7ae;--violet: #78b7ff;--teal: #e59a73;--violet-soft: #1d2a38;--teal-soft: #3b2922;--line: #303036;--line-strong: #46464d;--code-surface: #151518;--shadow: 0 20px 70px rgb(0 0 0 / 26%);--overlay: rgb(4 5 10 / 68%);--danger: #ff93a8;--focus-ring: 0 0 0 3px rgb(120 183 255 / 28%)}}}@layer base{body{display:flex;flex-direction:column;min-block-size:100vh;background:var(--frost);color:var(--ink);font-family:var(--font-ui);line-height:1.55;text-rendering:optimizeLegibility}::selection{background:color-mix(in srgb,var(--violet) 28%,transparent);color:var(--ink)}a{color:inherit;text-underline-offset:.2em}button,a,input,summary,[tabindex]:not([tabindex="-1"]){outline:0}:focus-visible{border-radius:.2rem;box-shadow:var(--focus-ring)}button{border:0;color:inherit}code,kbd,pre{font-family:var(--font-mono)}}@layer composition{.skip-link{position:fixed;z-index:100;inset-block-start:.75rem;inset-inline-start:.75rem;translate:0 -180%;padding:.65rem .9rem;border:1px solid var(--violet);border-radius:.35rem;background:var(--surface);font-size:.82rem;font-weight:650}.skip-link:focus{translate:0}.site-header{position:relative;z-index:10;border-block-end:1px solid var(--line);background:color-mix(in srgb,var(--frost) 92%,transparent)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;inline-size:min(100%,calc(var(--article-width) + var(--rail-width) + 3.5rem));min-block-size:4.25rem;margin-inline:auto;padding-inline:var(--page-gutter);gap:1.2rem}.site-mark{display:inline-flex;align-items:baseline;gap:.6rem;text-decoration:none}.site-mark__glyph{color:var(--violet);font-family:var(--font-article);font-size:1.8rem;font-style:italic;font-weight:620;line-height:1}.site-mark__name{font-size:.86rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.site-actions,.site-navigation,.site-navigation__list{display:flex;align-items:center;gap:.35rem}.site-navigation{flex:1 1 auto;justify-content:center;min-inline-size:0}.site-navigation__list,.site-navigation__overflow{margin:0;padding:0;list-style:none}.site-navigation__list,.site-actions{flex:none}.site-navigation__more{position:relative;flex:none}.site-navigation__more>summary{list-style:none}.site-navigation__more>summary::-webkit-details-marker{display:none}.site-navigation a,.site-navigation__more>summary,.site-action{display:inline-flex;align-items:center;min-block-size:2.3rem;padding-inline:.72rem;border:1px solid transparent;border-radius:.35rem;background:transparent;color:var(--ink);cursor:pointer;font-size:.76rem;font-weight:620;letter-spacing:.04em;text-decoration:none;column-gap:.55rem}.site-navigation a:hover,.site-navigation__more>summary:hover,.site-action:hover{border-color:var(--line);background:var(--surface);color:var(--ink)}.site-navigation a[aria-current=page],.site-navigation__more[data-has-current=true]>summary{color:var(--ink);font-weight:720}.site-navigation__overflow{position:absolute;z-index:30;inset-block-start:calc(100% + .45rem);inset-inline-end:0;display:grid;min-inline-size:10.5rem;padding:.35rem;border:1px solid var(--line);border-radius:.42rem;background:var(--surface);box-shadow:var(--shadow)}.site-navigation__more:not([open])>.site-navigation__overflow{display:none}.site-navigation__overflow a{display:flex;inline-size:100%}.site-actions [data-search-open]{border-color:var(--line-strong);background:color-mix(in srgb,var(--surface) 72%,transparent)}.site-action__shortcut{color:var(--graphite);font-size:.72rem;font-weight:540;letter-spacing:.02em}.language-switcher{position:relative}.language-switcher>summary{list-style:none}.language-switcher>summary::-webkit-details-marker{display:none}.language-switcher__panel{position:absolute;z-index:30;inset-block-start:calc(100% + .45rem);inset-inline-end:0;min-inline-size:11rem;padding:.38rem;border:1px solid var(--line);border-radius:.42rem;background:var(--surface);box-shadow:var(--shadow)}.language-switcher__panel ul{display:grid;padding:0;margin:0;gap:.15rem;list-style:none}.language-switcher__panel a{display:block;padding:.58rem .65rem;border-radius:.3rem;color:var(--ink);font-size:.76rem;text-decoration:none}.language-switcher__panel a:hover,.language-switcher__panel a[aria-current=page]{background:var(--violet-soft);color:var(--ink)}.translation-fallback{position:fixed;z-index:40;inset-inline:1rem;inset-block-end:calc(1rem + env(safe-area-inset-bottom,0px));inline-size:fit-content;max-inline-size:min(32rem,calc(100% - 2rem));padding:.8rem 1rem;border-inline-start:3px solid var(--violet);border-radius:.25rem;margin-inline:auto;background:color-mix(in srgb,var(--violet) 8%,var(--surface));box-shadow:var(--shadow);color:var(--ink);font-family:var(--font-ui);font-size:.78rem;pointer-events:none;animation:translation-fallback-notice 5s ease-in forwards}@keyframes translation-fallback-notice{0%,90%{visibility:visible;opacity:1;transform:translateY(0)}to{visibility:hidden;opacity:0;transform:translateY(.4rem)}}.site-footer{margin-block-start:auto;border-block-start:1px solid var(--line);color:var(--graphite)}.site-footer__inner{display:flex;align-items:center;justify-content:center;inline-size:min(100%,calc(var(--article-width) + var(--rail-width) + 3.5rem));margin-inline:auto;padding:.85rem var(--page-gutter);gap:.35rem;font-size:.74rem;text-align:center}.site-footer__github{display:inline-flex;align-items:center;flex:none;gap:.3rem;color:inherit;text-decoration:none}.site-footer__github:hover{color:var(--ink)}.site-footer__github svg{inline-size:.95rem;block-size:.95rem;fill:currentColor}.mobile-toolbar{display:none}}@layer content{body.theme-minimal{--website-reading-margin-inline: 0 auto}body.theme-docs{--website-reading-margin-inline: auto}:is(.minimal-entry,.docs-article)>:where(.note-header,.source-actions,.tab-collection,.related-articles,.website-comments),:is(.minimal-entry,.docs-article)>.note-content>:where(h1,h2,h3,h4,p,ul,ol,dl,blockquote,pre,table,.highlighter-rouge,.code-block-copy,.callout,.mermaid-diagram,.footnotes){inline-size:min(100%,var(--reading-width));margin-inline:var(--website-reading-margin-inline)}.note-header{margin-block-end:2.5rem;padding-block-end:0;border-block-end:0}.note-meta{color:var(--graphite);font-family:var(--font-ui);font-size:.67rem;font-weight:670;letter-spacing:.11em;text-transform:uppercase}.note-title,.note-content h1,.note-content h2,.note-content h3,.note-content h4{color:var(--ink);font-family:var(--font-article);text-wrap:balance}.note-title{max-inline-size:20ch;font-size:clamp(2rem,4vw,3.1rem);font-weight:650;letter-spacing:-.025em;line-height:1.08}.note-description,.note-subtitle{inline-size:100%;max-inline-size:none;margin-block-start:0;color:var(--ink);font-family:var(--font-article);font-size:1.08rem;font-style:normal;line-height:1.6}.note-byline{max-inline-size:49ch;color:var(--graphite);font-family:var(--font-ui);font-size:.78rem;line-height:1.5}.note-title+.note-byline{margin-block-start:.8rem}.note-byline+.note-description,.note-byline+.note-subtitle{margin-block-start:1rem}.note-title+.note-description,.note-title+.note-subtitle{margin-block-start:1.25rem}.note-meta{display:flex;flex-wrap:wrap;margin-block-start:1.65rem;gap:.55rem 1rem}.note-meta__topics{display:flex;flex:1 1 18rem;flex-wrap:wrap;min-inline-size:0;max-inline-size:100%;gap:.4rem}.note-content{color:var(--ink);font-family:var(--font-article);font-size:clamp(1rem,1.2vw,1.08rem);line-height:1.7;overflow-wrap:anywhere}.note-content>*+*{margin-block-start:1.35em}.note-content h1,.note-content h2,.note-content h3,.note-content h4{position:relative;scroll-margin-block-start:2rem}.note-content h1{font-size:clamp(2rem,4vw,2.8rem);font-weight:650;letter-spacing:-.025em;line-height:1.14}.note-content h2{margin-block-start:2.65em;padding-block-start:0;font-size:clamp(1.5rem,2.5vw,1.9rem);font-weight:650;letter-spacing:-.015em;line-height:1.18}.note-content h2:before{content:none}.note-content h3{margin-block-start:2.15em;font-size:1.32rem;font-weight:650;line-height:1.3}.note-content h4{font-size:1.08rem;font-weight:700;letter-spacing:.015em}.note-content strong{font-weight:720}.note-content em{font-style:italic}.note-content a:not(.tag-chip):not(.website-embed__source){color:color-mix(in srgb,var(--violet) 88%,var(--ink));text-decoration-color:color-mix(in srgb,var(--violet) 44%,transparent);text-decoration-thickness:.08em}.note-content a:hover{text-decoration-color:currentColor}.note-content ul,.note-content ol{padding-inline-start:1.35em}.note-content li+li{margin-block-start:.36em}.note-content li::marker{color:var(--teal);font-family:var(--font-ui);font-size:.8em;font-weight:750}.note-content blockquote{padding:.1rem 0 .1rem 1.25rem;border-inline-start:2px solid var(--teal);color:var(--ink);font-style:italic}.note-content hr{inline-size:38%;margin:3.5rem auto;border:0;border-block-start:1px solid var(--line-strong)}.note-content mark{margin-inline:-.08em;padding-inline:.08em;background:linear-gradient(transparent 40%,color-mix(in srgb,var(--teal) 25%,transparent) 40%,color-mix(in srgb,var(--teal) 25%,transparent) 92%,transparent 92%);color:inherit}.note-content code,.note-content kbd,.note-content pre{font-family:var(--font-mono)}.note-content :not(pre)>code{padding:.14em .32em;border:1px solid var(--line);border-radius:.25rem;background:var(--code-surface);font-size:.84em}.note-content pre{max-inline-size:100%;padding:1.25rem 1.35rem;border:1px solid var(--line);border-radius:.4rem;background:var(--code-surface);font-size:.82rem;line-height:1.65;overflow:auto}.note-content table{display:block;inline-size:max-content;max-inline-size:100%;border-collapse:collapse;font-family:var(--font-ui);font-size:.82rem;overflow-x:auto}.note-content th,.note-content td{padding:.6rem .75rem;border-block-end:1px solid var(--line);text-align:start;vertical-align:top}.note-content th{color:var(--ink);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase}.note-content img,.note-content video,.note-content object,.note-content iframe{inline-size:auto;max-inline-size:100%;border-radius:.35rem}.note-content img[data-image-expand]{cursor:zoom-in}.note-content img[data-image-expand]:focus-visible{outline:2px solid var(--ink);outline-offset:.2rem}.note-content .website-external-video,.note-content .website-external-player{display:block;inline-size:100%}.note-content .website-external-player{min-block-size:200px;aspect-ratio:16 / 9;border:0}.note-content .website-external-frame,.note-content .website-tweet{inline-size:100%;margin-block:1.6rem}.note-content .website-external-frame__viewport{display:block;inline-size:100%;min-block-size:18rem;border:1px solid var(--line);background:var(--surface)}.note-content .website-external-frame__fallback,.note-content .website-tweet__fallback{color:var(--ink);font-family:var(--font-ui);font-size:.74rem}.note-content .website-tweet{max-inline-size:34rem}.website-tweet[data-website-tweet-state=loading] .website-tweet__mount{min-block-size:8rem}.website-tweet__mount{inline-size:100%}.note-content figure{display:grid;justify-items:start;gap:.65rem}.note-content figcaption{color:var(--graphite);font-family:var(--font-ui);font-size:.72rem;line-height:1.45}.note-content input[type=checkbox]{inline-size:1em;block-size:1em;margin:0 .42em 0 -1.22em;accent-color:var(--teal)}.footnotes{margin-block-start:4rem;padding-block-start:1.4rem;border-block-start:1px solid var(--line);color:var(--ink);font-size:.86em}}@layer components{:is(.minimal-reading-column,.docs-main)>.sequence-navigation{inline-size:min(100%,var(--reading-width));margin-inline:var(--website-reading-margin-inline)}.sequence-navigation>a[rel=next]:first-child{grid-column:2}.code-block-copy{position:relative;max-inline-size:100%}.code-block-copy>pre{inline-size:100%;margin:0;padding-inline-end:4rem}.source-copy__button{position:absolute;z-index:1;inset-block-start:.55rem;inset-inline-end:.55rem;display:grid;inline-size:2rem;block-size:2rem;padding:0;border:0;border-radius:.3rem;background:color-mix(in srgb,var(--code-surface) 94%,transparent);color:var(--ink);box-shadow:0 1px 4px #181b2712;cursor:pointer;place-items:center}.source-copy__button:hover,.source-copy__button:focus-visible{background:var(--surface);color:var(--ink)}.source-copy__button:focus-visible{box-shadow:var(--focus-ring)}.source-copy__button[data-copy-state=success]{background:var(--teal-soft);color:var(--teal)}.source-copy__button[data-copy-state=error]{color:var(--danger)}.source-copy__icon{inline-size:.9rem;block-size:.9rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.45}.media-image__expand{position:static;display:inline-grid;margin-inline-start:.4rem;vertical-align:middle}.theme-docs :is(.related-articles,.tab-collection){margin-block-start:clamp(3rem,7vw,5rem)}.theme-docs :is(.related-articles,.tab-collection) .minimal-section-heading{padding-block-end:.8rem;border-block-end:1px solid var(--line-strong)}.theme-docs :is(.related-articles,.tab-collection) .minimal-section-heading h2{margin:0;font-family:var(--font-article);font-size:clamp(1.35rem,2.7vw,1.75rem)}.theme-docs :is(.related-articles,.tab-collection) .minimal-recent__grid{display:grid;grid-template-columns:minmax(0,1fr)}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card{position:relative;min-inline-size:0;padding-block:clamp(1.5rem,3vw,2rem);border-block-end:1px solid var(--line)}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card:has(:is(h2,h3) a:focus-visible){border-radius:.2rem;box-shadow:var(--focus-ring)}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card--with-image{display:grid;grid-template-columns:minmax(10rem,14rem) minmax(0,1fr);align-items:center;gap:clamp(1.25rem,3vw,2rem)}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card__media{display:block;aspect-ratio:16 / 9;overflow:hidden;background:var(--surface)}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card__media img{inline-size:100%;block-size:100%;object-fit:cover}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card :is(h2,h3){position:static;margin:0;font-family:var(--font-article);font-size:clamp(1.15rem,2.2vw,1.42rem);line-height:1.28;overflow-wrap:anywhere}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card :is(h2,h3) a{color:var(--ink);text-decoration:none}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card :is(h2,h3) a:after{position:absolute;inset:0;content:""}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card :is(h2,h3) a:focus-visible{box-shadow:none}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card__subtitle,.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card__excerpt{margin:.6rem 0 0;color:var(--ink);font-size:.9rem;line-height:1.62}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card footer{margin-block-start:.75rem;color:var(--graphite);font-size:.7rem;font-variant-numeric:tabular-nums}.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card footer a{position:relative;z-index:1;color:inherit;text-underline-offset:.15em}.website-comments{margin-block-start:clamp(3.5rem,8vw,6rem);padding-block-start:1.4rem;border-block-start:2px solid var(--ink)}.website-comments__header{padding-block-end:.85rem;border-block-end:1px solid var(--line)}.website-comments__header h2{margin:0;font-family:var(--font-article);font-size:clamp(1.4rem,2.5vw,1.75rem);font-weight:650;letter-spacing:-.015em}.website-comments__status,.website-comments__fallback{color:var(--graphite);font-family:var(--font-ui)}.website-comments__status,.website-comments__fallback{margin-block:1rem 0;font-size:.8rem;line-height:1.6}.website-comments__embed{min-inline-size:0;margin-block-start:1rem}.website-comments__embed .giscus-frame{inline-size:100%}.relation-section{position:relative;padding:.85rem .2rem 0 1rem;border-block-start:1px solid var(--line-strong)}.relation-section__title{margin-block-end:.7rem;color:var(--ink);font-size:.65rem;font-weight:720;letter-spacing:.1em;text-transform:uppercase}.relation-disclosure>summary{cursor:pointer}.relation-disclosure>summary .relation-section__title{display:inline;margin:0}.relation-disclosure>summary::marker{color:var(--graphite);font-size:.7em}.relation-disclosure>.relation-list{margin-block-start:.7rem}.context-tag-list,.tag-filter__list{display:flex;flex-wrap:wrap;margin:0;padding:0;gap:.42rem;list-style:none}.tag-filter__list li+li{margin-block-start:0}.context-tag-list a,.tag-filter__list a{display:inline-flex;align-items:center;min-block-size:1.75rem;padding:.22rem .28rem .22rem .58rem;border:1px solid var(--line-strong);border-radius:100vmax;gap:.38rem;background:transparent;color:var(--ink);font-size:.72rem;font-weight:640;line-height:1;text-decoration:none}.context-tag-list a:hover,.tag-filter__list a:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));background:transparent;color:var(--ink)}.tag-filter__list a[aria-current=page]{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));background:color-mix(in srgb,var(--line-strong) 28%,transparent);color:var(--ink)}.context-tag__count{min-inline-size:1rem;padding-inline-start:.38rem;border-inline-start:1px solid var(--line);background:transparent;color:var(--graphite);font-size:.62rem;font-variant-numeric:tabular-nums}.tag-filter{margin-block-start:1.5rem}.tag-filter__list a{min-block-size:2rem;padding:.3rem .42rem .3rem .72rem;font-size:.74rem}.filter-empty{margin-block-start:1.5rem;color:var(--graphite);font-size:.86rem}.archive-timeline{display:grid;gap:1.25rem}.archive-timeline>.relation-section__title{margin:0}.archive-timeline__year{display:grid;gap:.5rem}.archive-timeline__year h3{margin:0;font-family:var(--font-article);font-size:1rem;font-weight:650;letter-spacing:-.01em}.archive-timeline__year ul{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));margin:0;padding:0;gap:.35rem .25rem;list-style:none}.archive-timeline__year li{position:relative;min-inline-size:0}.archive-timeline__year li:not(:nth-child(6n+1)):before{position:absolute;inset-block:.5rem;inset-inline-start:-.125rem;border-inline-start:1px solid var(--line-strong);content:"";pointer-events:none}.archive-timeline__year a{display:flex;align-items:center;justify-content:space-between;min-block-size:2rem;padding:.35rem .5rem;border-radius:.3rem;color:var(--ink);font-size:.75rem;font-variant-numeric:tabular-nums;text-decoration:none}.archive-timeline__year a:hover,.archive-timeline__year a[aria-current=page]{background:color-mix(in srgb,var(--line) 48%,transparent);color:var(--ink)}.archive-timeline__year h3 a{color:var(--ink);font-family:inherit;font-size:inherit;font-weight:inherit}.archive-timeline__year li a{min-inline-size:0;padding:.28rem .2rem;border:0;border-radius:0;font-size:.72rem}.archive-timeline__year li a>span:first-child{color:var(--ink);font-weight:640}.archive-timeline__year li .archive-timeline__count{min-inline-size:0;padding-inline-start:.1rem;border-inline-start:0;font-size:.62rem}.archive-timeline__count{min-inline-size:1.5rem;color:var(--graphite);text-align:end}[data-filter-item][hidden],[data-filter-group][hidden]{display:none}.website-index-list{margin-block-start:2.5rem;padding:0;border-block-start:1px solid var(--line);list-style:none}.website-index-list li,.website-index-list li+li{margin:0;border-block-end:1px solid var(--line)}.website-index-list a{display:block;padding:.72rem .2rem;color:var(--ink);font-weight:580;text-decoration:none}.website-index-list a:hover{color:var(--violet)}.docs-tree--dialog{margin-block-start:1.5rem;padding-block-start:1.25rem;border-block-start:1px solid var(--line)}.relation-list,.outline-list,.tag-list{display:grid;margin:0;padding:0;gap:.32rem;list-style:none}.relation-list a,.outline-list a{position:relative;display:block;padding:.24rem .35rem;border-radius:.25rem;color:var(--ink);font-size:.77rem;line-height:1.38;text-decoration:none}.relation-list a:hover,.outline-list a:hover,.outline-list a[aria-current=location]{background:var(--surface);color:var(--ink)}.outline-list a[aria-current=location]:before{position:absolute;inset-block:.42rem;inset-inline-start:-.7rem;inline-size:2px;background:var(--violet);content:""}.outline-list .outline-list{padding-inline-start:.65rem}.relation-empty{color:var(--graphite);font-family:var(--font-article);font-size:.78rem;font-style:italic}.tag-chip{display:inline-flex;align-items:center;min-block-size:1.7rem;padding-inline:.58rem;border:1px solid var(--line-strong);border-radius:100vmax;background:transparent;color:var(--ink);font-family:var(--font-ui);font-size:.72rem;font-weight:640;line-height:1;text-decoration:none;white-space:nowrap}.tab-collection__topics{display:flex;flex-wrap:wrap;margin:.8rem 0 0;padding:0;list-style:none;gap:.4rem}.tab-collection__topics li,.tab-collection__topics .tag-chip{position:relative;z-index:1}.tag-chip[href]:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));color:var(--ink)}.callout{--callout-accent: var(--violet);margin-block:1.7rem;padding:0;border:1px solid color-mix(in srgb,var(--callout-accent) 30%,var(--line));border-inline-start:3px solid var(--callout-accent);border-radius:.35rem;background:color-mix(in srgb,var(--callout-accent) 7%,var(--surface));color:var(--ink);font-style:normal}.callout[data-callout=tip],.callout[data-callout=success]{--callout-accent: var(--teal)}.callout[data-callout=warning],.callout[data-callout=danger],.callout[data-callout=failure]{--callout-accent: var(--danger)}.callout__title,.callout>summary{padding:.72rem .9rem;color:color-mix(in srgb,var(--callout-accent) 84%,var(--ink));font-family:var(--font-ui);font-size:.74rem;font-weight:720;letter-spacing:.025em}.callout>summary{cursor:pointer}.callout__content{padding:0 .95rem .9rem}.website-embed{position:relative;margin-block:2rem;padding:1.2rem 1.25rem 1.35rem;border:1px solid var(--line);border-inline-start:3px double var(--violet);border-radius:.35rem;background:color-mix(in srgb,var(--frost) 55%,var(--surface))}.website-embed:before{position:absolute;inset-block-start:.7rem;inset-inline-end:.8rem;color:var(--violet);content:"\21b3";font-family:var(--font-ui);font-size:.9rem}.website-embed__source{display:inline-block;margin-block-end:.85rem;color:var(--graphite);font-family:var(--font-ui);font-size:.66rem;font-weight:670;letter-spacing:.07em;text-decoration:none;text-transform:uppercase}.website-embed__content>:first-child{margin-block-start:0}.website-embed__content>:last-child{margin-block-end:0}.website-unresolved{border-block-end:1px dashed var(--danger);color:var(--danger);cursor:help}.attachment-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:.85rem 1rem;border:1px solid var(--line);border-radius:.35rem;background:var(--frost);gap:.85rem;color:inherit;font-family:var(--font-ui);text-decoration:none}.attachment-card__type{color:var(--violet);font-size:.66rem;font-weight:760;letter-spacing:.08em}.note-preview{position:fixed;z-index:80;display:grid;grid-template-rows:auto minmax(0,1fr);inline-size:min(420px,calc(100vw - 24px));max-block-size:min(560px,calc(100vh - 24px));border:1px solid var(--line-strong);border-radius:.55rem;background:var(--surface);box-shadow:0 18px 54px #191c2c33;overflow:hidden;pointer-events:auto}.note-preview__header{padding:.9rem 1rem .85rem;border-block-end:1px solid var(--line)}.note-preview__eyebrow{margin-block-end:.35rem;color:var(--teal);font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.note-preview__title{display:block;margin:0;font-family:var(--font-article);font-size:1.05rem;line-height:1.3}.note-preview__title-link{color:inherit;text-decoration-color:transparent;text-decoration-thickness:.08em;text-underline-offset:.18em}.note-preview__title-link:hover{color:var(--violet);text-decoration-color:currentColor}.note-preview__description{margin-block-start:.45rem;color:var(--ink);font-family:var(--font-article);font-size:.76rem;line-height:1.55}.note-preview__body{min-block-size:4rem;max-block-size:min(240px,calc(100vh - 170px));padding:.85rem 1rem 1rem;color:var(--ink);font-family:var(--font-article);font-size:.78rem;line-height:1.58;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.note-preview__body:focus-visible{outline:2px solid var(--violet);outline-offset:-3px}.note-preview__body>:first-child{margin-block-start:0}.note-preview__body>:last-child{margin-block-end:0}.note-preview__body p,.note-preview__body ul,.note-preview__body ol,.note-preview__body blockquote,.note-preview__body pre,.note-preview__body table{margin-block:.7rem}.note-preview__body h1,.note-preview__body h2,.note-preview__body h3,.note-preview__body h4,.note-preview__body h5,.note-preview__body h6{margin-block:1rem .4rem;color:var(--ink);font-family:var(--font-article);font-size:.92rem;line-height:1.35}.note-preview__body pre,.note-preview__body table{max-inline-size:100%;overflow:auto}.note-preview__body pre{padding:.65rem;border-radius:.3rem;background:var(--code-surface);font-family:var(--font-ui);font-size:.68rem}.note-preview__body table{border-collapse:collapse;font-family:var(--font-ui)}.note-preview__body th,.note-preview__body td{padding:.35rem .45rem;border:1px solid var(--line);text-align:start}.website-dialog{inline-size:min(680px,calc(100vw - 2rem));max-block-size:min(760px,calc(100vh - 2rem));padding:0;border:1px solid var(--line-strong);border-radius:.55rem;background:var(--surface);color:var(--ink);box-shadow:0 28px 90px #0b0d1857}.website-dialog::backdrop{background:var(--overlay);backdrop-filter:blur(5px)}.website-dialog__sheet{display:grid;max-block-size:inherit;grid-template-rows:auto minmax(0,1fr)}.website-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-block-end:1px solid var(--line);gap:1rem}.website-dialog__title{font-size:.7rem;font-weight:720;letter-spacing:.09em;text-transform:uppercase}.website-dialog__close{display:grid;inline-size:2rem;block-size:2rem;border-radius:50%;background:var(--frost);color:var(--ink);cursor:pointer;place-items:center}.website-dialog__body{padding:1rem;overflow:auto}.website-dialog--graph{inline-size:min(1440px,calc(100vw - 3rem));max-block-size:calc(100vh - 3rem)}.website-dialog--graph .website-dialog__sheet{block-size:min(900px,calc(100vh - 3rem))}.website-dialog--graph .website-dialog__body{display:grid;min-block-size:0;padding:.75rem;overflow:hidden}.website-dialog--graph .graph-view{block-size:100%;min-block-size:0}.website-dialog--media{inline-size:min(1200px,calc(100vw - 3rem));max-block-size:calc(100vh - 3rem)}.website-dialog--media .website-dialog__sheet{block-size:min(900px,calc(100vh - 3rem))}.media-dialog__controls{display:flex;align-items:center;min-inline-size:0;gap:.3rem}.media-dialog__controls button{display:grid;flex:none;inline-size:2.5rem;block-size:2.5rem;border:1px solid transparent;border-radius:.3rem;background:var(--frost);color:var(--ink);cursor:pointer;font-family:var(--font-ui);font-size:1rem;place-items:center}.media-dialog__controls button:hover,.media-dialog__controls button:focus-visible{border-color:var(--line-strong);background:var(--surface)}.media-dialog__controls button:disabled{cursor:default;opacity:.45}.media-dialog__controls output{min-inline-size:6.5rem;color:var(--ink);font-family:var(--font-ui);font-size:.7rem;font-weight:650;text-align:center}.media-dialog__body{display:grid;min-block-size:0;padding:0;overflow:hidden}.media-dialog__viewport{min-inline-size:0;min-block-size:0;overflow:auto;overscroll-behavior:contain}.media-dialog__viewport[data-media-pannable]{cursor:grab}.media-dialog__viewport[data-media-panning],.media-dialog__viewport[data-media-panning] *{cursor:grabbing;user-select:none}.media-dialog__canvas{box-sizing:border-box;display:grid;min-block-size:100%;margin-inline:auto;padding:1rem;place-items:center}.media-dialog__canvas>:is(svg,img,picture),.media-dialog__canvas>picture>img{display:block;position:static!important;inset:auto!important;float:none!important;margin:0!important;transform:none!important;min-inline-size:0!important;inline-size:100%!important;max-inline-size:none!important;min-block-size:0!important;block-size:auto!important;max-block-size:none!important}.search-box{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:.15rem .8rem;border:1px solid var(--line-strong);border-radius:.38rem;background:var(--frost);gap:.65rem}.search-box input{min-inline-size:0;block-size:3rem;border:0;outline:0;background:transparent;color:var(--ink)}.search-box input:focus-visible{border-radius:0;box-shadow:none}.search-box kbd{color:var(--graphite);font-family:var(--font-mono);font-size:.65rem}.search-navigation{margin:.75rem .1rem 0}.search-navigation[hidden]{display:none}.search-navigation__list{display:flex;flex-wrap:wrap;margin:0;padding:0;column-gap:1rem;row-gap:.35rem;list-style:none}.search-navigation a{color:var(--ink);font-size:.72rem;text-decoration:none}.search-navigation a:hover,.search-navigation a:focus-visible,.search-navigation a[aria-current=page]{color:var(--ink);text-decoration:underline;text-underline-offset:.2em}.search-status{min-block-size:1.2rem;margin:.75rem .1rem .35rem;color:var(--graphite);font-size:.7rem}.search-results{display:grid;margin:0;padding:0;gap:.25rem;list-style:none}.search-result__link{display:grid;padding:.7rem .75rem;border:1px solid transparent;border-radius:.32rem;gap:.15rem;text-decoration:none}.search-result__link:hover,.search-result__link:focus-visible{border-color:var(--line);background:var(--frost)}.search-result__link strong{font-family:var(--font-article);font-size:.95rem}.search-result__meta{color:var(--graphite);font-size:.66rem}.mermaid-diagram{position:relative;padding:1rem;padding-inline-end:5.4rem;border:1px solid var(--line);border-radius:.4rem;background:var(--frost);overflow-x:auto}.mermaid-diagram>svg{cursor:zoom-in}.mermaid-diagram>.mermaid-diagram__expand{inset-inline-end:2.85rem}[data-math-rendered]{max-inline-size:100%;overflow-x:auto}[data-math-rendered][data-source-copy]{position:relative}:is([data-math-style=display],[data-math=display],.math-display)[data-source-copy]{display:block;padding-inline-end:2.6rem}:is([data-math-style=inline],[data-math=inline],.math-inline)[data-source-copy]{display:inline-flex;align-items:center;gap:.1rem;overflow:visible;vertical-align:middle}:is([data-math-style=inline],[data-math=inline],.math-inline)>.source-copy__button{position:static;flex:none;inline-size:1.5rem;block-size:1.5rem;background:transparent;box-shadow:none}:is([data-math-style=inline],[data-math=inline],.math-inline)>.source-copy__button:focus-visible{box-shadow:var(--focus-ring)}[data-math-rendered] mjx-container{color:var(--ink)}.local-graph{display:grid;min-inline-size:0;gap:.55rem}.local-graph__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.local-graph__actions{display:flex;gap:.15rem}.local-graph__actions button{display:grid;inline-size:1.75rem;block-size:1.75rem;padding:.28rem;border:1px solid transparent;border-radius:.3rem;background:transparent;color:var(--ink);cursor:pointer;place-items:center}.local-graph__actions button:hover,.local-graph__actions button:focus-visible{border-color:var(--line-strong);background:var(--frost);color:var(--ink)}.local-graph__actions svg{inline-size:1rem;block-size:1rem;fill:none;stroke:currentcolor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4}.local-graph__actions circle{fill:currentcolor;stroke:none}.graph-view{position:relative;min-inline-size:0}.graph-canvas{block-size:100%;min-block-size:0;border:1px solid var(--line);border-radius:.5rem;background:var(--surface);overflow:hidden;touch-action:none}.graph-view--compact{display:grid;block-size:220px;border:1px solid var(--line);border-radius:.5rem;background:var(--surface);grid-template-rows:minmax(0,1fr) auto;overflow:hidden}.graph-view--compact .graph-canvas{border:0;border-radius:0}.graph-view--expanded,.graph-view--global{block-size:100%;min-block-size:480px}.graph-canvas svg{inline-size:100%;block-size:100%;cursor:grab}.graph-canvas svg:active{cursor:grabbing}.graph-edge{stroke:color-mix(in srgb,var(--graphite) 52%,transparent)}.graph-edge--embed{stroke:var(--teal);stroke-dasharray:4 4}.graph-node{cursor:pointer;outline:none;transition:opacity .14s ease}.graph-node circle{fill:var(--violet-soft);stroke:none}.graph-node:hover circle,.graph-node:focus-visible circle{fill:var(--violet)}.graph-node:focus-visible circle{filter:drop-shadow(0 0 3px var(--violet))}.graph-node--current text{font-weight:720}.graph-node--dimmed,.graph-edge--dimmed{opacity:.14}.graph-node text{fill:var(--ink);font-family:var(--font-ui);font-size:10px;paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.graph-status{position:absolute;z-index:1;inset-block-end:.35rem;inset-inline-end:.55rem;margin:0;color:var(--graphite);font-size:.58rem;pointer-events:none}.graph-view--compact .graph-status{position:static;min-inline-size:0;padding:.1rem .55rem .35rem;justify-self:end}.graph-view[data-graph-bounded-fallback=true]{display:grid;place-items:center}.graph-view[data-graph-bounded-fallback=true] .graph-status{position:static;max-inline-size:36rem;padding:1rem;font-size:.82rem;line-height:1.55;text-align:center}.local-graph__fallback{margin-block-start:.35rem;border-block-start:1px solid var(--line);padding-block-start:.65rem}.source-actions{display:flex;flex-wrap:wrap;margin-block-start:1.5rem;padding-block-start:.5rem;border-block-start:1px solid var(--line);gap:.45rem}.source-actions a{display:inline-flex;align-items:center;min-block-size:1.75rem;padding:.2rem 0;border:0;color:var(--ink);font-family:var(--font-ui);font-size:.68rem;font-weight:620;text-decoration:none;column-gap:.32rem}.source-actions a:hover{color:var(--ink);text-decoration:underline}.source-actions__icon{inline-size:.84rem;block-size:.84rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.45}.source-actions .source-actions__repository{inline-size:44px;min-inline-size:44px;block-size:44px;min-block-size:44px;justify-content:center;margin-block:-.35rem;margin-inline-start:auto;padding:0}.source-actions__github-icon{inline-size:.95rem;block-size:.95rem;fill:currentColor}.page-actions{position:relative;z-index:4;float:inline-end;margin-block-end:1rem;margin-inline-start:1rem;color:var(--ink);font-family:var(--font-ui)}.page-actions__split{display:flex;border:1px solid var(--line-strong);border-radius:.55rem;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 8px 24px #1817130f}.page-actions button,.page-actions summary,.page-actions a{color:inherit}.page-actions__primary,.page-actions__menu>summary{display:inline-flex;align-items:center;min-block-size:2.55rem;background:transparent;cursor:pointer}.page-actions__primary{padding-inline:.78rem;gap:.48rem;font-size:.78rem;font-weight:650}.page-actions__primary:disabled,.page-actions__item:disabled{cursor:wait;opacity:.62}.page-actions__icon,.page-actions svg{inline-size:1rem;block-size:1rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.35}.page-actions__menu{position:relative;border-inline-start:1px solid var(--line)}.page-actions__menu>summary{justify-content:center;inline-size:2.15rem;border-radius:0 .5rem .5rem 0;list-style:none}.page-actions__menu>summary::-webkit-details-marker{display:none}.page-actions__menu>summary svg{inline-size:.85rem;transition:rotate .14s ease}.page-actions__menu[open]>summary svg{rotate:180deg}.page-actions__primary:hover,.page-actions__menu>summary:hover{background:var(--frost)}.page-actions__panel{position:absolute;z-index:20;inset-block-start:calc(100% + .48rem);inset-inline-end:-1px;display:grid;inline-size:min(19rem,calc(100vw - 2rem));padding:.4rem;border:1px solid var(--line-strong);border-radius:.65rem;background:var(--surface);box-shadow:var(--shadow);gap:.15rem}.page-actions__menu:not([open])>.page-actions__panel{display:none}.page-actions__item{display:grid;grid-template-columns:2rem minmax(0,1fr);align-items:center;inline-size:100%;padding:.58rem;border-radius:.42rem;background:transparent;cursor:pointer;text-align:start;text-decoration:none;gap:.65rem}.page-actions__item:hover{background:var(--frost)}.page-actions__item-icon{display:grid;inline-size:2rem;block-size:2rem;border:1px solid var(--line);border-radius:.42rem;color:var(--ink);place-items:center}.page-actions__item strong,.page-actions__item small{display:block}.page-actions__item strong{color:var(--ink);font-size:.84rem;font-weight:650}.page-actions__item small{margin-block-start:.08rem;color:var(--ink);font-size:.72rem;line-height:1.35}.page-actions__error{margin:.25rem .58rem .4rem;padding-block-start:.55rem;border-block-start:1px solid var(--line);color:var(--danger);font-size:.72rem;line-height:1.4}}@layer utilities{.visually-hidden{position:absolute!important;inline-size:1px!important;block-size:1px!important;padding:0!important;border:0!important;margin:-1px!important;clip-path:inset(50%)!important;overflow:hidden!important;white-space:nowrap!important}.no-js [data-search-open],.no-js [data-color-scheme-toggle],.no-js .mobile-toolbar{display:none!important}.no-js .local-graph__actions,.no-js .graph-view,.no-js [data-copy-page],.only-no-js{display:none}.no-js .only-no-js{display:revert}.no-js .site-navigation__list{flex:1 1 auto;flex-wrap:wrap;justify-content:center}}@media(max-width:880px){.translation-fallback{inset-block-end:calc(max(.7rem,env(safe-area-inset-bottom)) + 4rem)}.site-header__inner{min-block-size:3.6rem}.site-navigation,.site-actions [data-dialog-open=browse],.site-actions [data-dialog-open=context]{display:none}.language-switcher>summary span:nth-child(2){display:none}.no-js .site-navigation{display:flex;max-inline-size:58vw;overflow-x:auto}.mobile-toolbar{position:fixed;z-index:40;inset-block-end:max(.7rem,env(safe-area-inset-bottom));inset-inline-start:50%;translate:-50% 0;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;inline-size:min(360px,calc(100vw - 1.5rem));padding:.35rem;border:1px solid var(--line-strong);border-radius:.65rem;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 16px 50px #10121f3d;backdrop-filter:blur(14px)}.mobile-toolbar button{display:grid;min-block-size:2.8rem;border-radius:.35rem;background:transparent;color:var(--ink);cursor:pointer;font-size:.66rem;font-weight:650;place-items:center}.mobile-toolbar button:hover{background:var(--frost);color:var(--ink)}.website-dialog{inline-size:100%;max-inline-size:none;max-block-size:min(82vh,760px);margin:auto 0 0;border-width:1px 0 0;border-radius:.8rem .8rem 0 0}.website-dialog--graph,.website-dialog--media{inline-size:calc(100% - 1rem);max-block-size:calc(100vh - 1rem);margin:auto;border:1px solid var(--line-strong);border-radius:.7rem}.website-dialog--graph .website-dialog__sheet,.website-dialog--media .website-dialog__sheet{block-size:calc(100vh - 1rem);grid-template-rows:auto minmax(0,1fr)}.website-dialog--graph .website-dialog__sheet:before,.website-dialog--media .website-dialog__sheet:before{display:none}.website-dialog--media .website-dialog__header{padding-inline:.65rem;gap:.5rem}.website-dialog--media .website-dialog__title{position:absolute;inline-size:1px;block-size:1px;margin:-1px;padding:0;border:0;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.media-dialog__controls{gap:.15rem}.media-dialog__controls output{min-inline-size:4.75rem}.graph-view--expanded,.graph-view--global{min-block-size:0}.website-dialog__sheet:before{justify-self:center;inline-size:2.8rem;block-size:.22rem;margin-block:.55rem .1rem;border-radius:100vmax;background:var(--line-strong);content:""}.website-dialog__sheet{grid-template-rows:auto auto minmax(0,1fr)}.js .website-dialog [data-dialog-movable]{position:static;display:block;max-block-size:none;margin:0;padding:0;border:0;overflow:visible}.site-footer{margin-block-end:5.5rem}}@media(max-width:520px){.theme-docs :is(.related-articles,.tab-collection) .minimal-post-card--with-image{grid-template-columns:minmax(0,1fr)}.site-mark__name{max-inline-size:14ch;overflow-wrap:anywhere;white-space:normal}.site-action__label,.site-action kbd,.site-actions [data-search-open]{display:none}.note-title{font-size:clamp(2.2rem,13vw,3.25rem)}.note-content{font-size:1rem;line-height:1.72}.page-actions{float:none;display:flex;justify-content:flex-end;margin-block-end:1.5rem;margin-inline-start:0}.page-actions__primary{justify-content:center;inline-size:2.55rem;padding-inline:0}.page-actions__primary-label{position:absolute;inline-size:1px;block-size:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.graph-node,.page-actions__menu>summary svg,.mermaid-diagram *,.mermaid-diagram *:before,.mermaid-diagram *:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.translation-fallback{animation-timing-function:steps(1,end)}}@media(forced-colors:active){.note-content img[data-image-expand]:focus-visible{outline-color:ButtonText}.source-copy__button:focus-visible{outline:2px solid ButtonText;outline-offset:2px;box-shadow:none}[data-month-filter-option][aria-current=page]{outline:2px solid Highlight;outline-offset:-2px}}@media print{:root{color-scheme:light;--frost: #ffffff;--surface: #ffffff;--ink: #111111;--graphite: #4a4a4a;--line: #d0d0d0}.site-header,.minimal-docs-sidebar,.minimal-context,.mobile-toolbar,.site-footer,.source-actions,.page-actions,.source-copy__button,.website-comments,.website-dialog,.website-external-frame__viewport,.website-tweet__mount{display:none!important}.translation-fallback{position:static;max-inline-size:none;margin-block-end:1.5rem;box-shadow:none;animation:none}.minimal-shell,.minimal-shell--docs,.minimal-shell--docs:has(>.minimal-context){display:block;inline-size:auto;padding:0}.note-content a{color:inherit}.code-block-copy>pre{padding-inline-end:1.35rem}.mermaid-diagram{padding-inline-end:1rem}:is([data-math-style=display],[data-math=display],.math-display)[data-source-copy]{padding-inline-end:0}:is([data-math-style=inline],[data-math=inline],.math-inline)[data-source-copy]{display:inline;vertical-align:baseline}}@layer tokens{.theme-minimal{--violet: #345f78;--teal: #9a4358;--violet-soft: #e4e8e8;--teal-soft: #f3e4e4;--shadow: none;--focus-ring: 0 0 0 3px rgb(52 95 120 / 25%);--article-width: 780px;--reading-width: 780px;--rail-width: 0px}:root[data-color-scheme=dark] .theme-minimal{--violet: #8bb8cf;--teal: #e08aa0;--violet-soft: #202b32;--teal-soft: #38262d}@media(prefers-color-scheme:dark){:root:not([data-color-scheme=light]) .theme-minimal{--violet: #8bb8cf;--teal: #e08aa0;--violet-soft: #202b32;--teal-soft: #38262d}}}@layer composition{.theme-minimal .site-header__inner,.theme-minimal .site-footer__inner{inline-size:min(100%,1380px)}.minimal-shell{display:grid;grid-template-columns:minmax(0,1fr);justify-content:center;inline-size:min(100%,1380px);min-block-size:68vh;margin-inline:auto;padding:1rem var(--page-gutter) 7rem;gap:clamp(1.5rem,3vw,2.5rem)}.minimal-shell--system{padding-block-start:1rem}.minimal-shell:has(>.minimal-context){grid-template-columns:minmax(0,1fr) 220px}.minimal-shell--authored-home:has(>.minimal-home-context),.minimal-shell:not(.minimal-shell--system):not(.minimal-shell--docs):has(>.minimal-context){--reading-width: 100%}.minimal-home-modules,.minimal-reading-column,.minimal-entry{min-inline-size:0}.minimal-entry{position:relative;--page-actions-clearance: 10.25rem}.minimal-shell--docs{grid-template-columns:220px minmax(0,1fr);inline-size:min(100%,1380px)}.minimal-shell--docs:has(>.minimal-context){grid-template-columns:220px minmax(0,1fr) 220px}.minimal-docs-sidebar,.minimal-context{position:sticky;inset-block-start:1.5rem;align-self:start;max-block-size:calc(100vh - 3rem);overflow:auto;scrollbar-width:thin}.minimal-docs-sidebar{padding-block:.25rem 1.5rem}.minimal-context{display:grid;padding-block-start:.25rem;gap:1.4rem}html.js[data-auto-hide-root-scrollbar],.js [data-auto-hide-scrollbar]{scrollbar-color:transparent transparent;scrollbar-width:thin}html.js[data-auto-hide-root-scrollbar] body{scrollbar-color:auto}html.js[data-auto-hide-root-scrollbar][data-scrollbar-active=true],.js [data-auto-hide-scrollbar][data-scrollbar-active=true]{scrollbar-color:color-mix(in srgb,var(--graphite) 68%,transparent) transparent}html.js[data-auto-hide-root-scrollbar]::-webkit-scrollbar-thumb,.js [data-auto-hide-scrollbar]::-webkit-scrollbar-thumb{background-color:transparent}html.js[data-auto-hide-root-scrollbar][data-scrollbar-active=true]::-webkit-scrollbar-thumb,.js [data-auto-hide-scrollbar][data-scrollbar-active=true]::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--graphite) 68%,transparent)}@media(min-width:1081px){.minimal-shell--blog{grid-template-rows:max-content max-content;align-content:start;row-gap:clamp(1.5rem,3vw,2.25rem)}.minimal-shell--blog>.minimal-reading-column{display:contents}.minimal-shell--blog>.minimal-reading-column>.minimal-entry{grid-column:1;grid-row:1}.minimal-shell--blog>.minimal-reading-column>.archive-ledger{grid-column:1;grid-row:2}.minimal-shell--blog>.archive-context{grid-column:2;grid-row:2;padding-block-start:0}}.theme-minimal .site-mark__glyph{color:var(--teal);font-style:normal}}@media(forced-colors:active){html.js[data-auto-hide-root-scrollbar],.js [data-auto-hide-scrollbar]{scrollbar-color:auto;scrollbar-width:auto}html.js[data-auto-hide-root-scrollbar]::-webkit-scrollbar-thumb,.js [data-auto-hide-scrollbar]::-webkit-scrollbar-thumb{background-color:ButtonText}}@layer content{.theme-minimal .note-header{margin-block-end:2.5rem}.theme-minimal .note-title{max-inline-size:20ch}.theme-minimal .note-content{line-height:1.72}@media(min-width:521px){.minimal-entry:has(>.page-actions)>.note-header>.note-title:first-child{inline-size:calc(100% - var(--page-actions-clearance))}.minimal-entry:not(:has(>.note-header))>.page-actions+.note-content>h1:first-child{text-wrap:wrap}.minimal-entry:has(>.page-actions)>.note-header>:first-child:not(.note-title){box-sizing:border-box;inline-size:100%}:root[dir=ltr] .minimal-entry:has(>.page-actions)>.note-header>.note-title:first-child{margin-right:var(--page-actions-clearance);margin-left:0}:root[dir=rtl] .minimal-entry:has(>.page-actions)>.note-header>.note-title:first-child{margin-right:0;margin-left:var(--page-actions-clearance)}:root[dir=ltr] .minimal-entry:has(>.page-actions)>.note-header>:first-child:not(.note-title){padding-right:var(--page-actions-clearance);padding-left:0}:root[dir=rtl] .minimal-entry:has(>.page-actions)>.note-header>:first-child:not(.note-title){padding-right:0;padding-left:var(--page-actions-clearance)}}}@layer components{.minimal-entry>.page-actions{position:absolute;inset-block-start:0;inset-inline-end:max(0px,calc(100% - var(--reading-width)));float:none;margin:0}@media(min-width:521px){.minimal-entry:not(:has(>.note-header))>.page-actions{position:relative;inset:auto;float:inline-end;margin:0;margin-block-end:1rem;margin-inline-start:1rem}}.minimal-recent{margin-block-start:clamp(3rem,7vw,5rem)}.note-content>.minimal-recent:first-child{margin-block-start:0}.minimal-shell--blog .note-content>.tag-filter{margin-block-start:0}.minimal-section-heading{display:flex;align-items:baseline;justify-content:space-between;padding-block-end:.8rem;border-block-end:1px solid var(--line-strong);gap:1rem}.minimal-section-heading h2{margin:0;padding:0;border:0;font-size:clamp(1.35rem,2.7vw,1.75rem)}.minimal-recent__view-all{flex:none;color:var(--ink);font-size:.7rem;font-weight:680;letter-spacing:.06em;text-decoration:none;text-transform:uppercase}.minimal-recent__view-all:hover{color:var(--violet)}.minimal-recent__grid{display:grid;grid-template-columns:minmax(0,1fr)}.minimal-recent__footer{display:flex;justify-content:flex-end;padding-block-start:.7rem}.minimal-recent__view-all{display:inline-flex;align-items:center;min-block-size:2.75rem;padding-inline:.15rem;gap:.35rem}.minimal-post-card{position:relative;min-inline-size:0;padding-block:clamp(1.5rem,3vw,2rem);border-block-end:1px solid var(--line)}.minimal-post-card:has(:is(h2,h3) a:focus-visible){border-radius:.2rem;box-shadow:var(--focus-ring)}.minimal-post-card--with-image{display:grid;grid-template-columns:minmax(12rem,17rem) minmax(0,1fr);align-items:center;gap:clamp(1.25rem,3vw,2.25rem)}.minimal-post-card__media{display:block;aspect-ratio:16 / 9;overflow:hidden;background:var(--surface)}.minimal-post-card__media img{inline-size:100%;block-size:100%;object-fit:cover}.minimal-post-card :is(h2,h3){position:static;margin:0;font-size:clamp(1.15rem,2.2vw,1.42rem);line-height:1.28}.minimal-post-card :is(h2,h3) a{color:var(--ink);text-decoration:none}.minimal-post-card :is(h2,h3) a:hover{color:var(--violet)}.minimal-post-card :is(h2,h3) a:after{position:absolute;inset:0;content:""}.minimal-post-card :is(h2,h3) a:focus-visible{box-shadow:none}.minimal-post-card__subtitle{margin:.4rem 0 0;color:var(--ink);font-size:.9rem}.minimal-post-card__excerpt{display:-webkit-box;margin:.8rem 0 0;color:var(--ink);font-size:.9rem;line-height:1.62;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3}.minimal-post-card footer{margin-block-start:.75rem;color:var(--graphite);font-size:.7rem;font-variant-numeric:tabular-nums}.minimal-post-card footer a{position:relative;z-index:1;color:inherit;text-underline-offset:.15em}.minimal-contacts{display:flex;flex-wrap:wrap;justify-content:center;margin-block-start:3rem;gap:.55rem}.minimal-contact{display:inline-flex;align-items:center;border:1px solid var(--line-strong);color:var(--ink);text-decoration:none}.minimal-contact--icon{justify-content:center;inline-size:2.5rem;min-block-size:2.5rem;padding:0;border:0}.minimal-contact--text{min-block-size:2.25rem;padding-inline:.8rem;border-radius:100vmax;font-size:.72rem;font-weight:620}.minimal-contact__icon{inline-size:1.35rem;block-size:1.35rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6}.minimal-contact__icon--brand{fill:currentColor;stroke:none}.minimal-contact:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));color:var(--ink)}.minimal-portfolio{inline-size:100%;margin-block-start:clamp(3rem,6vw,5rem)}.minimal-portfolio--index{margin-block-start:0}.minimal-portfolio__heading{margin:0 0 1.25rem;font-family:var(--font-article);font-size:clamp(1.55rem,3vw,2rem);font-weight:650;letter-spacing:-.015em}.minimal-portfolio>.tag-filter{margin-block:0 1.5rem}.minimal-portfolio__grid{display:grid;grid-template-columns:minmax(0,1fr);margin:0;padding:0;gap:clamp(1rem,2.5vw,1.75rem);list-style:none}.minimal-portfolio__grid>li{min-inline-size:0}.minimal-portfolio-card{position:relative;display:grid;block-size:100%;overflow:hidden;border:1px solid var(--line-strong);border-radius:.45rem;background:var(--surface);color:var(--ink);text-decoration:none}.minimal-portfolio-card:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line))}.minimal-portfolio-card:has(.minimal-portfolio-card__main:focus-visible){border-color:var(--violet);box-shadow:var(--focus-ring)}.minimal-portfolio-card--with-image{grid-template-columns:minmax(13rem,30%) minmax(0,1fr)}.minimal-portfolio-card__media{display:block;aspect-ratio:16 / 10;overflow:hidden;background:var(--frost)}.minimal-portfolio-card__media img{display:block;inline-size:100%;block-size:100%;object-fit:cover}.minimal-portfolio-card__body{display:grid;align-content:start;padding:clamp(1rem,2.5vw,1.4rem);gap:.65rem}.minimal-portfolio-card--with-repository .minimal-portfolio-card__body{padding-inline-end:clamp(4rem,7vw,5rem)}.minimal-portfolio-card__title{position:static;margin:0;font-family:var(--font-article);font-size:clamp(1.12rem,2vw,1.35rem);font-weight:650;line-height:1.25}.minimal-portfolio-card__main{color:inherit;text-decoration:none}.minimal-portfolio-card__main:after{position:absolute;inset:0;content:""}.minimal-portfolio-card__main:focus-visible{box-shadow:none}.minimal-portfolio-card__summary{margin:0;color:var(--ink);font-size:.88rem;line-height:1.6}.minimal-portfolio-card__topics{display:flex;flex-wrap:wrap;margin:.15rem 0 0;padding:0;gap:.4rem;list-style:none}.minimal-portfolio-card__topics li{display:flex;min-inline-size:0;margin:0}.minimal-portfolio-card__repository{position:absolute;z-index:2;inset-block-start:.65rem;inset-inline-end:.65rem;display:grid;inline-size:44px;block-size:44px;place-items:center;border:1px solid var(--line);border-radius:50%;background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--ink)}.minimal-portfolio-card__repository:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));color:var(--ink)}.minimal-portfolio-card__repository svg{inline-size:1rem;block-size:1rem;fill:currentColor}.blog-ledger,.archive-ledger{inline-size:min(100%,920px);margin:clamp(4rem,8vw,6rem) auto 0}.archive-ledger{inline-size:100%;margin-block-start:clamp(2rem,4vw,2.75rem)}.section-heading{display:grid;grid-template-columns:minmax(8rem,9.5rem) minmax(0,1fr);align-items:baseline;padding-block-end:.85rem;border-block-end:1px solid var(--line);gap:.75rem}.blog-ledger time,.ledger-archive-link,.archive-ledger>section>h2{color:var(--graphite);font-size:.68rem;font-weight:680;letter-spacing:.09em;text-transform:uppercase}.section-heading h2,.archive-ledger>section>h2{grid-column:2;font-family:var(--font-article);font-size:clamp(1.5rem,2.5vw,1.9rem);font-weight:650;letter-spacing:-.015em;text-transform:none}.blog-ledger>ol{margin:0;padding:0;list-style:none}.blog-ledger>ol>li{display:grid;grid-template-columns:minmax(8rem,9.5rem) minmax(0,1fr);min-block-size:5.25rem;border-block-end:1px solid var(--line);gap:.75rem}.blog-ledger__meta{display:flex;align-items:center;align-self:stretch;padding-block:1.15rem}.blog-ledger time{color:var(--ink);font-size:.8rem;font-variant-numeric:tabular-nums}.blog-ledger__content{display:grid;align-content:center;padding-block:1.15rem;gap:.65rem;min-inline-size:0}.blog-ledger__main{display:grid;gap:.25rem;text-decoration:none}.blog-ledger__main strong{font-family:var(--font-article);font-size:clamp(1.08rem,1.8vw,1.3rem);font-weight:650;line-height:1.22}.blog-ledger__description{color:var(--ink);font-size:.82rem;line-height:1.5}.blog-ledger__topics{display:flex;flex-wrap:wrap;margin:0;padding:0;gap:.38rem;list-style:none}.blog-ledger__topics a{display:inline-flex;align-items:center;min-block-size:1.8rem;padding:.3rem .58rem;border:1px solid var(--line-strong);border-radius:.4rem;color:var(--ink);font-family:var(--font-ui);font-size:.74rem;font-weight:640;line-height:1;overflow-wrap:anywhere;text-decoration:none}.blog-ledger__topics a:hover,.blog-ledger__topics a[aria-current=page]{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line));background:color-mix(in srgb,var(--line-strong) 28%,transparent)}.blog-ledger__main:hover strong{color:var(--violet)}.ledger-archive-link{display:inline-flex;margin-block-start:1.2rem;gap:.65rem;color:var(--ink);text-decoration:none}.archive-ledger>section{margin-block-start:2.5rem}.archive-ledger>section>h2{margin:0;padding-block-end:.7rem;border-block-end:1px solid var(--line);color:var(--ink)}.archive-ledger .blog-ledger{inline-size:100%;margin-block-start:0}@media(min-width:1081px){.minimal-shell--blog>.minimal-reading-column>.archive-ledger,.minimal-shell--blog>.minimal-reading-column>.archive-ledger>section:first-child{margin-block-start:0}}.sequence-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-block:5rem 0;gap:1rem}.sequence-navigation a{display:grid;align-content:center;min-block-size:5.25rem;padding:1rem 1.2rem;border:1px solid var(--line-strong);gap:.35rem;text-align:center;text-decoration:none}.sequence-navigation a:hover{border-color:color-mix(in srgb,var(--graphite) 72%,var(--line))}.sequence-navigation span{color:var(--ink);font-size:.68rem;font-weight:720;letter-spacing:.09em;text-transform:uppercase}.sequence-navigation strong{color:var(--ink);font-family:var(--font-article);font-size:.88rem;font-weight:520;line-height:1.35}.sequence-navigation a:hover strong{color:var(--ink)}.theme-minimal .docs-tree__list{display:grid;margin:0;padding:0;gap:.2rem;list-style:none}.theme-minimal .docs-tree__list .docs-tree__list{margin:.2rem 0 .45rem .72rem;padding-inline-start:.65rem;border-inline-start:1px solid var(--line)}.theme-minimal .docs-tree__item>a,.theme-minimal .docs-tree__item>span{display:block;padding:.38rem .55rem;border-radius:.22rem;color:var(--ink);font-size:.76rem;line-height:1.35;text-decoration:none}.theme-minimal .docs-tree__item>a:hover,.theme-minimal .docs-tree__item>a[aria-current=page]{background:var(--violet-soft);color:var(--ink)}.theme-minimal .docs-tree__item>a[aria-current=page]{font-weight:700}}@media(max-width:620px){.minimal-shell{padding-inline:max(1.25rem,5vw)}.minimal-recent__grid{grid-template-columns:1fr}.section-heading,.blog-ledger>ol>li{grid-template-columns:1fr;gap:0}.blog-ledger__meta{padding-block:1rem 0}.blog-ledger__content{padding-block:.75rem 1.15rem}.section-heading h2{grid-column:1}.sequence-navigation{gap:.65rem}.sequence-navigation a{min-block-size:4.8rem;padding-inline:.75rem}}@media(max-width:720px){.minimal-portfolio-card--with-image{grid-template-columns:minmax(0,1fr)}.minimal-post-card--with-image{grid-template-columns:minmax(0,1fr);gap:0}.minimal-post-card__media{margin-block-end:1rem}}@media(max-width:1180px){.minimal-shell--docs:has(>.minimal-context){grid-template-columns:210px minmax(0,var(--article-width))}.minimal-shell--docs>.minimal-context{position:static;grid-column:2;max-block-size:none;padding-block-start:1.5rem;border-block-start:1px solid var(--line);overflow:visible}}@media(max-width:1080px){.minimal-shell:not(.minimal-shell--docs):has(>.minimal-context){display:block;inline-size:min(100%,calc(var(--article-width) + (2 * var(--page-gutter))))}.minimal-shell:not(.minimal-shell--docs)>.minimal-context{position:static;max-block-size:none;margin-block-start:3rem;padding-block-start:1.5rem;border-block-start:1px solid var(--line);overflow:visible}}@media(max-width:880px){.minimal-shell,.minimal-shell--docs,.minimal-shell--docs:has(>.minimal-context){display:block;padding-block:1rem 6rem}.js .minimal-docs-sidebar,.js .minimal-context{display:none}.no-js .minimal-docs-sidebar,.no-js .minimal-context{position:static;display:grid;max-block-size:none;margin-block-start:2rem;padding-block-start:1.5rem;border-block-start:1px solid var(--line);overflow:visible}}@media(max-width:520px){.minimal-entry>.page-actions{position:static;inset:auto}}
@@ -0,0 +1 @@
1
+ import{b as B}from"./chunks/chunk-D6FURU6X.js";import{a as R,d as _}from"./chunks/chunk-DGEGT77F.js";import"./chunks/chunk-6DHFEWGX.js";var F=new Set(["ABBR","B","BLOCKQUOTE","BR","CODE","DD","DEL","DL","DT","EM","H1","H2","H3","H4","H5","H6","HR","I","KBD","LI","MARK","OL","P","PRE","S","SMALL","STRONG","SUB","SUP","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"]),K=new Set(["AUDIO","BUTTON","CANVAS","EMBED","FORM","IFRAME","IMG","INPUT","MATH","NOSCRIPT","OBJECT","OPTION","PICTURE","SCRIPT","SELECT","SOURCE","STYLE","SVG","TEMPLATE","TEXTAREA","TRACK","VIDEO"]),b=Symbol.for("jekyll-obsidian.preview-controller"),U=300,y=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(","),N=null,H=new Map;function q(){return N??=_(B("preview")).then(R).then(t=>new Map(t.notes.map(o=>[o.id,o]))).catch(t=>{throw N=null,t}),N}function k(t){if(t.nodeType===Node.TEXT_NODE)return document.createTextNode(t.textContent||"");if(!(t instanceof Element)||K.has(t.tagName))return null;let o=()=>{let r=document.createDocumentFragment();for(let a of[...t.childNodes]){let l=k(a);l&&r.append(l)}return r};if(t.tagName==="A"||!F.has(t.tagName))return o();let n=document.createElement(t.tagName.toLocaleLowerCase("en-US"));if(t.tagName==="CODE"){let r=[...t.classList].filter(a=>/^language-[a-z0-9_+-]+$/i.test(a));r.length>0&&(n.className=r.join(" "))}if(t.tagName==="TH"){let r=t.getAttribute("scope");(r==="row"||r==="col"||r==="rowgroup"||r==="colgroup")&&n.setAttribute("scope",r)}if(t.tagName==="TH"||t.tagName==="TD")for(let r of["colspan","rowspan"]){let a=Number(t.getAttribute(r));Number.isSafeInteger(a)&&a>0&&a<=100&&n.setAttribute(r,String(a))}return n.append(o()),n}function $(t){let o=document.createElement("template");o.innerHTML=t;let n=o.content.querySelector(".note-content");if(!n)throw new TypeError("Fetched note has no .note-content element");let r=n.firstElementChild;r?.tagName==="H1"&&r.remove();let a=n.querySelector("p");if(a){let i=a;for(;i.parentElement&&i.parentElement!==n;){for(;i.previousSibling;)i.previousSibling.remove();i=i.parentElement}for(;i.previousSibling;)i.previousSibling.remove()}let l=document.createDocumentFragment();for(let i of[...n.childNodes]){let d=k(i);d&&l.append(d)}return l}function j(t){let o=H.get(t);return o||(o=fetch(t,{credentials:"same-origin",headers:{Accept:"text/html"}}).then(n=>{if(!n.ok)throw new Error(`Unable to load ${t}: ${n.status}`);return n.text()}).then($).catch(n=>{throw H.delete(t),n}),H.set(t,o),o)}function z(t){let o=document.createElement("aside");o.className="note-preview",o.dataset.notePreview="",o.setAttribute("role","dialog"),o.setAttribute("aria-label",t.title);let n=document.createElement("header");n.className="note-preview__header";let r=document.createElement("p");r.className="note-preview__eyebrow",r.textContent=t.tags.length>0?t.tags.slice(0,2).join(" \xB7 "):"Connected note";let a=document.createElement("h2");a.className="note-preview__title";let l=document.createElement("a");if(l.className="note-preview__title-link",l.href=t.url,l.textContent=t.title,a.append(l),n.append(r,a),t.description){let s=document.createElement("p");s.className="note-preview__description",s.textContent=t.description,n.append(s)}let i=document.createElement("div");i.className="note-preview__body",i.tabIndex=0,i.setAttribute("aria-label",`${t.title} preview`);let d=document.createElement("p");return d.className="note-preview__fallback",d.textContent=t.preview,i.append(d),i.addEventListener("wheel",s=>{if(s.stopPropagation(),s.deltaY===0)return;s.preventDefault();let f=s.deltaMode===1?16:s.deltaMode===2?i.clientHeight:1,E=Math.max(0,i.scrollHeight-i.clientHeight);i.scrollTop=Math.min(E,Math.max(0,i.scrollTop+s.deltaY*f))},{passive:!1}),o.append(n,i),{preview:o,body:i}}function C(t,o){let a=o.getBoundingClientRect(),l=t.getBoundingClientRect(),i=l.width||Math.min(420,window.innerWidth-24),d=l.height||Math.min(560,window.innerHeight-24),s=Math.min(Math.max(12,a.left),Math.max(12,window.innerWidth-i-12)),f=window.innerHeight-a.bottom-10-12,E=a.top-10-12,T=f<d&&E>f,w=T?a.top-10-d:a.bottom+10,v=Math.min(Math.max(12,w),Math.max(12,window.innerHeight-d-12));t.style.left=`${s}px`,t.style.top=`${v}px`,t.dataset.placement=T?"above":"below"}function G(){let t=document;t[b]?.();let o=null,n=null,r=null,a=null,l,i,d=0,s=()=>window.clearTimeout(i),f=()=>{window.clearTimeout(l),l=void 0,a=null},E=()=>{f(),s(),d+=1,n?.remove(),n=null,r=null,o=null},T=e=>e instanceof Node&&!!(o?.contains(e)||n?.contains(e)),w=e=>{T(e??null)||(s(),i=window.setTimeout(E,100))},v=async e=>{f();let c=e.dataset.noteId;if(s(),!c||o===e&&n)return;let u=++d;o=e;try{let g=(await q()).get(c);if(!g||o!==e||d!==u)return;n?.remove();let{preview:m,body:h}=z(g);m.addEventListener("pointerenter",s),m.addEventListener("pointerleave",p=>w(p.relatedTarget)),m.addEventListener("focusin",s),m.addEventListener("focusout",p=>w(p.relatedTarget)),document.body.append(m),C(m,e),n=m,r=h;try{let p=await j(g.url);if(o!==e||n!==m||d!==u)return;h.replaceChildren(p.cloneNode(!0)),h.dataset.previewBodyReady="true",C(m,e)}catch{h.dataset.previewBodyError="true"}}catch{d===u&&(o=null)}},I=e=>{o===e&&n||a===e||(f(),a=e,l=window.setTimeout(()=>{a=null,l=void 0,v(e)},U))},S=e=>{if(e.pointerType==="touch")return;let c=e.target;if(!(c instanceof Element))return;let u=c.closest(".website-link[data-note-id]");u&&I(u)},A=e=>{let c=e.target;if(!(c instanceof Element))return;let u=c.closest(".website-link[data-note-id]");u&&(e.relatedTarget instanceof Node&&u.contains(e.relatedTarget)||(a===u&&f(),w(e.relatedTarget)))},O=e=>{let c=e.target;if(!(c instanceof Element))return;let u=c.closest(".website-link[data-note-id]");u&&v(u)},P=e=>{let c=e.target;!(c instanceof Element)||!c.closest(".website-link[data-note-id]")||w(e.relatedTarget)},D=e=>{if(!n||!o)return;if(e.key==="Escape"){n.contains(document.activeElement)&&o.focus(),E();return}if(e.key!=="Tab"||e.altKey||e.ctrlKey||e.metaKey)return;if(!e.shiftKey&&e.target===o&&r){e.preventDefault(),s(),(n.querySelector(y)||r).focus();return}if(!(e.target instanceof Node)||!n.contains(e.target))return;e.preventDefault();let c=[...n.querySelectorAll(y)],u=e.target instanceof HTMLElement?c.indexOf(e.target):-1,g=c[u+(e.shiftKey?-1:1)];if(g){g.focus();return}if(e.shiftKey){o.focus();return}let m=[...document.querySelectorAll(y)].filter(p=>!n?.contains(p)&&!p.closest("[hidden], [inert], dialog:not([open])")),h=m[m.indexOf(o)+1];E(),h?.focus()},L=()=>{n&&o&&C(n,o)};document.addEventListener("pointerover",S),document.addEventListener("pointerout",A),document.addEventListener("focusin",O),document.addEventListener("focusout",P),document.addEventListener("keydown",D),window.addEventListener("resize",L),window.addEventListener("scroll",L,!0);function M(){document.removeEventListener("pointerover",S),document.removeEventListener("pointerout",A),document.removeEventListener("focusin",O),document.removeEventListener("focusout",P),document.removeEventListener("keydown",D),window.removeEventListener("resize",L),window.removeEventListener("scroll",L,!0),window.removeEventListener("pagehide",x),E(),t[b]===M&&delete t[b]}function x(e){e.persisted||M()}t[b]=M,window.addEventListener("pagehide",x)}export{G as initialisePreviews};
@@ -0,0 +1 @@
1
+ import{b as h}from"./chunks/chunk-D6FURU6X.js";import"./chunks/chunk-6DHFEWGX.js";var y=new WeakMap;function f(e,r){return e.replace(/\{([a-z]+)\}/g,(s,a)=>Object.prototype.hasOwnProperty.call(r,a)?String(r[a]):s)}function E(e){let r=document.createElement("li");r.className="search-result";let s=document.createElement("a");s.className="search-result__link",s.href=e.url;let a=document.createElement("strong");if(a.textContent=e.title,e.tags.length>0){let n=document.createElement("span");n.className="search-result__meta",n.textContent=e.tags.slice(0,3).join(" \xB7 "),s.append(a,n)}else s.append(a);return r.append(s),r}function S(){let e=new Worker(h("search-worker"),{type:"module"}),r,s,a=new Promise((n,u)=>{r=n,s=u});return e.addEventListener("message",n=>{n.data.type==="ready"&&r?.(),n.data.type==="error"&&s?.(new Error(n.data.message))}),e.addEventListener("error",()=>s?.(new Error("Search worker failed")),{once:!0}),e.postMessage({type:"init",url:h("search")}),{worker:e,ready:a,nextQueryId:0}}async function k(e){let r=e.querySelector("[data-search-input]"),s=e.querySelector("[data-search-results]"),a=e.querySelector("[data-search-status]"),n=e.querySelector("[data-search-navigation]"),u=n?[...n.querySelectorAll("[data-navigation-id]")]:[];if(!r||!s||!a)throw new Error("Search dialog is missing its input, results, or status element");if(e.dataset.searchReady==="true"){r.focus();return}a.textContent=e.dataset.searchLoading||"Loading notebook index\u2026";let c=S();y.set(e,c),await c.ready,e.dataset.searchReady="true";let d=0;c.worker.addEventListener("message",o=>{let t=o.data;t.type!=="results"||t.id!==d||(s.replaceChildren(...t.results.map(E)),a.textContent=t.results.length===0?f(e.dataset.searchNoResults||"No notes found for \u201C{query}\u201D.",{query:r.value.trim()}):f(t.results.length===1?e.dataset.searchResultOne||"{count} note found.":e.dataset.searchResultMany||"{count} notes found.",{count:t.results.length}))});let m=()=>{d=++c.nextQueryId;let o=r.value.trim(),t=o.normalize("NFKC").toLocaleLowerCase(),i=0;if(u.forEach(l=>{let p=l.textContent?.normalize("NFKC").toLocaleLowerCase()||"";l.hidden=!!t&&!p.includes(t),l.hidden||(i+=1)}),n&&(n.hidden=i===0),s.replaceChildren(),!o){a.textContent=e.dataset.searchPrompt||"Type a title, tag, or phrase.";return}c.worker.postMessage({type:"query",id:d,query:o})};r.addEventListener("input",m),e.addEventListener("keydown",o=>{let t=Array.from(e.querySelectorAll("[data-search-navigation] a[href], [data-search-results] a[href]")).filter(l=>!l.closest("[hidden]")),i=t.indexOf(document.activeElement);o.key==="ArrowDown"&&t.length>0?(o.preventDefault(),(t[i+1]??t[0])?.focus()):o.key==="ArrowUp"&&t.length>0&&(o.preventDefault(),(t[i-1]??t.at(-1))?.focus())}),m(),r.focus()}export{k as activateSearch};
@@ -0,0 +1 @@
1
+ import{b as J,d as $}from"./chunks/chunk-DGEGT77F.js";import"./chunks/chunk-6DHFEWGX.js";var nt="ENTRIES",q="KEYS",H="VALUES";var x=class{constructor(t,e){let s=t._tree,n=Array.from(s.keys());this.set=t,this._type=e,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){let t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};let{node:t,keys:e}=y(this._path);if(y(e)==="")return{done:!1,value:this.result()};let s=t.get(y(e));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;let t=y(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>y(t)).filter(t=>t!=="").join("")}value(){return y(this._path).node.get("")}result(){switch(this._type){case H:return this.value();case q:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}},y=i=>i[i.length-1],it=(i,t,e)=>{let s=new Map;if(t===void 0)return s;let n=t.length+1,o=n+e,r=new Uint8Array(o*n).fill(e+1);for(let c=0;c<n;++c)r[c]=c;for(let c=1;c<o;++c)r[c*n]=c;return G(i,t,e,s,r,1,n,""),s},G=(i,t,e,s,n,o,r,c)=>{let d=o*r;t:for(let u of i.keys())if(u===""){let a=n[d-1];a<=e&&s.set(c,[i.get(u),a])}else{let a=o;for(let l=0;l<u.length;++l,++a){let h=u[l],f=r*a,_=f-r,g=n[f],m=Math.max(0,a-e-1),p=Math.min(r-1,a+e);for(let w=m;w<p;++w){let A=h!==t[w],E=n[_+w]+ +A,v=n[_+w+1]+1,S=n[f+w]+1,F=n[f+w+1]=Math.min(E,v,S);F<g&&(g=F)}if(g>e)continue t}G(i.get(u),t,e,s,n,a,r,c+u)}},z=class i{constructor(t=new Map,e=""){this._size=void 0,this._tree=t,this._prefix=e}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");let[e,s]=L(this._tree,t.slice(this._prefix.length));if(e===void 0){let[n,o]=N(s);for(let r of n.keys())if(r!==""&&r.startsWith(o)){let c=new Map;return c.set(r.slice(o.length),n.get(r)),new i(c,t)}}return new i(e,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ot(this._tree,t)}entries(){return new x(this,nt)}forEach(t){for(let[e,s]of this)t(e,s,this)}fuzzyGet(t,e){return it(this._tree,t,e)}get(t){let e=R(this._tree,t);return e!==void 0?e.get(""):void 0}has(t){let e=R(this._tree,t);return e!==void 0&&e.has("")}keys(){return new x(this,q)}set(t,e){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,T(this._tree,t).set("",e),this}get size(){if(this._size)return this._size;this._size=0;let t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,e){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;let s=T(this._tree,t);return s.set("",e(s.get(""))),this}fetch(t,e){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;let s=T(this._tree,t),n=s.get("");return n===void 0&&s.set("",n=e()),n}values(){return new x(this,H)}[Symbol.iterator](){return this.entries()}static from(t){let e=new i;for(let[s,n]of t)e.set(s,n);return e}static fromObject(t){return i.from(Object.entries(t))}},L=(i,t,e=[])=>{if(t.length===0||i==null)return[i,e];for(let s of i.keys())if(s!==""&&t.startsWith(s))return e.push([i,s]),L(i.get(s),t.slice(s.length),e);return e.push([i,t]),L(void 0,"",e)},R=(i,t)=>{if(t.length===0||i==null)return i;for(let e of i.keys())if(e!==""&&t.startsWith(e))return R(i.get(e),t.slice(e.length))},T=(i,t)=>{let e=t.length;t:for(let s=0;i&&s<e;){for(let o of i.keys())if(o!==""&&t[s]===o[0]){let r=Math.min(e-s,o.length),c=1;for(;c<r&&t[s+c]===o[c];)++c;let d=i.get(o);if(c===o.length)i=d;else{let u=new Map;u.set(o.slice(c),d),i.set(t.slice(s,s+c),u),i.delete(o),i=u}s+=c;continue t}let n=new Map;return i.set(t.slice(s),n),n}return i},ot=(i,t)=>{let[e,s]=L(i,t);if(e!==void 0){if(e.delete(""),e.size===0)Y(s);else if(e.size===1){let[n,o]=e.entries().next().value;Z(s,n,o)}}},Y=i=>{if(i.length===0)return;let[t,e]=N(i);if(t.delete(e),t.size===0)Y(i.slice(0,-1));else if(t.size===1){let[s,n]=t.entries().next().value;s!==""&&Z(i.slice(0,-1),s,n)}},Z=(i,t,e)=>{if(i.length===0)return;let[s,n]=N(i);s.set(n+t,e),s.delete(n)},N=i=>i[i.length-1],P="or",X="and",rt="and_not",I=class i{constructor(t){if(t?.fields==null)throw new Error('MiniSearch: option "fields" must be provided');let e=t.autoVacuum==null||t.autoVacuum===!0?D:t.autoVacuum;this._options={...O,...t,autoVacuum:e,searchOptions:{...Q,...t.searchOptions||{}},autoSuggestOptions:{...ht,...t.autoSuggestOptions||{}}},this._index=new z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=j,this.addFields(this._options.fields)}add(t){let{extractField:e,stringifyField:s,tokenize:n,processTerm:o,fields:r,idField:c}=this._options,d=e(t,c);if(d==null)throw new Error(`MiniSearch: document does not have ID field "${c}"`);if(this._idToShortId.has(d))throw new Error(`MiniSearch: duplicate ID ${d}`);let u=this.addDocumentId(d);this.saveStoredFields(u,t);for(let a of r){let l=e(t,a);if(l==null)continue;let h=n(s(l,a),a),f=this._fieldIds[a],_=new Set(h).size;this.addFieldLength(u,f,this._documentCount-1,_);for(let g of h){let m=o(g,a);if(Array.isArray(m))for(let p of m)this.addTerm(f,u,p);else m&&this.addTerm(f,u,m)}}}addAll(t){for(let e of t)this.add(e)}addAllAsync(t,e={}){let{chunkSize:s=10}=e,n={chunk:[],promise:Promise.resolve()},{chunk:o,promise:r}=t.reduce(({chunk:c,promise:d},u,a)=>(c.push(u),(a+1)%s===0?{chunk:[],promise:d.then(()=>new Promise(l=>setTimeout(l,0))).then(()=>this.addAll(c))}:{chunk:c,promise:d}),n);return r.then(()=>this.addAll(o))}remove(t){let{tokenize:e,processTerm:s,extractField:n,stringifyField:o,fields:r,idField:c}=this._options,d=n(t,c);if(d==null)throw new Error(`MiniSearch: document does not have ID field "${c}"`);let u=this._idToShortId.get(d);if(u==null)throw new Error(`MiniSearch: cannot remove document with ID ${d}: it is not in the index`);for(let a of r){let l=n(t,a);if(l==null)continue;let h=e(o(l,a),a),f=this._fieldIds[a],_=new Set(h).size;this.removeFieldLength(u,f,this._documentCount,_);for(let g of h){let m=s(g,a);if(Array.isArray(m))for(let p of m)this.removeTerm(f,u,p);else m&&this.removeTerm(f,u,m)}}this._storedFields.delete(u),this._documentIds.delete(u),this._idToShortId.delete(d),this._fieldLength.delete(u),this._documentCount-=1}removeAll(t){if(t)for(let e of t)this.remove(e);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(t){let e=this._idToShortId.get(t);if(e==null)throw new Error(`MiniSearch: cannot discard document with ID ${t}: it is not in the index`);this._idToShortId.delete(t),this._documentIds.delete(e),this._storedFields.delete(e),(this._fieldLength.get(e)||[]).forEach((s,n)=>{this.removeFieldLength(e,n,this._documentCount,s)}),this._fieldLength.delete(e),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;let{minDirtFactor:t,minDirtCount:e,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:e,minDirtFactor:t})}discardAll(t){let e=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(let s of t)this.discard(s)}finally{this._options.autoVacuum=e}this.maybeAutoVacuum()}replace(t){let{idField:e,extractField:s}=this._options,n=s(t,e);this.discard(n),this.add(t)}vacuum(t={}){return this.conditionalVacuum(t)}conditionalVacuum(t,e){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&e,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{let s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=j,this.performVacuuming(t,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(e)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)}async performVacuuming(t,e){let s=this._dirtCount;if(this.vacuumConditionsMet(e)){let n=t.batchSize||W.batchSize,o=t.batchWait||W.batchWait,r=1;for(let[c,d]of this._index){for(let[u,a]of d)for(let[l]of a)this._documentIds.has(l)||(a.size<=1?d.delete(u):a.delete(l));this._index.get(c).size===0&&this._index.delete(c),r%n===0&&await new Promise(u=>setTimeout(u,o)),r+=1}this._dirtCount-=s}await null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null}vacuumConditionsMet(t){if(t==null)return!0;let{minDirtCount:e,minDirtFactor:s}=t;return e=e||D.minDirtCount,s=s||D.minDirtFactor,this.dirtCount>=e&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(t){return this._idToShortId.has(t)}getStoredFields(t){let e=this._idToShortId.get(t);if(e!=null)return this._storedFields.get(e)}search(t,e={}){let{searchOptions:s}=this._options,n={...s,...e},o=this.executeQuery(t,e),r=[];for(let[c,{score:d,terms:u,match:a}]of o){let l=u.length||1,h={id:this._documentIds.get(c),score:d*l,terms:Object.keys(a),queryTerms:u,match:a};Object.assign(h,this._storedFields.get(c)),(n.filter==null||n.filter(h))&&r.push(h)}return t===i.wildcard&&n.boostDocument==null||r.sort(B),r}autoSuggest(t,e={}){e={...this._options.autoSuggestOptions,...e};let s=new Map;for(let{score:o,terms:r}of this.search(t,e)){let c=r.join(" "),d=s.get(c);d!=null?(d.score+=o,d.count+=1):s.set(c,{score:o,terms:r,count:1})}let n=[];for(let[o,{score:r,terms:c,count:d}]of s)n.push({suggestion:o,terms:c,score:r/d});return n.sort(B),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(t,e){if(e==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),e)}static async loadJSONAsync(t,e){if(e==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(t),e)}static getDefault(t){if(O.hasOwnProperty(t))return V(O,t);throw new Error(`MiniSearch: unknown option "${t}"`)}static loadJS(t,e){let{index:s,documentIds:n,fieldLength:o,storedFields:r,serializationVersion:c}=t,d=this.instantiateMiniSearch(t,e);d._documentIds=b(n),d._fieldLength=b(o),d._storedFields=b(r);for(let[u,a]of d._documentIds)d._idToShortId.set(a,u);for(let[u,a]of s){let l=new Map;for(let h of Object.keys(a)){let f=a[h];c===1&&(f=f.ds),l.set(parseInt(h,10),b(f))}d._index.set(u,l)}return d}static async loadJSAsync(t,e){let{index:s,documentIds:n,fieldLength:o,storedFields:r,serializationVersion:c}=t,d=this.instantiateMiniSearch(t,e);d._documentIds=await k(n),d._fieldLength=await k(o),d._storedFields=await k(r);for(let[a,l]of d._documentIds)d._idToShortId.set(l,a);let u=0;for(let[a,l]of s){let h=new Map;for(let f of Object.keys(l)){let _=l[f];c===1&&(_=_.ds),h.set(parseInt(f,10),await k(_))}++u%1e3===0&&await tt(0),d._index.set(a,h)}return d}static instantiateMiniSearch(t,e){let{documentCount:s,nextId:n,fieldIds:o,averageFieldLength:r,dirtCount:c,serializationVersion:d}=t;if(d!==1&&d!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");let u=new i(e);return u._documentCount=s,u._nextId=n,u._idToShortId=new Map,u._fieldIds=o,u._avgFieldLength=r,u._dirtCount=c||0,u._index=new z,u}executeQuery(t,e={}){if(t===i.wildcard)return this.executeWildcardQuery(e);if(typeof t!="string"){let h={...e,...t,queries:void 0},f=t.queries.map(_=>this.executeQuery(_,h));return this.combineResults(f,h.combineWith)}let{tokenize:s,processTerm:n,searchOptions:o}=this._options,r={tokenize:s,processTerm:n,...o,...e},{tokenize:c,processTerm:d}=r,l=c(t).flatMap(h=>d(h)).filter(h=>!!h).map(at(r)).map(h=>this.executeQuerySpec(h,r));return this.combineResults(l,r.combineWith)}executeQuerySpec(t,e){let s={...this._options.searchOptions,...e},n=(s.fields||this._options.fields).reduce((g,m)=>({...g,[m]:V(s.boost,m)||1}),{}),{boostDocument:o,weights:r,maxFuzzy:c,bm25:d}=s,{fuzzy:u,prefix:a}={...Q.weights,...r},l=this._index.get(t.term),h=this.termResults(t.term,t.term,1,t.termBoost,l,n,o,d),f,_;if(t.prefix&&(f=this._index.atPrefix(t.term)),t.fuzzy){let g=t.fuzzy===!0?.2:t.fuzzy,m=g<1?Math.min(c,Math.round(t.term.length*g)):g;m&&(_=this._index.fuzzyGet(t.term,m))}if(f)for(let[g,m]of f){let p=g.length-t.term.length;if(!p)continue;_?.delete(g);let w=a*g.length/(g.length+.3*p);this.termResults(t.term,g,w,t.termBoost,m,n,o,d,h)}if(_)for(let g of _.keys()){let[m,p]=_.get(g);if(!p)continue;let w=u*g.length/(g.length+p);this.termResults(t.term,g,w,t.termBoost,m,n,o,d,h)}return h}executeWildcardQuery(t){let e=new Map,s={...this._options.searchOptions,...t};for(let[n,o]of this._documentIds){let r=s.boostDocument?s.boostDocument(o,"",this._storedFields.get(n)):1;e.set(n,{score:r,terms:[],match:{}})}return e}combineResults(t,e=P){if(t.length===0)return new Map;let s=e.toLowerCase(),n=ct[s];if(!n)throw new Error(`Invalid combination operator: ${e}`);return t.reduce(n)||new Map}toJSON(){let t=[];for(let[e,s]of this._index){let n={};for(let[o,r]of s)n[o]=Object.fromEntries(r);t.push([e,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}termResults(t,e,s,n,o,r,c,d,u=new Map){if(o==null)return u;for(let a of Object.keys(r)){let l=r[a],h=this._fieldIds[a],f=o.get(h);if(f==null)continue;let _=f.size,g=this._avgFieldLength[h];for(let m of f.keys()){if(!this._documentIds.has(m)){this.removeTerm(h,m,e),_-=1;continue}let p=c?c(this._documentIds.get(m),e,this._storedFields.get(m)):1;if(!p)continue;let w=f.get(m),A=this._fieldLength.get(m)[h],E=dt(w,_,this._documentCount,A,g,d),v=s*n*l*p*E,S=u.get(m);if(S){S.score+=v,lt(S.terms,t);let F=V(S.match,e);F?F.push(a):S.match[e]=[a]}else u.set(m,{score:v,terms:[t],match:{[e]:[a]}})}}return u}addTerm(t,e,s){let n=this._index.fetch(s,K),o=n.get(t);if(o==null)o=new Map,o.set(e,1),n.set(t,o);else{let r=o.get(e);o.set(e,(r||0)+1)}}removeTerm(t,e,s){if(!this._index.has(s)){this.warnDocumentChanged(e,t,s);return}let n=this._index.fetch(s,K),o=n.get(t);o==null||o.get(e)==null?this.warnDocumentChanged(e,t,s):o.get(e)<=1?o.size<=1?n.delete(t):o.delete(e):o.set(e,o.get(e)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(t,e,s){for(let n of Object.keys(this._fieldIds))if(this._fieldIds[n]===e){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(t)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(t){let e=this._nextId;return this._idToShortId.set(t,e),this._documentIds.set(e,t),this._documentCount+=1,this._nextId+=1,e}addFields(t){for(let e=0;e<t.length;e++)this._fieldIds[t[e]]=e}addFieldLength(t,e,s,n){let o=this._fieldLength.get(t);o==null&&this._fieldLength.set(t,o=[]),o[e]=n;let c=(this._avgFieldLength[e]||0)*s+n;this._avgFieldLength[e]=c/(s+1)}removeFieldLength(t,e,s,n){if(s===1){this._avgFieldLength[e]=0;return}let o=this._avgFieldLength[e]*s-n;this._avgFieldLength[e]=o/(s-1)}saveStoredFields(t,e){let{storeFields:s,extractField:n}=this._options;if(s==null||s.length===0)return;let o=this._storedFields.get(t);o==null&&this._storedFields.set(t,o={});for(let r of s){let c=n(e,r);c!==void 0&&(o[r]=c)}}};I.wildcard=Symbol("*");var V=(i,t)=>Object.prototype.hasOwnProperty.call(i,t)?i[t]:void 0,ct={[P]:(i,t)=>{for(let e of t.keys()){let s=i.get(e);if(s==null)i.set(e,t.get(e));else{let{score:n,terms:o,match:r}=t.get(e);s.score=s.score+n,s.match=Object.assign(s.match,r),U(s.terms,o)}}return i},[X]:(i,t)=>{let e=new Map;for(let s of t.keys()){let n=i.get(s);if(n==null)continue;let{score:o,terms:r,match:c}=t.get(s);U(n.terms,r),e.set(s,{score:n.score+o,terms:n.terms,match:Object.assign(n.match,c)})}return e},[rt]:(i,t)=>{for(let e of t.keys())i.delete(e);return i}},ut={k:1.2,b:.7,d:.5},dt=(i,t,e,s,n,o)=>{let{k:r,b:c,d}=o;return Math.log(1+(e-t+.5)/(t+.5))*(d+i*(r+1)/(i+r*(1-c+c*s/n)))},at=i=>(t,e,s)=>{let n=typeof i.fuzzy=="function"?i.fuzzy(t,e,s):i.fuzzy||!1,o=typeof i.prefix=="function"?i.prefix(t,e,s):i.prefix===!0,r=typeof i.boostTerm=="function"?i.boostTerm(t,e,s):1;return{term:t,fuzzy:n,prefix:o,termBoost:r}},O={idField:"id",extractField:(i,t)=>i[t],stringifyField:(i,t)=>i.toString(),tokenize:i=>i.split(ft),processTerm:i=>i.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(i,t)=>{typeof console?.[i]=="function"&&console[i](t)},autoVacuum:!0},Q={combineWith:P,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:ut},ht={combineWith:X,prefix:(i,t,e)=>t===e.length-1},W={batchSize:1e3,batchWait:10},j={minDirtFactor:.1,minDirtCount:20},D={...W,...j},lt=(i,t)=>{i.includes(t)||i.push(t)},U=(i,t)=>{for(let e of t)i.includes(e)||i.push(e)},B=({score:i},{score:t})=>t-i,K=()=>new Map,b=i=>{let t=new Map;for(let e of Object.keys(i))t.set(parseInt(e,10),i[e]);return t},k=async i=>{let t=new Map,e=0;for(let s of Object.keys(i))t.set(parseInt(s,10),i[s]),++e%1e3===0&&await tt(0);return t},tt=i=>new Promise(t=>setTimeout(t,i)),ft=/[\n\r\p{Z}\p{P}]+/u;var mt=/[\p{L}\p{N}\p{M}]+/gu,gt=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;function _t(i){return gt.test(i)}function et(i){let t=i.normalize("NFKC").toLocaleLowerCase("und"),e=[];for(let s of t.matchAll(mt)){let n=s[0],o="",r=[],c=()=>{o&&e.push(o),o=""},d=()=>{if(r.length!==0){e.push(...r);for(let u=0;u+1<r.length;u+=1)e.push(`${r[u]}${r[u+1]}`);r=[]}};for(let u of Array.from(n))_t(u)?(c(),r.push(u)):(d(),o+=u);c(),d()}return[...new Set(e)]}var st=self,M=null;function C(i){st.postMessage(i)}st.onmessage=i=>{let t=i.data;if(t.type==="init"){$(t.url).then(J).then(s=>{M=new I({idField:"id",fields:["title","aliasesText","tagsText","text"],storeFields:["title","url","tags"],tokenize:et,processTerm:n=>n.normalize("NFKC").toLocaleLowerCase("und"),searchOptions:{boost:{title:4,aliasesText:2.5,tagsText:1.8,text:1},prefix:!0,fuzzy:.15,combineWith:"AND"}}),M.addAll(s.documents.map(n=>({...n,aliasesText:n.aliases.join(" "),tagsText:n.tags.join(" ")}))),C({type:"ready"})}).catch(()=>C({type:"error",message:"Search index could not be loaded"}));return}if(!M){C({type:"error",message:"Search index is not ready"});return}let e=M.search(t.query).slice(0,12).map(s=>({title:String(s.title),url:String(s.url),tags:Array.isArray(s.tags)?s.tags.map(String):[]}));C({type:"results",id:t.id,results:e})};
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative "../lib/jekyll_obsidian/cli"
5
+ exit JekyllObsidian::CLI.run