@notmrabhi/flowforge 0.1.32 → 0.1.33

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 (89) hide show
  1. package/dist/GatewayBranchEdge-9YF32wwN.js +1 -0
  2. package/dist/GatewayBranchEdge-9YF32wwN.js.map +1 -0
  3. package/dist/GatewayBranchEdge-Dxoy5B1A.js +1 -0
  4. package/dist/GatewayBranchEdge-Dxoy5B1A.js.map +1 -0
  5. package/dist/SchemaBuilderDrawer-B1dLgTM1.js +1 -0
  6. package/dist/SchemaBuilderDrawer-B1dLgTM1.js.map +1 -0
  7. package/dist/SchemaBuilderDrawer-CkUfYbGB.js +1 -0
  8. package/dist/SchemaBuilderDrawer-CkUfYbGB.js.map +1 -0
  9. package/dist/bpmn-CcuE2X_Q.js +1 -0
  10. package/dist/bpmn-CcuE2X_Q.js.map +1 -0
  11. package/dist/bpmn-CtfWDaOY.js +1 -0
  12. package/dist/bpmn-CtfWDaOY.js.map +1 -0
  13. package/dist/canvas.cjs +1 -0
  14. package/dist/canvas.cjs.map +1 -0
  15. package/dist/canvas.js +1 -0
  16. package/dist/canvas.js.map +1 -0
  17. package/dist/canvasTokens-CAD6G24b.js +1 -0
  18. package/dist/canvasTokens-CAD6G24b.js.map +1 -0
  19. package/dist/canvasTokens-gKNYrPl4.js +1 -0
  20. package/dist/canvasTokens-gKNYrPl4.js.map +1 -0
  21. package/dist/core.cjs +1 -0
  22. package/dist/core.cjs.map +1 -0
  23. package/dist/core.js +1 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/defaultUi.cjs +1 -0
  26. package/dist/defaultUi.cjs.map +1 -0
  27. package/dist/defaultUi.js +1 -0
  28. package/dist/defaultUi.js.map +1 -0
  29. package/dist/form.cjs +1 -0
  30. package/dist/form.cjs.map +1 -0
  31. package/dist/form.js +1 -0
  32. package/dist/form.js.map +1 -0
  33. package/dist/index-8bqYHvzi.js +1 -0
  34. package/dist/index-8bqYHvzi.js.map +1 -0
  35. package/dist/index-B31-Y5uO.js +1 -0
  36. package/dist/index-B31-Y5uO.js.map +1 -0
  37. package/dist/index-B3aHpb84.js +1 -0
  38. package/dist/index-B3aHpb84.js.map +1 -0
  39. package/dist/index-BAg_DA8n.js +1 -0
  40. package/dist/index-BAg_DA8n.js.map +1 -0
  41. package/dist/index-BAiSdZW3.js +1 -0
  42. package/dist/index-BAiSdZW3.js.map +1 -0
  43. package/dist/index-BnzttJ4w.js +1 -0
  44. package/dist/index-BnzttJ4w.js.map +1 -0
  45. package/dist/index-BysKSEtZ.js +1 -0
  46. package/dist/index-BysKSEtZ.js.map +1 -0
  47. package/dist/index-CkjEllpd.js +1 -0
  48. package/dist/index-CkjEllpd.js.map +1 -0
  49. package/dist/index-Cw9DC-tf.js +1 -0
  50. package/dist/index-Cw9DC-tf.js.map +1 -0
  51. package/dist/index-CzPi8KQC.js +1 -0
  52. package/dist/index-CzPi8KQC.js.map +1 -0
  53. package/dist/index-D14V8rKX.js +1 -0
  54. package/dist/index-D14V8rKX.js.map +1 -0
  55. package/dist/index-DNDp8nLT.js +1 -0
  56. package/dist/index-DNDp8nLT.js.map +1 -0
  57. package/dist/index-Dlw7CMau.js +1 -0
  58. package/dist/index-Dlw7CMau.js.map +1 -0
  59. package/dist/index-Dpl-Q8a4.js +1 -0
  60. package/dist/index-Dpl-Q8a4.js.map +1 -0
  61. package/dist/index-gtgq_241.js +1 -0
  62. package/dist/index-gtgq_241.js.map +1 -0
  63. package/dist/index-l6kvDx-m.js +1 -0
  64. package/dist/index-l6kvDx-m.js.map +1 -0
  65. package/dist/index-lcviy90e.js +1 -0
  66. package/dist/index-lcviy90e.js.map +1 -0
  67. package/dist/index-wOnYb3DO.js +1 -0
  68. package/dist/index-wOnYb3DO.js.map +1 -0
  69. package/dist/index.cjs +1 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.js +1 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/messages-CO299wPN.js +1 -0
  74. package/dist/messages-CO299wPN.js.map +1 -0
  75. package/dist/messages-O9Tw_XXR.js +1 -0
  76. package/dist/messages-O9Tw_XXR.js.map +1 -0
  77. package/dist/nodeRegistry.cjs +1 -0
  78. package/dist/nodeRegistry.cjs.map +1 -0
  79. package/dist/nodeRegistry.js +1 -0
  80. package/dist/nodeRegistry.js.map +1 -0
  81. package/dist/templateRegistry.cjs +1 -0
  82. package/dist/templateRegistry.cjs.map +1 -0
  83. package/dist/templateRegistry.js +1 -0
  84. package/dist/templateRegistry.js.map +1 -0
  85. package/dist/templateSkeletons-B5x8nV9i.js +1 -0
  86. package/dist/templateSkeletons-B5x8nV9i.js.map +1 -0
  87. package/dist/templateSkeletons-BdFN__gr.js +1 -0
  88. package/dist/templateSkeletons-BdFN__gr.js.map +1 -0
  89. package/package.json +3 -2
@@ -1 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index-D14V8rKX.js"),O=require("./index-B31-Y5uO.js"),s=O.styleTags({String:O.tags.string,Number:O.tags.number,"True False":O.tags.bool,PropertyName:O.tags.propertyName,Null:O.tags.null,", :":O.tags.separator,"[ ]":O.tags.squareBracket,"{ }":O.tags.brace}),o=a.LRParser.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[s],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),P=()=>r=>{try{JSON.parse(r.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const t=i(e,r.state.doc);return[{from:t,message:e.message,severity:"error",to:t}]}return[]};function i(r,e){let t;return(t=r.message.match(/at position (\d+)/))?Math.min(+t[1],e.length):(t=r.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+t[1]).from+ +t[2]-1,e.length):0}const n=O.LRLanguage.define({name:"json",parser:o.configure({props:[O.indentNodeProp.add({Object:O.continuedIndent({except:/^\s*\}/}),Array:O.continuedIndent({except:/^\s*\]/})}),O.foldNodeProp.add({"Object Array":O.foldInside})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function Q(){return new O.LanguageSupport(n)}exports.json=Q;exports.jsonLanguage=n;exports.jsonParseLinter=P;
2
+ //# sourceMappingURL=index-BysKSEtZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BysKSEtZ.js","sources":["../node_modules/@lezer/json/dist/index.js","../node_modules/@codemirror/lang-json/dist/index.js"],"sourcesContent":["import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n String: tags.string,\n Number: tags.number,\n \"True False\": tags.bool,\n PropertyName: tags.propertyName,\n Null: tags.null,\n \", :\": tags.separator,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n maxTerm: 25,\n nodeProps: [\n [\"isolate\", -2,6,11,\"\"],\n [\"openedBy\", 7,\"{\",14,\"[\"],\n [\"closedBy\", 8,\"}\",15,\"]\"]\n ],\n propSources: [jsonHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n tokenizers: [0],\n topRules: {\"JsonText\":[0,1]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n try {\n JSON.parse(view.state.doc.toString());\n }\n catch (e) {\n if (!(e instanceof SyntaxError))\n throw e;\n const pos = getErrorPosition(e, view.state.doc);\n return [{\n from: pos,\n message: e.message,\n severity: 'error',\n to: pos\n }];\n }\n return [];\n};\nfunction getErrorPosition(error, doc) {\n let m;\n if (m = error.message.match(/at position (\\d+)/))\n return Math.min(+m[1], doc.length);\n if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"json\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Object Array\": foldInside\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n indentOnInput: /^\\s*[\\}\\]]$/\n }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n"],"names":["jsonHighlighting","styleTags","tags","parser","LRParser","jsonParseLinter","view","pos","getErrorPosition","error","doc","m","jsonLanguage","LRLanguage","indentNodeProp","continuedIndent","foldNodeProp","foldInside","json","LanguageSupport"],"mappings":"wJAGMA,EAAmBC,EAAAA,UAAU,CACjC,OAAQC,EAAAA,KAAK,OACb,OAAQA,EAAAA,KAAK,OACb,aAAcA,EAAAA,KAAK,KACnB,aAAcA,EAAAA,KAAK,aACnB,KAAMA,EAAAA,KAAK,KACX,MAAOA,EAAAA,KAAK,UACZ,MAAOA,EAAAA,KAAK,cACZ,MAAOA,EAAAA,KAAK,KACd,CAAC,EAGKC,EAASC,EAAAA,SAAS,YAAY,CAClC,QAAS,GACT,OAAQ,mRACR,UAAW,iGACX,KAAM,kFACN,UAAW,0FACX,QAAS,GACT,UAAW,CACT,CAAC,UAAW,GAAG,EAAE,GAAG,EAAE,EACtB,CAAC,WAAY,EAAE,IAAI,GAAG,GAAG,EACzB,CAAC,WAAY,EAAE,IAAI,GAAG,GAAG,CAC7B,EACE,YAAa,CAACJ,CAAgB,EAC9B,aAAc,CAAC,CAAC,EAChB,gBAAiB,EACjB,UAAW,omBACX,WAAY,CAAC,CAAC,EACd,SAAU,CAAC,SAAW,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAW,CACb,CAAC,ECzBKK,EAAkB,IAAOC,GAAS,CACpC,GAAI,CACA,KAAK,MAAMA,EAAK,MAAM,IAAI,SAAQ,CAAE,CACxC,OACO,EAAG,CACN,GAAI,EAAE,aAAa,aACf,MAAM,EACV,MAAMC,EAAMC,EAAiB,EAAGF,EAAK,MAAM,GAAG,EAC9C,MAAO,CAAC,CACA,KAAMC,EACN,QAAS,EAAE,QACX,SAAU,QACV,GAAIA,CACpB,CAAa,CACT,CACA,MAAO,CAAA,CACX,EACA,SAASC,EAAiBC,EAAOC,EAAK,CAClC,IAAIC,EACJ,OAAIA,EAAIF,EAAM,QAAQ,MAAM,mBAAmB,GACpC,KAAK,IAAI,CAACE,EAAE,CAAC,EAAGD,EAAI,MAAM,GACjCC,EAAIF,EAAM,QAAQ,MAAM,4BAA4B,GAC7C,KAAK,IAAIC,EAAI,KAAK,CAACC,EAAE,CAAC,CAAC,EAAE,MAAQ,CAACA,EAAE,CAAC,EAAK,EAAGD,EAAI,MAAM,EAC3D,CACX,CAKK,MAACE,EAA4BC,EAAAA,WAAW,OAAO,CAChD,KAAM,OACN,OAAqBV,EAAO,UAAU,CAClC,MAAO,CACUW,EAAAA,eAAe,IAAI,CAC5B,OAAqBC,EAAAA,gBAAgB,CAAE,OAAQ,QAAQ,CAAE,EACzD,MAAoBA,EAAAA,gBAAgB,CAAE,OAAQ,QAAQ,CAAE,CACxE,CAAa,EACYC,EAAAA,aAAa,IAAI,CAC1B,eAAgBC,EAAAA,UAChC,CAAa,CACb,CACA,CAAK,EACD,aAAc,CACV,cAAe,CAAE,SAAU,CAAC,IAAK,IAAK,GAAG,CAAC,EAC1C,cAAe,aACvB,CACA,CAAC,EAID,SAASC,GAAO,CACZ,OAAO,IAAIC,EAAAA,gBAAgBP,CAAY,CAC3C","x_google_ignoreList":[0,1]}
@@ -1 +1,2 @@
1
1
  "use strict";const f=require("./index-B31-Y5uO.js");class re{constructor(e,t,n,o){this.state=e,this.pos=t,this.explicit=n,this.view=o,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=f.syntaxTree(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),n=Math.max(t.from,this.pos-250),o=t.text.slice(n-t.from,this.pos-t.from),s=o.search(ae(e,!1));return s<0?null:{from:n+s,to:this.pos,text:o.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function Z(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function be(i){let e=Object.create(null),t=Object.create(null);for(let{label:o}of i){e[o[0]]=!0;for(let s=1;s<o.length;s++)t[o[s]]=!0}let n=Z(e)+Z(t)+"*$";return[new RegExp("^"+n),new RegExp(n)]}function ce(i){let e=i.map(o=>typeof o=="string"?{label:o}:o),[t,n]=e.every(o=>/^\w+$/.test(o.label))?[/\w*$/,/\w+$/]:be(e);return o=>{let s=o.matchBefore(n);return s||o.explicit?{from:s?s.from:o.pos,options:e,validFor:t}:null}}function xe(i,e){return t=>{for(let n=f.syntaxTree(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(i.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(t)}}class _{constructor(e,t,n,o){this.completion=e,this.source=t,this.match=n,this.score=o}}function I(i){return i.selection.main.from}function ae(i,e){var t;let{source:n}=i,o=e&&n[0]!="^",s=n[n.length-1]!="$";return!o&&!s?i:new RegExp(`${o?"^":""}(?:${n})${s?"$":""}`,(t=i.flags)!==null&&t!==void 0?t:i.ignoreCase?"i":"")}const H=f.Annotation.define();function Ce(i,e,t,n){let{main:o}=i.selection,s=t-o.from,l=n-o.from;return{...i.changeByRange(c=>{if(c!=o&&t!=n&&i.sliceDoc(c.from+s,c.from+l)!=i.sliceDoc(t,n))return{range:c};let r=i.toText(e);return{changes:{from:c.from+s,to:n==o.from?c.to:c.from+l,insert:r},range:f.EditorSelection.cursor(c.from+s+r.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const ee=new WeakMap;function we(i){if(!Array.isArray(i))return i;let e=ee.get(i);return e||ee.set(i,e=ce(i)),e}const $=f.StateEffect.define(),R=f.StateEffect.define();class Se{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t<e.length;){let n=f.codePointAt(e,t),o=f.codePointSize(n);this.chars.push(n);let s=e.slice(t,t+o),l=s.toUpperCase();this.folded.push(f.codePointAt(l==s?s.toLowerCase():l,0)),t+=o}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:t,folded:n,any:o,precise:s,byWord:l}=this;if(t.length==1){let m=f.codePointAt(e,0),P=f.codePointSize(m),S=P==e.length?0:-100;if(m!=t[0])if(m==n[0])S+=-200;else return null;return this.ret(S,[0,P])}let c=e.indexOf(this.pattern);if(c==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let r=t.length,p=0;if(c<0){for(let m=0,P=Math.min(e.length,200);m<P&&p<r;){let S=f.codePointAt(e,m);(S==t[p]||S==n[p])&&(o[p++]=m),m+=f.codePointSize(S)}if(p<r)return null}let a=0,h=0,d=!1,u=0,g=-1,b=-1,D=/[a-z]/.test(e),v=!0;for(let m=0,P=Math.min(e.length,200),S=0;m<P&&h<r;){let x=f.codePointAt(e,m);c<0&&(a<r&&x==t[a]&&(s[a++]=m),u<r&&(x==t[u]||x==n[u]?(u==0&&(g=m),b=m+1,u++):u=0));let B,V=x<255?x>=48&&x<=57||x>=97&&x<=122?2:x>=65&&x<=90?1:0:(B=f.fromCodePoint(x))!=B.toLowerCase()?1:B!=B.toUpperCase()?2:0;(!m||V==1&&D||S==0&&V!=0)&&(t[h]==x||n[h]==x&&(d=!0)?l[h++]=m:l.length&&(v=!1)),S=V,m+=f.codePointSize(x)}return h==r&&l[0]==0&&v?this.result(-100+(d?-200:0),l,e):u==r&&g==0?this.ret(-200-e.length+(b==e.length?0:-100),[0,b]):c>-1?this.ret(-700-e.length,[c,c+this.pattern.length]):u==r?this.ret(-900-e.length,[g,b]):h==r?this.result(-100+(d?-200:0)+-700+(v?0:-1100),l,e):t.length==2?null:this.result((o[0]?-700:0)+-200+-1100,o,e)}result(e,t,n){let o=[],s=0;for(let l of t){let c=l+(this.astral?f.codePointSize(f.codePointAt(n,l)):1);s&&o[s-1]==l?o[s-1]=c:(o[s++]=l,o[s++]=c)}return this.ret(e-n.length,o)}}class ve{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let t=e.slice(0,this.pattern.length),n=t==this.pattern?0:t.toLowerCase()==this.folded?-200:null;return n==null?null:(this.matched=[0,t.length],this.score=n+(e.length==this.pattern.length?0:-100),this)}}const y=f.Facet.define({combine(i){return f.combineConfig(i,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:Ee,filterStrict:!1,compareCompletions:(e,t)=>(e.sortText||e.label).localeCompare(t.sortText||t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>n=>te(e(n),t(n)),optionClass:(e,t)=>n=>te(e(n),t(n)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function te(i,e){return i?e?i+" "+e:i:e}function Ee(i,e,t,n,o,s){let l=i.textDirection==f.Direction.RTL,c=l,r=!1,p="top",a,h,d=e.left-o.left,u=o.right-e.right,g=n.right-n.left,b=n.bottom-n.top;if(c&&d<Math.min(g,u)?c=!1:!c&&u<Math.min(g,d)&&(c=!0),g<=(c?d:u))a=Math.max(o.top,Math.min(t.top,o.bottom-b))-e.top,h=Math.min(400,c?d:u);else{r=!0,h=Math.min(400,(l?e.right:o.right-e.left)-30);let m=o.bottom-e.bottom;m>=b||m>e.top?a=t.bottom-e.top:(p="bottom",a=e.bottom-t.top)}let D=(e.bottom-e.top)/s.offsetHeight,v=(e.right-e.left)/s.offsetWidth;return{style:`${p}: ${a/D}px; max-width: ${h/v}px`,class:"cm-completionInfo-"+(r?l?"left-narrow":"right-narrow":c?"left":"right")}}const K=f.StateEffect.define();function Ie(i){let e=i.addToOptions.slice();return i.icons&&e.push({render(t){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),t.type&&n.classList.add(...t.type.split(/\s+/g).map(o=>"cm-completionIcon-"+o)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(t,n,o,s){let l=document.createElement("span");l.className="cm-completionLabel";let c=t.displayLabel||t.label,r=0;for(let p=0;p<s.length;){let a=s[p++],h=s[p++];a>r&&l.appendChild(document.createTextNode(c.slice(r,a)));let d=l.appendChild(document.createElement("span"));d.appendChild(document.createTextNode(c.slice(a,h))),d.className="cm-completionMatchedText",r=h}return r<c.length&&l.appendChild(document.createTextNode(c.slice(r))),l},position:50},{render(t){if(!t.detail)return null;let n=document.createElement("span");return n.className="cm-completionDetail",n.textContent=t.detail,n},position:80}),e.sort((t,n)=>t.position-n.position).map(t=>t.render)}function U(i,e,t){if(i<=t)return{from:0,to:i};if(e<0&&(e=0),e<=i>>1){let o=Math.floor(e/t);return{from:o*t,to:(o+1)*t}}let n=Math.floor((i-e)/t);return{from:i-(n+1)*t,to:i-n*t}}class Pe{constructor(e,t,n){this.view=e,this.stateField=t,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:r=>this.placeInfo(r),key:this},this.space=null,this.currentClass="";let o=e.state.field(t),{options:s,selected:l}=o.open,c=e.state.facet(y);this.optionContent=Ie(c),this.optionClass=c.optionClass,this.tooltipClass=c.tooltipClass,this.range=U(s.length,l,c.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",r=>{let{options:p}=e.state.field(t).open;for(let a=r.target,h;a&&a!=this.dom;a=a.parentNode)if(a.nodeName=="LI"&&(h=/-(\d+)$/.exec(a.id))&&+h[1]<p.length){this.applyCompletion(e,p[+h[1]]),r.preventDefault();return}if(r.target==this.list){let a=this.list.classList.contains("cm-completionListIncompleteTop")&&r.clientY<this.list.firstChild.getBoundingClientRect().top?this.range.from-1:this.list.classList.contains("cm-completionListIncompleteBottom")&&r.clientY>this.list.lastChild.getBoundingClientRect().bottom?this.range.to:null;a!=null&&(e.dispatch({effects:K.of(a)}),r.preventDefault())}}),this.dom.addEventListener("focusout",r=>{let p=e.state.field(this.stateField,!1);p&&p.tooltip&&e.state.facet(y).closeOnBlur&&r.relatedTarget!=e.contentDOM&&e.dispatch({effects:R.of(null)})}),this.showOptions(s,o.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let n=e.state.field(this.stateField),o=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=o){let{options:s,selected:l,disabled:c}=n.open;(!o.open||o.open.options!=s)&&(this.range=U(s.length,l,e.state.facet(y).maxRenderedOptions),this.showOptions(s,n.id)),this.updateSel(),c!=((t=o.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!c)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of t.split(" "))n&&this.dom.classList.add(n);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected<this.range.from||t.selected>=this.range.to)&&(this.range=U(t.options.length,t.selected,this.view.state.facet(y).maxRenderedOptions),this.showOptions(t.options,e.id));let n=this.updateSelectedOption(t.selected);if(n){this.destroyInfo();let{completion:o}=t.options[t.selected],{info:s}=o;if(!s)return;let l=typeof s=="string"?document.createTextNode(s):s(o);if(!l)return;"then"in l?l.then(c=>{c&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(c,o)}).catch(c=>f.logException(this.view.state,c,"completion info")):(this.addInfoPane(l,o),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,t){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:o,destroy:s}=e;n.appendChild(o),this.infoDestroy=s||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let n=this.list.firstChild,o=this.range.from;n;n=n.nextSibling,o++)n.nodeName!="LI"||!n.id?o--:o==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),t=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return t&&Ae(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),o=e.getBoundingClientRect(),s=this.space;if(!s){let l=this.dom.ownerDocument.documentElement;s={left:0,top:0,right:l.clientWidth,bottom:l.clientHeight}}return o.top>Math.min(s.bottom,t.bottom)-10||o.bottom<Math.max(s.top,t.top)+10?null:this.view.state.facet(y).positionInfo(this.view,t,o,n,s,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,t,n){const o=document.createElement("ul");o.id=t,o.setAttribute("role","listbox"),o.setAttribute("aria-expanded","true"),o.setAttribute("aria-label",this.view.state.phrase("Completions")),o.addEventListener("mousedown",l=>{l.target==o&&l.preventDefault()});let s=null;for(let l=n.from;l<n.to;l++){let{completion:c,match:r}=e[l],{section:p}=c;if(p){let d=typeof p=="string"?p:p.name;if(d!=s&&(l>n.from||n.from==0))if(s=d,typeof p!="string"&&p.header)o.appendChild(p.header(p));else{let u=o.appendChild(document.createElement("completion-section"));u.textContent=d}}const a=o.appendChild(document.createElement("li"));a.id=t+"-"+l,a.setAttribute("role","option");let h=this.optionClass(c);h&&(a.className=h);for(let d of this.optionContent){let u=d(c,this.view.state,this.view,r);u&&a.appendChild(u)}}return n.from&&o.classList.add("cm-completionListIncompleteTop"),n.to<e.length&&o.classList.add("cm-completionListIncompleteBottom"),o}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function Te(i,e){return t=>new Pe(t,i,e)}function Ae(i,e){let t=i.getBoundingClientRect(),n=e.getBoundingClientRect(),o=t.height/i.offsetHeight;n.top<t.top?i.scrollTop-=(t.top-n.top)/o:n.bottom>t.bottom&&(i.scrollTop+=(n.bottom-t.bottom)/o)}function ie(i){return(i.boost||0)*100+(i.apply?10:0)+(i.info?5:0)+(i.type?1:0)}function Oe(i,e){let t=[],n=null,o=null,s=a=>{t.push(a);let{section:h}=a.completion;if(h){n||(n=[]);let d=typeof h=="string"?h:h.name;n.some(u=>u.name==d)||n.push(typeof h=="string"?{name:d}:h)}},l=e.facet(y);for(let a of i)if(a.hasResult()){let h=a.result.getMatch;if(a.result.filter===!1)for(let d of a.result.options)s(new _(d,a.source,h?h(d):[],1e9-t.length));else{let d=e.sliceDoc(a.from,a.to),u,g=l.filterStrict?new ve(d):new Se(d);for(let b of a.result.options)if(u=g.match(b.label)){let D=b.displayLabel?h?h(b,u.matched):[]:u.matched,v=u.score+(b.boost||0);if(s(new _(b,a.source,D,v)),typeof b.section=="object"&&b.section.rank==="dynamic"){let{name:m}=b.section;o||(o=Object.create(null)),o[m]=Math.max(v,o[m]||-1e9)}}}}if(n){let a=Object.create(null),h=0,d=(u,g)=>(u.rank==="dynamic"&&g.rank==="dynamic"?o[g.name]-o[u.name]:0)||(typeof u.rank=="number"?u.rank:1e9)-(typeof g.rank=="number"?g.rank:1e9)||(u.name<g.name?-1:1);for(let u of n.sort(d))h-=1e5,a[u.name]=h;for(let u of t){let{section:g}=u.completion;g&&(u.score+=a[typeof g=="string"?g:g.name])}}let c=[],r=null,p=l.compareCompletions;for(let a of t.sort((h,d)=>d.score-h.score||p(h.completion,d.completion))){let h=a.completion;!r||r.label!=h.label||r.detail!=h.detail||r.type!=null&&h.type!=null&&r.type!=h.type||r.apply!=h.apply||r.boost!=h.boost?c.push(a):ie(a.completion)>ie(r)&&(c[c.length-1]=a),r=a.completion}return c}class T{constructor(e,t,n,o,s,l){this.options=e,this.attrs=t,this.tooltip=n,this.timestamp=o,this.selected=s,this.disabled=l}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new T(this.options,ne(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,n,o,s,l){if(o&&!l&&e.some(p=>p.isPending))return o.setDisabled();let c=Oe(e,t);if(!c.length)return o&&e.some(p=>p.isPending)?o.setDisabled():null;let r=t.facet(y).selectOnOpen?0:-1;if(o&&o.selected!=r&&o.selected!=-1){let p=o.options[o.selected].completion;for(let a=0;a<c.length;a++)if(c[a].completion==p){r=a;break}}return new T(c,ne(n,r),{pos:e.reduce((p,a)=>a.hasResult()?Math.min(p,a.from):p,1e8),create:Be,above:s.aboveCursor},o?o.timestamp:Date.now(),r,!1)}map(e){return new T(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new T(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class z{constructor(e,t,n){this.active=e,this.id=t,this.open=n}static start(){return new z(Le,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,n=t.facet(y),s=(n.override||t.languageDataAt("autocomplete",I(t)).map(we)).map(r=>(this.active.find(a=>a.source==r)||new w(r,this.active.some(a=>a.state!=0)?1:0)).update(e,n));s.length==this.active.length&&s.every((r,p)=>r==this.active[p])&&(s=this.active);let l=this.open,c=e.effects.some(r=>r.is(q));l&&e.docChanged&&(l=l.map(e.changes)),e.selection||s.some(r=>r.hasResult()&&e.changes.touchesRange(r.from,r.to))||!De(s,this.active)||c?l=T.build(s,t,this.id,l,n,c):l&&l.disabled&&!s.some(r=>r.isPending)&&(l=null),!l&&s.every(r=>!r.isPending)&&s.some(r=>r.hasResult())&&(s=s.map(r=>r.hasResult()?new w(r.source,0):r));for(let r of e.effects)r.is(K)&&(l=l&&l.setSelected(r.value,this.id));return s==this.active&&l==this.open?this:new z(s,this.id,l)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Re:Me}}function De(i,e){if(i==e)return!0;for(let t=0,n=0;;){for(;t<i.length&&!i[t].hasResult();)t++;for(;n<e.length&&!e[n].hasResult();)n++;let o=t==i.length,s=n==e.length;if(o||s)return o==s;if(i[t++].result!=e[n++].result)return!1}}const Re={"aria-autocomplete":"list"},Me={};function ne(i,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":i};return e>-1&&(t["aria-activedescendant"]=i+"-"+e),t}const Le=[];function fe(i,e){if(i.isUserEvent("input.complete")){let n=i.annotation(H);if(n&&e.activateOnCompletion(n))return 12}let t=i.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:i.isUserEvent("delete.backward")?2:i.selection?8:i.docChanged?16:0}class w{constructor(e,t,n=!1){this.source=e,this.state=t,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,t){let n=fe(e,t),o=this;(n&8||n&16&&this.touches(e))&&(o=new w(o.source,0)),n&4&&o.state==0&&(o=new w(this.source,1)),o=o.updateFor(e,n);for(let s of e.effects)if(s.is($))o=new w(o.source,1,s.value);else if(s.is(R))o=new w(o.source,0);else if(s.is(q))for(let l of s.value)l.source==o.source&&(o=l);return o}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(I(e.state))}}class A extends w{constructor(e,t,n,o,s,l){super(e,3,t),this.limit=n,this.result=o,this.from=s,this.to=l}hasResult(){return!0}updateFor(e,t){var n;if(!(t&3))return this.map(e.changes);let o=this.result;o.map&&!e.changes.empty&&(o=o.map(o,e.changes));let s=e.changes.mapPos(this.from),l=e.changes.mapPos(this.to,1),c=I(e.state);if(c>l||!o||t&2&&(I(e.startState)==this.from||c<this.limit))return new w(this.source,t&4?1:0);let r=e.changes.mapPos(this.limit);return ke(o.validFor,e.state,s,l)?new A(this.source,this.explicit,r,o,s,l):o.update&&(o=o.update(o,s,l,new re(e.state,c,!1)))?new A(this.source,this.explicit,r,o,o.from,(n=o.to)!==null&&n!==void 0?n:I(e.state)):new w(this.source,1,this.explicit)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new A(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new w(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}}function ke(i,e,t,n){if(!i)return!1;let o=e.sliceDoc(t,n);return typeof i=="function"?i(o,t,n,e):ae(i,!0).test(o)}const q=f.StateEffect.define({map(i,e){return i.map(t=>t.map(e))}}),C=f.StateField.define({create(){return z.start()},update(i,e){return i.update(e)},provide:i=>[f.showTooltip.from(i,e=>e.tooltip),f.EditorView.contentAttributes.from(i,e=>e.attrs)]});function Q(i,e){const t=e.completion.apply||e.completion.label;let n=i.state.field(C).active.find(o=>o.source==e.source);return n instanceof A?(typeof t=="string"?i.dispatch({...Ce(i.state,t,n.from,n.to),annotations:H.of(e.completion)}):t(i,e.completion,n.from,n.to),!0):!1}const Be=Te(C,Q);function F(i,e="option"){return t=>{let n=t.state.field(C,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp<t.state.facet(y).interactionDelay)return!1;let o=1,s;e=="page"&&(s=f.getTooltip(t,n.open.tooltip))&&(o=Math.max(2,Math.floor(s.dom.offsetHeight/s.dom.querySelector("li").offsetHeight)-1));let{length:l}=n.open.options,c=n.open.selected>-1?n.open.selected+o*(i?1:-1):i?0:l-1;return c<0?c=e=="page"?0:l-1:c>=l&&(c=e=="page"?l-1:0),t.dispatch({effects:K.of(c)}),!0}}const Fe=i=>{let e=i.state.field(C,!1);return i.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<i.state.facet(y).interactionDelay?!1:Q(i,e.open.options[e.open.selected])},W=i=>i.state.field(C,!1)?(i.dispatch({effects:$.of(!0)}),!0):!1,$e=i=>{let e=i.state.field(C,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(i.dispatch({effects:R.of(null)}),!0)};class ze{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const Ne=50,Ve=1e3,Ue=f.ViewPlugin.fromClass(class{constructor(i){this.view=i,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of i.state.field(C).active)e.isPending&&this.startQuery(e)}update(i){let e=i.state.field(C),t=i.state.facet(y);if(!i.selectionSet&&!i.docChanged&&i.startState.field(C)==e)return;let n=i.transactions.some(s=>{let l=fe(s,t);return l&8||(s.selection||s.docChanged)&&!(l&3)});for(let s=0;s<this.running.length;s++){let l=this.running[s];if(n||l.context.abortOnDocChange&&i.docChanged||l.updates.length+i.transactions.length>Ne&&Date.now()-l.time>Ve){for(let c of l.context.abortListeners)try{c()}catch(r){f.logException(this.view.state,r)}l.context.abortListeners=null,this.running.splice(s--,1)}else l.updates.push(...i.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),i.transactions.some(s=>s.effects.some(l=>l.is($)))&&(this.pendingStart=!0);let o=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(s=>s.isPending&&!this.running.some(l=>l.active.source==s.source))?setTimeout(()=>this.startUpdate(),o):-1,this.composing!=0)for(let s of i.transactions)s.isUserEvent("input.type")?this.composing=2:this.composing==2&&s.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:i}=this.view,e=i.field(C);for(let t of e.active)t.isPending&&!this.running.some(n=>n.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(y).updateSyncTime))}startQuery(i){let{state:e}=this.view,t=I(e),n=new re(e,t,i.explicit,this.view),o=new ze(i,n);this.running.push(o),Promise.resolve(i.source(n)).then(s=>{o.context.aborted||(o.done=s||null,this.scheduleAccept())},s=>{this.view.dispatch({effects:R.of(null)}),f.logException(this.view.state,s)})}scheduleAccept(){this.running.every(i=>i.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(y).updateSyncTime))}accept(){var i;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(y),n=this.view.state.field(C);for(let o=0;o<this.running.length;o++){let s=this.running[o];if(s.done===void 0)continue;if(this.running.splice(o--,1),s.done){let c=I(s.updates.length?s.updates[0].startState:this.view.state),r=Math.min(c,s.done.from+(s.active.explicit?0:1)),p=new A(s.active.source,s.active.explicit,r,s.done,s.done.from,(i=s.done.to)!==null&&i!==void 0?i:c);for(let a of s.updates)p=p.update(a,t);if(p.hasResult()){e.push(p);continue}}let l=n.active.find(c=>c.source==s.active.source);if(l&&l.isPending)if(s.done==null){let c=new w(s.active.source,0);for(let r of s.updates)c=c.update(r,t);c.isPending||e.push(c)}else this.startQuery(l)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:q.of(e)})}},{eventHandlers:{blur(i){let e=this.view.state.field(C,!1);if(e&&e.tooltip&&this.view.state.facet(y).closeOnBlur){let t=e.open&&f.getTooltip(this.view,e.open.tooltip);(!t||!t.dom.contains(i.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:R.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:$.of(!1)}),20),this.composing=0}}}),We=typeof navigator=="object"&&/Win/.test(navigator.platform),je=f.Prec.highest(f.EditorView.domEventHandlers({keydown(i,e){let t=e.state.field(C,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||i.key.length>1||i.ctrlKey&&!(We&&i.altKey)||i.metaKey)return!1;let n=t.open.options[t.open.selected],o=t.active.find(l=>l.source==n.source),s=n.completion.commitCharacters||o.result.commitCharacters;return s&&s.indexOf(i.key)>-1&&Q(e,n),!1}})),he=f.EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class He{constructor(e,t,n,o){this.field=e,this.line=t,this.from=n,this.to=o}}class Y{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(e){let t=e.mapPos(this.from,-1,f.MapMode.TrackDel),n=e.mapPos(this.to,1,f.MapMode.TrackDel);return t==null||n==null?null:new Y(this.field,t,n)}}class X{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],o=[t],s=e.doc.lineAt(t),l=/^\s*/.exec(s.text)[0];for(let r of this.lines){if(n.length){let p=l,a=/^\t*/.exec(r)[0].length;for(let h=0;h<a;h++)p+=e.facet(f.indentUnit);o.push(t+p.length-a),r=p+r.slice(a)}n.push(r),t+=r.length+1}let c=this.fieldPositions.map(r=>new Y(r.field,o[r.line]+r.from,o[r.line]+r.to));return{text:n,ranges:c}}static parse(e){let t=[],n=[],o=[],s;for(let l of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(l);){let c=s[1]?+s[1]:null,r=s[2]||s[3]||"",p=-1,a=r.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h<t.length;h++)(c!=null?t[h].seq==c:a&&t[h].name==a)&&(p=h);if(p<0){let h=0;for(;h<t.length&&(c==null||t[h].seq!=null&&t[h].seq<c);)h++;t.splice(h,0,{seq:c,name:a}),p=h;for(let d of o)d.field>=p&&d.field++}for(let h of o)if(h.line==n.length&&h.from>s.index){let d=s[2]?3+(s[1]||"").length:2;h.from-=d,h.to-=d}o.push(new He(p,n.length,s.index,s.index+a.length)),l=l.slice(0,s.index)+r+l.slice(s.index+s[0].length)}l=l.replace(/\\([{}])/g,(c,r,p)=>{for(let a of o)a.line==n.length&&a.from>p&&(a.from--,a.to--);return r}),n.push(l)}return new X(n,o)}}let Ke=f.Decoration.widget({widget:new class extends f.WidgetType{toDOM(){let i=document.createElement("span");return i.className="cm-snippetFieldPosition",i}ignoreEvent(){return!1}}}),qe=f.Decoration.mark({class:"cm-snippetField"});class O{constructor(e,t){this.ranges=e,this.active=t,this.deco=f.Decoration.set(e.map(n=>(n.from==n.to?Ke:qe).range(n.from,n.to)),!0)}map(e){let t=[];for(let n of this.ranges){let o=n.map(e);if(!o)return null;t.push(o)}return new O(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(n=>n.field==this.active&&n.from<=t.from&&n.to>=t.to))}}const k=f.StateEffect.define({map(i,e){return i&&i.map(e)}}),Qe=f.StateEffect.define(),M=f.StateField.define({create(){return null},update(i,e){for(let t of e.effects){if(t.is(k))return t.value;if(t.is(Qe)&&i)return new O(i.ranges,t.value)}return i&&e.docChanged&&(i=i.map(e.changes)),i&&e.selection&&!i.selectionInsideField(e.selection)&&(i=null),i},provide:i=>f.EditorView.decorations.from(i,e=>e?e.deco:f.Decoration.none)});function G(i,e){return f.EditorSelection.create(i.filter(t=>t.field==e).map(t=>f.EditorSelection.range(t.from,t.to)))}function Ye(i){let e=X.parse(i);return(t,n,o,s)=>{let{text:l,ranges:c}=e.instantiate(t.state,o),{main:r}=t.state.selection,p={changes:{from:o,to:s==r.from?r.to:s,insert:f.Text.of(l)},scrollIntoView:!0,annotations:n?[H.of(n),f.Transaction.userEvent.of("input.complete")]:void 0};if(c.length&&(p.selection=G(c,0)),c.some(a=>a.field>0)){let a=new O(c,0),h=p.effects=[k.of(a)];t.state.field(M,!1)===void 0&&h.push(f.StateEffect.appendConfig.of([M,_e,tt,he]))}t.dispatch(t.state.update(p))}}function pe(i){return({state:e,dispatch:t})=>{let n=e.field(M,!1);if(!n||i<0&&n.active==0)return!1;let o=n.active+i,s=i>0&&!n.ranges.some(l=>l.field==o+i);return t(e.update({selection:G(n.ranges,o),effects:k.of(s?null:new O(n.ranges,o)),scrollIntoView:!0})),!0}}const Xe=({state:i,dispatch:e})=>i.field(M,!1)?(e(i.update({effects:k.of(null)})),!0):!1,Ge=pe(1),Je=pe(-1),Ze=[{key:"Tab",run:Ge,shift:Je},{key:"Escape",run:Xe}],oe=f.Facet.define({combine(i){return i.length?i[0]:Ze}}),_e=f.Prec.highest(f.keymap.compute([oe],i=>i.facet(oe)));function et(i,e){return{...e,apply:Ye(i)}}const tt=f.EditorView.domEventHandlers({mousedown(i,e){let t=e.state.field(M,!1),n;if(!t||(n=e.posAtCoords({x:i.clientX,y:i.clientY}))==null)return!1;let o=t.ranges.find(s=>s.from<=n&&s.to>=n);return!o||o.field==t.active?!1:(e.dispatch({selection:G(t.ranges,o.field),effects:k.of(t.ranges.some(s=>s.field>o.field)?new O(t.ranges,o.field):null),scrollIntoView:!0}),!0)}}),L={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},E=f.StateEffect.define({map(i,e){let t=e.mapPos(i,-1,f.MapMode.TrackAfter);return t??void 0}}),J=new class extends f.RangeValue{};J.startSide=1;J.endSide=-1;const de=f.StateField.define({create(){return f.RangeSet.empty},update(i,e){if(i=i.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);i=i.update({filter:n=>n>=t.from&&n<=t.to})}for(let t of e.effects)t.is(E)&&(i=i.update({add:[J.range(t.value,t.value+1)]}));return i}});function it(){return[ot,de]}const j="()[]{}<>«»»«[]{}";function ue(i){for(let e=0;e<j.length;e+=2)if(j.charCodeAt(e)==i)return j.charAt(e+1);return f.fromCodePoint(i<128?i:i+1)}function me(i,e){return i.languageDataAt("closeBrackets",e)[0]||L}const nt=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),ot=f.EditorView.inputHandler.of((i,e,t,n)=>{if((nt?i.composing:i.compositionStarted)||i.state.readOnly)return!1;let o=i.state.selection.main;if(n.length>2||n.length==2&&f.codePointSize(f.codePointAt(n,0))==1||e!=o.from||t!=o.to)return!1;let s=rt(i.state,n);return s?(i.dispatch(s),!0):!1}),st=({state:i,dispatch:e})=>{if(i.readOnly)return!1;let n=me(i,i.selection.main.head).brackets||L.brackets,o=null,s=i.changeByRange(l=>{if(l.empty){let c=ct(i.doc,l.head);for(let r of n)if(r==c&&N(i.doc,l.head)==ue(f.codePointAt(r,0)))return{changes:{from:l.head-r.length,to:l.head+r.length},range:f.EditorSelection.cursor(l.head-r.length)}}return{range:o=l}});return o||e(i.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!o},lt=[{key:"Backspace",run:st}];function rt(i,e){let t=me(i,i.selection.main.head),n=t.brackets||L.brackets;for(let o of n){let s=ue(f.codePointAt(o,0));if(e==o)return s==o?ht(i,o,n.indexOf(o+o+o)>-1,t):at(i,o,s,t.before||L.before);if(e==s&&ge(i,i.selection.main.from))return ft(i,o,s)}return null}function ge(i,e){let t=!1;return i.field(de).between(0,i.doc.length,n=>{n==e&&(t=!0)}),t}function N(i,e){let t=i.sliceString(e,e+2);return t.slice(0,f.codePointSize(f.codePointAt(t,0)))}function ct(i,e){let t=i.sliceString(e-2,e);return f.codePointSize(f.codePointAt(t,0))==t.length?t:t.slice(1)}function at(i,e,t,n){let o=null,s=i.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:t,from:l.to}],effects:E.of(l.to+e.length),range:f.EditorSelection.range(l.anchor+e.length,l.head+e.length)};let c=N(i.doc,l.head);return!c||/\s/.test(c)||n.indexOf(c)>-1?{changes:{insert:e+t,from:l.head},effects:E.of(l.head+e.length),range:f.EditorSelection.cursor(l.head+e.length)}:{range:o=l}});return o?null:i.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function ft(i,e,t){let n=null,o=i.changeByRange(s=>s.empty&&N(i.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:f.EditorSelection.cursor(s.head+t.length)}:n={range:s});return n?null:i.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function ht(i,e,t,n){let o=n.stringPrefixes||L.stringPrefixes,s=null,l=i.changeByRange(c=>{if(!c.empty)return{changes:[{insert:e,from:c.from},{insert:e,from:c.to}],effects:E.of(c.to+e.length),range:f.EditorSelection.range(c.anchor+e.length,c.head+e.length)};let r=c.head,p=N(i.doc,r),a;if(p==e){if(se(i,r))return{changes:{insert:e+e,from:r},effects:E.of(r+e.length),range:f.EditorSelection.cursor(r+e.length)};if(ge(i,r)){let d=t&&i.sliceDoc(r,r+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:r,to:r+d.length,insert:d},range:f.EditorSelection.cursor(r+d.length)}}}else{if(t&&i.sliceDoc(r-2*e.length,r)==e+e&&(a=le(i,r-2*e.length,o))>-1&&se(i,a))return{changes:{insert:e+e+e+e,from:r},effects:E.of(r+e.length),range:f.EditorSelection.cursor(r+e.length)};if(i.charCategorizer(r)(p)!=f.CharCategory.Word&&le(i,r,o)>-1&&!pt(i,r,e,o))return{changes:{insert:e+e,from:r},effects:E.of(r+e.length),range:f.EditorSelection.cursor(r+e.length)}}return{range:s=c}});return s?null:i.update(l,{scrollIntoView:!0,userEvent:"input.type"})}function se(i,e){let t=f.syntaxTree(i).resolveInner(e+1);return t.parent&&t.from==e}function pt(i,e,t,n){let o=f.syntaxTree(i).resolveInner(e,-1),s=n.reduce((l,c)=>Math.max(l,c.length),0);for(let l=0;l<5;l++){let c=i.sliceDoc(o.from,Math.min(o.to,o.from+t.length+s)),r=c.indexOf(t);if(!r||r>-1&&n.indexOf(c.slice(0,r))>-1){let a=o.firstChild;for(;a&&a.from==o.from&&a.to-a.from>t.length+r;){if(i.sliceDoc(a.to-t.length,a.to)==t)return!1;a=a.firstChild}return!0}let p=o.to==e&&o.parent;if(!p)break;o=p}return!1}function le(i,e,t){let n=i.charCategorizer(e);if(n(i.sliceDoc(e-1,e))!=f.CharCategory.Word)return e;for(let o of t){let s=e-o.length;if(i.sliceDoc(s,e)==o&&n(i.sliceDoc(s-1,s))!=f.CharCategory.Word)return s}return-1}function dt(i={}){return[je,C,y.of(i),Ue,ut,he]}const ye=[{key:"Ctrl-Space",run:W},{mac:"Alt-`",run:W},{mac:"Alt-i",run:W},{key:"Escape",run:$e},{key:"ArrowDown",run:F(!0)},{key:"ArrowUp",run:F(!1)},{key:"PageDown",run:F(!0,"page")},{key:"PageUp",run:F(!1,"page")},{key:"Enter",run:Fe}],ut=f.Prec.highest(f.keymap.computeN([y],i=>i.facet(y).defaultKeymap?[ye]:[]));exports.autocompletion=dt;exports.closeBrackets=it;exports.closeBracketsKeymap=lt;exports.completeFromList=ce;exports.completionKeymap=ye;exports.ifNotIn=xe;exports.snippetCompletion=et;
2
+ //# sourceMappingURL=index-CkjEllpd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CkjEllpd.js","sources":["../node_modules/@codemirror/autocomplete/dist/index.js"],"sourcesContent":["import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n /**\n Create a new completion context. (Mostly useful for testing\n completion sources—in the editor, the extension will create\n these for you.)\n */\n constructor(\n /**\n The editor state that the completion happens in.\n */\n state, \n /**\n The position at which the completion is happening.\n */\n pos, \n /**\n Indicates whether completion was activated explicitly, or\n implicitly by typing. The usual way to respond to this is to\n only return completions when either there is part of a\n completable entity before the cursor, or `explicit` is true.\n */\n explicit, \n /**\n The editor view. May be undefined if the context was created\n in a situation where there is no such view available, such as\n in synchronous updates via\n [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n or when called by test code.\n */\n view) {\n this.state = state;\n this.pos = pos;\n this.explicit = explicit;\n this.view = view;\n /**\n @internal\n */\n this.abortListeners = [];\n /**\n @internal\n */\n this.abortOnDocChange = false;\n }\n /**\n Get the extent, content, and (if there is a token) type of the\n token before `this.pos`.\n */\n tokenBefore(types) {\n let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n while (token && types.indexOf(token.name) < 0)\n token = token.parent;\n return token ? { from: token.from, to: this.pos,\n text: this.state.sliceDoc(token.from, this.pos),\n type: token.type } : null;\n }\n /**\n Get the match of the given expression directly before the\n cursor.\n */\n matchBefore(expr) {\n let line = this.state.doc.lineAt(this.pos);\n let start = Math.max(line.from, this.pos - 250);\n let str = line.text.slice(start - line.from, this.pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n }\n /**\n Yields true when the query has been aborted. Can be useful in\n asynchronous queries to avoid doing work that will be ignored.\n */\n get aborted() { return this.abortListeners == null; }\n /**\n Allows you to register abort handlers, which will be called when\n the query is\n [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n \n By default, running queries will not be aborted for regular\n typing or backspacing, on the assumption that they are likely to\n return a result with a\n [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n allows the result to be used after all. Passing `onDocChange:\n true` will cause this query to be aborted for any document\n change.\n */\n addEventListener(type, listener, options) {\n if (type == \"abort\" && this.abortListeners) {\n this.abortListeners.push(listener);\n if (options && options.onDocChange)\n this.abortOnDocChange = true;\n }\n }\n}\nfunction toSet(chars) {\n let flat = Object.keys(chars).join(\"\");\n let words = /\\w/.test(flat);\n if (words)\n flat = flat.replace(/\\w/g, \"\");\n return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n let first = Object.create(null), rest = Object.create(null);\n for (let { label } of options) {\n first[label[0]] = true;\n for (let i = 1; i < label.length; i++)\n rest[label[i]] = true;\n }\n let source = toSet(first) + toSet(rest) + \"*$\";\n return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n return (context) => {\n let token = context.matchBefore(match);\n return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return source(context);\n if (pos.type.isTop)\n break;\n }\n return null;\n };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return null;\n if (pos.type.isTop)\n break;\n }\n return source(context);\n };\n}\nclass Option {\n constructor(completion, source, match, score) {\n this.completion = completion;\n this.source = source;\n this.match = match;\n this.score = score;\n }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n var _a;\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n return {\n ...state.changeByRange(range => {\n if (range != main && from != to &&\n state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n return { range };\n let lines = state.toText(text);\n return {\n changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n range: EditorSelection.cursor(range.from + fromOff + lines.length)\n };\n }),\n scrollIntoView: true,\n userEvent: \"input.complete\"\n };\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n if (!Array.isArray(source))\n return source;\n let known = SourceCache.get(source);\n if (!known)\n SourceCache.set(source, known = completeFromList(source));\n return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.chars = [];\n this.folded = [];\n // Buffers reused by calls to `match` to track matched character\n // positions.\n this.any = [];\n this.precise = [];\n this.byWord = [];\n this.score = 0;\n this.matched = [];\n for (let p = 0; p < pattern.length;) {\n let char = codePointAt(pattern, p), size = codePointSize(char);\n this.chars.push(char);\n let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n p += size;\n }\n this.astral = pattern.length != this.chars.length;\n }\n ret(score, matched) {\n this.score = score;\n this.matched = matched;\n return this;\n }\n // Matches a given word (completion) against the pattern (input).\n // Will return a boolean indicating whether there was a match and,\n // on success, set `this.score` to the score, `this.matched` to an\n // array of `from, to` pairs indicating the matched parts of `word`.\n //\n // The score is a number that is more negative the worse the match\n // is. See `Penalty` above.\n match(word) {\n if (this.pattern.length == 0)\n return this.ret(-100 /* Penalty.NotFull */, []);\n if (word.length < this.pattern.length)\n return null;\n let { chars, folded, any, precise, byWord } = this;\n // For single-character queries, only match when they occur right\n // at the start\n if (chars.length == 1) {\n let first = codePointAt(word, 0), firstSize = codePointSize(first);\n let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n if (first == chars[0]) ;\n else if (first == folded[0])\n score += -200 /* Penalty.CaseFold */;\n else\n return null;\n return this.ret(score, [0, firstSize]);\n }\n let direct = word.indexOf(this.pattern);\n if (direct == 0)\n return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n let len = chars.length, anyTo = 0;\n if (direct < 0) {\n for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n let next = codePointAt(word, i);\n if (next == chars[anyTo] || next == folded[anyTo])\n any[anyTo++] = i;\n i += codePointSize(next);\n }\n // No match, exit immediately\n if (anyTo < len)\n return null;\n }\n // This tracks the extent of the precise (non-folded, not\n // necessarily adjacent) match\n let preciseTo = 0;\n // Tracks whether there is a match that hits only characters that\n // appear to be starting words. `byWordFolded` is set to true when\n // a case folded character is encountered in such a match\n let byWordTo = 0, byWordFolded = false;\n // If we've found a partial adjacent match, these track its state\n let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n // Go over the option's text, scanning for the various kinds of matches\n for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n let next = codePointAt(word, i);\n if (direct < 0) {\n if (preciseTo < len && next == chars[preciseTo])\n precise[preciseTo++] = i;\n if (adjacentTo < len) {\n if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n if (adjacentTo == 0)\n adjacentStart = i;\n adjacentEnd = i + 1;\n adjacentTo++;\n }\n else {\n adjacentTo = 0;\n }\n }\n }\n let ch, type = next < 0xff\n ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n byWord[byWordTo++] = i;\n else if (byWord.length)\n wordAdjacent = false;\n }\n prevType = type;\n i += codePointSize(next);\n }\n if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n if (adjacentTo == len && adjacentStart == 0)\n return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n if (direct > -1)\n return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n if (adjacentTo == len)\n return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n if (byWordTo == len)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n return chars.length == 2 ? null\n : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n }\n result(score, positions, word) {\n let result = [], i = 0;\n for (let pos of positions) {\n let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n if (i && result[i - 1] == pos)\n result[i - 1] = to;\n else {\n result[i++] = pos;\n result[i++] = to;\n }\n }\n return this.ret(score - word.length, result);\n }\n}\nclass StrictMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.matched = [];\n this.score = 0;\n this.folded = pattern.toLowerCase();\n }\n match(word) {\n if (word.length < this.pattern.length)\n return null;\n let start = word.slice(0, this.pattern.length);\n let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n if (match == null)\n return null;\n this.matched = [0, start.length];\n this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n return this;\n }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n activateOnTyping: true,\n activateOnCompletion: () => false,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n override: null,\n closeOnBlur: true,\n maxRenderedOptions: 100,\n defaultKeymap: true,\n tooltipClass: () => \"\",\n optionClass: () => \"\",\n aboveCursor: false,\n icons: true,\n addToOptions: [],\n positionInfo: defaultPositionInfo,\n filterStrict: false,\n compareCompletions: (a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label),\n interactionDelay: 75,\n updateSyncTime: 100\n }, {\n defaultKeymap: (a, b) => a && b,\n closeOnBlur: (a, b) => a && b,\n icons: (a, b) => a && b,\n tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n optionClass: (a, b) => c => joinClass(a(c), b(c)),\n addToOptions: (a, b) => a.concat(b),\n filterStrict: (a, b) => a || b,\n });\n }\n});\nfunction joinClass(a, b) {\n return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n let side = \"top\", offset, maxWidth;\n let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n left = false;\n else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n left = true;\n if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n }\n else {\n narrow = true;\n maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n let spaceBelow = space.bottom - list.bottom;\n if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n offset = option.bottom - list.top;\n }\n else { // Above it\n side = \"bottom\";\n offset = list.bottom - option.top;\n }\n }\n let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n return {\n style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n };\n}\n\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nfunction optionContent(config) {\n let content = config.addToOptions.slice();\n if (config.icons)\n content.push({\n render(completion) {\n let icon = document.createElement(\"div\");\n icon.classList.add(\"cm-completionIcon\");\n if (completion.type)\n icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n icon.setAttribute(\"aria-hidden\", \"true\");\n return icon;\n },\n position: 20\n });\n content.push({\n render(completion, _s, _v, match) {\n let labelElt = document.createElement(\"span\");\n labelElt.className = \"cm-completionLabel\";\n let label = completion.displayLabel || completion.label, off = 0;\n for (let j = 0; j < match.length;) {\n let from = match[j++], to = match[j++];\n if (from > off)\n labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n let span = labelElt.appendChild(document.createElement(\"span\"));\n span.appendChild(document.createTextNode(label.slice(from, to)));\n span.className = \"cm-completionMatchedText\";\n off = to;\n }\n if (off < label.length)\n labelElt.appendChild(document.createTextNode(label.slice(off)));\n return labelElt;\n },\n position: 50\n }, {\n render(completion) {\n if (!completion.detail)\n return null;\n let detailElt = document.createElement(\"span\");\n detailElt.className = \"cm-completionDetail\";\n detailElt.textContent = completion.detail;\n return detailElt;\n },\n position: 80\n });\n return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n if (total <= max)\n return { from: 0, to: total };\n if (selected < 0)\n selected = 0;\n if (selected <= (total >> 1)) {\n let off = Math.floor(selected / max);\n return { from: off * max, to: (off + 1) * max };\n }\n let off = Math.floor((total - selected) / max);\n return { from: total - (off + 1) * max, to: total - off * max };\n}\nclass CompletionTooltip {\n constructor(view, stateField, applyCompletion) {\n this.view = view;\n this.stateField = stateField;\n this.applyCompletion = applyCompletion;\n this.info = null;\n this.infoDestroy = null;\n this.placeInfoReq = {\n read: () => this.measureInfo(),\n write: (pos) => this.placeInfo(pos),\n key: this\n };\n this.space = null;\n this.currentClass = \"\";\n let cState = view.state.field(stateField);\n let { options, selected } = cState.open;\n let config = view.state.facet(completionConfig);\n this.optionContent = optionContent(config);\n this.optionClass = config.optionClass;\n this.tooltipClass = config.tooltipClass;\n this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-tooltip-autocomplete\";\n this.updateTooltipClass(view.state);\n this.dom.addEventListener(\"mousedown\", (e) => {\n let { options } = view.state.field(stateField).open;\n for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n this.applyCompletion(view, options[+match[1]]);\n e.preventDefault();\n return;\n }\n }\n if (e.target == this.list) {\n let move = this.list.classList.contains(\"cm-completionListIncompleteTop\") &&\n e.clientY < this.list.firstChild.getBoundingClientRect().top ? this.range.from - 1 :\n this.list.classList.contains(\"cm-completionListIncompleteBottom\") &&\n e.clientY > this.list.lastChild.getBoundingClientRect().bottom ? this.range.to : null;\n if (move != null) {\n view.dispatch({ effects: setSelectedEffect.of(move) });\n e.preventDefault();\n }\n }\n });\n this.dom.addEventListener(\"focusout\", (e) => {\n let state = view.state.field(this.stateField, false);\n if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n e.relatedTarget != view.contentDOM)\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n });\n this.showOptions(options, cState.id);\n }\n mount() { this.updateSel(); }\n showOptions(options, id) {\n if (this.list)\n this.list.remove();\n this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n this.list.addEventListener(\"scroll\", () => {\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n });\n }\n update(update) {\n var _a;\n let cState = update.state.field(this.stateField);\n let prevState = update.startState.field(this.stateField);\n this.updateTooltipClass(update.state);\n if (cState != prevState) {\n let { options, selected, disabled } = cState.open;\n if (!prevState.open || prevState.open.options != options) {\n this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(options, cState.id);\n }\n this.updateSel();\n if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n }\n }\n updateTooltipClass(state) {\n let cls = this.tooltipClass(state);\n if (cls != this.currentClass) {\n for (let c of this.currentClass.split(\" \"))\n if (c)\n this.dom.classList.remove(c);\n for (let c of cls.split(\" \"))\n if (c)\n this.dom.classList.add(c);\n this.currentClass = cls;\n }\n }\n positioned(space) {\n this.space = space;\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSel() {\n let cState = this.view.state.field(this.stateField), open = cState.open;\n if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(open.options, cState.id);\n }\n let newSel = this.updateSelectedOption(open.selected);\n if (newSel) {\n this.destroyInfo();\n let { completion } = open.options[open.selected];\n let { info } = completion;\n if (!info)\n return;\n let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n if (!infoResult)\n return;\n if (\"then\" in infoResult) {\n infoResult.then(obj => {\n if (obj && this.view.state.field(this.stateField, false) == cState)\n this.addInfoPane(obj, completion);\n }).catch(e => logException(this.view.state, e, \"completion info\"));\n }\n else {\n this.addInfoPane(infoResult, completion);\n newSel.setAttribute(\"aria-describedby\", this.info.id);\n }\n }\n }\n addInfoPane(content, completion) {\n this.destroyInfo();\n let wrap = this.info = document.createElement(\"div\");\n wrap.className = \"cm-tooltip cm-completionInfo\";\n wrap.id = \"cm-completionInfo-\" + Math.floor(Math.random() * 0xffff).toString(16);\n if (content.nodeType != null) {\n wrap.appendChild(content);\n this.infoDestroy = null;\n }\n else {\n let { dom, destroy } = content;\n wrap.appendChild(dom);\n this.infoDestroy = destroy || null;\n }\n this.dom.appendChild(wrap);\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSelectedOption(selected) {\n let set = null;\n for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n if (opt.nodeName != \"LI\" || !opt.id) {\n i--; // A section header\n }\n else if (i == selected) {\n if (!opt.hasAttribute(\"aria-selected\")) {\n opt.setAttribute(\"aria-selected\", \"true\");\n set = opt;\n }\n }\n else {\n if (opt.hasAttribute(\"aria-selected\")) {\n opt.removeAttribute(\"aria-selected\");\n opt.removeAttribute(\"aria-describedby\");\n }\n }\n }\n if (set)\n scrollIntoView(this.list, set);\n return set;\n }\n measureInfo() {\n let sel = this.dom.querySelector(\"[aria-selected]\");\n if (!sel || !this.info)\n return null;\n let listRect = this.dom.getBoundingClientRect();\n let infoRect = this.info.getBoundingClientRect();\n let selRect = sel.getBoundingClientRect();\n let space = this.space;\n if (!space) {\n let docElt = this.dom.ownerDocument.documentElement;\n space = { left: 0, top: 0, right: docElt.clientWidth, bottom: docElt.clientHeight };\n }\n if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n selRect.bottom < Math.max(space.top, listRect.top) + 10)\n return null;\n return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n }\n placeInfo(pos) {\n if (this.info) {\n if (pos) {\n if (pos.style)\n this.info.style.cssText = pos.style;\n this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n }\n else {\n this.info.style.cssText = \"top: -1e6px\";\n }\n }\n }\n createListBox(options, id, range) {\n const ul = document.createElement(\"ul\");\n ul.id = id;\n ul.setAttribute(\"role\", \"listbox\");\n ul.setAttribute(\"aria-expanded\", \"true\");\n ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n ul.addEventListener(\"mousedown\", e => {\n // Prevent focus change when clicking the scrollbar\n if (e.target == ul)\n e.preventDefault();\n });\n let curSection = null;\n for (let i = range.from; i < range.to; i++) {\n let { completion, match } = options[i], { section } = completion;\n if (section) {\n let name = typeof section == \"string\" ? section : section.name;\n if (name != curSection && (i > range.from || range.from == 0)) {\n curSection = name;\n if (typeof section != \"string\" && section.header) {\n ul.appendChild(section.header(section));\n }\n else {\n let header = ul.appendChild(document.createElement(\"completion-section\"));\n header.textContent = name;\n }\n }\n }\n const li = ul.appendChild(document.createElement(\"li\"));\n li.id = id + \"-\" + i;\n li.setAttribute(\"role\", \"option\");\n let cls = this.optionClass(completion);\n if (cls)\n li.className = cls;\n for (let source of this.optionContent) {\n let node = source(completion, this.view.state, this.view, match);\n if (node)\n li.appendChild(node);\n }\n }\n if (range.from)\n ul.classList.add(\"cm-completionListIncompleteTop\");\n if (range.to < options.length)\n ul.classList.add(\"cm-completionListIncompleteBottom\");\n return ul;\n }\n destroyInfo() {\n if (this.info) {\n if (this.infoDestroy)\n this.infoDestroy();\n this.info.remove();\n this.info = null;\n }\n }\n destroy() {\n this.destroyInfo();\n }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n let parent = container.getBoundingClientRect();\n let self = element.getBoundingClientRect();\n let scaleY = parent.height / container.offsetHeight;\n if (self.top < parent.top)\n container.scrollTop -= (parent.top - self.top) / scaleY;\n else if (self.bottom > parent.bottom)\n container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n let options = [];\n let sections = null, dynamicSectionScore = null;\n let addOption = (option) => {\n options.push(option);\n let { section } = option.completion;\n if (section) {\n if (!sections)\n sections = [];\n let name = typeof section == \"string\" ? section : section.name;\n if (!sections.some(s => s.name == name))\n sections.push(typeof section == \"string\" ? { name } : section);\n }\n };\n let conf = state.facet(completionConfig);\n for (let a of active)\n if (a.hasResult()) {\n let getMatch = a.result.getMatch;\n if (a.result.filter === false) {\n for (let option of a.result.options) {\n addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n }\n }\n else {\n let pattern = state.sliceDoc(a.from, a.to), match;\n let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n for (let option of a.result.options)\n if (match = matcher.match(option.label)) {\n let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n let score = match.score + (option.boost || 0);\n addOption(new Option(option, a.source, matched, score));\n if (typeof option.section == \"object\" && option.section.rank === \"dynamic\") {\n let { name } = option.section;\n if (!dynamicSectionScore)\n dynamicSectionScore = Object.create(null);\n dynamicSectionScore[name] = Math.max(score, dynamicSectionScore[name] || -1e9);\n }\n }\n }\n }\n if (sections) {\n let sectionOrder = Object.create(null), pos = 0;\n let cmp = (a, b) => {\n return (a.rank === \"dynamic\" && b.rank === \"dynamic\" ? dynamicSectionScore[b.name] - dynamicSectionScore[a.name] : 0) ||\n (typeof a.rank == \"number\" ? a.rank : 1e9) - (typeof b.rank == \"number\" ? b.rank : 1e9) ||\n (a.name < b.name ? -1 : 1);\n };\n for (let s of sections.sort(cmp)) {\n pos -= 1e5;\n sectionOrder[s.name] = pos;\n }\n for (let option of options) {\n let { section } = option.completion;\n if (section)\n option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n }\n }\n let result = [], prev = null;\n let compare = conf.compareCompletions;\n for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n let cur = opt.completion;\n if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n (prev.type != null && cur.type != null && prev.type != cur.type) ||\n prev.apply != cur.apply || prev.boost != cur.boost)\n result.push(opt);\n else if (score(opt.completion) > score(prev))\n result[result.length - 1] = opt;\n prev = opt.completion;\n }\n return result;\n}\nclass CompletionDialog {\n constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n this.options = options;\n this.attrs = attrs;\n this.tooltip = tooltip;\n this.timestamp = timestamp;\n this.selected = selected;\n this.disabled = disabled;\n }\n setSelected(selected, id) {\n return selected == this.selected || selected >= this.options.length ? this\n : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n }\n static build(active, state, id, prev, conf, didSetActive) {\n if (prev && !didSetActive && active.some(s => s.isPending))\n return prev.setDisabled();\n let options = sortOptions(active, state);\n if (!options.length)\n return prev && active.some(a => a.isPending) ? prev.setDisabled() : null;\n let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n if (prev && prev.selected != selected && prev.selected != -1) {\n let selectedValue = prev.options[prev.selected].completion;\n for (let i = 0; i < options.length; i++)\n if (options[i].completion == selectedValue) {\n selected = i;\n break;\n }\n }\n return new CompletionDialog(options, makeAttrs(id, selected), {\n pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n create: createTooltip,\n above: conf.aboveCursor,\n }, prev ? prev.timestamp : Date.now(), selected, false);\n }\n map(changes) {\n return new CompletionDialog(this.options, this.attrs, { ...this.tooltip, pos: changes.mapPos(this.tooltip.pos) }, this.timestamp, this.selected, this.disabled);\n }\n setDisabled() {\n return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);\n }\n}\nclass CompletionState {\n constructor(active, id, open) {\n this.active = active;\n this.id = id;\n this.open = open;\n }\n static start() {\n return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n }\n update(tr) {\n let { state } = tr, conf = state.facet(completionConfig);\n let sources = conf.override ||\n state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n let active = sources.map(source => {\n let value = this.active.find(s => s.source == source) ||\n new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n return value.update(tr, conf);\n });\n if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n active = this.active;\n let open = this.open, didSet = tr.effects.some(e => e.is(setActiveEffect));\n if (open && tr.docChanged)\n open = open.map(tr.changes);\n if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n !sameResults(active, this.active) || didSet)\n open = CompletionDialog.build(active, state, this.id, open, conf, didSet);\n else if (open && open.disabled && !active.some(a => a.isPending))\n open = null;\n if (!open && active.every(a => !a.isPending) && active.some(a => a.hasResult()))\n active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n for (let effect of tr.effects)\n if (effect.is(setSelectedEffect))\n open = open && open.setSelected(effect.value, this.id);\n return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n }\n get tooltip() { return this.open ? this.open.tooltip : null; }\n get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n if (a == b)\n return true;\n for (let iA = 0, iB = 0;;) {\n while (iA < a.length && !a[iA].hasResult())\n iA++;\n while (iB < b.length && !b[iB].hasResult())\n iB++;\n let endA = iA == a.length, endB = iB == b.length;\n if (endA || endB)\n return endA == endB;\n if (a[iA++].result != b[iB++].result)\n return false;\n }\n}\nconst baseAttrs = {\n \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n let result = {\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": id\n };\n if (selected > -1)\n result[\"aria-activedescendant\"] = id + \"-\" + selected;\n return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n if (tr.isUserEvent(\"input.complete\")) {\n let completion = tr.annotation(pickedCompletion);\n if (completion && conf.activateOnCompletion(completion))\n return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n }\n let typing = tr.isUserEvent(\"input.type\");\n return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n : typing ? 1 /* UpdateType.Typing */\n : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n : tr.selection ? 8 /* UpdateType.Reset */\n : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n constructor(source, state, explicit = false) {\n this.source = source;\n this.state = state;\n this.explicit = explicit;\n }\n hasResult() { return false; }\n get isPending() { return this.state == 1 /* State.Pending */; }\n update(tr, conf) {\n let type = getUpdateType(tr, conf), value = this;\n if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n value = new ActiveSource(this.source, 1 /* State.Pending */);\n value = value.updateFor(tr, type);\n for (let effect of tr.effects) {\n if (effect.is(startCompletionEffect))\n value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value);\n else if (effect.is(closeCompletionEffect))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n else if (effect.is(setActiveEffect))\n for (let active of effect.value)\n if (active.source == value.source)\n value = active;\n }\n return value;\n }\n updateFor(tr, type) { return this.map(tr.changes); }\n map(changes) { return this; }\n touches(tr) {\n return tr.changes.touchesRange(cur(tr.state));\n }\n}\nclass ActiveResult extends ActiveSource {\n constructor(source, explicit, limit, result, from, to) {\n super(source, 3 /* State.Result */, explicit);\n this.limit = limit;\n this.result = result;\n this.from = from;\n this.to = to;\n }\n hasResult() { return true; }\n updateFor(tr, type) {\n var _a;\n if (!(type & 3 /* UpdateType.SimpleInteraction */))\n return this.map(tr.changes);\n let result = this.result;\n if (result.map && !tr.changes.empty)\n result = result.map(result, tr.changes);\n let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n let pos = cur(tr.state);\n if (pos > to || !result ||\n (type & 2 /* UpdateType.Backspacing */) && (cur(tr.startState) == this.from || pos < this.limit))\n return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n let limit = tr.changes.mapPos(this.limit);\n if (checkValid(result.validFor, tr.state, from, to))\n return new ActiveResult(this.source, this.explicit, limit, result, from, to);\n if (result.update &&\n (result = result.update(result, from, to, new CompletionContext(tr.state, pos, false))))\n return new ActiveResult(this.source, this.explicit, limit, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n return new ActiveSource(this.source, 1 /* State.Pending */, this.explicit);\n }\n map(mapping) {\n if (mapping.empty)\n return this;\n let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n if (!result)\n return new ActiveSource(this.source, 0 /* State.Inactive */);\n return new ActiveResult(this.source, this.explicit, mapping.mapPos(this.limit), this.result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n }\n touches(tr) {\n return tr.changes.touchesRange(this.from, this.to);\n }\n}\nfunction checkValid(validFor, state, from, to) {\n if (!validFor)\n return false;\n let text = state.sliceDoc(from, to);\n return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst completionState = /*@__PURE__*/StateField.define({\n create() { return CompletionState.start(); },\n update(value, tr) { return value.update(tr); },\n provide: f => [\n showTooltip.from(f, val => val.tooltip),\n EditorView.contentAttributes.from(f, state => state.attrs)\n ]\n});\nfunction applyCompletion(view, option) {\n const apply = option.completion.apply || option.completion.label;\n let result = view.state.field(completionState).active.find(a => a.source == option.source);\n if (!(result instanceof ActiveResult))\n return false;\n if (typeof apply == \"string\")\n view.dispatch({\n ...insertCompletionText(view.state, apply, result.from, result.to),\n annotations: pickedCompletion.of(option.completion)\n });\n else\n apply(view, option.completion, result.from, result.to);\n return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n return (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.open || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n let step = 1, tooltip;\n if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n let { length } = cState.open.options;\n let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n if (selected < 0)\n selected = by == \"page\" ? 0 : length - 1;\n else if (selected >= length)\n selected = by == \"page\" ? length - 1 : 0;\n view.dispatch({ effects: setSelectedEffect.of(selected) });\n return true;\n };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState)\n return false;\n view.dispatch({ effects: startCompletionEffect.of(true) });\n return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n return false;\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n return true;\n};\nclass RunningQuery {\n constructor(active, context) {\n this.active = active;\n this.context = context;\n this.time = Date.now();\n this.updates = [];\n // Note that 'undefined' means 'not done yet', whereas 'null' means\n // 'query returned null'.\n this.done = undefined;\n }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.debounceUpdate = -1;\n this.running = [];\n this.debounceAccept = -1;\n this.pendingStart = false;\n this.composing = 0 /* CompositionState.None */;\n for (let active of view.state.field(completionState).active)\n if (active.isPending)\n this.startQuery(active);\n }\n update(update) {\n let cState = update.state.field(completionState);\n let conf = update.state.facet(completionConfig);\n if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n return;\n let doesReset = update.transactions.some(tr => {\n let type = getUpdateType(tr, conf);\n return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n });\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (doesReset ||\n query.context.abortOnDocChange && update.docChanged ||\n query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n for (let handler of query.context.abortListeners) {\n try {\n handler();\n }\n catch (e) {\n logException(this.view.state, e);\n }\n }\n query.context.abortListeners = null;\n this.running.splice(i--, 1);\n }\n else {\n query.updates.push(...update.transactions);\n }\n }\n if (this.debounceUpdate > -1)\n clearTimeout(this.debounceUpdate);\n if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n this.pendingStart = true;\n let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n this.debounceUpdate = cState.active.some(a => a.isPending && !this.running.some(q => q.active.source == a.source))\n ? setTimeout(() => this.startUpdate(), delay) : -1;\n if (this.composing != 0 /* CompositionState.None */)\n for (let tr of update.transactions) {\n if (tr.isUserEvent(\"input.type\"))\n this.composing = 2 /* CompositionState.Changed */;\n else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n this.composing = 3 /* CompositionState.ChangedAndMoved */;\n }\n }\n startUpdate() {\n this.debounceUpdate = -1;\n this.pendingStart = false;\n let { state } = this.view, cState = state.field(completionState);\n for (let active of cState.active) {\n if (active.isPending && !this.running.some(r => r.active.source == active.source))\n this.startQuery(active);\n }\n if (this.running.length && cState.open && cState.open.disabled)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n startQuery(active) {\n let { state } = this.view, pos = cur(state);\n let context = new CompletionContext(state, pos, active.explicit, this.view);\n let pending = new RunningQuery(active, context);\n this.running.push(pending);\n Promise.resolve(active.source(context)).then(result => {\n if (!pending.context.aborted) {\n pending.done = result || null;\n this.scheduleAccept();\n }\n }, err => {\n this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n logException(this.view.state, err);\n });\n }\n scheduleAccept() {\n if (this.running.every(q => q.done !== undefined))\n this.accept();\n else if (this.debounceAccept < 0)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n // For each finished query in this.running, try to create a result\n // or, if appropriate, restart the query.\n accept() {\n var _a;\n if (this.debounceAccept > -1)\n clearTimeout(this.debounceAccept);\n this.debounceAccept = -1;\n let updated = [];\n let conf = this.view.state.facet(completionConfig), cState = this.view.state.field(completionState);\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (query.done === undefined)\n continue;\n this.running.splice(i--, 1);\n if (query.done) {\n let pos = cur(query.updates.length ? query.updates[0].startState : this.view.state);\n let limit = Math.min(pos, query.done.from + (query.active.explicit ? 0 : 1));\n let active = new ActiveResult(query.active.source, query.active.explicit, limit, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : pos);\n // Replay the transactions that happened since the start of\n // the request and see if that preserves the result\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.hasResult()) {\n updated.push(active);\n continue;\n }\n }\n let current = cState.active.find(a => a.source == query.active.source);\n if (current && current.isPending) {\n if (query.done == null) {\n // Explicitly failed. Should clear the pending status if it\n // hasn't been re-set in the meantime.\n let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (!active.isPending)\n updated.push(active);\n }\n else {\n // Cleared by subsequent transactions. Restart.\n this.startQuery(current);\n }\n }\n }\n if (updated.length || cState.open && cState.open.disabled)\n this.view.dispatch({ effects: setActiveEffect.of(updated) });\n }\n}, {\n eventHandlers: {\n blur(event) {\n let state = this.view.state.field(completionState, false);\n if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n if (!dialog || !dialog.dom.contains(event.relatedTarget))\n setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n }\n },\n compositionstart() {\n this.composing = 1 /* CompositionState.Started */;\n },\n compositionend() {\n if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n // Safari fires compositionend events synchronously, possibly\n // from inside an update, so dispatch asynchronously to avoid reentrancy\n setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n }\n this.composing = 0 /* CompositionState.None */;\n }\n }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n let field = view.state.field(completionState, false);\n if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n return false;\n let option = field.open.options[field.open.selected];\n let result = field.active.find(a => a.source == option.source);\n let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n if (commitChars && commitChars.indexOf(event.key) > -1)\n applyCompletion(view, option);\n return false;\n }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip.cm-tooltip-autocomplete\": {\n \"& > ul\": {\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden auto\",\n maxWidth_fallback: \"700px\",\n maxWidth: \"min(700px, 95vw)\",\n minWidth: \"250px\",\n maxHeight: \"10em\",\n height: \"100%\",\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n \"& > li, & > completion-section\": {\n padding: \"1px 3px\",\n lineHeight: 1.2\n },\n \"& > li\": {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\"\n },\n \"& > completion-section\": {\n display: \"list-item\",\n borderBottom: \"1px solid silver\",\n paddingLeft: \"0.5em\",\n opacity: 0.7\n }\n }\n },\n \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#17c\",\n color: \"white\",\n },\n \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#777\",\n },\n \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#347\",\n color: \"white\",\n },\n \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#444\",\n },\n \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n content: '\"···\"',\n opacity: 0.5,\n display: \"block\",\n textAlign: \"center\"\n },\n \".cm-tooltip.cm-completionInfo\": {\n position: \"absolute\",\n padding: \"3px 9px\",\n width: \"max-content\",\n maxWidth: `${400 /* Info.Width */}px`,\n boxSizing: \"border-box\",\n whiteSpace: \"pre-line\"\n },\n \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n \".cm-snippetFieldPosition\": {\n verticalAlign: \"text-top\",\n width: 0,\n height: \"1.15em\",\n display: \"inline-block\",\n margin: \"0 -0.7px -.7em\",\n borderLeft: \"1.4px dotted #888\"\n },\n \".cm-completionMatchedText\": {\n textDecoration: \"underline\"\n },\n \".cm-completionDetail\": {\n marginLeft: \"0.5em\",\n fontStyle: \"italic\"\n },\n \".cm-completionIcon\": {\n fontSize: \"90%\",\n width: \".8em\",\n display: \"inline-block\",\n textAlign: \"center\",\n paddingRight: \".6em\",\n opacity: \"0.6\",\n boxSizing: \"content-box\"\n },\n \".cm-completionIcon-function, .cm-completionIcon-method\": {\n \"&:after\": { content: \"'ƒ'\" }\n },\n \".cm-completionIcon-class\": {\n \"&:after\": { content: \"'○'\" }\n },\n \".cm-completionIcon-interface\": {\n \"&:after\": { content: \"'◌'\" }\n },\n \".cm-completionIcon-variable\": {\n \"&:after\": { content: \"'𝑥'\" }\n },\n \".cm-completionIcon-constant\": {\n \"&:after\": { content: \"'𝐶'\" }\n },\n \".cm-completionIcon-type\": {\n \"&:after\": { content: \"'𝑡'\" }\n },\n \".cm-completionIcon-enum\": {\n \"&:after\": { content: \"'∪'\" }\n },\n \".cm-completionIcon-property\": {\n \"&:after\": { content: \"'□'\" }\n },\n \".cm-completionIcon-keyword\": {\n \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n },\n \".cm-completionIcon-namespace\": {\n \"&:after\": { content: \"'▢'\" }\n },\n \".cm-completionIcon-text\": {\n \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n }\n});\n\nclass FieldPos {\n constructor(field, line, from, to) {\n this.field = field;\n this.line = line;\n this.from = from;\n this.to = to;\n }\n}\nclass FieldRange {\n constructor(field, from, to) {\n this.field = field;\n this.from = from;\n this.to = to;\n }\n map(changes) {\n let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n return from == null || to == null ? null : new FieldRange(this.field, from, to);\n }\n}\nclass Snippet {\n constructor(lines, fieldPositions) {\n this.lines = lines;\n this.fieldPositions = fieldPositions;\n }\n instantiate(state, pos) {\n let text = [], lineStart = [pos];\n let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n for (let line of this.lines) {\n if (text.length) {\n let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n for (let i = 0; i < tabs; i++)\n indent += state.facet(indentUnit);\n lineStart.push(pos + indent.length - tabs);\n line = indent + line.slice(tabs);\n }\n text.push(line);\n pos += line.length + 1;\n }\n let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n return { text, ranges };\n }\n static parse(template) {\n let fields = [];\n let lines = [], positions = [], m;\n for (let line of template.split(/\\r\\n?|\\n/)) {\n while (m = /[#$]\\{(?:(\\d+)(?::([^{}]*))?|((?:\\\\[{}]|[^{}])*))\\}/.exec(line)) {\n let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n for (let i = 0; i < fields.length; i++) {\n if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n found = i;\n }\n if (found < 0) {\n let i = 0;\n while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n i++;\n fields.splice(i, 0, { seq, name });\n found = i;\n for (let pos of positions)\n if (pos.field >= found)\n pos.field++;\n }\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > m.index) {\n let snip = m[2] ? 3 + (m[1] || \"\").length : 2;\n pos.from -= snip;\n pos.to -= snip;\n }\n positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n }\n line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > index) {\n pos.from--;\n pos.to--;\n }\n return brace;\n });\n lines.push(line);\n }\n return new Snippet(lines, positions);\n }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM() {\n let span = document.createElement(\"span\");\n span.className = \"cm-snippetFieldPosition\";\n return span;\n }\n ignoreEvent() { return false; }\n } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n constructor(ranges, active) {\n this.ranges = ranges;\n this.active = active;\n this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)), true);\n }\n map(changes) {\n let ranges = [];\n for (let r of this.ranges) {\n let mapped = r.map(changes);\n if (!mapped)\n return null;\n ranges.push(mapped);\n }\n return new ActiveSnippet(ranges, this.active);\n }\n selectionInsideField(sel) {\n return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setActive))\n return effect.value;\n if (effect.is(moveToField) && value)\n return new ActiveSnippet(value.ranges, effect.value);\n }\n if (value && tr.docChanged)\n value = value.map(tr.changes);\n if (value && tr.selection && !value.selectionInsideField(tr.selection))\n value = null;\n return value;\n },\n provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n let snippet = Snippet.parse(template);\n return (editor, completion, from, to) => {\n let { text, ranges } = snippet.instantiate(editor.state, from);\n let { main } = editor.state.selection;\n let spec = {\n changes: { from, to: to == main.from ? main.to : to, insert: Text.of(text) },\n scrollIntoView: true,\n annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n };\n if (ranges.length)\n spec.selection = fieldSelection(ranges, 0);\n if (ranges.some(r => r.field > 0)) {\n let active = new ActiveSnippet(ranges, 0);\n let effects = spec.effects = [setActive.of(active)];\n if (editor.state.field(snippetState, false) === undefined)\n effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n }\n editor.dispatch(editor.state.update(spec));\n };\n}\nfunction moveField(dir) {\n return ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active || dir < 0 && active.active == 0)\n return false;\n let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n dispatch(state.update({\n selection: fieldSelection(active.ranges, next),\n effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n scrollIntoView: true\n }));\n return true;\n };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active)\n return false;\n dispatch(state.update({ effects: setActive.of(null) }));\n return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n return { ...completion, apply: snippet(template) };\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n mousedown(event, view) {\n let active = view.state.field(snippetState, false), pos;\n if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n return false;\n let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n if (!match || match.field == active.active)\n return false;\n view.dispatch({\n selection: fieldSelection(active.ranges, match.field),\n effects: setActive.of(active.ranges.some(r => r.field > match.field)\n ? new ActiveSnippet(active.ranges, match.field) : null),\n scrollIntoView: true\n });\n return true;\n }\n});\n\nfunction wordRE(wordChars) {\n let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n try {\n return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n }\n catch (_a) {\n return new RegExp(`[\\w${escaped}]`, \"g\");\n }\n}\nfunction mapRE(re, f) {\n return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n let { value } = lines, m;\n wordRE.lastIndex = 0;\n while (m = wordRE.exec(value)) {\n if (!seen[m[0]] && pos + m.index != ignoreAt) {\n result.push({ type: \"text\", label: m[0] });\n seen[m[0]] = true;\n if (result.length >= 2000 /* C.MaxList */)\n return;\n }\n }\n pos += value.length + 1;\n }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n let big = doc.length >= 1000 /* C.MinCacheLen */;\n let cached = big && cache.get(doc);\n if (cached)\n return cached;\n let result = [], seen = Object.create(null);\n if (doc.children) {\n let pos = 0;\n for (let ch of doc.children) {\n if (ch.length >= 1000 /* C.MinCacheLen */) {\n for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n if (!seen[c.label]) {\n seen[c.label] = true;\n result.push(c);\n }\n }\n }\n else {\n storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n }\n pos += ch.length + 1;\n }\n }\n else {\n storeWords(doc, wordRE, result, seen, ignoreAt);\n }\n if (big && result.length < 2000 /* C.MaxList */)\n cache.set(doc, result);\n return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n var _a;\n let wordChars = (_a = context.state.languageDataAt(\"wordChars\", context.pos)[0]) !== null && _a !== void 0 ? _a : \"\";\n let re = wordRE(wordChars);\n let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n if (!token && !context.explicit)\n return null;\n let from = token ? token.from : context.pos;\n let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n before: \")]}:;>\",\n stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n map(value, mapping) {\n let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n return mapped == null ? undefined : mapped;\n }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n create() { return RangeSet.empty; },\n update(value, tr) {\n value = value.map(tr.changes);\n if (tr.selection) {\n let line = tr.state.doc.lineAt(tr.selection.main.head);\n value = value.update({ filter: from => from >= line.from && from <= line.to });\n }\n for (let effect of tr.effects)\n if (effect.is(closeBracketEffect))\n value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n return value;\n }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>«»»«[]{}\";\nfunction closing(ch) {\n for (let i = 0; i < definedClosing.length; i += 2)\n if (definedClosing.charCodeAt(i) == ch)\n return definedClosing.charAt(i + 1);\n return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n return false;\n let sel = view.state.selection.main;\n if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n from != sel.from || to != sel.to)\n return false;\n let tr = insertBracket(view.state, insert);\n if (!tr)\n return false;\n view.dispatch(tr);\n return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty) {\n let before = prevChar(state.doc, range.head);\n for (let token of tokens) {\n if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n return { changes: { from: range.head - token.length, to: range.head + token.length },\n range: EditorSelection.cursor(range.head - token.length) };\n }\n }\n return { range: dont = range };\n });\n if (!dont)\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n for (let tok of tokens) {\n let closed = closing(codePointAt(tok, 0));\n if (bracket == tok)\n return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n : handleOpen(state, tok, closed, conf.before || defaults.before);\n if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n return handleClose(state, tok, closed);\n }\n return null;\n}\nfunction closedBracketAt(state, pos) {\n let found = false;\n state.field(bracketState).between(0, state.doc.length, from => {\n if (from == pos)\n found = true;\n });\n return found;\n}\nfunction nextChar(doc, pos) {\n let next = doc.sliceString(pos, pos + 2);\n return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n let prev = doc.sliceString(pos - 2, pos);\n return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n effects: closeBracketEffect.of(range.to + open.length),\n range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n let next = nextChar(state.doc, range.head);\n if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n return { changes: { insert: open + close, from: range.head },\n effects: closeBracketEffect.of(range.head + open.length),\n range: EditorSelection.cursor(range.head + open.length) };\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction handleClose(state, _open, close) {\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty && nextChar(state.doc, range.head) == close)\n return { changes: { from: range.head, to: range.head + close.length, insert: close },\n range: EditorSelection.cursor(range.head + close.length) };\n return dont = { range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n effects: closeBracketEffect.of(range.to + token.length),\n range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n let pos = range.head, next = nextChar(state.doc, pos), start;\n if (next == token) {\n if (nodeStart(state, pos)) {\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (closedBracketAt(state, pos)) {\n let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n let content = isTriple ? token + token + token : token;\n return { changes: { from: pos, to: pos + content.length, insert: content },\n range: EditorSelection.cursor(pos + content.length) };\n }\n }\n else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n nodeStart(state, start)) {\n return { changes: { insert: token + token + token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction nodeStart(state, pos) {\n let tree = syntaxTree(state).resolveInner(pos + 1);\n return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n let node = syntaxTree(state).resolveInner(pos, -1);\n let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n for (let i = 0; i < 5; i++) {\n let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n let quotePos = start.indexOf(quoteToken);\n if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n let first = node.firstChild;\n while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n return false;\n first = first.firstChild;\n }\n return true;\n }\n let parent = node.to == pos && node.parent;\n if (!parent)\n break;\n node = parent;\n }\n return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n let charCat = state.charCategorizer(pos);\n if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n return pos;\n for (let prefix of prefixes) {\n let start = pos - prefix.length;\n if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n return start;\n }\n return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n return [\n commitCharacters,\n completionState,\n completionConfig.of(config),\n completionPlugin,\n completionKeymapExt,\n baseTheme\n ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` or Alt-i on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n { key: \"Ctrl-Space\", run: startCompletion },\n { mac: \"Alt-`\", run: startCompletion },\n { mac: \"Alt-i\", run: startCompletion },\n { key: \"Escape\", run: closeCompletion },\n { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n let cState = state.field(completionState, false);\n return cState && cState.active.some(a => a.isPending) ? \"pending\"\n : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n if (!open || open.disabled)\n return [];\n let completions = completionArrayCache.get(open.options);\n if (!completions)\n completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n"],"names":["CompletionContext","state","pos","explicit","view","types","token","syntaxTree","expr","line","start","str","found","ensureAnchor","type","listener","options","toSet","chars","flat","words","prefixMatch","first","rest","label","i","source","completeFromList","list","validFor","match","context","ifNotIn","nodes","Option","completion","score","cur","_a","addStart","addEnd","pickedCompletion","Annotation","insertCompletionText","text","from","to","main","fromOff","toOff","range","lines","EditorSelection","SourceCache","asSource","known","startCompletionEffect","StateEffect","closeCompletionEffect","FuzzyMatcher","pattern","p","char","codePointAt","size","codePointSize","part","upper","matched","word","folded","any","precise","byWord","firstSize","direct","len","anyTo","e","next","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","ch","fromCodePoint","positions","result","StrictMatcher","completionConfig","Facet","configs","combineConfig","defaultPositionInfo","a","b","c","joinClass","option","info","space","tooltip","rtl","Direction","left","narrow","side","offset","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","config","content","icon","cls","_s","_v","labelElt","off","j","span","detailElt","rangeAroundSelected","total","selected","max","CompletionTooltip","stateField","applyCompletion","cState","dom","move","id","update","prevState","disabled","open","newSel","infoResult","obj","logException","wrap","destroy","set","opt","scrollIntoView","sel","listRect","infoRect","selRect","docElt","ul","curSection","section","name","header","li","node","completionTooltip","container","element","parent","self","sortOptions","active","sections","dynamicSectionScore","addOption","s","conf","getMatch","matcher","sectionOrder","cmp","prev","compare","CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","changes","CompletionState","none","tr","ActiveSource","didSet","setActiveEffect","sameResults","effect","baseAttrs","noAttrs","iA","iB","endA","endB","getUpdateType","typing","value","ActiveResult","limit","checkValid","mapping","sources","completionState","StateField","f","showTooltip","val","EditorView","apply","moveCompletionSelection","forward","by","step","getTooltip","length","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","ViewPlugin","doesReset","query","handler","delay","q","r","pending","err","updated","current","event","dialog","windows","commitCharacters","Prec","field","commitChars","baseTheme","FieldPos","FieldRange","MapMode","Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","ranges","template","fields","m","seq","rawName","snip","_","brace","index","fieldMarker","Decoration","WidgetType","fieldRange","ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","spec","Text","Transaction","effects","addSnippetKeymap","snippetPointerHandler","moveField","dir","dispatch","last","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","snippetKeymap","maps","keymap","snippetCompletion","defaults","closeBracketEffect","closedBracket","RangeValue","bracketState","RangeSet","closeBrackets","inputHandler","definedClosing","closing","android","insert","insertBracket","deleteBracketPair","tokens","dont","before","prevChar","nextChar","closeBracketsKeymap","bracket","tok","closed","handleSame","handleOpen","closedBracketAt","handleClose","doc","close","closeBefore","_open","allowTriple","stringPrefixes","nodeStart","canStartStringAt","CharCategory","probablyInString","tree","quoteToken","prefixes","maxPrefix","quotePos","charCat","prefix","autocompletion","completionKeymapExt","completionKeymap"],"mappings":"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","x_google_ignoreList":[0]}
@@ -74,3 +74,4 @@ export {
74
74
  l as jsonLanguage,
75
75
  d as jsonParseLinter
76
76
  };
77
+ //# sourceMappingURL=index-Cw9DC-tf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Cw9DC-tf.js","sources":["../node_modules/@lezer/json/dist/index.js","../node_modules/@codemirror/lang-json/dist/index.js"],"sourcesContent":["import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n String: tags.string,\n Number: tags.number,\n \"True False\": tags.bool,\n PropertyName: tags.propertyName,\n Null: tags.null,\n \", :\": tags.separator,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n maxTerm: 25,\n nodeProps: [\n [\"isolate\", -2,6,11,\"\"],\n [\"openedBy\", 7,\"{\",14,\"[\"],\n [\"closedBy\", 8,\"}\",15,\"]\"]\n ],\n propSources: [jsonHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n tokenizers: [0],\n topRules: {\"JsonText\":[0,1]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n try {\n JSON.parse(view.state.doc.toString());\n }\n catch (e) {\n if (!(e instanceof SyntaxError))\n throw e;\n const pos = getErrorPosition(e, view.state.doc);\n return [{\n from: pos,\n message: e.message,\n severity: 'error',\n to: pos\n }];\n }\n return [];\n};\nfunction getErrorPosition(error, doc) {\n let m;\n if (m = error.message.match(/at position (\\d+)/))\n return Math.min(+m[1], doc.length);\n if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"json\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Object Array\": foldInside\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n indentOnInput: /^\\s*[\\}\\]]$/\n }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n"],"names":["jsonHighlighting","styleTags","tags","parser","LRParser","jsonParseLinter","view","e","pos","getErrorPosition","error","doc","m","jsonLanguage","LRLanguage","indentNodeProp","continuedIndent","foldNodeProp","foldInside","json","LanguageSupport"],"mappings":";;AAGA,MAAMA,IAAmBC,EAAU;AAAA,EACjC,QAAQC,EAAK;AAAA,EACb,QAAQA,EAAK;AAAA,EACb,cAAcA,EAAK;AAAA,EACnB,cAAcA,EAAK;AAAA,EACnB,MAAMA,EAAK;AAAA,EACX,OAAOA,EAAK;AAAA,EACZ,OAAOA,EAAK;AAAA,EACZ,OAAOA,EAAK;AACd,CAAC,GAGKC,IAASC,EAAS,YAAY;AAAA,EAClC,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,IACT,CAAC,WAAW,IAAG,GAAE,IAAG,EAAE;AAAA,IACtB,CAAC,YAAY,GAAE,KAAI,IAAG,GAAG;AAAA,IACzB,CAAC,YAAY,GAAE,KAAI,IAAG,GAAG;AAAA,EAC7B;AAAA,EACE,aAAa,CAACJ,CAAgB;AAAA,EAC9B,cAAc,CAAC,CAAC;AAAA,EAChB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,YAAY,CAAC,CAAC;AAAA,EACd,UAAU,EAAC,UAAW,CAAC,GAAE,CAAC,EAAC;AAAA,EAC3B,WAAW;AACb,CAAC,GCzBKK,IAAkB,MAAM,CAACC,MAAS;AACpC,MAAI;AACA,SAAK,MAAMA,EAAK,MAAM,IAAI,SAAQ,CAAE;AAAA,EACxC,SACOC,GAAG;AACN,QAAI,EAAEA,aAAa;AACf,YAAMA;AACV,UAAMC,IAAMC,EAAiBF,GAAGD,EAAK,MAAM,GAAG;AAC9C,WAAO,CAAC;AAAA,MACA,MAAME;AAAA,MACN,SAASD,EAAE;AAAA,MACX,UAAU;AAAA,MACV,IAAIC;AAAA,IACpB,CAAa;AAAA,EACT;AACA,SAAO,CAAA;AACX;AACA,SAASC,EAAiBC,GAAOC,GAAK;AAClC,MAAIC;AACJ,UAAIA,IAAIF,EAAM,QAAQ,MAAM,mBAAmB,KACpC,KAAK,IAAI,CAACE,EAAE,CAAC,GAAGD,EAAI,MAAM,KACjCC,IAAIF,EAAM,QAAQ,MAAM,4BAA4B,KAC7C,KAAK,IAAIC,EAAI,KAAK,CAACC,EAAE,CAAC,CAAC,EAAE,OAAQ,CAACA,EAAE,CAAC,IAAK,GAAGD,EAAI,MAAM,IAC3D;AACX;AAKK,MAACE,IAA4B,gBAAAC,EAAW,OAAO;AAAA,EAChD,MAAM;AAAA,EACN,QAAqB,gBAAAX,EAAO,UAAU;AAAA,IAClC,OAAO;AAAA,MACU,gBAAAY,EAAe,IAAI;AAAA,QAC5B,QAAqB,gBAAAC,EAAgB,EAAE,QAAQ,SAAQ,CAAE;AAAA,QACzD,OAAoB,gBAAAA,EAAgB,EAAE,QAAQ,SAAQ,CAAE;AAAA,MACxE,CAAa;AAAA,MACY,gBAAAC,EAAa,IAAI;AAAA,QAC1B,gBAAgBC;AAAA,MAChC,CAAa;AAAA,IACb;AAAA,EACA,CAAK;AAAA,EACD,cAAc;AAAA,IACV,eAAe,EAAE,UAAU,CAAC,KAAK,KAAK,GAAG,EAAC;AAAA,IAC1C,eAAe;AAAA,EACvB;AACA,CAAC;AAID,SAASC,IAAO;AACZ,SAAO,IAAIC,EAAgBP,CAAY;AAC3C;","x_google_ignoreList":[0,1]}
@@ -1308,3 +1308,4 @@ export {
1308
1308
  w as L,
1309
1309
  H as a
1310
1310
  };
1311
+ //# sourceMappingURL=index-CzPi8KQC.js.map