- 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.)
2 lines
40 KiB
JavaScript
2 lines
40 KiB
JavaScript
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 */ |