Files
windyboy 12ee06d8f8 fix broken wikilinks in LLM_Evaluation zone; update Obsidian plugins
- Rewrite folder-relative wikilinks (resolved from vault root) to unique
  basenames or full vault-root paths so they actually resolve in Obsidian
- Fix malformed table links with spaces around the | alias separator
- Plugin updates from Obsidian (any-block, omnisearch, quickadd, etc.)
2026-08-21 15:44:03 +08:00

2 lines
40 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
let e=require(`obsidian`),t=require(`@codemirror/state`),n=require(`@codemirror/view`);var r=/[\u4e00-\u9fff]/,i=new RegExp(r,`g`),a=e=>r.test(e),o={".":`。`,",":``,":":``,";":``,"?":``,"\\":`、`,'"':`“`,"<":`《`,">":`》`,"[":`「`,"]":`」`,"(":``,")":``};function s({vim:e,CodeMirror:t,cut:n}){let r=e.getVimGlobalState_(),i=t.Pos;var s=[t.isWordChar,function(e){return e&&!t.isWordChar(e)&&!/\s/.test(e)}],c=[function(e){return/\S/.test(e)}];function l(e,t){r.lastCharacterSearch.increment=e,r.lastCharacterSearch.forward=t.forward,r.lastCharacterSearch.selectedCharacter=t.selectedCharacter}function u(e,t,n,r,i){var a;return r?(a=t.indexOf(n,e+1),a!=-1&&!i&&--a):(a=t.lastIndexOf(n,e-1),a!=-1&&!i&&(a+=1)),a}function d(e){return new i(e.line,e.ch)}function f(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function p(e,t){return e.getLine(t).length}function m(e,t,n,r,a,o){var s=d(t),c=[];(r&&!a||!r&&a)&&n++;for(var l=!(r&&a),u=0;u<n;u++){var f=g(e,t,r,o,l);if(!f){var m=p(e,e.lastLine());c.push(r?{line:e.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}c.push(f),t=new i(f.line,r?f.to-1:f.from)}var h=c.length!=n,_=c[0],v=c.pop();return r&&!a?(!h&&(_.from!=s.ch||_.line!=s.line)&&(v=c.pop()),new i(v.line,v.from)):r&&a?new i(v.line,v.to-1):!r&&a?(!h&&(_.to!=s.ch||_.line!=s.line)&&(v=c.pop()),new i(v.line,v.to)):new i(v.line,v.from)}function h(e,t,n,r){let a=e.getCursor(),o=a.ch,s;for(let i=0;i<t;i++){let t=e.getLine(a.line);if(s=u(o,t,r,n,!0),s=_(r,o,t,n,s),s==-1)return null;o=s}return new i(e.getCursor().line,s)}function g(e,t,r,i,o){var l=t.line,u=t.ch,d=e.getLine(l),p=r?1:-1,m=i?c:s;if(o&&d==``){if(l+=p,d=e.getLine(l),!f(e,l))return null;u=r?0:d.length}for(;;){if(o&&d==``)return{from:0,to:0,line:l};for(var h=p>0?d.length:-1,g=h,_=h;u!=h;){var y=!1;let e=Math.max(u-6,0),i=Math.min(u+6,d.length);if(a(d.slice(e,i))){let e=n(d);for(let n=0;n<m.length&&!y;++n){let i=d.charAt(u),a;if(!m[n](i)&&(i===``||(a=v(e,u),!m[n](a.text))))continue;for(g=u;u!=h&&(a=v(e,u),m[n](a.text));){if(r){u=a.end,u=Math.min(u,h);break}a=v(e,Math.max(--u,0)),m[n](a.text)&&(u=a.begin-1,u=Math.max(u,h));break}if(_=u,y=g!=_,!y)continue;let o=r?Math.min(g+p,h):Math.max(g+p,h);if(!(g==t.ch&&l==t.line&&_==o))return{from:Math.min(g,_+1),to:Math.max(g,_),line:l}}}for(var b=0;b<m.length&&!y;++b)if(m[b](d.charAt(u))){for(g=u;u!=h&&m[b](d.charAt(u));)u+=p;if(_=u,y=g!=_,g==t.ch&&l==t.line&&_==g+p)continue;return{from:Math.min(g,_+1),to:Math.max(g,_),line:l}}y||(u+=p)}if(l+=p,!f(e,l))return null;d=e.getLine(l),u=p>0?0:d.length}}function _(e,t,n,r,i){if(e.length==1&&o[e]!=null){let a=o[e],s=u(t,n,a,r,!0);return s==-1?i:i==-1?s:r?Math.min(i,s):Math.max(i,s)}return i}function v(e,t){let n=0,r=0;for(var i=0;i<e.length;i++){var a=e[i];if(r=n+a.length,t>=n&&t<r)break;n+=a.length}return{index:i,text:a,begin:n,end:r}}return{moveToCharacter:h,recordLastCharacterSearch:l,moveToWord:m}}var c=class extends e.Component{constructor(e){super(),this.plugin=e,this.utils=s({CodeMirror:window.CodeMirror,vim:this.vim,cut:e.cut.bind(e)})}get vim(){return window.CodeMirrorAdapter?.Vim}get enabled(){return this.plugin.settings.useJieba||window.Intl?.Segmenter}onload(){this.vim&&(this.enabled&&this.plugin.settings.moveByChineseWords&&this.enableMoveByChineseWords(this.vim),this.enabled&&this.plugin.settings.moveTillChinesePunctuation&&this.enableMoveTillChinesePunctuation(this.vim))}enableMoveByChineseWords(e){e.defineMotion(`moveByWords`,(e,t,n)=>this.utils.moveToWord(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord))}enableMoveTillChinesePunctuation(e){let{recordLastCharacterSearch:t,moveToCharacter:n}=this.utils;e.defineMotion(`moveToCharacter`,(e,r,i)=>{let a=i.repeat;return t(0,i),n(e,a,i.forward,i.selectedCharacter)||r}),e.defineMotion(`moveTillCharacter`,(e,r,i)=>{let a=i.repeat,o=n(e,a,i.forward,i.selectedCharacter),s=i.forward?-1:1;return t(s,i),o?(o.ch+=s,o):null}),e.defineMotion(`repeatLastCharacterSearch`,(t,r,i)=>{let a=e.getVimGlobalState_().lastCharacterSearch,o=i.repeat,s=i.forward===a.forward,c=!!a.increment*(s?-1:1);t.moveH(-c,`char`),i.inclusive=!!s;let l=n(t,o,s,a.selectedCharacter);return l?(l.ch+=c,l):(t.moveH(c,`char`),r)})}};function l(e,t){let n=Object.keys(t).map(n=>u(e,n,t[n]));return n.length===1?n[0]:function(){n.forEach(e=>e())}}function u(e,t,n){let r=e[t],i=e.hasOwnProperty(t),a=n(r);return r&&Object.setPrototypeOf(a,r),Object.setPrototypeOf(o,a),e[t]=o,s;function o(...n){return a===r&&e[t]===o&&s(),a.apply(this,n)}function s(){e[t]===o&&(i?e[t]=r:delete e[t]),a!==r&&(a=r,Object.setPrototypeOf(o,r||Function))}}var d=(e,n,r,i)=>{if(!r)return null;let{from:a,to:o}=r,s=i.doc.sliceString(a,o),c=e.getSegRangeFromCursor(n,{from:a,to:o,text:s});return c?t.EditorSelection.range(c.from,c.to):null},f=typeof navigator<`u`?navigator:{userAgent:``,vendor:``},p=typeof document<`u`?document:{documentElement:{style:{}}},m=/Edge\/(\d+)/.exec(f.userAgent),h=/MSIE \d/.test(f.userAgent),g=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(f.userAgent),_=!!(h||g||m),v=!_&&/gecko\/(\d+)/i.test(f.userAgent),y=!_&&/Chrome\/(\d+)/.exec(f.userAgent),b=`webkitFontSmoothing`in p.documentElement.style,x=!_&&/Apple Computer/.test(f.vendor),ee=x&&(/Mobile\/\w+/.test(f.userAgent)||f.maxTouchPoints>2),S={ie_version:h?p.documentMode||6:g?+g[1]:m?+m[1]:0,gecko:v,gecko_version:v?+(/Firefox\/(\d+)/.exec(f.userAgent)||[0,0])[1]:0,chrome:!!y,chrome_version:y?+y[1]:0,ios:ee,webkit_version:b?+(/\bAppleWebKit\/(\d+)/.exec(f.userAgent)||[0,0])[1]:0,safari:x,safari_version:x?+(/\bVersion\/(\d+(\.\d+)?)/.exec(f.userAgent)||[0,0])[1]:0,tabSize:p.documentElement.style.tabSize==null?`-moz-tab-size`:`tab-size`};function te(e){return e.nodeType==3?oe(e,0,e.nodeValue.length).getClientRects():e.nodeType==1?e.getClientRects():[]}function ne(e){for(var t=0;;t++)if(e=e.previousSibling,!e)return t}function re(e){return e.nodeType==3?e.nodeValue.length:e.childNodes.length}function ie(e,t){let n=t?e.left:e.right;return{left:n,right:n,top:e.top,bottom:e.bottom}}var ae;function oe(e,t,n=t){let r=ae||=document.createRange();return r.setEnd(e,n),r.setStart(e,t),r}function se(e){for(;e.attributes.length;)e.removeAttributeNode(e.attributes[0])}var C=class e{constructor(e,t,n=!0){this.node=e,this.offset=t,this.precise=n}static before(t,n){return new e(t.parentNode,ne(t),n)}static after(t,n){return new e(t.parentNode,ne(t)+1,n)}},ce=[],w=class e{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let t=this.posAtStart;for(let n of this.children){if(n==e)return t;t+=n.length+n.breakAfter}throw RangeError(`Invalid child in posBefore`)}posAfter(e){return this.posBefore(e)+e.length}sync(t,n){if(this.flags&2){let r=this.dom,i=null,a;for(let o of this.children){if(o.flags&7){if(!o.dom&&(a=i?i.nextSibling:r.firstChild)){let t=e.get(a);(!t||!t.parent&&t.canReuseDOM(o))&&o.reuseDOM(a)}o.sync(t,n),o.flags&=-8}if(a=i?i.nextSibling:r.firstChild,n&&!n.written&&n.node==r&&a!=o.dom&&(n.written=!0),o.dom.parentNode==r)for(;a&&a!=o.dom;)a=T(a);else r.insertBefore(o.dom,a);i=o.dom}for(a=i?i.nextSibling:r.firstChild,a&&n&&n.node==r&&(n.written=!0);a;)a=T(a)}else if(this.flags&1)for(let e of this.children)e.flags&7&&(e.sync(t,n),e.flags&=-8)}reuseDOM(e){}localPosFromDOM(t,n){let r;if(t==this.dom)r=this.dom.childNodes[n];else{let e=re(t)==0?0:n==0?-1:1;for(;;){let n=t.parentNode;if(n==this.dom)break;e==0&&n.firstChild!=n.lastChild&&(e=t==n.firstChild?-1:1),t=n}r=e<0?t:t.nextSibling}if(r==this.dom.firstChild)return 0;for(;r&&!e.get(r);)r=r.nextSibling;if(!r)return this.length;for(let e=0,t=0;;e++){let n=this.children[e];if(n.dom==r)return t;t+=n.length+n.breakAfter}}domBoundsAround(e,t,n=0){let r=-1,i=-1,a=-1,o=-1;for(let s=0,c=n,l=n;s<this.children.length;s++){let n=this.children[s],u=c+n.length;if(c<e&&u>t)return n.domBoundsAround(e,t,c);if(u>=e&&r==-1&&(r=s,i=c),c>t&&n.dom.parentNode==this.dom){a=s,o=l;break}l=u,c=u+n.breakAfter}return{from:i,to:o<0?n+this.length:o,startDOM:(r?this.children[r-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a<this.children.length&&a>=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,n=ce){this.markDirty();for(let r=e;r<t;r++){let e=this.children[r];e.parent==this&&n.indexOf(e)<0&&e.destroy()}n.length<250?this.children.splice(e,t-e,...n):this.children=[].concat(this.children.slice(0,e),n,this.children.slice(t));for(let e=0;e<n.length;e++)n[e].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new le(this.children,e,this.children.length)}childPos(e,t=1){return this.childCursor().findPos(e,t)}toString(){let e=this.constructor.name.replace(`View`,``);return e+(this.children.length?`(`+this.children.join()+`)`:this.length?`[`+(e==`Text`?this.text:this.length)+`]`:``)+(this.breakAfter?`#`:``)}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,t,n,r,i,a){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!((this.flags|e.flags)&8)}getSide(){return 0}destroy(){for(let e of this.children)e.parent==this&&e.destroy();this.parent=null}};w.prototype.breakAfter=0;function T(e){let t=e.nextSibling;return e.parentNode.removeChild(e),t}var le=class{constructor(e,t,n){this.children=e,this.pos=t,this.i=n,this.off=0}findPos(e,t=1){for(;;){if(e>this.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let n=this.children[--this.i];this.pos-=n.length+n.breakAfter}}};function ue(e,t,n,r,i,a,o,s,c){let{children:l}=e,u=l.length?l[t]:null,d=a.length?a[a.length-1]:null,f=d?d.breakAfter:o;if(!(t==r&&u&&!o&&!f&&a.length<2&&u.merge(n,i,a.length?d:null,n==0,s,c))){if(r<l.length){let e=l[r];e&&(i<e.length||e.breakAfter&&d?.breakAfter)?(t==r&&(e=e.split(i),i=0),!f&&d&&e.merge(0,i,d,!0,0,c)?a[a.length-1]=e:((i||e.children.length&&!e.children[0].length)&&e.merge(0,i,null,!1,0,c),a.push(e))):e?.breakAfter&&(d?d.breakAfter=1:o=1),r++}for(u&&(u.breakAfter=o,n>0&&(!o&&a.length&&u.merge(n,u.length,a[0],!1,s,0)?u.breakAfter=a.shift().breakAfter:(n<u.length||u.children.length&&u.children[u.children.length-1].length==0)&&u.merge(n,u.length,null,!1,s,0),t++));t<r&&a.length;)if(l[r-1].become(a[a.length-1]))r--,a.pop(),c=a.length?0:s;else if(l[t].become(a[0]))t++,a.shift(),s=a.length?0:c;else break;!a.length&&t&&r<l.length&&!l[t-1].breakAfter&&l[r].merge(0,0,l[t-1],!1,s,c)&&t--,(t<r||a.length)&&e.replaceChildren(t,r,a)}}function de(e,t,n,r,i,a){let o=e.childCursor(),{i:s,off:c}=o.findPos(n,1),{i:l,off:u}=o.findPos(t,-1),d=t-n;for(let e of r)d+=e.length;e.length+=d,ue(e,l,u,s,c,r,0,i,a)}var fe=256,E=class e extends w{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(t,n,r){return this.flags&8||r&&(!(r instanceof e)||this.length-(n-t)+r.length>fe||r.flags&8)?!1:(this.text=this.text.slice(0,t)+(r?r.text:``)+this.text.slice(n),this.markDirty(),!0)}split(t){let n=new e(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new C(this.dom,e)}domBoundsAround(e,t,n){return{from:n,to:n+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return pe(this.dom,e,t)}},D=class e extends w{constructor(e,t=[],n=0){super(),this.mark=e,this.children=t,this.length=n;for(let e of t)e.setParent(this)}setAttrs(e){if(se(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(t,n,r,i,a,o){return r&&(!(r instanceof e&&r.mark.eq(this.mark))||t&&a<=0||n<this.length&&o<=0)?!1:(de(this,t,n,r?r.children.slice():[],a-1,o-1),this.markDirty(),!0)}split(t){let n=[],r=0,i=-1,a=0;for(let e of this.children){let o=r+e.length;o>t&&n.push(r<t?e.split(t-r):e),i<0&&r>=t&&(i=a),r=o,a++}let o=this.length-t;return this.length=t,i>-1&&(this.children.length=i,this.markDirty()),new e(this.mark,n,o)}domAtPos(e){return ge(this,e)}coordsAt(e,t){return ve(this,e,t)}};function pe(e,t,n){let r=e.nodeValue.length;t>r&&(t=r);let i=t,a=t,o=0;t==0&&n<0||t==r&&n>=0?S.chrome||S.gecko||(t?(i--,o=1):a<r&&(a++,o=-1)):n<0?i--:a<r&&a++;let s=oe(e,i,a).getClientRects();if(!s.length)return null;let c=s[(o?o<0:n>=0)?0:s.length-1];return S.safari&&!o&&c.width==0&&(c=Array.prototype.find.call(s,e=>e.width)||c),o?ie(c,o<0):c||null}var me=class e extends w{static create(t,n,r){return new e(t,n,r)}constructor(e,t,n){super(),this.widget=e,this.length=t,this.side=n,this.prevWidget=null}split(t){let n=e.create(this.widget,this.length-t,this.side);return this.length-=t,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable=`false`))}getSide(){return this.side}merge(t,n,r,i,a,o){return r&&(!(r instanceof e)||!this.widget.compare(r.widget)||t>0&&a<=0||n<this.length&&o<=0)?!1:(this.length=t+(r?r.length:0)+(this.length-n),!0)}become(t){return t instanceof e&&t.side==this.side&&this.widget.constructor==t.widget.constructor?(this.widget.compare(t.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=t.widget,this.length=t.length,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(this.length==0)return t.Text.empty;let e=this;for(;e.parent;)e=e.parent;let{view:n}=e,r=n&&n.state.doc,i=this.posAtStart;return r?r.slice(i,i+this.length):t.Text.empty}domAtPos(e){return(this.length?e==0:this.side>0)?C.before(this.dom):C.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let n=this.widget.coordsAt(this.dom,e,t);if(n)return n;let r=this.dom.getClientRects(),i=null;if(!r.length)return null;let a=this.side?this.side<0:e>0;for(let t=a?r.length-1:0;i=r[t],!(e>0?t==0:t==r.length-1||i.top<i.bottom);t+=a?-1:1);return ie(i,!a)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}},he=class e extends w{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(t){return t instanceof e&&t.side==this.side}split(){return new e(this.side)}sync(){if(!this.dom){let e=document.createElement(`img`);e.className=`cm-widgetBuffer`,e.setAttribute(`aria-hidden`,`true`),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return this.side>0?C.before(this.dom):C.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return t.Text.empty}get isHidden(){return!0}};E.prototype.children=me.prototype.children=he.prototype.children=ce;function ge(e,t){let n=e.dom,{children:r}=e,i=0;for(let e=0;i<r.length;i++){let a=r[i],o=e+a.length;if(!(o==e&&a.getSide()<=0)){if(t>e&&t<o&&a.dom.parentNode==n)return a.domAtPos(t-e);if(t<=e)break;e=o}}for(let e=i;e>0;e--){let t=r[e-1];if(t.dom.parentNode==n)return t.domAtPos(t.length)}for(let e=i;e<r.length;e++){let t=r[e];if(t.dom.parentNode==n)return t.domAtPos(0)}return new C(n,0)}function _e(e,t,n){let r,{children:i}=e;n>0&&t instanceof D&&i.length&&(r=i[i.length-1])instanceof D&&r.mark.eq(t.mark)?_e(r,t.children[0],n-1):(i.push(t),t.setParent(e)),e.length+=t.length}function ve(e,t,n){let r=null,i=-1,a=null,o=-1;function s(e,t){for(let c=0,l=0;c<e.children.length&&l<=t;c++){let u=e.children[c],d=l+u.length;d>=t&&(u.children.length?s(u,t-l):(!a||a.isHidden&&(n>0||be(a,u)))&&(d>t||l==d&&u.getSide()>0)?(a=u,o=t-l):(l<t||l==d&&u.getSide()<0&&!u.isHidden)&&(r=u,i=t-l)),l=d}}s(e,t);let c=(n<0?r:a)||r||a;return c?c.coordsAt(Math.max(0,c==r?i:o),n):ye(e)}function ye(e){let t=e.dom.lastChild;if(!t)return e.dom.getBoundingClientRect();let n=te(t);return n[n.length-1]||null}function be(e,t){let n=e.coordsAt(0,1),r=t.coordsAt(0,1);return n&&r&&r.top<n.bottom}function xe(e,t){for(let n in e)n==`class`&&t.class?t.class+=` `+e.class:n==`style`&&t.style?t.style+=`;`+e.style:t[n]=e[n];return t}var Se=Object.create(null);function O(e,t,n){if(e==t)return!0;e||=Se,t||=Se;let r=Object.keys(e),i=Object.keys(t);if(r.length-(n&&r.indexOf(n)>-1?1:0)!=i.length-(n&&i.indexOf(n)>-1?1:0))return!1;for(let a of r)if(a!=n&&(i.indexOf(a)==-1||e[a]!==t[a]))return!1;return!0}function Ce(e,t,n){let r=!1;if(t)for(let i in t)n&&i in n||(r=!0,i==`style`?e.style.cssText=``:e.removeAttribute(i));if(n)for(let i in n)t&&t[i]==n[i]||(r=!0,i==`style`?e.style.cssText=n[i]:e.setAttribute(i,n[i]));return r}var k=(function(e){return e[e.Text=0]=`Text`,e[e.WidgetBefore=1]=`WidgetBefore`,e[e.WidgetAfter=2]=`WidgetAfter`,e[e.WidgetRange=3]=`WidgetRange`,e})(k||={}),A=class extends t.RangeValue{constructor(e,t,n,r){super(),this.startSide=e,this.endSide=t,this.widget=n,this.spec=r}get heightRelevant(){return!1}static mark(e){return new j(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),n=!!e.block;return t+=n&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new N(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:i,end:a}=we(e,t);n=(i?t?-3e8:-1:5e8)-1,r=(a?t?2e8:1:-6e8)+1}return new N(e,n,r,t,e.widget||null,!0)}static line(e){return new M(e)}static set(e,n=!1){return t.RangeSet.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};A.none=t.RangeSet.empty;var j=class e extends A{constructor(e){let{start:t,end:n}=we(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||`span`,this.class=e.class||``,this.attrs=e.attributes||null}eq(t){return this==t||t instanceof e&&this.tagName==t.tagName&&(this.class||this.attrs?.class)==(t.class||t.attrs?.class)&&O(this.attrs,t.attrs,`class`)}range(e,t=e){if(e>=t)throw RangeError(`Mark decorations may not be empty`);return super.range(e,t)}};j.prototype.point=!1;var M=class e extends A{constructor(e){super(-2e8,-2e8,null,e)}eq(t){return t instanceof e&&this.spec.class==t.spec.class&&O(this.spec.attributes,t.spec.attributes)}range(e,t=e){if(t!=e)throw RangeError(`Line decoration ranges must be zero-length`);return super.range(e,t)}};M.prototype.mapMode=t.MapMode.TrackBefore,M.prototype.point=!0;var N=class e extends A{constructor(e,n,r,i,a,o){super(n,r,a,e),this.block=i,this.isReplace=o,this.mapMode=i?n<=0?t.MapMode.TrackBefore:t.MapMode.TrackAfter:t.MapMode.TrackDel}get type(){return this.startSide==this.endSide?this.startSide<=0?k.WidgetBefore:k.WidgetAfter:k.WidgetRange}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof e&&Te(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw RangeError(`Invalid range for replacement decoration`);if(!this.isReplace&&t!=e)throw RangeError(`Widget decorations can only have zero-length ranges`);return super.range(e,t)}};N.prototype.point=!0;function we(e,t=!1){let{inclusiveStart:n,inclusiveEnd:r}=e;return n??=e.inclusive,r??=e.inclusive,{start:n??t,end:r??t}}function Te(e,t){return e==t||!!(e&&t&&e.compare(t))}var Ee=class e extends w{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,n,r,i,a,o){if(r){if(!(r instanceof e))return!1;this.dom||r.transferDOM(this)}return i&&this.setDeco(r?r.attrs:null),de(this,t,n,r?r.children.slice():[],a,o),!0}split(t){let n=new e;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:i}=this.childPos(t);i&&(n.append(this.children[r].split(i),0),this.children[r].merge(i,this.children[r].length,null,!1,0,0),r++);for(let e=r;e<this.children.length;e++)n.append(this.children[e],0);for(;r>0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=t,n}transferDOM(e){this.dom&&=(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,null)}setDeco(e){O(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){_e(this,e,t)}addLineDeco(e){let t=e.spec.attributes,n=e.spec.class;t&&(this.attrs=xe(t,this.attrs||{})),n&&(this.attrs=xe({class:n},this.attrs||{}))}domAtPos(e){return ge(this,e)}reuseDOM(e){e.nodeName==`DIV`&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&(se(this.dom),this.dom.className=`cm-line`,this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement(`div`)),this.dom.className=`cm-line`,this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Ce(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add(`cm-line`),this.prevAttrs=void 0),super.sync(e,t);let n=this.dom.lastChild;for(;n&&w.get(n)instanceof D;)n=n.lastChild;if(!n||!this.length||n.nodeName!=`BR`&&w.get(n)?.isEditable==0&&(!S.ios||!this.children.some(e=>e instanceof E))){let e=document.createElement(`BR`);e.cmIgnore=!0,this.dom.appendChild(e)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let n of this.children){if(!(n instanceof E)||/[^ -~]/.test(n.text))return null;let r=te(n.dom);if(r.length!=1)return null;e+=r[0].width,t=r[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let n=ve(this,e,t);if(!this.children.length&&n&&this.parent){let{heightOracle:e}=this.parent.view.viewState,t=n.bottom-n.top;if(Math.abs(t-e.lineHeight)<2&&e.textHeight<t){let r=(t-e.textHeight)/2;return{top:n.top+r,bottom:n.bottom-r,left:n.left,right:n.left}}}return n}become(t){return t instanceof e&&this.children.length==0&&t.children.length==0&&O(this.attrs,t.attrs)&&this.breakAfter==t.breakAfter}covers(){return!0}static find(t,n){for(let r=0,i=0;r<t.children.length;r++){let a=t.children[r],o=i+a.length;if(o>=n){if(a instanceof e)return a;if(o>n)break}i=o+a.breakAfter}return null}},P=(function(e){return e[e.LTR=0]=`LTR`,e[e.RTL=1]=`RTL`,e})(P||={});P.LTR,P.RTL;var De=Object.create(null);for(let e of[`()`,`[]`,`{}`]){let t=e.charCodeAt(0),n=e.charCodeAt(1);De[t]=n,De[n]=-t}function Oe(e,n,r=1){let i=e.charCategorizer(n),a=e.doc.lineAt(n),o=n-a.from;if(a.length==0)return t.EditorSelection.cursor(n);o==0?r=1:o==a.length&&(r=-1);let s=o,c=o;r<0?s=(0,t.findClusterBreak)(a.text,o,!1):c=(0,t.findClusterBreak)(a.text,o);let l=i(a.text.slice(s,c));for(;s>0;){let e=(0,t.findClusterBreak)(a.text,s,!1);if(i(a.text.slice(e,s))!=l)break;s=e}for(;c<a.length;){let e=(0,t.findClusterBreak)(a.text,c);if(i(a.text.slice(c,e))!=l)break;c=e}return t.EditorSelection.range(s+a.from,c+a.from)}var ke=(e,t)=>e>=t.top&&e<=t.bottom,Ae=(e,t,n)=>ke(t,n)&&e>=n.left&&e<=n.right;function je(e,t,n,r){let i=Ee.find(e.docView,t);if(!i)return 1;let a=t-i.posAtStart;if(a==0)return 1;if(a==i.length)return-1;let o=i.coordsAt(a,-1);if(o&&Ae(n,r,o))return-1;let s=i.coordsAt(a,1);return s&&Ae(n,r,s)?1:o&&ke(r,o)?-1:1}function Me(e,t){let n=e.posAtCoords({x:t.clientX,y:t.clientY},!1);return{pos:n,bias:je(e,n,t.clientX,t.clientY)}}var Ne=e=>{let r=(t,n,r,i)=>{let a=Oe(t.state,n,r);return d(e,n,a,t.state)??a};return n.EditorView.mouseSelectionStyle.of((e,n)=>{if(n.button!==0||n.detail!==2)return null;let i=Me(e,n),a=n.detail,o=e.state.selection,s=i,c=n;return{update(e){e.docChanged&&(i&&(i.pos=e.changes.mapPos(i.pos)),o=o.map(e.changes),c=null)},get(n,l,u){let d;if(c&&n.clientX==c.clientX&&n.clientY==c.clientY?d=s:(d=s=Me(e,n),c=n),!d||!i)return o;let f=r(e,d.pos,d.bias,a);if(i.pos!=d.pos&&!l){let n=r(e,i.pos,i.bias,a),o=Math.min(n.from,f.from),s=Math.max(n.to,f.to);f=o<f.from?t.EditorSelection.range(o,s):t.EditorSelection.range(s,o)}return l?o.replaceRange(o.main.extend(f.from,f.to)):u?o.addRange(f):t.EditorSelection.create([f])}}})},Pe=e=>{function r(e,r){if(e.state.readOnly)return!1;let a=`delete.selection`,{state:o}=e,s=o.changeByRange(n=>{let{from:o,to:s}=n;if(o==s){let t=r(o);t<o?(a=`delete.backward`,t=i(e,t,!1)):t>o&&(a=`delete.forward`,t=i(e,t,!0)),o=Math.min(o,t),s=Math.max(s,t)}else o=i(e,o,!1),s=i(e,o,!0);return o==s?{range:n}:{changes:{from:o,to:s},range:t.EditorSelection.cursor(o)}});return s.changes.empty?!1:(e.dispatch(o.update(s,{scrollIntoView:!0,userEvent:a,effects:a==`delete.selection`?n.EditorView.announce.of(o.phrase(`Selection deleted`)):void 0})),!0)}function i(e,t,r){let i=t;if(e instanceof n.EditorView)for(let t of e.state.facet(n.EditorView.atomicRanges).map(t=>t(e)))t.between(i,i,(e,t)=>{e<i&&t>i&&(i=r?t:e)});return i}let a=(n,i)=>r(n,r=>{let a=r,{state:o}=n,s=o.doc.lineAt(a),c=o.charCategorizer(a);for(let e=null;;){if(a==(i?s.to:s.from)){a==r&&s.number!=(i?o.doc.lines:1)&&(a+=i?1:-1);break}let n=(0,t.findClusterBreak)(s.text,a-s.from,i)+s.from,l=s.text.slice(Math.min(a,n)-s.from,Math.max(a,n)-s.from),u=c(l);if(e!=null&&u!=e)break;(l!=` `||a!=r)&&(e=u),a=n}return a=e.getSegDestFromGroup(r,a,o.sliceDoc.bind(o))??a,a}),o=e=>a(e,!1);return n.keymap.of([{key:`Ctrl-Alt-h`,run:o},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:o},{key:`Mod-Delete`,mac:`Alt-Delete`,run:e=>a(e,!0)}])},Fe=e=>[Ne(e),Pe(e)],Ie=e=>{e.registerEditorExtension(Fe(e)),e.register(l(t.EditorState.prototype,{wordAt:t=>function(n){let r=t.call(this,n);return d(e,n,t.call(this,n),this)??r}}));let r;e.register(l(n.EditorView.prototype,{moveByGroup:n=>function(i,a){let o=n.call(this,i,a);if(o.empty||i.empty){let n;o.empty&&i.empty?(n=a?`BeginAndForward`:`BeginAndBackward`,r=i.from):n=a?r==i.to?`BackwardAndForward`:`ForwardAndForward`:r==i.from?`ForwardAndBackward`:`BackwardAndBackward`;let s;switch(n){case`BeginAndForward`:s=i.from;break;case`BeginAndBackward`:case`ForwardAndBackward`:s=i.to;break;case`ForwardAndForward`:s=i.from<=o.to?i.to+1:i.from+1;break;case`BackwardAndForward`:s=i.from+1;break;case`BackwardAndBackward`:s=i.from>o.to?i.from-1:i.to;break;default:s=i.from;break}let c=e.getSegDestFromGroup(s,a?o.from:o.to,this.state.sliceDoc.bind(this.state));if(c)return t.EditorSelection.range(c,c)}return o}}))};function Le(e){return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.accept=e,n.addEventListener(`change`,()=>t(n.files?.[0]??null)),n.addEventListener(`cancel`,()=>t(null)),n.click()})}var Re=`var(--background-modifier-success)`,F=`https://unpkg.com/jieba-wasm@2.4.0/pkg/web/jieba_rs_wasm_bg.wasm`,ze=class extends e.Modal{plugin;selectButton=null;downloadButton=null;constructor(e){super(e.app),this.plugin=e,this.modalEl.addClass(`zt-install-guide`)}get libName(){return this.plugin.libName}onOpen(){this.contentEl.createEl(`h1`,{text:`安装结巴分词`}),this.contentEl.createDiv({},e=>{e.appendText(`新版分词插件需要安装 jieba-wasm,请按照下面的步骤安装:`),e.createEl(`ol`,{},e=>{e.createEl(`li`,{},e=>{this.downloadButton=e.createEl(`button`,{text:`自动下载`},e=>e.onclick=this.onDownloadingFile.bind(this)),e.createEl(`br`),e.appendText(`或`),e.createEl(`ol`,{},e=>{e.createEl(`li`,{},e=>{e.appendText(`点击链接手动下载`),e.createEl(`code`,{text:this.libName}),e.createEl(`br`),e.createEl(`a`,{href:F,text:F})}),e.createEl(`li`,{},e=>{e.appendText(`在弹出的窗口选择下载好的 `),e.createEl(`code`,{text:this.libName}),e.appendText(` `),this.selectButton=e.createEl(`button`,{text:`选择文件`},e=>e.onclick=this.onSelectingFile.bind(this))})})}),e.createEl(`li`,{},e=>{e.appendText(`重启 Obsidian 后生效`)})})})}onClose(){this.contentEl.empty()}async onSelectingFile(){let t=await Le(`.wasm`);!t||!t.name.toLowerCase().endsWith(`.wasm`)||(await this.plugin.saveLib(await t.arrayBuffer()),this.selectButton&&(this.selectButton.setText(`结巴分词插件导入成功`),this.selectButton.style.backgroundColor=Re),new e.Notice(`✔️ 安装成功,请重启 Obsidian 使结巴分词生效`))}async onDownloadingFile(){let t=await fetch(F);await this.plugin.saveLib(await t.arrayBuffer()),this.downloadButton&&(this.downloadButton.setText(`结巴分词插件下载成功`),this.downloadButton.style.backgroundColor=Re),new e.Notice(`✔️ 安装成功,请重启 Obsidian 使结巴分词生效`)}},I,L=null;function R(){return(L===null||L.byteLength===0)&&(L=new Uint8Array(I.memory.buffer)),L}var z=typeof TextDecoder<`u`?new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(`TextDecoder not available`)}};typeof TextDecoder<`u`&&z.decode();var Be=2146435072,B=0;function Ve(e,t){return B+=t,B>=Be&&(z=typeof TextDecoder<`u`?new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(`TextDecoder not available`)}},z.decode(),B=t),z.decode(R().subarray(e,e+t))}function V(e,t){return e>>>=0,Ve(e,t)}function H(e){let t=typeof e;if(t==`number`||t==`boolean`||e==null)return`${e}`;if(t==`string`)return`"${e}"`;if(t==`symbol`){let t=e.description;return t==null?`Symbol`:`Symbol(${t})`}if(t==`function`){let t=e.name;return typeof t==`string`&&t.length>0?`Function(${t})`:`Function`}if(Array.isArray(e)){let t=e.length,n=`[`;t>0&&(n+=H(e[0]));for(let r=1;r<t;r++)n+=`, `+H(e[r]);return n+=`]`,n}let n=/\[object ([^\]]+)\]/.exec(toString.call(e)),r;if(n&&n.length>1)r=n[1];else return toString.call(e);if(r==`Object`)try{return`Object(`+JSON.stringify(e)+`)`}catch{return`Object`}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:r}var U=0,W=typeof TextEncoder<`u`?new TextEncoder(`utf-8`):{encode:()=>{throw Error(`TextEncoder not available`)}},He=typeof W.encodeInto==`function`?function(e,t){return W.encodeInto(e,t)}:function(e,t){let n=W.encode(e);return t.set(n),{read:e.length,written:n.length}};function G(e,t,n){if(n===void 0){let n=W.encode(e),r=t(n.length,1)>>>0;return R().subarray(r,r+n.length).set(n),U=n.length,r}let r=e.length,i=t(r,1)>>>0,a=R(),o=0;for(;o<r;o++){let t=e.charCodeAt(o);if(t>127)break;a[i+o]=t}if(o!==r){o!==0&&(e=e.slice(o)),i=n(i,r,r=o+e.length*3,1)>>>0;let t=R().subarray(i+o,i+r),a=He(e,t);o+=a.written,i=n(i,r,o,1)>>>0}return U=o,i}var K=null;function q(){return(K===null||K.buffer.detached===!0||K.buffer.detached===void 0&&K.buffer!==I.memory.buffer)&&(K=new DataView(I.memory.buffer)),K}function J(e){return e==null}function Ue(e,t){e>>>=0;let n=q(),r=[];for(let i=e;i<e+4*t;i+=4)r.push(I.__wbindgen_export_2.get(n.getUint32(i,!0)));return I.__externref_drop_slice(e,t),r}function We(e,t){let n=G(e,I.__wbindgen_malloc,I.__wbindgen_realloc),r=U,i=I.cut(n,r,J(t)?16777215:+!!t);var a=Ue(i[0],i[1]).slice();return I.__wbindgen_free(i[0],i[1]*4,4),a}function Ge(e,t){let n=G(e,I.__wbindgen_malloc,I.__wbindgen_realloc),r=U,i=I.cut_for_search(n,r,J(t)?16777215:+!!t);var a=Ue(i[0],i[1]).slice();return I.__wbindgen_free(i[0],i[1]*4,4),a}function Y(e,t,n){let r=G(e,I.__wbindgen_malloc,I.__wbindgen_realloc),i=U;var a=J(n)?0:G(n,I.__wbindgen_malloc,I.__wbindgen_realloc),o=U;return I.add_word(r,i,J(t)?4294967297:t>>>0,a,o)>>>0}var Ke=new Set([`basic`,`cors`,`default`]);async function qe(e,t){if(typeof Response==`function`&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==`function`)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(e.ok&&Ke.has(e.type)&&e.headers.get(`Content-Type`)!==`application/wasm`)console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t);else throw t}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function Je(){let e={};return e.wbg={},e.wbg.__wbg_Error_0497d5bdba9362e5=function(e,t){return Error(V(e,t))},e.wbg.__wbg_new_07b483f72211fd66=function(){return{}},e.wbg.__wbg_set_3f1d0b984ed272ed=function(e,t,n){e[t]=n},e.wbg.__wbindgen_bigint_from_u64=function(e){return BigInt.asUintN(64,e)},e.wbg.__wbindgen_debug_string=function(e,t){let n=G(H(t),I.__wbindgen_malloc,I.__wbindgen_realloc),r=U;q().setInt32(e+4,r,!0),q().setInt32(e+0,n,!0)},e.wbg.__wbindgen_init_externref_table=function(){let e=I.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},e.wbg.__wbindgen_number_new=function(e){return e},e.wbg.__wbindgen_string_new=function(e,t){return V(e,t)},e.wbg.__wbindgen_throw=function(e,t){throw Error(V(e,t))},e}function Ye(e,t){return I=e.exports,Xe.__wbindgen_wasm_module=t,K=null,L=null,I.__wbindgen_start(),I}async function Xe(e){if(I!==void 0)return I;if(e!==void 0&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn(`using deprecated parameters for the initialization function; pass a single object instead`)),e===void 0)throw Error("jieba_rs_wasm: a wasm module/path must be passed to init() (patched: implicit `new URL(..., import.meta.url)` removed to prevent bundlers from inlining the wasm asset)");let t=Je();(typeof e==`string`||typeof Request==`function`&&e instanceof Request||typeof URL==`function`&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:r}=await qe(await e,t);return Ye(n,r)}var Ze=e=>e&&Number.isInteger(+e)?+e:void 0,Qe=e=>e&&e in nt?e:void 0,X=!1,$e=async(e,t)=>{if(X)return;let n=[];if(await Xe({module_or_path:e}),t)for(let e of t.split(/\r?\n/)){let[t,r,i]=e.trim().split(/\s+/),a,o;if(!t){n.push(e);continue}!r&&!i?Y(t):(o=Qe(r))?Y(t,void 0,o):(o=Qe(i),a=Ze(r),Y(t,a,o))}We(``,!0),X=!0},et=(e,t=!1)=>{if(!X)throw Error(`jieba not loaded`);return We(e,t)},tt=(e,t=!1)=>{if(!X)throw Error(`jieba not loaded`);return Ge(e,t)},nt={n:void 0,f:void 0,s:void 0,t:void 0,nr:void 0,ns:void 0,nt:void 0,nw:void 0,nz:void 0,v:void 0,vd:void 0,vn:void 0,a:void 0,ad:void 0,an:void 0,d:void 0,m:void 0,q:void 0,r:void 0,p:void 0,c:void 0,u:void 0,xc:void 0,w:void 0,PER:void 0,LOC:void 0,ORG:void 0,TIME:void 0},rt={useJieba:!1,hmm:!1,dict:``,moveByChineseWords:!0,moveTillChinesePunctuation:!0},it=class extends e.PluginSettingTab{plugin;displayVersion=0;constructor(e){super(e.app,e),this.plugin=e}display(){let{containerEl:t}=this,n=++this.displayVersion;t.empty();let r=new e.SettingGroup(t).setHeading(`结巴分词`);if(r.addSetting(e=>this.bindToggle(e,`useJieba`).setName(`使用结巴分词`).setDesc(`支持新词发现、自定义词典,需要额外下载,重启 Obsidian 生效`)),this.plugin.libExists().then(e=>{n!==this.displayVersion||!e||r.addSetting(e=>this.bindDeleteLib(e))}).catch(e=>{console.error(`Failed to check jieba wasm binary`,e)}),(this.plugin.settings.useJieba||!window.Intl?.Segmenter)&&(r.addSetting(e=>this.bindToggle(e,`hmm`).setName(`新词发现功能`).setDesc(`采用基于汉字成词能力的 HMM 模型,使用 Viterbi 算法推算未存在于词库内的词。若效果不理想,可选择关闭此选项`)),r.addSetting(e=>this.bindTextArea(e,{get:`dict`,set:`dict`},{cols:30,rows:5}).setName(`用户自定义词典`).setDesc(createFragment(e=>{e.appendText(`通过用户自定义词典来增强歧义纠错能力`),e.createEl(`br`),e.appendText(`词典格式:一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒`),e.createEl(`br`),e.appendText(`重启 Obsidian 后生效`)})))),(this.plugin.settings.useJieba||window.Intl?.Segmenter)&&this.plugin.app.vault.getConfig(`vimMode`)===!0){let n=new e.SettingGroup(t).setHeading(`Vim Mode`);n.addSetting(e=>this.bindToggle(e,`moveByChineseWords`).setName(`使用结巴分词移动光标`).setDesc(`Motion w/e/b/ge 使用结巴分词移动光标 in Vim Normal Mode, 重启Obsidian生效`)),n.addSetting(e=>this.bindToggle(e,`moveTillChinesePunctuation`).setName(`f/t<character> 支持输入英文标点跳转到中文标点`).setDesc(`Motion f/t<character> 支持输入英文标点跳转到中文标点 in Vim Normal Mode, 重启Obsidian生效`))}}bindDeleteLib(t){return t.setName(`删除结巴分词组件`).setDesc(createFragment(e=>{e.appendText(`删除已下载的 `),e.createEl(`code`,{text:this.plugin.libName}),e.appendText(`,重启 Obsidian 后生效`)})).addButton(t=>t.setButtonText(`删除`).setWarning().onClick(async()=>{t.setDisabled(!0);try{new e.Notice(await this.plugin.deleteLib()?`✔️ 已删除结巴分词组件,请重启 Obsidian`:`未找到结巴分词组件`),this.display()}catch(n){console.error(`Failed to delete jieba wasm binary`,n),new e.Notice(`❌ 删除结巴分词组件失败,详情请查看控制台`),t.setDisabled(!1)}}))}bindToggle(e,t){return e.addToggle(e=>{e.setValue(this.plugin.settings[t]).onChange(e=>{this.plugin.settings[t]=e,this.plugin.saveSettings(),t===`useJieba`&&(this.plugin.libExists().then(t=>{!t&&e===!0&&new ze(this.plugin).open()}),this.display())})})}bindTextArea(t,n,r={},i=500){return t.addTextArea(t=>{let{get:a,set:o}=n,s=typeof a==`function`?a:()=>this.plugin.settings[a],c=typeof o==`function`?o:e=>this.plugin.settings[o]=e;t.setValue(s()).onChange((0,e.debounce)(async e=>{c(e),await this.plugin.saveSettings()},i,!0)),Object.assign(t.inputEl,{cols:30,rows:5,...r})})}};function Z(){return require(`node:fs/promises`)}function at(){return require(`node:path`)}var Q=10,ot=/^jieba_rs_wasm_(?:bg|\d+_\d+_\d+)\.wasm$/,$=e.Platform.isDesktopApp?require(`@electron/remote`).app.getPath(`userData`):null,st=class extends e.Plugin{libName=`jieba_rs_wasm_2_4_0.wasm`;async loadLib(){if($)try{let e=await Z().readFile(this.libPath);return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}catch(e){if(e.code===`ENOENT`)return null;throw e}else return await this.app.vault.adapter.exists(this.libPath,!0)?await this.app.vault.adapter.readBinary(this.libPath):null}async libExists(){if($)try{return await Z().access(this.libPath),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}else return await this.app.vault.adapter.exists(this.libPath,!0)}async saveLib(e){$?await Z().writeFile(this.libPath,Buffer.from(e)):await this.app.vault.adapter.writeBinary(this.libPath,e)}async deleteLib(){let e=this.libPath,t=!1;if($){let n=Z();try{await n.unlink(e),t=!0}catch(e){if(e.code!==`ENOENT`)throw e}for(let r of await n.readdir($)){if(!ot.test(r))continue;let i=at().join($,r);if(i!==e)try{await n.unlink(i),t=!0}catch(e){if(e.code!==`ENOENT`)throw e}}}else{let n=this.app.vault.adapter;if(await n.exists(e,!0))try{await n.remove(e),t=!0}catch(e){if(e.code!==`ENOENT`)throw e}let{files:r}=await n.list(this.app.vault.configDir);for(let i of r){let r=i.slice(i.lastIndexOf(`/`)+1);if(!(!ot.test(r)||i===e))try{await n.remove(i),t=!0}catch(e){if(e.code!==`ENOENT`)throw e}}}return t}get libPath(){return $?at().join($,this.libName):[this.app.vault.configDir,this.libName].join(`/`)}async onload(){this.addSettingTab(new it(this)),await this.loadSettings(),await this.loadSegmenter()&&(Ie(this),console.info(`editor word splitting patched`)),this.addChild(new c(this))}settings=rt;async loadSettings(){this.settings=Object.assign({},rt,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}segmenter;async loadSegmenter(){if(!this.settings.useJieba&&window.Intl?.Segmenter)return this.segmenter=new Intl.Segmenter(`zh-CN`,{granularity:`word`}),console.info(`window.Intl.Segmenter loaded`),!0;let e=await this.loadLib();return e?(await $e(e,this.settings.dict),console.info(`Jieba loaded`),!0):(new ze(this).open(),!1)}cut(e,{search:t=!1}={}){return!this.settings.useJieba&&this.segmenter?Array.from(this.segmenter.segment(e)).map(e=>e.segment):t?tt(e,this.settings.hmm):et(e,this.settings.hmm)}getSegRangeFromCursor(e,t){let{from:n,to:r,text:i}=t;if(a(i)){if(e-n>Q){let t=e-Q;a(i.slice(t,e))&&(i=i.slice(t-n),n=t)}if(r-e>Q){let t=e+Q;a(i.slice(e,t))&&(i=i.slice(0,t-r),r=t)}let t=this.cut(i);if(e===r){let e=t.last();return{from:r-e.length,to:r}}let o=0,s=0,c=e-n;for(let e of t){if(s=o+e.length,c>=o&&c<s)break;o+=e.length}return r=s+n,n+=o,{from:n,to:r}}else return null}getSegDestFromGroup(e,t,n){let r=e<t,i=ct(r?n(e,t):n(t,e),r);if(!a(i))return null;let o=this.cut(i);if(o.length===0)return null;let s=0,c;do c=r?o.shift():o.pop(),s+=c.length;while(/\s+/.test(c));return r?e+s:e-s}};function ct(e,t){let n=t?e:[...e].reverse().join(``),r=n.length-1,a=0;for(let{index:e}of n.matchAll(i))if(a++,r=e,a>Q)break;let o=n.slice(0,r+1);return t?o:[...o].reverse().join(``)}module.exports=st;
/* nosourcemap */