Files
StudyDiary-20251025/.obsidian/plugins/quickadd/main.js
T

97 lines
5.9 MiB
JavaScript
Raw Normal View History

2025-07-08 07:31:48 +08:00
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
2025-08-12 16:40:13 +08:00
var sw=Object.create;var Cd=Object.defineProperty;var vw=Object.getOwnPropertyDescriptor;var Ew=Object.getOwnPropertyNames;var Jw=Object.getPrototypeOf,yw=Object.prototype.hasOwnProperty;var Cw=(b,I,G)=>I in b?Cd(b,I,{enumerable:!0,configurable:!0,writable:!0,value:G}):b[I]=G;var DY=(b,I)=>()=>(I||b((I={exports:{}}).exports,I),I.exports),Wl=(b,I)=>{for(var G in I)Cd(b,G,{get:I[G],enumerable:!0})},op=(b,I,G,l)=>{if(I&&typeof I=="object"||typeof I=="function")for(let Z of Ew(I))!yw.call(b,Z)&&Z!==G&&Cd(b,Z,{get:()=>I[Z],enumerable:!(l=vw(I,Z))||l.enumerable});return b};var EI=(b,I,G)=>(G=b!=null?sw(Jw(b)):{},op(I||!b||!b.__esModule?Cd(G,"default",{value:b,enumerable:!0}):G,b)),gw=b=>op(Cd({},"__esModule",{value:!0}),b);var O=(b,I,G)=>Cw(b,typeof I!="symbol"?I+"":I,G);var HQ=DY((u2,t2)=>{(function(b,I){typeof u2=="object"&&typeof t2<"u"?t2.exports=I():typeof define=="function"&&define.amd?define(I):(b=typeof globalThis<"u"?globalThis:b||self).dayjs_plugin_quarterOfYear=I()})(u2,function(){"use strict";var b="month",I="quarter";return function(G,l){var Z=l.prototype;Z.quarter=function(d){return this.$utils().u(d)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(d-1))};var c=Z.add;Z.add=function(d,m){return d=Number(d),this.$utils().p(m)===I?this.add(3*d,b):c.bind(this)(d,m)};var W=Z.startOf;Z.startOf=function(d,m){var N=this.$utils(),Y=!!N.u(m)||m;if(N.p(d)===I){var V=this.quarter()-1;return Y?this.month(3*V).startOf(b).startOf("day"):this.month(3*V+2).endOf(b).endOf("day")}return W.bind(this)(d,m)}}})});var gI=DY((e2,w2)=>{(function(b,I){typeof e2=="object"&&typeof w2<"u"?w2.exports=I():typeof define=="function"&&define.amd?define(I):(b=typeof globalThis<"u"?globalThis:b||self).dayjs=I()})(e2,function(){"use strict";var b=1e3,I=6e4,G=36e5,l="millisecond",Z="second",c="minute",W="hour",d="day",m="week",N="month",Y="quarter",V="year",a="date",h="Invalid Date",R=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,H=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(C){var i=["th","st","nd","rd"],A=C%100;return"["+C+(i[(A-20)%10]||i[A]||i[0])+"]"}},n=function(C,i,A){var j=String(C);return!j||j.length>=i?C:""+Array(i+1-j.length).join(A)+C},t={s:n,z:function(C){var i=-C.utcOffset(),A=Math.abs(i),j=Math.floor(A/60),k=A%60;return(i<=0?"+":"-")+n(j,2,"0")+":"+n(k,2,"0")},m:function C(i,A){if(i.date()<A.date())return-C(A,i);var j=12*(A.year()-i.year())+(A.month()-i.month()),k=i.clone().add(j,N),T=A-k<0,GI=i.clone().add(j+(T?-1:1),N);return+(-(j+(A-k)/(T?k-GI:GI-k))||0)},a:function(C){return C<0?Math.ceil(C)||0:Math.floor(C)},p:function(C){return{M:N,y:V,w:m,d,D:a,h:W,m:c,s:Z,ms:l,Q:Y}[C]||String(C||"").toLowerCase().replace(/s$/,"")},u:function(C){return C===void 0}},s="en",X={};X[s]=p;var v="$isDayjsObject",z=function(C){return C instanceof _||!(!C||!C[v])},w=function C(i,A,j){var k;if(!i)return s;if(typeof i=="string"){var T=i.toLowerCase();X[T]&&(k=T),A&&(X[T]=A,k=T);var GI=i.split("-");if(!k&&GI.length>1)return C(GI[0])}else{var dI=i.name;X[dI]=i,k=dI}return!j&&k&&(s=k),k||!j&&s},o=function(C,i){if(z(C))return C.clone();var A=typeof i=="object"?i:{};return A.date=C,A.args=arguments,new _(A)},e=t;e.l=w,e.i=z,e.w=function(C,i){return o(C,{locale:i.$L,utc:i.$u,x:i.$x,$offset:i.$offset})};var _=function(){function C(A){this.$L=w(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[v]=!0}var i=C.prototype;return i.parse=function(A){this.$d=function(j){var k=j.date,T=j.utc;if(k===null)return new Date(NaN);if(e.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var GI=k.match(R);if(GI){var dI=GI[2]-1||0,uI=(GI[7]||"0").substring(0,3);return T?new Date(Date.UTC(GI[1],dI,GI[3]||1,GI[4]||0,GI[5]||0,GI[6]||0,uI)):new Date(GI[1],dI,GI[3]||1,GI[4]||0,GI[5]||0,GI[6]||0,uI)}}return new Date(
`||F.charAt(q)==="\r"&&F.charAt(q+1)!==`
`)&&(M++,D===0&&(D=q+1)),q--}var hI=L+M,TI=u-D;return J[u]={line:hI,lineStart:D},{offset:u,line:hI+1,column:TI+1}}function C(F){if(!X(F))throw new Error("not a parser: "+F)}function i(F,u){return typeof F=="string"?F.charAt(u):F[u]}function A(F){if(typeof F!="number")throw new Error("not a number: "+F)}function j(F){if(typeof F!="function")throw new Error("not a function: "+F)}function k(F){if(typeof F!="string")throw new Error("not a string: "+F)}var T=2,GI=3,dI=8,uI=5*dI,HI=4*dI,vI=" ";function KI(F,u){return new Array(u+1).join(F)}function OI(F,u,J){var L=u-F.length;return L<=0?F:KI(J,L)+F}function AI(F,u,J,L){return{from:F-u>0?F-u:0,to:F+J>L?L:F+J}}function DI(F,u){var J,L,M,D,q,hI=u.index,TI=hI.offset,PG=1;if(TI===F.length)return"Got the end of the input";if(z(F)){var iG=TI-TI%dI,xb=TI-iG,Ql=AI(iG,uI,HI+dI,F.length),Ub=N(function(XG){return N(function(Mc){return OI(Mc.toString(16),2,"0")},XG)},function(XG,Mc){var jc=XG.length,kZ=[],Kc=0;if(jc<=Mc)return[XG.slice()];for(var Dc=0;Dc<jc;Dc++)kZ[Kc]||kZ.push([]),kZ[Kc].push(XG[Dc]),(Dc+1)%Mc==0&&Kc++;return kZ}(F.slice(Ql.from,Ql.to).toJSON().data,dI));D=function(XG){return XG.from===0&&XG.to===1?{from:XG.from,to:XG.to}:{from:XG.from/dI,to:Math.floor(XG.to/dI)}}(Ql),L=iG/dI,J=3*xb,xb>=4&&(J+=1),PG=2,M=N(function(XG){return XG.length<=4?XG.join(" "):XG.slice(0,4).join(" ")+" "+XG.slice(4).join(" ")},Ub),(q=(8*(D.to>0?D.to-1:D.to)).toString(16).length)<2&&(q=2)}else{var Oc=F.split(/\r\n|[\n\r\u2028\u2029]/);J=hI.column-1,L=hI.line-1,D=AI(L,T,GI,Oc.length),M=Oc.slice(D.from,D.to),q=D.to.toString().length}var ww=L-D.from;return z(F)&&(q=(8*(D.to>0?D.to-1:D.to)).toString(16).length)<2&&(q=2),m(function(XG,Mc,jc){var kZ,Kc=jc===ww,Dc=Kc?"> ":vI;return kZ=z(F)?OI((8*(D.from+jc)).toString(16),q,"0"):OI((D.from+jc+1).toString(),q," "),[].concat(XG,[Dc+kZ+" | "+Mc],Kc?[vI+KI(" ",q)+" | "+OI("",J," ")+KI("^",PG)]:[])},[],M).join(`
`)}function YG(F,u){return[`
`,"-- PARSING FAILED "+KI("-",50),`
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
`,DI(F,u),`
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
`,(J=u.expected,J.length===1?`Expected:
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
`+J[0]:`Expected one of the following:
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
`+J.join(", ")),`
`].join("");var J}function MI(F){return F.flags!==void 0?F.flags:[F.global?"g":"",F.ignoreCase?"i":"",F.multiline?"m":"",F.unicode?"u":"",F.sticky?"y":""].join("")}function x(){for(var F=[].slice.call(arguments),u=F.length,J=0;J<u;J+=1)C(F[J]);return c(function(L,M){for(var D,q=new Array(u),hI=0;hI<u;hI+=1){if(!(D=e(F[hI]._(L,M),D)).status)return D;q[hI]=D.value,M=D.index}return e(w(M,q),D)})}function FI(){var F=[].slice.call(arguments);if(F.length===0)throw new Error("seqMap needs at least one argument");var u=F.pop();return j(u),x.apply(null,F).map(function(J){return u.apply(null,J)})}function nI(){var F=[].slice.call(arguments),u=F.length;if(u===0)return iZ("zero alternates");for(var J=0;J<u;J+=1)C(F[J]);return c(function(L,M){for(var D,q=0;q<F.length;q+=1)if((D=e(F[q]._(L,M),D)).status)return D;return D})}function UG(F,u){return zc(F,u).or(pb([]))}function zc(F,u){return C(F),C(u),FI(F,u.then(F).many(),function(J,L){return[J].concat(L)})}function AZ(F){k(F);var u="'"+F+"'";return c(function(J,L){var M=L+F.length,D=J.slice(L,M);return D===F?w(M,D):o(L,u)})}function _l(F,u){(function(M){if(!(M instanceof RegExp))throw new Error("not a regexp: "+M);for(var D=MI(M),q=0;q<D.length;q++){var hI=D.charAt(q);if(hI!=="i"&&hI!=="m"&&hI!=="u"&&hI!=="s")throw new Error('unsupported regexp flag "'+hI+'": '+M)}})(F),arguments.length>=2?A(u):u=0;var J=function(M){return RegExp("^(?:"+M.source+")",MI(M))}(F),L=""+F;return c(function(M,D){var q=J.exec(M.slice(D));if(q){if(0<=u&&u<=q.length){var hI=q[0],TI=q[u];return w(D+hI.length,TI)}return o(D,"valid match group (0 to "+q.length+") in "+L)}return o(D,L)})}function pb(F){return c(function(u,J){return w(J,F)})}function iZ(F){return c(function(u,J){return o(J,F)})}function xc(F){if(X(F))return c(function(u,J){var L=F._(u,J);return L.index=J,L.value="",L});if(typeof F=="string")return xc(AZ(F));if(F instanceof RegExp)return xc(_l(F));throw new Error("not a string, regexp, or parser: "+F)}function OY(F){return C(F),c(function(u,J){var L=F._(u,J),M=u.slice(J,L.index);return L.status?o(J,'not "'+M+'"'):w(J,null)})}function yl(F){return j(F),c(function(u,J){var L=i(u,J);return J<u.length&&F(L)?w(J+1,L):o(J,"a character/byte matching "+F)})}function LZ(F,u){arguments.length<2&&(u=F,F=void 0);var J=c(function(L,M){return J._=u()._,J._(L,M)});return F?J.desc(F):J}function Uc(){return iZ("fantasy-land/empty")}W.parse=function(F){if(typeof F!="string"&&!z(F))throw new Error(".parse must be called with a string or Buffer as its argument");var u,J=this.skip(Bc)._(F,0);return u=J.status?{status:!0,value:J.value}:{status:!1,index:bI(F,J.furthest),expected:J.expected},delete _[F],u},W.tryParse=function(F){var u=this.parse(F);if(u.status)return u.value;var J=YG(F,u),L=new Error(J);throw L.type="ParsimmonError",L.result=u,L},W.assert=function(F,u){return this.chain(function(J){return F(J)?pb(J):iZ(u)})},W.or=function(F){return nI(this,F)},W.trim=function(F){return this.wrap(F,F)},W.wrap=function(F,u){return FI(F,this,u,function(J,L){return L})},W.thru=function(F){return F(this)},W.then=function(F){return C(F),x(this,F).map(function(u){return u[1]})},W.many=function(){var F=this;return c(function(u,J){for(var L=[],M=void 0;;){if(!(M=e(F._(u,J),M)).status)return e(w(J,L),M);if(J===M.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");J=M.index,L.push(M.value)}})},W.tieWith=function(F){return k(F),this.map(function(u){if(function(M){if(!v(M))throw new Error("not an array: "+M)}(u),u.length){k(u[0]);for(var J=u[0],L=1;L<u.length;L++)k(u[L]),J+=F+u[L];return J}return""})},W.tie=function(){return this.tieWith("")},W.times=function(F,u){var J=this;return arguments.length<2&&(u=F),A(F),A(u),c(function(L,M){for(var D=[],q=void 0,hI=void 0,TI=0;TI<F;TI+=1){if(hI=e(q=J._(L,M),hI),!q.status)return hI;M=q.index,D.push(q.value)}for(;TI<u&&(hI=e(q=J._(L,M),hI),q.status);TI+=1)M=q.index,D.push(q.value);return e(w(M,D),hI)})},W.result=function(F){return this.map(function(){return F})},W.atMost=function(F){return this.ti
`),Cp=AZ(`\r
`),gp=nI(Cp,yp,Jp).desc("newline"),ew=nI(gp,Bc);c.all=MY,c.alt=nI,c.any=yd,c.cr=Jp,c.createLanguage=function(F){var u={};for(var J in F)({}).hasOwnProperty.call(F,J)&&function(L){u[L]=LZ(function(){return F[L](u)})}(J);return u},c.crlf=Cp,c.custom=function(F){return c(F(w,o))},c.digit=jY,c.digits=KY,c.empty=Uc,c.end=ew,c.eof=Bc,c.fail=iZ,c.formatError=YG,c.index=dZ,c.isParser=X,c.lazy=LZ,c.letter=Hw,c.letters=nw,c.lf=yp,c.lookahead=xc,c.makeFailure=o,c.makeSuccess=w,c.newline=gp,c.noneOf=function(F){return yl(function(u){return F.indexOf(u)<0}).desc("none of '"+F+"'")},c.notFollowedBy=OY,c.of=pb,c.oneOf=function(F){for(var u=F.split(""),J=0;J<u.length;J++)u[J]="'"+u[J]+"'";return yl(function(L){return F.indexOf(L)>=0}).desc(u)},c.optWhitespace=uw,c.Parser=c,c.range=function(F,u){return yl(function(J){return F<=J&&J<=u}).desc(F+"-"+u)},c.regex=_l,c.regexp=_l,c.sepBy=UG,c.sepBy1=zc,c.seq=x,c.seqMap=FI,c.seqObj=function(){for(var F,u={},J=0,L=(F=arguments,Array.prototype.slice.call(F)),M=L.length,D=0;D<M;D+=1){var q=L[D];if(!X(q)){if(v(q)&&q.length===2&&typeof q[0]=="string"&&X(q[1])){var hI=q[0];if(Object.prototype.hasOwnProperty.call(u,hI))throw new Error("seqObj: duplicate key "+hI);u[hI]=!0,J++;continue}throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.")}}if(J===0)throw new Error("seqObj expects at least one named parser, found zero");return c(function(TI,PG){for(var iG,xb={},Ql=0;Ql<M;Ql+=1){var Ub,Oc;if(v(L[Ql])?(Ub=L[Ql][0],Oc=L[Ql][1]):(Ub=null,Oc=L[Ql]),!(iG=e(Oc._(TI,PG),iG)).status)return iG;Ub&&(xb[Ub]=iG.value),PG=iG.index}return e(w(PG,xb),iG)})},c.string=AZ,c.succeed=pb,c.takeWhile=function(F){return j(F),c(function(u,J){for(var L=J;L<u.length&&F(i(u,L));)L++;return w(L,u.slice(J,L))})},c.test=yl,c.whitespace=tw,c["fantasy-land/empty"]=Uc,c["fantasy-land/of"]=pb,c.Binary={bitSeq:h,bitSeqObj:function(F){a();var u={},J=0,L=N(function(D){if(v(D)){var q=D;if(q.length!==2)throw new Error("["+q.join(", ")+"] should be length 2, got length "+q.length);if(k(q[0]),A(q[1]),Object.prototype.hasOwnProperty.call(u,q[0]))throw new Error("duplicate key in bitSeqObj: "+q[0]);return u[q[0]]=!0,J++,q}return A(D),[null,D]},F);if(J<1)throw new Error("bitSeqObj expects at least one named pair, got ["+F.join(", ")+"]");var M=N(function(D){return D[0]},L);return h(N(function(D){return D[1]},L)).map(function(D){return m(function(q,hI){return hI[0]!==null&&(q[hI[0]]=hI[1]),q},{},N(function(q,hI){return[q,D[hI]]},M))})},byte:function(F){if(a(),A(F),F>255)throw new Error("Value specified to byte constructor ("+F+"=0x"+F.toString(16)+") is larger in value than a single byte.");var u=(F>15?"0x":"0x0")+F.toString(16);return c(function(J,L){var M=i(J,L);return M===F?w(L+1,M):o(L,u)})},buffer:function(F){return R("buffer",F).map(function(u){return Buffer.from(u)})},encodedString:function(F,u){return R("string",u).map(function(J){return J.toString(F)})},uintBE:p,uint8BE:p(1),uint16BE:p(2),uint32BE:p(4),uintLE:n,uint8LE:n(1),uint16LE:n(2),uint32LE:n(4),intBE:t,int8BE:t(1),int16BE:t(2),int32BE:t(4),intLE:s,int8LE:s(1),int16LE:s(2),int32LE:s(4),floatBE:R("floatBE",4).map(function(F){return F.readFloatBE(0)}),floatLE:R("floatLE",4).map(function(F){return F.readFloatLE(0)}),doubleBE:R("doubleBE",8).map(function(F){return F.readDoubleBE(0)}),doubleLE:R("doubleLE",8).map(function(F){return F.readDoubleLE(0)})},G.exports=c}])})})(Oa,Oa.exports);var Q=Oa.exports,AX=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u
`)[0];let l=G.substring(2).trim();return Q.makeSuccess(I+G.length,l)}),namedField:b=>Q.alt(b.explicitNamedField,Yg(Yb.field).map(([I,G])=>ja.named(Vg(G),I))),sortField:b=>Q.seqMap(Yb.field.skip(Q.optWhitespace),Q.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1),(I,G)=>{let l=G.length==0?"ascending":G[0].toLowerCase();return l=="desc"&&(l="descending"),l=="asc"&&(l="ascending"),{field:I,direction:l}}),headerClause:b=>b.queryType.chain(I=>{switch(I){case"table":return Ou(()=>({type:I,fields:[],showId:!0}),Q.seqMap(Q.regexp(/WITHOUT\s+ID/i).skip(Q.optWhitespace).atMost(1),Q.sepBy(b.namedField,Q.string(",").trim(Q.optWhitespace)),(G,l)=>({type:I,fields:l,showId:G.length==0})));case"list":return Ou(()=>({type:I,format:void 0,showId:!0}),Q.seqMap(Q.regexp(/WITHOUT\s+ID/i).skip(Q.optWhitespace).atMost(1),Yb.field.atMost(1),(G,l)=>({type:I,format:l.length==1?l[0]:void 0,showId:G.length==0})));case"task":return Q.succeed({type:I});case"calendar":return Q.whitespace.then(Q.seqMap(b.namedField,G=>({type:I,showId:!0,field:G})));default:return Q.fail(`Unrecognized query type '${I}'`)}}).desc("TABLE or LIST or TASK or CALENDAR"),fromClause:b=>Q.seqMap(Q.regexp(/FROM/i),Q.whitespace,Yb.source,(I,G,l)=>l),whereClause:b=>Q.seqMap(Q.regexp(/WHERE/i),Q.whitespace,Yb.field,(I,G,l)=>({type:"where",clause:l})).desc("WHERE <expression>"),sortByClause:b=>Q.seqMap(Q.regexp(/SORT/i),Q.whitespace,b.sortField.sepBy1(Q.string(",").trim(Q.optWhitespace)),(I,G,l)=>({type:"sort",fields:l})).desc("SORT field [ASC/DESC]"),limitClause:b=>Q.seqMap(Q.regexp(/LIMIT/i),Q.whitespace,Yb.field,(I,G,l)=>({type:"limit",amount:l})).desc("LIMIT <value>"),flattenClause:b=>Q.seqMap(Q.regexp(/FLATTEN/i).skip(Q.whitespace),b.namedField,(I,G)=>({type:"flatten",field:G})).desc("FLATTEN <value> [AS <name>]"),groupByClause:b=>Q.seqMap(Q.regexp(/GROUP BY/i).skip(Q.whitespace),b.namedField,(I,G)=>({type:"group",field:G})).desc("GROUP BY <value> [AS <name>]"),clause:b=>Q.alt(b.fromClause,b.whereClause,b.sortByClause,b.limitClause,b.groupByClause,b.flattenClause),query:b=>Q.seqMap(b.headerClause.trim(cX),b.fromClause.trim(cX).atMost(1),b.clause.trim(cX).many(),(I,G,l)=>({header:I,source:G.length==0?gb.folder(""):G[0],operations:l,settings:oX}))}),cX=Q.alt(Q.whitespace,Ot.comment).many().map(b=>b.join("")),ag=b=>b?b.plugins.plugins.dataview?.api:window.DataviewAPI,hg=b=>b.plugins.enabledPlugins.has("dataview");ob.DATE_SHORTHANDS=wX;ob.DURATION_TYPES=eX;ob.EXPRESSION=Yb;ob.KEYWORDS=sX;ob.QUERY_LANGUAGE=Ot;ob.getAPI=ag;ob.isPluginEnabled=hg;ob.parseField=Ng});var _A={};Wl(_A,{default:()=>zI});module.exports=gw(_A);var Qw=require("obsidian");var fl=require("obsidian");function LG(){}function I2(b){return b()}function TY(){return Object.create(null)}function JI(b){b.forEach(I2)}function rI(b){return typeof b=="function"}function UI(b,I){return b!=b?I==I:b!==I||b&&typeof b=="object"||typeof b=="function"}function Ap(b){return Object.keys(b).length===0}function SY(b){return b&&rI(b.destroy)?b.destroy:LG}var G2=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;var qY=class b{constructor(I){O(this,"_listeners","WeakMap"in G2?new WeakMap:void 0);O(this,"_observer");O(this,"options");this.options=I}observe(I,G){return this._listeners.set(I,G),this._getObserver().observe(I,this.options),()=>{this._listeners.delete(I),this._observer.unobserve(I)}}_getObserver(){return this._observer??(this._observer=new ResizeObserver(I=>{for(let G of I)b.entries.set(G.target,G),this._listeners.get(G.target)?.(G)}))}};qY.entries="WeakMap"in G2?new WeakMap:void 0;var ip=!1;function Lp(){ip=!0}function kp(){ip=!1}function U(b,I){b.appendChild(I)}function eG(b,I,G){let l=rp(b);if(!l.getElementById(I)){let Z=K("style");Z.id=I,Z.textContent=G,iw(l,Z)}}function rp(b){if(!b)return document;let I=b.getRootNode?b.getRootNode():b.ownerDocument;return I&&I.host?I:b.ownerDocument}function iw(b,I){return U(b.head||b,I),I.sheet}function XI(b,I,G){b.insertBefore(I,G||null)}function RI(b){b.parentNode&&b.parentNode.removeChild(b)}function zp(b,I){for(let G=0;G<b.length;G+=1)b[G]&&b[G].d(I)}function K(b){r
tags: ${JSON.stringify(Array.from(this._tags).sort())},
knownValues: ${JSON.stringify(this.knownValues)},
impliedValues: ${JSON.stringify(this.impliedValues)}},
reference: ${JSON.stringify(this.reference)}]`}dayjs(){return(0,v2.default)(this.dateWithoutTimezoneAdjustment())}date(){let I=this.dateWithoutTimezoneAdjustment(),G=this.reference.getSystemTimezoneAdjustmentMinute(I,this.get("timezoneOffset"));return new Date(I.getTime()+G*6e4)}addTag(I){return this._tags.add(I),this}addTags(I){for(let G of I)this._tags.add(G);return this}tags(){return new Set(this._tags)}dateWithoutTimezoneAdjustment(){let I=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return I.setFullYear(this.get("year")),I}static createRelativeFromReference(I,G){let l=wQ(I.getDateWithAdjustedTimezone(),G),Z=new b(I);return Z.addTag("result/relativeDate"),G.hour||G.minute||G.second?(Z.addTag("result/relativeDateAndTime"),uQ(Z,l),nQ(Z,l),Z.assign("timezoneOffset",I.getTimezoneOffset())):(tQ(Z,l),Z.imply("timezoneOffset",I.getTimezoneOffset()),G.day?(Z.assign("day",l.getDate()),Z.assign("month",l.getMonth()+1),Z.assign("year",l.getFullYear()),Z.assign("weekday",l.getDay())):G.week?(Z.assign("day",l.getDate()),Z.assign("month",l.getMonth()+1),Z.assign("year",l.getFullYear()),Z.imply("weekday",l.getDay())):(Z.imply("day",l.getDate()),G.month?(Z.assign("month",l.getMonth()+1),Z.assign("year",l.getFullYear())):(Z.imply("month",l.getMonth()+1),G.year?Z.assign("year",l.getFullYear()):Z.imply("year",l.getFullYear())))),Z}},yI=class b{constructor(I,G,l,Z,c){O(this,"refDate");O(this,"index");O(this,"text");O(this,"reference");O(this,"start");O(this,"end");this.reference=I,this.refDate=I.instant,this.index=G,this.text=l,this.start=Z||new r(I),this.end=c}clone(){let I=new b(this.reference,this.index,this.text);return I.start=this.start?this.start.clone():null,I.end=this.end?this.end.clone():null,I}date(){return this.start.date()}addTag(I){return this.start.addTag(I),this.end&&this.end.addTag(I),this}addTags(I){return this.start.addTags(I),this.end&&this.end.addTags(I),this}tags(){let I=new Set(this.start.tags());if(this.end)for(let G of this.end.tags())I.add(G);return I}toString(){let I=Array.from(this.tags()).sort();return`[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(I)} ...}]`}};function Il(b,I,G="\\s{0,5},?\\s{0,5}"){let l=I.replace(/\((?!\?)/g,"(?:");return`${b}${l}(?:${G}${l}){0,10}`}function Is(b){let I;return b instanceof Array?I=[...b]:b instanceof Map?I=Array.from(b.keys()):I=Object.keys(b),I}function S(b){return`(?:${Is(b).sort((G,l)=>l.length-G.length).join("|").replace(/\./g,"\\.")})`}var vQ=EI(gI(),1);function Nl(b){return b<100&&(b>50?b=b+1900:b=b+2e3),b}function LI(b,I,G){let l=(0,vQ.default)(b),Z=l;Z=Z.month(G-1),Z=Z.date(I),Z=Z.year(l.year());let c=Z.add(1,"y"),W=Z.add(-1,"y");return Math.abs(c.diff(l))<Math.abs(Z.diff(l))?Z=c:Math.abs(W.diff(l))<Math.abs(Z.diff(l))&&(Z=W),Z.year()}var VV={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6},y2={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},Cl={...y2,jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12},E2={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},J2={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirt
`)?"":`
`;Z.replaceRange(a+I,V);break}}}}function N1(b,I){return b.commands.findCommand(I)}function l0(b,I){N1(b,I)&&(delete b.commands.commands[I],delete b.commands.editorCommands[I])}function KN(b){return b.vault.getAllLoadedFiles().filter(I=>I instanceof eb.TFolder).map(I=>I.path)}function DN(b){let I=b.split("::").map(G=>G.trim()).filter(Boolean);return{basename:I[0],memberAccess:I.slice(1)}}async function vW(b,I,G={}){let{location:l="tab",direction:Z="vertical",mode:c,focus:W=!0,eState:d}=G,m=typeof I=="string"?b.vault.getAbstractFileByPath(I):I;if(!m)throw new Error(`File not found: ${String(I)}`);let N;switch(l){case"reuse":N=b.workspace.getLeaf(!1);break;case"tab":N=b.workspace.getLeaf("tab");break;case"split":N=b.workspace.getLeaf("split",Z);break;case"window":N=b.workspace.getLeaf("window");break;case"left-sidebar":N=b.workspace.getLeftLeaf(!0);break;case"right-sidebar":N=b.workspace.getRightLeaf(!0);break;default:N=b.workspace.getLeaf("tab")}if(!N)throw new Error("Could not obtain a workspace leaf.");if(await N.openFile(m),c&&c!=="default"&&!(typeof c=="object"&&c.mode==="default")){let Y=N.getViewState(),V={...Y.state??{}};c==="preview"||typeof c=="object"&&c.mode==="preview"?(V.mode="preview",delete V.source):c==="source"?(V.mode="source",V.source=!0):c==="live"||c==="live-preview"?(V.mode="source",V.source=!1):typeof c=="object"&&c.mode==="source"&&(V.mode="source",V.source=c.source),await N.setViewState({...Y,state:{...V,...d}})}return W&&b.workspace.setActiveLeaf(N,{focus:!0}),N}function TV(b,I){let G;return b.workspace.iterateRootLeaves(l=>{let Z=l.view;if(Z instanceof eb.FileView&&Z.file&&I.path===Z.file.path){G=l;return}}),G!==void 0?(b.workspace.setActiveLeaf(G),!0):!1}async function SV(b,I){let G=I.vault.getAbstractFileByPath(b.path);if(!G){B.logError(`failed to load file ${b.path}.`);return}if(G instanceof eb.TFile){let l=V=>window.require&&window.require(V),Z={},c={exports:Z},W=await I.vault.read(G);window.eval(`(function(require, module, exports) { ${W}
})`)(l,c,Z);let m=Z.default||c.exports;if(!m)return;let N=m,{memberAccess:Y}=DN(b.name);if(Y&&Y.length>0){let V;for(;V=Y.shift();)N=N[V]}return N}}function b0(b,I){let G=structuredClone(b);for(let l of I)delete G[l];return G}function Z0(b,I){let G=b.vault.getAbstractFileByPath(I);return!!G&&G instanceof eb.TFolder}function EW(b,I){return b.vault.getMarkdownFiles().filter(G=>G.path.startsWith(I))}function Y1(b){let I=b.frontmatter;if(!I)return[];let G=Object.entries(I);if(!G.length)return[];let l=G.filter(([c,W])=>{let d=c.toLowerCase();return d==="tags"||d==="tag"});return l?l.flatMap(([c,W])=>{if(typeof W=="string")return W.split(/,|\s+/).map(d=>d.trim());if(Array.isArray(W))return W}).filter(c=>!!c):[]}function V1(b,I){let G=b.metadataCache.getFileCache(I);if(!G)return[];let l=[];return G.frontmatter&&l.push(...Y1(G)),G.tags&&Array.isArray(G.tags)&&l.push(...G.tags.map(Z=>Z.tag.replace(/^\#/,""))),l}function c0(b,I){let G=I.replace(/^\#/,"");return b.vault.getMarkdownFiles().filter(l=>V1(b,l).includes(G))}var QZ=class{constructor(){this.variables=new Map}hasConcreteVariable(I){if(!this.variables.has(I))return!1;let G=this.variables.get(I);return G!=null}setTitle(I){this.variables.set("title",I)}replacer(I,G,l){return I.replace(G,function(){return l})}replaceDateInString(I){let G=I;for(;cV.test(G);){let l=cV.exec(G),Z;if(l&&l[1]){let c=l[1].replace("+","").trim();V2.test(c)&&(Z=parseInt(c))}G=this.replacer(G,cV,Db({offset:Z}))}for(;fc.test(G);){let l=fc.exec(G);if(!l)throw new Error(`Unable to parse date format. Invalid syntax in: "${G.substring(Math.max(0,G.search(fc)-10),Math.min(G.length,G.search(fc)+30))}..."`);let Z=l[1],c;if(l[2]){let W=l[2].replace("+","").trim();V2.test(W)&&(c=parseInt(W))}G=this.replacer(G,fc,Db({format:Z,offset:c}))}return G}replaceTimeInString(I){let G=I;for(;Pc.test(G);){if(!Pc.exec(G))throw new Error(`Unable to parse time format. Invalid syntax in: "${G.substring(Math.max(0,G.search(Pc)-10),Math.min(G.length,G.search(Pc)+30))}..."`);G=this.replacer(G,Pc,Db({format:"HH:mm"}))}for(;_c.test(G);){let l=_c.exec(G);if(!l)throw new Error(`Unable to parse formatted time. Invalid syntax in: "${G.substring(Math.max(0,G.search(_c)-10),Math.min(G.length,G.search(_c)+30))}..."`);let Z=l[1];G=this.replacer(G,_c,Db({format:Z}))}return G}async replaceValueInString(I){let G=I;for(this.variables.has("value")&&(this.value=this.variables.get("value"));a2.test(G);)this.value||(this.value=await this.promptForValue()),G=this.replacer(G,a2,this.value);return G}async replaceSelectedInString(I){let G=I,l=await this.getSelectedText();for(;F2.test(G);)G=this.replacer(G,F2,l);return G}async replaceClipboardInString(I){let G=I,l=await this.getClipboardContent();for(;X2.test(G);)G=this.replacer(G,X2,l);return G}async replaceLinkToCurrentFileInString(I){let G=this.getCurrentFileLink(),l=I;if(!G&&WV.test(l))throw new Error("Unable to get current file path. Make sure you have a file open in the editor.");if(!G)return l;for(;WV.test(l);)l=this.replacer(l,WV,G);return l}async replaceVariableInString(I){let G=I;for(;$c.test(G);){let l=$c.exec(G);if(!l)throw new Error(`Unable to parse variable. Invalid syntax in: "${G.substring(Math.max(0,G.search($c)-10),Math.min(G.length,G.search($c)+30))}..."`);let Z=l[1],c="";if(Z){let W=Z.indexOf("|");if(W!==-1&&(c=Z.substring(W+1).trim(),Z=Z.substring(0,W).trim()),!this.hasConcreteVariable(Z)){let d=Z.split(","),m="";d.length===1?m=await this.promptForVariable(Z):m=await this.suggestForValue(d),!m&&c&&(m=c),this.variables.set(Z,m)}G=this.replacer(G,$c,this.getVariableValue(Z))}else break}return G}async replaceFieldVarInString(I){let G=I;for(;IW.test(G);){let l=IW.exec(G);if(!l)throw new Error(`Unable to parse field variable. Invalid syntax in: "${G.substring(Math.max(0,G.search(IW)-10),Math.min(G.length,G.search(IW)+30))}..."`);let Z=l[1]+(l[2]||"");if(Z)this.hasConcreteVariable(Z)||this.variables.set(Z,await this.suggestForField(Z)),G=this.replacer(G,IW,this.getVariableValue(Z));else break}return G}async replaceMathValueInString(I){let G=I;for(;h2.test(G);){let l=await this.promptForMat
`,l++):c=="\\"?(G+="\\",l++):G+="\\":G+=Z}return G}replaceRandomInString(I){let G=I;for(;p2.test(G);){let l=p2.exec(G);if(!l||!l[1])continue;let Z=parseInt(l[1]);if(Z<=0||Z>100)throw new Error(`Random string length must be between 1 and 100. Got: ${Z}`);let c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",W="";for(let d=0;d<Z;d++)W+=c.charAt(Math.floor(Math.random()*c.length));G=G.replace(l[0],W)}return G}replaceTitleInString(I){let G=I,l=this.getVariableValue("title");for(;R2.test(G);)G=this.replacer(G,R2,l);return G}};var a1={title:"My Document Title",name:"Document Name",project:"Project Alpha",category:"Notes",author:"Your Name",status:"Draft",priority:"High",tag:"important",type:"meeting",client:"Acme Corp"},h1={clipboard:"clipboard_content",date:"formatted_date",time:"current_time",random:"random_value",uuid:"unique_id"},R1=[{pattern:/date|time/i,example:"2024-01-15"},{pattern:/title|name/i,example:"Example Title"},{pattern:/tag/i,example:"important"},{pattern:/category|type/i,example:"Notes"},{pattern:/author|user/i,example:"Your Name"},{pattern:/project/i,example:"Project Alpha"},{pattern:/status/i,example:"In Progress"},{pattern:/priority/i,example:"High"},{pattern:/number|count|id/i,example:"001"}];function qV(b){let I=b.toLowerCase(),G=a1[I];return G||`${b}_example`}function fV(b){return h1[b.toLowerCase()]||`${b}_output`}function PV(b){for(let{pattern:I,example:G}of R1)if(I.test(b))return G;return`${b}_value`}function _V(b){return b.length>0?`${b[0]} (${b.length} options)`:"suggestion_list"}function $V(b){return b?.path?b.basename:"current_file"}var wb=class{static generate(I,G=new Date){let l=G.getFullYear(),Z=(G.getMonth()+1).toString().padStart(2,"0"),c=G.getDate().toString().padStart(2,"0"),W=G.getHours().toString().padStart(2,"0"),d=G.getMinutes().toString().padStart(2,"0"),m=G.getSeconds().toString().padStart(2,"0");return I.replace(/YYYY/g,l.toString()).replace(/YY/g,l.toString().slice(-2)).replace(/MMMM/g,this.MONTH_NAMES[G.getMonth()]).replace(/MMM/g,this.MONTH_NAMES_SHORT[G.getMonth()]).replace(/MM/g,Z).replace(/M/g,(G.getMonth()+1).toString()).replace(/dddd/g,this.DAY_NAMES[G.getDay()]).replace(/ddd/g,this.DAY_NAMES_SHORT[G.getDay()]).replace(/DD/g,c).replace(/D/g,G.getDate().toString()).replace(/HH/g,W).replace(/H/g,G.getHours().toString()).replace(/mm/g,d).replace(/m/g,G.getMinutes().toString()).replace(/ss/g,m).replace(/s/g,G.getSeconds().toString()).replace(/ww/g,this.getWeekNumber(G).toString().padStart(2,"0")).replace(/w/g,this.getWeekNumber(G).toString())}static getWeekNumber(I){let G=new Date(I.getFullYear(),0,1),l=(I.getTime()-G.getTime())/864e5;return Math.ceil((l+G.getDay()+1)/7)}};wb.MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],wb.MONTH_NAMES_SHORT=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wb.DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],wb.DAY_NAMES_SHORT=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var JW=class extends QZ{constructor(G,l){super();this.app=G;this.dateParser=l||Kb}async format(G){let l=G;try{l=await this.replaceMacrosInString(l),l=this.replaceDateInString(l),l=this.replaceTimeInString(l),l=await this.replaceValueInString(l),l=await this.replaceSelectedInString(l),l=await this.replaceClipboardInString(l),l=await this.replaceDateVariableInString(l),l=await this.replaceVariableInString(l),l=await this.replaceFieldVarInString(l),l=this.replaceRandomInString(l)}catch{return G}return`Preview: ${l}`}promptForValue(G){return G||"user input"}getVariableValue(G){return qV(G)}getCurrentFileLink(){return $V(this.app.workspace.getActiveFile())}suggestForValue(G){return _V(G)}promptForMathValue(){return Promise.resolve("calculation_result")}getMacroValue(G){return fV(G)}async promptForVariable(G,l){return PV(G)}async getTemplateContent(G){return`[${G.split("/").pop()?.replace(".md","")||G} template content...]`}async getSelectedText(){return"selected_text"}async getClipboardContent(){return"clipboard_content"}async sugge
2025-07-08 07:31:48 +08:00
<div class="qa-suggestion-content">
2025-08-03 11:01:42 +08:00
<span class="suggestion-main-text">${d}</span>
2025-08-12 16:40:13 +08:00
${N}
2025-07-08 07:31:48 +08:00
</div>
2025-08-12 16:40:13 +08:00
<span class="suggestion-sub-text">${m}</span>
`,this.addHoverTooltip(l,Z)}addHoverTooltip(G,l){let Z,c=()=>{clearTimeout(Z),document.querySelector(".qa-file-tooltip")?.remove()};G.addEventListener("mouseenter",()=>{c(),Z=setTimeout(async()=>{let d=this.createTooltip(l);d&&(document.body.appendChild(d),this.positionTooltip(d,G))},200)}),G.addEventListener("mouseleave",c),G.addEventListener("blur",c);let W=()=>c();document.addEventListener("scroll",W,{passive:!0}),G._tooltipCleanup=()=>{c(),document.removeEventListener("scroll",W)}}createTooltip(G){let l=this.app.vault.getAbstractFileByPath(G.path);if(!l||!(l instanceof BF.TFile))return null;let Z=document.createElement("div");return Z.className="qa-file-tooltip",Z.innerHTML=`
<div class="qa-tooltip-header">${l.basename}</div>
2025-07-08 07:31:48 +08:00
<div class="qa-tooltip-content">
2025-08-12 16:40:13 +08:00
<div>Path: ${l.path}</div>
<div>Modified: ${new Date(l.stat.mtime).toLocaleDateString()}</div>
2025-07-08 07:31:48 +08:00
</div>
2025-08-12 16:40:13 +08:00
`,Z}positionTooltip(G,l){let Z=l.getBoundingClientRect();G.style.position="fixed",G.style.left=`${Z.right+10}px`,G.style.top=`${Z.top}px`,G.style.zIndex="1000"}close(){document.querySelectorAll(".qaFileSuggestionItem").forEach(Z=>{let c=Z;c._tooltipCleanup&&c._tooltipCleanup()}),document.querySelectorAll(".qa-file-tooltip").forEach(Z=>Z.remove()),super.close()}async selectSuggestion(G){if(this.inputEl.selectionStart===null)return;let l=this.inputEl.selectionStart,Z=this.lastInput.length,c=this.inputEl.value,W=0,d=this.inputEl.value.slice(l-this.lastInput.length-3,l-this.lastInput.length)==="![[";if(G.matchType==="unresolved")W=this.makeLinkManually(c,G.displayText.replace(/.md$/,""),l,Z);else if(G.matchType==="heading"||G.matchType==="block"){let m=G.displayText;W=this.makeLinkManually(c,m,l,Z)}else if(d)W=this.makeLinkManually(c,G.displayText,l,Z);else{let m=this.app.vault.getAbstractFileByPath(G.file.path);if(m instanceof BF.TFile){let N=G.matchType==="alias"?G.displayText:void 0;W=this.makeLinkObsidianMethod(m,c,l,Z,N)}else W=this.makeLinkManually(c,G.displayText,l,Z)}this.inputEl.trigger("input"),this.close(),this.inputEl.setSelectionRange(W,W)}makeLinkObsidianMethod(G,l,Z,c,W){let d=this.app.vault.getAbstractFileByPath(G.path),m=this.app.fileManager.generateMarkdownLink(d,"","",W??"");return this.inputEl.value=this.getNewInputValueForFileLink(l,m,Z,c),Z-c+m.length+2}makeLinkManually(G,l,Z,c){return this.inputEl.value=this.getNewInputValueForFileName(G,l,Z,c),Z-c+l.length+2}getNewInputValueForFileLink(G,l,Z,c){return`${G.substr(0,Z-c-2)}${l}${G.substr(Z)}`}getNewInputValueForFileName(G,l,Z,c){return`${G.substr(0,Z-c)}${l}]]${G.substr(Z)}`}};var rW=class extends hl{constructor(G,l){super(G,l);this.app=G;this.inputEl=l;this.lastInput="";this.lastInputStart=0;this.lastInputLength=0;this.refreshTagIndex(),zI.instance.registerEvent(this.app.metadataCache.on("resolved",()=>this.refreshTagIndex()))}refreshTagIndex(){let G=this.app.metadataCache.getTags(),l=Object.keys(G);this.tagSet=new Set(l),this.sortedTags=l.sort((Z,c)=>Z.length!==c.length?Z.length-c.length:Z.localeCompare(c)),this.fuse=new Rl(this.sortedTags,{threshold:.4,includeScore:!0,keys:[""]})}getSuggestions(G){if(this.inputEl.selectionStart===null)return[];let l=this.inputEl.selectionStart,Z=G.slice(0,l),c=lQ.exec(Z);if(!c)return[];let W=Z.lastIndexOf("[[");if(c.index===void 0)return[];if(W!==-1&&W<c.index)return[];let d=c[1];this.lastInput=d,this.lastInputStart=c.index,this.lastInputLength=c[0].length;let m=this.sortedTags.filter(a=>a.toLowerCase().startsWith(d.toLowerCase())).slice(0,5),N=this.fuse.search(d).filter(a=>a.score!==void 0&&a.score<.8).map(a=>a.item).slice(0,10),Y=new Set(m),V=[...m];for(let a of N)!Y.has(a)&&V.length<15&&(V.push(a),Y.add(a));return V}renderSuggestion(G,l){let Z=this.renderMatch(G,this.lastInput);l.innerHTML=Z}selectSuggestion(G){let l=this.inputEl;if(l.selectionStart===null)return;let Z=this.lastInputStart,c=Z+this.lastInputLength,W=G.startsWith("#")?G:`#${G}`;Wa(l,Z,c,W,{fromCompletion:!0}),this.close()}};var $I=class b extends zW.Modal{constructor(G,l,Z,c){super(G);this.header=l;this.didSubmit=!1;this.submitClickCallback=G=>this.submit();this.cancelClickCallback=G=>this.cancel();this.submitEnterCallback=G=>{!G.isComposing&&G.key==="Enter"&&(G.preventDefault(),this.submit())};this.placeholder=Z??"",this.input=c??"",this.waitForClose=new Promise((W,d)=>{this.resolvePromise=W,this.rejectPromise=d}),this.display(),this.open(),this.fileSuggester=new kW(G,this.inputComponent.inputEl),this.tagSuggester=new rW(G,this.inputComponent.inputEl)}static Prompt(G,l,Z,c){return new b(G,l,Z,c).waitForClose}display(){this.containerEl.addClass("quickAddModal","qaInputPrompt"),this.contentEl.empty(),this.titleEl.textContent=this.header;let G=this.contentEl.createDiv();this.inputComponent=this.createInputField(G,this.placeholder,this.input),this.createButtonBar(G)}createInputField(G,l,Z){let c=new zW.TextComponent(G);return c.inputEl.style.width="100%",c.setPlaceholder(l??"").setValue(Z??"").onChange(W=>this.input=W).inputEl.addEventListener("keyd
`).filter(Boolean).reduce((l,Z)=>{let[c,W,...d]=Z.split(" "),m=Number.parseInt(W,10);return d.forEach((N,Y)=>l[N]=m+Y),l},{});for(let[l,Z]of Object.entries(G)){let c=T0.default.toByteArray(l);this.rankMap.set(c.join(","),Z),this.textMap.set(Z,c)}this.specialTokens={...b.special_tokens,...I},this.inverseSpecialTokens=Object.entries(this.specialTokens).reduce((l,[Z,c])=>(l[c]=this.textEncoder.encode(Z),l),{})}encode(b,I=[],G="all"){let l=new RegExp(this.patStr,"ug"),Z=MF.specialTokenRegex(Object.keys(this.specialTokens)),c=[],W=new Set(I==="all"?Object.keys(this.specialTokens):I),d=new Set(G==="all"?Object.keys(this.specialTokens).filter(N=>!W.has(N)):G);if(d.size>0){let N=MF.specialTokenRegex([...d]),Y=b.match(N);if(Y!=null)throw new Error(`The text contains a special token that is not allowed: ${Y[0]}`)}let m=0;for(;;){let N=null,Y=m;for(;Z.lastIndex=Y,N=Z.exec(b),!(N==null||W.has(N[0]));)Y=N.index+1;let V=N?.index??b.length;for(let h of b.substring(m,V).matchAll(l)){let R=this.textEncoder.encode(h[0]),H=this.rankMap.get(R.join(","));if(H!=null){c.push(H);continue}c.push(...Oy(R,this.rankMap))}if(N==null)break;let a=this.specialTokens[N[0]];c.push(a),m=N.index+N[0].length}return c}decode(b){let I=[],G=0;for(let c=0;c<b.length;++c){let W=b[c],d=this.textMap.get(W)??this.inverseSpecialTokens[W];d!=null&&(I.push(d),G+=d.length)}let l=new Uint8Array(G),Z=0;for(let c of I)l.set(c,Z),Z+=c.length;return this.textDecoder.decode(l)}},_b=MF;Uy(_b,"specialTokenRegex",b=>new RegExp(b.map(I=>My(I)).join("|"),"g"));function jF(b){switch(b){case"gpt2":return"gpt2";case"code-cushman-001":case"code-cushman-002":case"code-davinci-001":case"code-davinci-002":case"cushman-codex":case"davinci-codex":case"davinci-002":case"text-davinci-002":case"text-davinci-003":return"p50k_base";case"code-davinci-edit-001":case"text-davinci-edit-001":return"p50k_edit";case"ada":case"babbage":case"babbage-002":case"code-search-ada-code-001":case"code-search-babbage-code-001":case"curie":case"davinci":case"text-ada-001":case"text-babbage-001":case"text-curie-001":case"text-davinci-001":case"text-search-ada-doc-001":case"text-search-babbage-doc-001":case"text-search-curie-doc-001":case"text-search-davinci-doc-001":case"text-similarity-ada-001":case"text-similarity-babbage-001":case"text-similarity-curie-001":case"text-similarity-davinci-001":return"r50k_base";case"gpt-3.5-turbo-instruct-0914":case"gpt-3.5-turbo-instruct":case"gpt-3.5-turbo-16k-0613":case"gpt-3.5-turbo-16k":case"gpt-3.5-turbo-0613":case"gpt-3.5-turbo-0301":case"gpt-3.5-turbo":case"gpt-4-32k-0613":case"gpt-4-32k-0314":case"gpt-4-32k":case"gpt-4-0613":case"gpt-4-0314":case"gpt-4":case"gpt-3.5-turbo-1106":case"gpt-35-turbo":case"gpt-4-1106-preview":case"gpt-4-vision-preview":case"gpt-3.5-turbo-0125":case"gpt-4-turbo":case"gpt-4-turbo-2024-04-09":case"gpt-4-turbo-preview":case"gpt-4-0125-preview":case"text-embedding-ada-002":case"text-embedding-3-small":case"text-embedding-3-large":return"cl100k_base";case"gpt-4o":case"gpt-4o-2024-05-13":case"gpt-4o-2024-08-06":case"gpt-4o-2024-11-20":case"gpt-4o-mini-2024-07-18":case"gpt-4o-mini":case"gpt-4o-search-preview":case"gpt-4o-search-preview-2025-03-11":case"gpt-4o-mini-search-preview":case"gpt-4o-mini-search-preview-2025-03-11":case"gpt-4o-audio-preview":case"gpt-4o-audio-preview-2024-12-17":case"gpt-4o-audio-preview-2024-10-01":case"gpt-4o-mini-audio-preview":case"gpt-4o-mini-audio-preview-2024-12-17":case"o1":case"o1-2024-12-17":case"o1-mini":case"o1-mini-2024-09-12":case"o1-preview":case"o1-preview-2024-09-12":case"o1-pro":case"o1-pro-2025-03-19":case"o3":case"o3-2025-04-16":case"o3-mini":case"o3-mini-2025-01-31":case"o4-mini":case"o4-mini-2025-04-16":case"chatgpt-4o-latest":case"gpt-4o-realtime":case"gpt-4o-realtime-preview-2024-10-01":case"gpt-4o-realtime-preview-2024-12-17":case"gpt-4o-mini-realtime-preview":case"gpt-4o-mini-realtime-preview-2024-12-17":case"gpt-4.1":case"gpt-4.1-2025-04-14":case"gpt-4.1-mini":case"gpt-4.1-mini-2025-04-14":case"gpt-4.1-nano":case"gpt-4.1-nano-2025-04-14":case"gpt-4.5-preview":case"gpt-4.5-preview-2025-02-27":retur
! 50257 ICA= ICAg ICAgIA== ICAgICA= ICAgICAg ICAgICAgIA== ICAgICAgICA= ICAgICAgICAg ICAgICAgICAgIA== ICAgICAgICAgICA= ICAgICAgICAgICAg ICAgICAgICAgICAgIA== ICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIA==`},Dy={pat_str:"'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+",special_tokens:{"<|endoftext|>":50256,"<|fim_prefix|>":50281,"<|fim_middle|>":50282,"<|fim_suffix|>":50283},bpe_ranks:`! 0 IQ== Ig== Iw== JA== JQ== Jg== Jw== KA== KQ== Kg== Kw== LA== LQ== Lg== Lw== MA== MQ== Mg== Mw== NA== NQ== Ng== Nw== OA== OQ== Og== Ow== PA== PQ== Pg== Pw== QA== QQ== Qg== Qw== RA== RQ== Rg== Rw== SA== SQ== Sg== Sw== TA== TQ== Tg== Tw== UA== UQ== Ug== Uw== VA== VQ== Vg== Vw== WA== WQ== Wg== Ww== XA== XQ== Xg== Xw== YA== YQ== Yg== Yw== ZA== ZQ== Zg== Zw== aA== aQ== ag== aw== bA== bQ== bg== bw== cA== cQ== cg== cw== dA== dQ== dg== dw== eA== eQ== eg== ew== fA== fQ== fg== oQ== og== ow== pA== pQ== pg== pw== qA== qQ== qg== qw== rA== rg== rw== sA== sQ== sg== sw== tA== tQ== tg== tw== uA== uQ== ug== uw== vA== vQ== vg== vw== wA== wQ== wg== ww== xA== xQ== xg== xw== yA== yQ== yg== yw== zA== zQ== zg== zw== 0A== 0Q== 0g== 0w== 1A== 1Q== 1g== 1w== 2A== 2Q== 2g== 2w== 3A== 3Q== 3g== 3w== 4A== 4Q== 4g== 4w== 5A== 5Q== 5g== 5w== 6A== 6Q== 6g== 6w== 7A== 7Q== 7g== 7w== 8A== 8Q== 8g== 8w== 9A== 9Q== 9g== 9w== +A== +Q== +g== +w== /A== /Q== /g== /w== AA== AQ== Ag== Aw== BA== BQ== Bg== Bw== CA== CQ== Cg== Cw== DA== DQ== Dg== Dw== EA== EQ== Eg== Ew== FA== FQ== Fg== Fw== GA== GQ== Gg== Gw== HA== HQ== Hg== Hw== IA== fw== gA== gQ== gg== gw== hA== hQ== hg== hw== iA== iQ== ig== iw== jA== jQ== jg== jw== kA== kQ== kg== kw== lA== lQ== lg== lw== mA== mQ== mg== mw== nA== nQ== ng== nw== oA== rQ== IHQ= IGE= aGU= aW4= cmU= b24= IHRoZQ== ZXI= IHM= YXQ= IHc= IG8= ZW4= IGM= aXQ= aXM= YW4= b3I= ZXM= IGI= ZWQ= IGY= aW5n IHA= b3U= IGFu YWw= YXI= IHRv IG0= IG9m IGlu IGQ= IGg= IGFuZA== aWM= YXM= bGU= IHRo aW9u b20= bGw= ZW50 IG4= IGw= c3Q= IHJl dmU= IGU= cm8= bHk= IGJl IGc= IFQ= Y3Q= IFM= aWQ= b3Q= IEk= dXQ= ZXQ= IEE= IGlz IG9u aW0= YW0= b3c= YXk= YWQ= c2U= IHRoYXQ= IEM= aWc= IGZvcg== YWM= IHk= dmVy dXI= IHU= bGQ= IHN0 IE0= J3M= IGhl IGl0 YXRpb24= aXRo aXI= Y2U= IHlvdQ== aWw= IEI= IHdo b2w= IFA= IHdpdGg= IDE= dGVy Y2g= IGFz IHdl ICg= bmQ= aWxs IEQ= aWY= IDI= YWc= ZXJz a2U= ICI= IEg= ZW0= IGNvbg== IFc= IFI= aGVy IHdhcw== IHI= b2Q= IEY= dWw= YXRl IGF0 cmk= cHA= b3Jl IFRoZQ== IHNl dXM= IHBybw== IGhh dW0= IGFyZQ== IGRl YWlu YW5k IG9y aWdo ZXN0 aXN0 YWI= cm9t IE4= dGg= IGNvbQ== IEc= dW4= b3A= MDA= IEw= IG5vdA== ZXNz IGV4 IHY= cmVz IEU= ZXc= aXR5 YW50 IGJ5 ZWw= b3M= b3J0 b2M= cXU= IGZyb20= IGhhdmU= IHN1 aXZl b3VsZA== IHNo IHRoaXM= bnQ= cmE= cGU= aWdodA== YXJ0 bWVudA== IGFs dXN0 ZW5k LS0= YWxs IE8= YWNr IGNo IGxl aWVz cmVk YXJk 4oA= b3V0 IEo= IGFi ZWFy aXY= YWxseQ== b3Vy b3N0 Z2g= cHQ= IHBs YXN0 IGNhbg== YWs= b21l dWQ= VGhl IGhpcw== IGRv IGdv IGhhcw== Z2U= J3Q= IFU= cm91 IHNh IGo= IGJ1dA== IHdvcg== IGFsbA== ZWN0 IGs= YW1l IHdpbGw= b2s= IHdoZQ== IHRoZXk= aWRl MDE= ZmY= aWNo cGw= dGhlcg== IHRy Li4= IGludA== aWU= dXJl YWdl IG5l aWFs YXA= aW5l aWNl IG1l IG91dA== YW5z b25l b25n aW9ucw== IHdobw== IEs= IHVw IHRoZWly IGFk IDM= IHVz YXRlZA== b3Vz IG1vcmU= dWU= b2c= IFN0 aW5k aWtl IHNv aW1l cGVy LiI= YmVy aXo= YWN0 IG9uZQ== IHNhaWQ= IC0= YXJl IHlvdXI= Y2M= IFRo IGNs ZXA= YWtl YWJsZQ== aXA= IGNvbnQ= IHdoaWNo aWE= IGlt IGFib3V0 IHdlcmU= dmVyeQ== dWI= IGhhZA== IGVu IGNvbXA= LCI= IElu IHVu IGFn aXJl YWNl YXU= YXJ5 IHdvdWxk YXNz cnk= IOKA Y2w= b29r ZXJl c28= IFY= aWdu aWI= IG9mZg== IHRl dmVu IFk= aWxl b3Nl aXRl b3Jt IDIwMQ== IHJlcw== IG1hbg== IHBlcg== IG90aGVy b3Jk dWx0 IGJlZW4= IGxpa2U= YXNl YW5jZQ== a3M= YXlz b3du ZW5jZQ== IGRpcw== Y3Rpb24= IGFueQ== IGFwcA== IHNw aW50 cmVzcw== YXRpb25z YWls IDQ= aWNhbA== IHRoZW0= IGhlcg== b3VudA== IENo IGFy IGlm IHRoZXJl IHBl IHllYXI= YXY= IG15 IHNv
! 50257 ICA= ICAg ICAgIA== ICAgICA= ICAgICAg ICAgICAgIA== ICAgICAgICA= ICAgICAgICAg ICAgICAgICAgIA== ICAgICAgICAgICA= ICAgICAgICAgICAg ICAgICAgICAgICAgIA== ICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA== ICAgICAgICAgICAgICAgICAgICAgICA= ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIA==`},Ty={explicit_n_vocab:50257,pat_str:"'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+",special_tokens:{"<|endoftext|>":50256},bpe_ranks:"! 0 IQ== Ig== Iw== JA== JQ== Jg== Jw== KA== KQ== Kg== Kw== LA== LQ== Lg== Lw== MA== MQ== Mg== Mw== NA== NQ== Ng== Nw== OA== OQ== Og== Ow== PA== PQ== Pg== Pw== QA== QQ== Qg== Qw== RA== RQ== Rg== Rw== SA== SQ== Sg== Sw== TA== TQ== Tg== Tw== UA== UQ== Ug== Uw== VA== VQ== Vg== Vw== WA== WQ== Wg== Ww== XA== XQ== Xg== Xw== YA== YQ== Yg== Yw== ZA== ZQ== Zg== Zw== aA== aQ== ag== aw== bA== bQ== bg== bw== cA== cQ== cg== cw== dA== dQ== dg== dw== eA== eQ== eg== ew== fA== fQ== fg== oQ== og== ow== pA== pQ== pg== pw== qA== qQ== qg== qw== rA== rg== rw== sA== sQ== sg== sw== tA== tQ== tg== tw== uA== uQ== ug== uw== vA== vQ== vg== vw== wA== wQ== wg== ww== xA== xQ== xg== xw== yA== yQ== yg== yw== zA== zQ== zg== zw== 0A== 0Q== 0g== 0w== 1A== 1Q== 1g== 1w== 2A== 2Q== 2g== 2w== 3A== 3Q== 3g== 3w== 4A== 4Q== 4g== 4w== 5A== 5Q== 5g== 5w== 6A== 6Q== 6g== 6w== 7A== 7Q== 7g== 7w== 8A== 8Q== 8g== 8w== 9A== 9Q== 9g== 9w== +A== +Q== +g== +w== /A== /Q== /g== /w== AA== AQ== Ag== Aw== BA== BQ== Bg== Bw== CA== CQ== Cg== Cw== DA== DQ== Dg== Dw== EA== EQ== Eg== Ew== FA== FQ== Fg== Fw== GA== GQ== Gg== Gw== HA== HQ== Hg== Hw== IA== fw== gA== gQ== gg== gw== hA== hQ== hg== hw== iA== iQ== ig== iw== jA== jQ== jg== jw== kA== kQ== kg== kw== lA== lQ== lg== lw== mA== mQ== mg== mw== nA== nQ== ng== nw== oA== rQ== IHQ= IGE= aGU= aW4= cmU= b24= IHRoZQ== ZXI= IHM= YXQ= IHc= IG8= ZW4= IGM= aXQ= aXM= YW4= b3I= ZXM= IGI= ZWQ= IGY= aW5n IHA= b3U= IGFu YWw= YXI= IHRv IG0= IG9m IGlu IGQ= IGg= IGFuZA== aWM= YXM= bGU= IHRo aW9u b20= bGw= ZW50 IG4= IGw= c3Q= IHJl dmU= IGU= cm8= bHk= IGJl IGc= IFQ= Y3Q= IFM= aWQ= b3Q= IEk= dXQ= ZXQ= IEE= IGlz IG9u aW0= YW0= b3c= YXk= YWQ= c2U= IHRoYXQ= IEM= aWc= IGZvcg== YWM= IHk= dmVy dXI= IHU= bGQ= IHN0 IE0= J3M= IGhl IGl0 YXRpb24= aXRo aXI= Y2U= IHlvdQ== aWw= IEI= IHdo b2w= IFA= IHdpdGg= IDE= dGVy Y2g= IGFz IHdl ICg= bmQ= aWxs IEQ= aWY= IDI= YWc= ZXJz a2U= ICI= IEg= ZW0= IGNvbg== IFc= IFI= aGVy IHdhcw== IHI= b2Q= IEY= dWw= YXRl IGF0 cmk= cHA= b3Jl IFRoZQ== IHNl dXM= IHBybw== IGhh dW0= IGFyZQ== IGRl YWlu YW5k IG9y aWdo ZXN0 aXN0 YWI= cm9t IE4= dGg= IGNvbQ== IEc= dW4= b3A= MDA= IEw= IG5vdA== ZXNz IGV4 IHY= cmVz IEU= ZXc= aXR5 YW50 IGJ5 ZWw= b3M= b3J0 b2M= cXU= IGZyb20= IGhhdmU= IHN1 aXZl b3VsZA== IHNo IHRoaXM= bnQ= cmE= cGU= aWdodA== YXJ0 bWVudA== IGFs dXN0 ZW5k LS0= YWxs IE8= YWNr IGNo IGxl aWVz cmVk YXJk 4oA= b3V0 IEo= IGFi ZWFy aXY= YWxseQ== b3Vy b3N0 Z2g= cHQ= IHBs YXN0 IGNhbg== YWs= b21l dWQ= VGhl IGhpcw== IGRv IGdv IGhhcw== Z2U= J3Q= IFU= cm91 IHNh IGo= IGJ1dA== IHdvcg== IGFsbA== ZWN0 IGs= YW1l IHdpbGw= b2s= IHdoZQ== IHRoZXk= aWRl MDE= ZmY= aWNo cGw= dGhlcg== IHRy Li4= IGludA== aWU= dXJl YWdl IG5l aWFs YXA= aW5l aWNl IG1l IG91dA== YW5z b25l b25n aW9ucw== IHdobw== IEs= IHVw IHRoZWly IGFk IDM= IHVz YXRlZA== b3Vz IG1vcmU= dWU= b2c= IFN0 aW5k aWtl IHNv aW1l cGVy LiI= YmVy aXo= YWN0 IG9uZQ== IHNhaWQ= IC0= YXJl IHlvdXI= Y2M= IFRo IGNs ZXA= YWtl YWJsZQ== aXA= IGNvbnQ= IHdoaWNo aWE= IGlt IGFib3V0 IHdlcmU= dmVyeQ== dWI= IGhhZA== IGVu IGNvbXA= LCI= IElu IHVu IGFn aXJl YWNl YXU= YXJ5 IHdvdWxk YXNz cnk= IOKA Y2w= b29r ZXJl c28= IFY= aWdu aWI= IG9mZg== IHRl dmVu IFk= aWxl b3Nl aXRl b3Jt IDIwMQ== IHJlcw== IG1hbg== IHBlcg== IG90aGVy b3Jk dWx0 IGJlZW4= IGxpa2U= YXNl YW5jZQ== a3M= YXlz b3du ZW5jZQ== IGRpcw== Y3Rpb24= IGFueQ== IGFwcA== IHNw aW50 cmVzcw== YXRpb25z YWls IDQ= aWNhbA== IHRoZW0= IGhlcg== b3VudA== IENo IGFy IGlm IHRoZXJl IHBl IHllYXI= YXY= IG15 IHNvbWU= IHdoZW4= b3VnaA== YWNo IHRoYW4= cnU= b25k
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
${I}`:""}`;function Ha(b){if(b){let I=new _0.Notice(P0("starting",""),1e6);return{setMessage:(G,l)=>{I.setMessage(P0(G,l))},hide:()=>I.hide()}}return{setMessage:(I,G)=>{B.logMessage(`(${I}) ${G}`)},hide:()=>{}}}var el=(b,I)=>{let G=I.name==="gpt-3.5-turbo-16k"?"gpt-3.5-turbo":I.name;G=G==="gpt-4-1106-preview"?"gpt-4":G,G=G==="gpt-3.5-turbo-1106"?"gpt-3.5-turbo":G;try{return S0(G).encode(b).length}catch{return KF("cl100k_base").encode(b).length}};async function l5(b,I,G){if(typeof b!="function")throw new TypeError("Callback must be a function.");if(!(I instanceof Promise))throw new TypeError("Promise must be an instance of Promise.");if(typeof G!="number"||G<=0)throw new TypeError("Interval must be a positive number.");let l=!1;for(I.finally(()=>{l=!0});!l;)b(),await sleep(G)}async function b5(b,I,G){let l;if(I.enable)l=G.find(d=>d.path.endsWith(I.name));else{let d=G.map(m=>m.basename);l=await jG.Suggest(b,d,G)}tl(l,"Prompt template does not exist");let Z=l.path,c=b.vault.getAbstractFileByPath(Z);tl(c instanceof $0.TFile,`${Z} is not a file`);let W=await b.vault.cachedRead(c);return[l.basename,W]}async function Iu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ha(I.showAssistantMessages);try{let{apiKey:Z,model:c,outputVariableName:W,promptTemplate:d,systemPrompt:m,promptTemplateFolder:N}=I,Y=EW(b,N),[V,a]=await b5(b,d,Y);l.setMessage("waiting","QuickAdd is formatting the prompt template.");let h=await G(a),R=["prompting",`Using prompt template "${V}".`];l.setMessage(R[0],R[1]);let p=Qa(b,Z,c,m,I.modelOptions)(h),t=(await TF(p,100,v=>{l.setMessage(R[0],`${R[1]} (${(v/1e3).toFixed(2)}s)`)},v=>{l.setMessage("finished",`Took ${(v/1e3).toFixed(2)}s.`)})).content,s=("> "+t).replace(/\n/g,`
> `),X={[W]:t,[`${W}-quoted`]:s};return setTimeout(()=>l.hide(),5e3),X}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}async function TF(b,I,G,l){let Z=Date.now();return await l5(()=>G(Date.now()-Z),b,I),l(Date.now()-Z),await b}async function Gu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ha(I.showAssistantMessages);try{let{apiKey:Z,model:c,outputVariableName:W,systemPrompt:d,prompt:m,modelOptions:N}=I;l.setMessage("waiting","QuickAdd is formatting the prompt template.");let Y=await G(m),V=["prompting","Using custom prompt."];l.setMessage(V[0],V[1]);let h=Qa(b,Z,c,d,N)(Y),H=(await TF(h,100,t=>{l.setMessage(V[0],`${V[1]} (${(t/1e3).toFixed(2)}s)`)},t=>{l.setMessage("finished",`Took ${(t/1e3).toFixed(2)}s.`)})).content,p=("> "+H).replace(/\n/g,`
> `),n={[W]:H,[`${W}-quoted`]:p};return setTimeout(()=>l.hide(),5e3),n}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}var DF=class{constructor(I,G){this.maxRequests=I;this.intervalMs=G;this.queue=[];this.pendingPromises=[]}add(I){return new Promise((G,l)=>{this.queue.push(async()=>{try{G(await I())}catch(Z){l(Z)}}),this.schedule()})}schedule(){if(this.queue.length===0||this.pendingPromises.length>=this.maxRequests)return;let I=this.queue.shift();if(!I)return;let G=I();this.pendingPromises.push(G),G.finally(()=>{this.pendingPromises=this.pendingPromises.filter(l=>l!==G),this.schedule()}),setTimeout(()=>this.schedule(),this.intervalMs)}};async function lu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ha(I.showAssistantMessages);try{let{apiKey:Z,model:c,outputVariableName:W,systemPrompt:d,promptTemplate:m,text:N,modelOptions:Y}=I;l.setMessage("chunking","Creating prompt chunks with text and prompt template");let V=I.chunkSeparator||/\n/g,a=N.split(V),h=el(d,c),R=await G(m,{chunk:" "}),H=el(R,c),p=f0(c.name)/2-h,n=I.shouldMerge??!0,t=[],s=p-H;if(n){let i=[],A="",j=0;for(let k of a){let T=el(k,c)+1;if(T>s)throw new Error(`The chunk "${k.slice(0,25)}..." is too large to fit in a single prompt.`);j+T<s?(A+=k,j+=T):(i.push(A),A=k,j=T)}A!==""&&i.push(A);for(let k of i){let T=await G(m,{chunk:k});t.push(T)}}else for(let i of a){let A=el(i,c);if(A>p)throw new Error(`Chunk size (${A}) is larger than the maximum chunk size (${p}). Please check your chunk separator.`);let j=await G(m,{chunk:i});t.push(j)}let X=Qa(b,Z,c,d,Y),v=["prompting",`${t.length} prompts being sent.`];l.setMessage(v[0],v[1]);let z=new DF(5,1e3*30),w=Promise.all(t.map(i=>z.add(()=>X(i)))),_=(await TF(w,100,i=>{l.setMessage(v[0],`${v[1]} (${(i/1e3).toFixed(2)}s)`)},i=>{l.setMessage("finished",`Took ${(i/1e3).toFixed(2)}s.`)})).map(i=>i.content).join(I.resultJoiner),bI=("> "+_).replace(/\n/g,`
> `),C={[W]:_,[`${W}-quoted`]:bI};return setTimeout(()=>l.hide(),5e3),C}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}var na=class{static filterFiles(I,G,l){return Object.keys(G).length===0?I:I.filter(Z=>!(G.folder&&!this.matchesFolder(Z,G.folder)||G.tags&&G.tags.length>0&&!this.matchesTags(Z,G.tags,l)))}static matchesFolder(I,G){let l=this.normalizePath(G),Z=this.normalizePath(I.path);return Z.startsWith(l+"/")||Z.substring(0,Z.lastIndexOf("/"))===l}static matchesTags(I,G,l){let Z=l(I);if(!Z||!Z.tags)return!1;let c=Z.tags.map(W=>W.tag.startsWith("#")?W.tag.substring(1):W.tag);return G.every(W=>c.includes(W))}static normalizePath(I){return I.replace(/^\/+|\/+$/g,"")}};var cY=class cY{static parseInlineFields(I){let G=new Map,l=this.removeCodeBlocksAndFrontmatter(I),Z;for(;(Z=cY.INLINE_FIELD_REGEX.exec(l))!==null;){let c=Z[1].trim(),W=Z[2].trim();W&&(G.has(c)||G.set(c,new Set),W.includes(",")?W.split(",").map(m=>m.trim()).filter(m=>m.length>0).forEach(m=>G.get(c)?.add(m)):G.get(c)?.add(W))}return cY.INLINE_FIELD_REGEX.lastIndex=0,G}static removeCodeBlocksAndFrontmatter(I){let G=/^---\r?\n[\s\S]*?\r?\n---\r?\n/;I=I.replace(G,"");let l=/```[\s\S]*?```|`[^`]*`/g;return I=I.replace(l,""),I}static getFieldValues(I,G){return this.parseInlineFields(I).get(G)||new Set}};cY.INLINE_FIELD_REGEX=/(?:^|[\n\r])[ \t]*(?![-*+][ \t]+\[[ xX]\])([^:\n\r]+?)::[ \t]*(.*)$/gmu;var BW=cY;var $b=class b{constructor(){this.cache=new Map;this.TTL=5*60*1e3;this.MAX_CACHE_ENTRIES=100;this.MAX_VALUES_PER_ENTRY=1e3;this.cleanupInterval=null}static getInstance(){return b.instance||(b.instance=new b),b.instance}startAutomaticCleanup(I){if(this.cleanupInterval===null&&typeof window<"u"){let G=window.setInterval(()=>{this.cleanExpired()},6e4);this.cleanupInterval=I(G)}}get(I,G){let l=this.makeKey(I,G),Z=this.cache.get(l);return Z?Date.now()-Z.timestamp>this.TTL?(this.cache.delete(l),null):new Set(Z.values):null}set(I,G,l){let Z=this.makeKey(I,l),c=new Set,W=0;for(let d of G){if(W>=this.MAX_VALUES_PER_ENTRY)break;c.add(d),W++}this.cache.size>=this.MAX_CACHE_ENTRIES&&!this.cache.has(Z)&&this.evictOldestEntries(1),this.cache.set(Z,{values:c,timestamp:Date.now()})}evictOldestEntries(I){let G=Array.from(this.cache.entries()).sort(([,l],[,Z])=>l.timestamp-Z.timestamp).slice(0,I);for(let[l]of G)this.cache.delete(l)}clear(I){if(I){let G=[];for(let l of this.cache.keys())(l.startsWith(`${I}:`)||l===I)&&G.push(l);for(let l of G)this.cache.delete(l)}else this.cache.clear()}cleanExpired(){let I=Date.now(),G=[];for(let[l,Z]of this.cache.entries())I-Z.timestamp>this.TTL&&G.push(l);for(let l of G)this.cache.delete(l)}getStats(){return{size:this.cache.size,maxSize:this.MAX_CACHE_ENTRIES,cleanupInterval:this.cleanupInterval}}destroy(){this.cleanupInterval=null,this.cache.clear()}makeKey(I,G){return G?`${I}:${G}`:I}};var OW=class{static GetApi(I,G,l){return{inputPrompt:(Z,c,W)=>this.inputPrompt(I,Z,c,W),wideInputPrompt:(Z,c,W)=>this.wideInputPrompt(I,Z,c,W),yesNoPrompt:(Z,c)=>this.yesNoPrompt(I,Z,c),infoDialog:(Z,c)=>this.infoDialog(I,Z,c),suggester:(Z,c,W,d=!1)=>this.suggester(I,Z,c,W,d),checkboxPrompt:(Z,c)=>this.checkboxPrompt(I,Z,c),executeChoice:async(Z,c)=>{let W=G.getChoiceByName(Z);W||jI(new Error(`Choice named '${Z}' not found`),"API executeChoice error"),c&&Object.keys(c).forEach(d=>{l.variables.set(d,c[d])}),await l.execute(W),l.variables.clear()},format:async(Z,c,W=!0)=>{c&&Object.keys(c).forEach(m=>{l.variables.set(m,c[m])});let d=await new Wb(I,G,l).formatFileContent(Z);return W&&l.variables.clear(),d},ai:{prompt:async(Z,c,W)=>{let d=lI.getState(),m=d.ai;if(d.disableOnlineFeatures)throw new Error("Rejecting request to `prompt` via API AI module. Online features are disabled in settings.");let N=this.GetApi(I,G,l).format,Y;if(typeof c=="string"){let h=cb(c);if(!h)throw new Error(`Model '${c}' not found.`);Y=h}else Y=c;let V=sc(Y.name);if(!V)throw new Error(`Model '${Y.name}' not found in any provider`);let a=await Gu(I,{model:Y,prompt:Z,apiKey:V.apiKey,modelOptions:W?.modelOptions??{},outputVariableName:W?.variableName??"output",showAs
`,shouldMerge:d?.shouldMerge??!0},(H,p)=>{let n={...m,...p};return V(H,n,!1)});return R?(d?.shouldAssignVariables&&Object.assign(l.variables,R),R):(jI(new Error("AI Assistant returned null"),"Chunked AI Prompt error"),{})},getModels:()=>Jb(),getMaxTokens:Z=>{let c=cb(Z);if(!c)throw new Error(`Model ${Z} not found.`);return c.maxTokens},countTokens(Z,c){return el(Z,c)}},utility:{getClipboard:async()=>await navigator.clipboard.readText(),setClipboard:async Z=>await navigator.clipboard.writeText(Z),getSelectedText:()=>{let Z=I.workspace.getActiveViewOfType(bu.MarkdownView);if(!Z){jI(new Error("No active view"),"Could not get selected text");return}if(!Z.editor.somethingSelected()){jI(new Error("No text selected"),"Could not get selected text");return}return Z.editor.getSelection()}},date:{now:(Z,c)=>Db({format:Z,offset:c}),tomorrow:Z=>Db({format:Z,offset:1}),yesterday:Z=>Db({format:Z,offset:-1})},fieldSuggestions:{getFieldValues:async(Z,c)=>{let W={folder:c?.folder,tags:c?.tags,inline:c?.includeInline??!1},d=I.vault.getMarkdownFiles();d=na.filterFiles(d,W,N=>I.metadataCache.getFileCache(N));let m=new Set;for(let N of d){let V=I.metadataCache.getFileCache(N)?.frontmatter?.[Z];if(V!=null){if(Array.isArray(V))V.forEach(a=>{let h=a.toString().trim();h&&m.add(h)});else if(typeof V!="object"){let a=V.toString().trim();a&&m.add(a)}}if(W.inline){let a=await I.vault.read(N);BW.getFieldValues(a,Z).forEach(R=>m.add(R))}}return Array.from(m).sort()},clearCache:Z=>{$b.getInstance().clear(Z)}}}}static async inputPrompt(I,G,l,Z){try{return await $I.Prompt(I,G,l,Z)}catch{return}}static async wideInputPrompt(I,G,l,Z){try{return await ec.Prompt(I,G,l,Z)}catch{return}}static async yesNoPrompt(I,G,l){try{return await Bl.Prompt(I,G,l)}catch{return}}static async infoDialog(I,G,l){try{return await bY.Show(I,G,l)}catch{return}}static async suggester(I,G,l,Z,c=!1){try{let W;return typeof G=="function"?W=l.map(G):W=G,c?await Ol.Suggest(I,W,l,Z?{placeholder:Z}:{}):await jG.Suggest(I,W,l,Z)}catch{return}}static async checkboxPrompt(I,G,l){try{return await ZY.Open(I,G,l)}catch{return}}};var MW=class extends yW{};var rG=[];for(let b=0;b<256;++b)rG.push((b+256).toString(16).slice(1));function Zu(b,I=0){return(rG[b[I+0]]+rG[b[I+1]]+rG[b[I+2]]+rG[b[I+3]]+"-"+rG[b[I+4]]+rG[b[I+5]]+"-"+rG[b[I+6]]+rG[b[I+7]]+"-"+rG[b[I+8]]+rG[b[I+9]]+"-"+rG[b[I+10]]+rG[b[I+11]]+rG[b[I+12]]+rG[b[I+13]]+rG[b[I+14]]+rG[b[I+15]]).toLowerCase()}var SF,Z5=new Uint8Array(16);function qF(){if(!SF){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");SF=crypto.getRandomValues.bind(crypto)}return SF(Z5)}var c5=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),fF={randomUUID:c5};function W5(b,I,G){if(fF.randomUUID&&!I&&!b)return fF.randomUUID();b=b||{};let l=b.random??b.rng?.()??qF();if(l.length<16)throw new Error("Random bytes length must be >= 16");if(l[6]=l[6]&15|64,l[8]=l[8]&63|128,I){if(G=G||0,G<0||G+16>I.length)throw new RangeError(`UUID byte range ${G}:${G+15} is out of buffer bounds`);for(let Z=0;Z<16;++Z)I[G+Z]=l[Z];return I}return Zu(l)}var jl=W5;var KG=class{constructor(I,G){this.name=I,this.type=G,this.id=jl()}};var cu=require("obsidian");var dG=class extends KG{constructor(I){super(I,"EditorCommand"),this.editorCommandType=I}static getSelectedText(I){return this.getActiveMarkdownView(I).editor.getSelection()}static getActiveMarkdownView(I){let G=I.workspace.getActiveViewOfType(cu.MarkdownView);if(!G)throw B.logError("no active markdown view."),new Error("no active markdown view.");return G}};var jW=class extends dG{constructor(){super("Cut")}static async run(I){let G=dG.getSelectedText(I),l=dG.getActiveMarkdownView(I);if(!G){B.logError("nothing selected.");return}await navigator.clipboard.writeText(G),l.editor.replaceSelection("")}};var KW=class extends dG{constructor(){super("Copy")}static async run(I){let G=dG.getSelectedText(I);await navigator.clipboard.writeText(G)}};var DW=class extends dG{constructor(){super("Paste")}static async run
`)}var mu=require("obsidian"),yb=class extends MW{constructor(I,G,l,Z,c){super(I),this.choice=l,this.plugin=G,this.macro=l?.macro,this.choiceExecutor=Z,this.params={app:this.app,quickAddApi:OW.GetApi(I,G,Z),variables:{},obsidian:d5},c?.forEach((W,d)=>{this.params.variables[d]=W})}async run(){if(!this.macro||!this.macro.commands){B.logError(`No commands in the macro for choice '${this.choice.name}'`);return}await this.executeCommands(this.macro.commands)}getOutput(){return this.output}async executeCommands(I){for(let G of I)G?.type==="Obsidian"&&this.executeObsidianCommand(G),G?.type==="UserScript"&&await this.executeUserScript(G),G?.type==="Choice"&&await this.executeChoice(G),G?.type==="Wait"&&await du(G.time),G?.type==="NestedChoice"&&await this.executeNestedChoice(G),G?.type==="EditorCommand"&&await this.executeEditorCommand(G),G?.type==="AIAssistant"&&await this.executeAIAssistant(G),G?.type==="OpenFile"&&await this.executeOpenFile(G),Object.keys(this.params.variables).forEach(l=>{this.choiceExecutor.variables.set(l,this.params.variables[l])})}async executeUserScript(I){let G=await SV(I,this.app);if(!G){B.logError(`failed to load user script ${I.path}.`);return}G.settings&&(this.userScriptCommand=I);try{await this.userScriptDelegator(G)}catch(l){jI(l,`Failed to run user script ${I.name}`)}this.userScriptCommand&&(this.userScriptCommand=null)}async runScriptWithSettings(I,G){if(typeof I!="function"&&I.entry&&typeof I.entry=="function")return await this.onExportIsFunction(I.entry,G.settings);if(typeof I=="function")return await this.onExportIsFunction(I,G.settings)}async userScriptDelegator(I){switch(typeof I){case"function":this.userScriptCommand?await this.runScriptWithSettings(I,this.userScriptCommand):await this.onExportIsFunction(I);break;case"object":await this.onExportIsObject(I);break;case"bigint":case"boolean":case"number":case"string":this.output=I.toString();break;default:B.logError(`user script in macro for '${this.choice.name}' is invalid`)}}async onExportIsFunction(I,G){this.output=await I(this.params,G||{})}async onExportIsObject(I){if(Object.keys(I).length===0)throw new Error(`user script in macro for '${this.choice.name}' is an empty object`);if(this.userScriptCommand&&I.entry!==null){await this.runScriptWithSettings(I,this.userScriptCommand);return}try{let G=Object.keys(I),l=await jG.Suggest(this.app,G,G);await this.userScriptDelegator(I[l])}catch(G){jI(G,"Error in script object handling","LOG")}}executeObsidianCommand(I){this.app.commands.executeCommandById(I.commandId)}async executeChoice(I){let G=this.plugin.getChoiceById(I.choiceId);if(!G){B.logError("choice could not be found.");return}await this.choiceExecutor.execute(G)}async executeNestedChoice(I){let G=I.choice;if(!G){B.logError(`choice in ${I.name} is invalid`);return}await this.choiceExecutor.execute(G)}async executeEditorCommand(I){switch(I.editorCommandType){case"Cut":await jW.run(this.app);break;case"Copy":await KW.run(this.app);break;case"Paste":await DW.run(this.app);break;case"Paste with format":await TW.run(this.app);break;case"Select active line":SW.run(this.app);break;case"Select link on active line":qW.run(this.app);break}}async executeAIAssistant(I){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let G=lI.getState().ai,l=Jb(),Z=I.model==="Ask me"?await jG.Suggest(this.app,l,l):I.model,c=cb(Z);if(!c)throw new Error(`Model ${Z} not found with any provider.`);let W=new Wb(this.app,zI.instance,this.choiceExecutor),d=sc(c.name);if(!d)throw new Error(`Model ${c.name} not found in the AI providers settings.`);let m=await Iu(this.app,{apiKey:d.apiKey,model:c,outputVariableName:I.outputVariableName,promptTemplate:I.promptTemplate,promptTemplateFolder:G.promptTemplatesFolderPath,systemPrompt:I.systemPrompt,showAssistantMessages:G.showAssistant,modelOptions:I.modelParameters},async N=>W.formatFileContent(N));for(let N in m)this.choiceExecutor.variables.set(N,m[N])}async executeOpenFile(I){try{let Z=(await new Wb(this.app,zI.instance,this.choiceExecutor).formatF
${wI}
\\end{${b}}${wI}`}var Nu=[...m5,...N5.map(Y5)];var Yu=require("obsidian");var V5=new RegExp(/\\([a-z{}A-Z0-9]*)$/),ea=class extends hl{constructor(G){super(zI.instance.app,G);this.inputEl=G;this.lastInput="";this.symbols=Object.assign([],Nu),this.elementsRendered=this.symbols.reduce((l,Z)=>{try{l[Z.toString()]=(0,Yu.renderMath)(Z,!0)}catch{}return l},{})}getSuggestions(G){if(this.inputEl.selectionStart===null)return[];let l=this.inputEl.selectionStart,Z=G.substr(0,l),c=Z.lastIndexOf("\\"),W=Z.substr(c),d=V5.exec(W),m=[];return d&&(this.lastInput=d[1],m=this.symbols.filter(V=>V.toLowerCase().contains(this.lastInput))),new Rl(m,{findAllMatches:!0,threshold:.8}).search(this.lastInput).map(V=>V.item)}renderSuggestion(G,l){G&&(l.setText(G),l.append(this.elementsRendered[G]))}selectSuggestion(G){if(this.inputEl.selectionStart===null)return;let l=this.inputEl.selectionStart,Z=this.lastInput.length,c=this.inputEl.value,W=0,d=G.replace(/\\\\/g,"\\");if(this.inputEl.value=`${c.substr(0,l-Z-1)}${d}${c.substr(l)}`,W=l-Z+G.length-1,this.inputEl.trigger("input"),this.close(),G.contains(wI)){let m=this.inputEl.value.indexOf(wI);this.inputEl.value=this.inputEl.value.replace(wI,""),this.inputEl.setSelectionRange(m,m)}else this.inputEl.setSelectionRange(W,W)}};var wa=class b extends Fl.Modal{constructor(){super(zI.instance.app);this.didSubmit=!1;this.keybindListener=G=>{G.ctrlKey&&G.key==="Enter"&&this.submit(),G.key==="Tab"&&(G.preventDefault(),this.cursorToGoTo())};this.submitClickCallback=G=>this.submit();this.cancelClickCallback=G=>this.cancel();this.open(),this.display(),this.waitForClose=new Promise((G,l)=>{this.resolvePromise=G,this.rejectPromise=l}),new ea(this.inputEl),this.inputEl.focus(),this.inputEl.select()}static Prompt(){return new b().waitForClose}display(){this.containerEl.addClass("quickAddModal","qaMathModal"),this.contentEl.empty();let G=this.contentEl.createDiv();G.className="math math-block is-loaded";let l=new Fl.TextAreaComponent(this.contentEl);l.inputEl.style.width="100%",l.inputEl.style.height="10rem",this.inputEl=l.inputEl,l.onChange((0,Fl.debounce)(async Z=>await this.mathjaxLoop(G,Z),50)),l.inputEl.addEventListener("keydown",this.keybindListener),this.createButtonBar(this.contentEl.createDiv())}async onOpen(){super.onOpen(),await(0,Fl.loadMathJax)()}async mathjaxLoop(G,l){let Z=(0,Fl.renderMath)(l,!0);await(0,Fl.finishRenderMath)(),G.empty(),G.append(Z)}cursorToGoTo(){if(this.inputEl.value.contains(wI)){let G=this.inputEl.value.indexOf(wI);this.inputEl.value=this.inputEl.value.replace(wI,""),this.inputEl.setSelectionRange(G,G)}}createButton(G,l,Z){let c=new Fl.ButtonComponent(G);return c.setButtonText(l).onClick(Z),c}createButtonBar(G){let l=G.createDiv();this.createButton(l,"Ok",this.submitClickCallback).setCta().buttonEl.style.marginRight="0",this.createButton(l,"Cancel",this.cancelClickCallback),l.style.display="flex",l.style.flexDirection="row-reverse",l.style.justifyContent="flex-start",l.style.marginTop="1rem",l.style.gap="0.5rem"}removeInputListeners(){this.inputEl.removeEventListener("keydown",this.keybindListener)}resolveInput(){let G=this.inputEl.value.replace("\\n","\\\\n").replace(new RegExp(wI,"g"),"");this.didSubmit?this.resolvePromise(G):this.rejectPromise("No input given.")}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListeners()}};var fW=class{factory(){return zI.instance.settings.inputPrompt==="multi-line"?ec:$I}};var sa=require("obsidian");function Vu(b,I,G=Kb){if(!b||!b.trim())return{isValid:!1,error:"Empty input"};try{let l=G.parseDate(b);if(l?.moment?.isValid()){let Z=l.moment.toISOString(),c=I?l.moment.format(I):l.moment.format("YYYY-MM-DD");return{isValid:!0,isoString:Z,formatted:c}}else return{isValid:!1,error:"Unable to parse date"}}catch(l){return{isValid:!1,error:`Parse error: ${l instanceof Error?l.message:"Unknown error"}`}}}var PW=class PW extends $I{constructor(G,l,Z,c,W){super(G,l,Z,c??"");this.isOpen=!0;this.dateFormat=W||"YYYY-MM-DD",this.defaultValue=c,this.currentInput=c??"",this.updatePreviewD
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
Suggested values for ${l}: ${V.slice(0,3).join(", ")}`)}return await $I.Prompt(this.app,`Enter value for ${l}`,Y)}let N=`Enter value for ${l}`;return m.hasDefaultValue&&(N=`Enter value for ${l} (default: ${Z.defaultValue})`),await Ol.Suggest(this.app,m.values,m.values,{placeholder:N})}generateCacheKey(G){let l=[];return G.folder&&l.push(`folder:${G.folder}`),G.tags&&l.push(`tags:${G.tags.join(",")}`),G.inline&&l.push("inline:true"),G.caseSensitive&&l.push("case-sensitive:true"),G.excludeFolders&&l.push(`exclude-folders:${G.excludeFolders.join(",")}`),G.excludeTags&&l.push(`exclude-tags:${G.excludeTags.join(",")}`),G.excludeFiles&&l.push(`exclude-files:${G.excludeFiles.join(",")}`),G.defaultValue&&l.push(`default:${G.defaultValue}`),G.defaultEmpty&&l.push("default-empty:true"),G.defaultAlways&&l.push("default-always:true"),l.join("|")}async getMacroValue(G){let l=new ua(this.app,this.plugin,this.plugin.settings.choices,this.choiceExecutor,this.variables),Z=await l.runAndGetOutput(G)??"";return l.getVariables().forEach((c,W)=>{this.variables.set(W,c)}),Z}async getTemplateContent(G){return await new sZ(this.app,this.plugin,G,this.choiceExecutor).run()}async getSelectedText(){let G=this.app.workspace.getActiveViewOfType(jt.MarkdownView);return G?G.editor.getSelection():""}async getClipboardContent(){try{return await navigator.clipboard.readText()}catch{return""}}async replaceInlineJavascriptInString(G){let l=G;for(;Ld.test(l);){let c=Ld.exec(l)?.at(1)?.trim();if(c){let W=new ta(this.app,this.plugin,this.choiceExecutor,this.variables),d=await W.runAndGetOutput(c);for(let m in W.params.variables)this.variables.set(m,W.params.variables[m]);l=typeof d=="string"?this.replacer(l,Ld,d):this.replacer(l,Ld,"")}}return l}async collectValuesManually(G,l){let Z=new Set,c=this.app.vault.getMarkdownFiles();c=qa.filterFiles(c,l,d=>this.app.metadataCache.getFileCache(d));let W=50;for(let d=0;d<c.length;d+=W){let N=c.slice(d,d+W).map(async V=>{let a=new Set;try{let R=this.app.metadataCache.getFileCache(V)?.frontmatter?.[G];if(R!=null){if(Array.isArray(R))R.forEach(H=>{let p=String(H).trim();p&&a.add(p)});else if(typeof R!="object"){let H=String(R).trim();H&&a.add(H)}}if(l.inline)try{let H=await this.app.vault.read(V);BW.getFieldValues(H,G).forEach(n=>a.add(n))}catch(H){B.logWarning(`Could not read file ${V.path} for inline field parsing: ${H}`)}}catch(h){B.logWarning(`Could not process metadata for file ${V.path}: ${h}`)}return a}),Y=await Promise.all(N);for(let V of Y)for(let a of V)Z.add(a)}return Z}};var Kt=require("obsidian");var Nd=class extends yW{constructor(G,l,Z){super(G);this.plugin=l;this.templater=jV(G),this.formatter=new Wb(G,l,Z)}async getOrCreateFolder(G){let l;if(G.length>1){if(l=await jG.Suggest(this.app,G,G),!l)throw new Error("No folder selected.")}else l=G[0];return l?await this.createFolder(l):l="",l}async getFormattedFilePath(G,l,Z){let c=await this.formatter.formatFileName(l,Z);return this.normalizeMarkdownFilePath(G,c)}getTemplateExtension(G){return id.test(G)?".canvas":".md"}normalizeTemplateFilePath(G,l,Z){let c=G?`${G}/`:"",W=this.getTemplateExtension(Z),d=l.replace(Ad,"").replace(id,"");return`${c}${d}${W}`}async incrementFileName(G){let l=lV.exec(G),Z=l&&typeof l.at=="function"?l?.at(1):void 0,c=await this.app.vault.adapter.exists(G),W=G,d=id.test(G)?".canvas":".md";if(c&&Z){let N=parseInt(Z);if(!N)throw new Error("detected numbers but couldn't get them.");W=W.replace(lV,`${N+1}${d}`)}else c&&(W=W.replace(lV,`1${d}`));return await this.app.vault.adapter.exists(W)&&(W=await this.incrementFileName(W)),W}async createFileWithTemplate(G,l){try{let Z=await this.getTemplateContent(l),c=G.split("/").pop()?.replace(/\.md$/,"")||"";this.formatter.setTitle(c);let W=await this.formatter.formatFileContent(Z),d=await this.createFileWithInput(G,W);return await hc(this.app,d),d}catch(Z){return jI(Z,"Could not create file with template"),null}}async overwriteFileWithTemplate(G,l){try{let Z=await this.getTemplateContent(l),c=G.basename;this.formatter.setTitle(c);let W=await this.formatter.formatFileContent(Z);return await this.ap
${m}`:`${m}
${d}`;return await this.app.vault.modify(G,N),await hc(this.app,G),G}catch(c){return jI(c,"Could not append to file with template"),null}}async getTemplateContent(G){let l=G;!Ad.test(G)&&!id.test(G)&&(l+=".md");let Z=this.app.vault.getAbstractFileByPath(l);if(!(Z instanceof Kt.TFile))throw new Error(`Template file not found at path "${l}".`);return await this.app.vault.cachedRead(Z)}};var sZ=class extends Nd{constructor(G,l,Z,c){super(G,l,c);this.templatePath=Z}async run(){let G=await this.getTemplateContent(this.templatePath);return G||B.logError(`Template ${this.templatePath} not found.`),G=await this.formatter.formatFileContent(G),G}};var El=class extends QZ{constructor(G,l,Z){super();this.app=G;this.plugin=l;this.dateParser=Z||Kb}async format(G){let l=G;try{l=this.replaceDateInString(l),l=this.replaceTimeInString(l),l=await this.replaceValueInString(l),l=await this.replaceSelectedInString(l),l=await this.replaceClipboardInString(l),l=await this.replaceDateVariableInString(l),l=await this.replaceVariableInString(l),l=await this.replaceLinkToCurrentFileInString(l),l=await this.replaceMacrosInString(l),l=await this.replaceTemplateInString(l),l=await this.replaceFieldVarInString(l),l=this.replaceRandomInString(l),l=this.replaceLinebreakInString(l)}catch{return G}return l}promptForValue(G){return G||"user input"}getVariableValue(G){return qV(G)}getCurrentFileLink(){return $V(this.app.workspace.getActiveFile())}suggestForValue(G){return _V(G)}getMacroValue(G){return fV(G)}promptForMathValue(){return Promise.resolve("calculation_result")}promptForVariable(G,l){return Promise.resolve(PV(G))}async getTemplateContent(G){try{return await new sZ(this.app,this.plugin,G,void 0).run()}catch{return`Template (not found): ${G}`}}async getSelectedText(){return"selected_text"}async getClipboardContent(){return"clipboard_content"}async suggestForField(G){return Promise.resolve(`${G}_field_value`)}async replaceDateVariableInString(G){let l=G;return l=l.replace(new RegExp(MZ.source,"gi"),(Z,c,W,d)=>{let m=c?.trim(),N=W?.trim(),Y=d?.trim();if(!m||!N)return Z;let V=new Date,a;try{a=wb.generate(N,V)}catch{a=`[${N} format]`}return Y&&(a+=` (default: ${Y})`),a}),l}replaceRandomInString(G){let l=G;return l=l.replace(/{{RANDOM:(\d+)}}/gi,(Z,c)=>{let W=parseInt(c);if(W<=0||W>100)return Z;let d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",m="";for(let N=0;N<Math.min(W,8);N++)m+=d.charAt(Math.floor(Math.random()*d.length));return W>8&&(m+=`... (${W} chars)`),m}),l}};function Rg(b){return typeof b=="object"&&b!==null&&"enabled"in b&&"placement"in b}function vZ(b){return Rg(b)?b:{enabled:b,placement:"replaceSelection"}}var bl=class extends hl{constructor(G,l,Z,c=!1){super(G,l);this.app=G;this.inputEl=l;this.plugin=Z;this.suggestForFileNames=c;this.lastInput="";this.lastInputStart=0;this.tokenDefinitions=[{regex:ZQ,token:1,suggestion:"{{DATE:}}",cursorOffset:2},{regex:bQ,token:0,suggestion:N2},{regex:pQ,token:10,suggestion:Tp},{regex:cQ,token:4,suggestion:Y2},{regex:WQ,token:3,suggestion:OZ},{regex:aQ,token:9,suggestion:Sp},{regex:RQ,token:11,suggestion:Pp},{regex:FQ,token:12,suggestion:_p},{regex:XQ,token:13,suggestion:"{{RANDOM:}}",cursorOffset:2},{regex:dQ,token:5,suggestion:"{{VALUE:}}",cursorOffset:2},{regex:mQ,token:2,suggestion:"{{VDATE:}}",cursorOffset:2}];this.contextualTokens=[{regex:NQ,token:6,suggestion:qp},{regex:hQ,token:14,suggestion:fp},{regex:YQ,token:8,suggestion:"{{TEMPLATE:"},{regex:VQ,token:7,suggestion:"{{MACRO:"}];this.macroNames=Tb(this.plugin.settings.choices).filter(W=>W.type==="Macro").map(W=>W.name),this.templatePaths=this.plugin.getTemplateFiles().map(W=>W.path)}async getSuggestions(G){if(this.inputEl.selectionStart===null)return[];let l=this.inputEl.selectionStart,Z=G.lastIndexOf("{{",l-1);if(Z===-1)return[];let c=G.slice(Z,l);if(c.includes("}}"))return[];if(c.includes(":"))return[];let W=[],d=[...this.tokenDefinitions,...this.suggestForFileNames?[]:this.contextualTokens];for(let m of d){let N=m.regex.exec(c);N&&N.index+N[0].length===c.length&&(this.lastInput=N[0],this.lastInputType=m.token,this.lastIn
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yg(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yY(b,I){var G=typeof Symbol<"u"&&b[Symbol.iterator]||b["@@iterator"];if(!G){if(Array.isArray(b)||(G=DX(b))||I&&b&&typeof b.length=="number"){G&&(b=G);var l=0,Z=function(){};return{s:Z,n:function(){return l>=b.length?{done:!0}:{done:!1,value:b[l++]}},e:function(m){throw m},f:Z}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,W=!1,d;return{s:function(){G=G.call(b)},n:function(){var m=G.next();return c=m.done,m},e:function(m){W=!0,d=m},f:function(){try{!c&&G.return!=null&&G.return()}finally{if(W)throw d}}}}var Cg="finalize",gg="consider";function pd(b,I,G){b.dispatchEvent(new CustomEvent(Cg,{detail:{items:I,info:G}}))}function gZ(b,I,G){b.dispatchEvent(new CustomEvent(gg,{detail:{items:I,info:G}}))}var dh="draggedEntered",CY="draggedLeft",mh="draggedOverIndex",TX="draggedLeftDocument",Gh={LEFT_FOR_ANOTHER:"leftForAnother",OUTSIDE_OF_ANY:"outsideOfAny"};function og(b,I,G){b.dispatchEvent(new CustomEvent(dh,{detail:{indexObj:I,draggedEl:G}}))}function Ag(b,I,G){b.dispatchEvent(new CustomEvent(CY,{detail:{draggedEl:I,type:Gh.LEFT_FOR_ANOTHER,theOtherDz:G}}))}function ig(b,I){b.dispatchEvent(new CustomEvent(CY,{detail:{draggedEl:I,type:Gh.OUTSIDE_OF_ANY}}))}function Lg(b,I,G){b.dispatchEvent(new CustomEvent(mh,{detail:{indexObj:I,draggedEl:G}}))}function kg(b){window.dispatchEvent(new CustomEvent(TX,{detail:{draggedEl:b}}))}var cl={DRAG_STARTED:"dragStarted",DRAGGED_ENTERED:dh,DRAGGED_ENTERED_ANOTHER:"dragEnteredAnother",DRAGGED_OVER_INDEX:mh,DRAGGED_LEFT:CY,DRAGGED_LEFT_ALL:"draggedLeftAll",DROPPED_INTO_ZONE:"droppedIntoZone",DROPPED_INTO_ANOTHER:"droppedIntoAnother",DROPPED_OUTSIDE_OF_ANY:"droppedOutsideOfAny",DRAG_STOPPED:"dragStopped"},qG={POINTER:"pointer",KEYBOARD:"keyboard"},Nh="isDndShadowItem",Yh="data-is-dnd-shadow-item-internal",rg="data-is-dnd-shadow-item-hint",kc="id:dnd-shadow-placeholder-0000",zg="dnd-action-dragged-el",AG="id",xX=0;function me(){xX++}function Ne(){if(xX===0)throw new Error("Bug! trying to decrement when there are no dropzones");xX--}var SX=typeof window>"u",QI=function(){};function UX(b){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,G,l=I?Og(b):b.getBoundingClientRect(),Z=getComputedStyle(b),c=Z.transform;if(c){var W,d,m,N;if(c.startsWith("matrix3d("))G=c.slice(9,-1).split(/, /),W=+G[0],d=+G[5],m=+G[12],N=+G[13];else if(c.startsWith("matrix("))G=c.slice(7,-1).split(/, /),W=+G[0],d=+G[3],m=+G[4],N=+G[5];else return l;var Y=Z.transformOrigin,V=l.x-m-(1-W)*parseFloat(Y),a=l.y-N-(1-d)*parseFloat(Y.slice(Y.indexOf(" ")+1)),h=W?l.width/W:b.offsetWidth,R=d?l.height/d:b.offsetHeight;return{x:V,y:a,width:h,height:R,top:a,right:V+h,bottom:a+R,left:V}}else return l}function Ye(b){var I=UX(b);return{top:I.top+window.scrollY,bottom:I.bottom+window.scrollY,left:I.left+window.scrollX,right:I.right+window.scrollX}}function Ve(b){var I=b.getBoundingClientRect();return{top:I.top+window.scrollY,bottom:I.bottom+window.scrollY,left:I.left+window.scrollX,right:I.right+window.scrollX}}function ae(b){return{x:(b.left+b.right)/2,y:(b.top+b.bottom)/2}}function xg(b,I){return Math.sqrt(Math.pow(b.x-I.x,2)+Math.pow(b.y-I.y,2))}function Vh(b,I){return b.y<=I.bottom&&b.y>=I.top&&b.x>=I.left&&b.x<=I.right}function vY(b){return ae(Ve(b))}function Pt(b,I){var G=vY(b),l=Ye(I);return Vh(G,l)}function Ug(b,I){var G=vY(b),l=vY(I);return xg(G,l)}function Bg(b){var I=Ve(b);return I.right<0||I.left>document.documentElement.scrollWidth||I.bottom<0||I.top>document.documentElement.scrollHeight}function Og(b){for(var I=b.getBoundingClientRect(),G={top:I.top,bottom:I.bottom,left:I.left,right:I.right},l=b.parentElement;l&&l!==document.body;){var Z=l.getBoundingClientRect(),c=window.getComputedStyle(l).overflowY,W=window.getComputedStyle(l).overflowX,d=c==="scroll"||c==="auto",m=W==="scroll"||W==="auto";d&&(G.top=Math.max(G.top,Z.top),G.bottom=Math.min(G.bottom,Z.bottom)),m&&(G.left=Math.max(G.left,Z.left),G.right=Math.min(G.right,Z.right)),l=l.parentElement}return G.top=Math.max(G.top,0),G.bottom=Math.min(G.bottom,window.innerHeight),G.left=Math.max(G.left,0),G.right=Math.min(G.right,window.innerWidth),{top:G.top,bottom:G.bottom,left:G.left,right:G.right,width:Math.max(0,G.right-G.left),height:Math.max(0,G.bottom-G.top)}}var Rd;function qX(){QI(function(){return"resetting indexes cache"}),Rd=new Map}qX();function Mg(b){var I=Array.from(b.children).f
${G?"Deleting this choice will delete all ("+b.choices.length+") choices inside it!":""}
${l?"Deleting this choice will delete its macro commands!":""}
`)}async function re(b,I,G){if(b.type==="Multi"){let Z=await $I.Prompt(I,`Rename ${b.name}`,"",b.name);return Z?{...b,name:Z}:void 0}let l=ZA(b,I,G);if(!l)throw new Error("Invalid choice type");return await l.waitForClose}function ze(b){return{...b,command:!b.command}}var Eh=class{constructor(I){this.plugin=I}enableCommand(I){this.plugin.addCommandForChoice(I)}disableCommand(I){this.plugin.removeCommandForChoice(I)}updateCommand(I,G){this.plugin.removeCommandForChoice(I),this.plugin.addCommandForChoice(G)}};var rb=require("obsidian");var nG=require("obsidian");var xe=require("obsidian");var Jh=null,cA=24*60*60*1e3;async function kY(){if(Jh&&Date.now()-Jh.fetchedAt<cA)return Jh.data;if(lI.getState().disableOnlineFeatures)throw new Error("Fetching models directory is disabled: Online features are turned off.");let I=await(await(0,xe.requestUrl)({url:"https://models.dev/api.json",method:"GET"})).json;return Jh={data:I,fetchedAt:Date.now()},I}function WA(b){let I=b.toLowerCase();return I.includes("openai.com")?"openai":I.includes("openrouter.ai")?"openrouter":I.includes("generativelanguage.googleapis.com")?"google":I.includes("anthropic.com")||I.includes("anthropic")?"anthropic":I.includes("groq.com")?"groq":I.includes("together.ai")?"togetherai":I.includes("huggingface.co")||I.includes("huggingface")?"huggingface":I.includes("github")&&I.includes("models")?"github-models":I.includes("bedrock")||I.includes("aws")?"amazon-bedrock":I.includes("modelscope")?"modelscope":I.includes("dashscope")?"alibaba":I.includes("fireworks.ai")?"fireworks-ai":I.includes("vercel")?"vercel":I.includes("inference.net")?"inference":I.includes("z.ai")||I.includes("zhipu")?"zhipuai":I.includes("deepseek.com")?"deepseek":I.includes("cerebras")?"cerebras":I.includes("venice.ai")?"venice":I.includes("upstage.ai")?"upstage":I.includes("llama.com")||I.includes("api.llama.com")?"llama":I.includes("morphllm")?"morph":I.includes("inceptionlabs.ai")?"inception":I.includes("deepinfra")?"deepinfra":I.includes("gateway.opencode.ai")?"opencode":I.includes("router.huggingface.co")?"huggingface":I.includes("inference.wandb.ai")?"wandb":I.includes("api.githubcopilot.com")?"github-copilot":I.includes("api.openai.com")?"openai":null}async function yh(b){let I=await kY(),G=WA(b.endpoint);if(!G||!(G in I))throw new Error(`Could not determine models.dev provider for endpoint: ${b.endpoint}`);let l=I[G];return Object.values(l.models)}function Ch(b){return b.map(I=>({name:I.id,maxTokens:Math.max(1,Math.floor(I.limit?.context??128e3))}))}function mp(b,I){let G=new Set(b.map(Z=>Z.name)),l=I.filter(Z=>!G.has(Z.name));return b.concat(l)}var kb=require("obsidian");var gh=class extends kb.Modal{constructor(G,l){super(G);this.allModels=[];this.filtered=[];this.selectedIds=new Set;this.mode="add";this.provider=l,this.waitForClose=new Promise((Z,c)=>{this.resolvePromise=Z,this.rejectPromise=c}),this.open(),this.loadData().then(()=>this.display())}async loadData(){try{await kY(),this.allModels=await yh(this.provider),this.filtered=this.allModels.slice()}catch(G){new kb.Notice(`Failed to load model directory: ${G.message??G}`)}}display(){this.contentEl.empty(),this.modalEl.style.width="min(100vw - 32px, 980px)",this.modalEl.style.maxWidth="980px",this.contentEl.style.maxHeight="min(85vh, 800px)",this.contentEl.style.overflowY="auto",this.contentEl.createEl("h2",{text:`Browse models for ${this.provider.name}`}).style.textAlign="center",new kb.Setting(this.contentEl).setName("Search").addText(l=>{l.setPlaceholder("Filter by name or id").onChange(Z=>{let c=Z.trim().toLowerCase();this.filtered=this.allModels.filter(W=>W.id.toLowerCase().includes(c)||(W.name??"").toLowerCase().includes(c)),this.renderList()})}).addExtraButton(l=>{l.setIcon("check"),l.setTooltip("Select all"),l.onClick(()=>{this.filtered.forEach(Z=>this.selectedIds.add(Z.id)),this.renderList()})}).addExtraButton(l=>{l.setIcon("x"),l.setTooltip("Clear selection"),l.onClick(()=>{this.selectedIds.clear(),this.renderList()})}),new kb.Setting(this.contentEl).setName("Import mode").setDesc("Add will append new mod
`)}}).join(`
`)}}var Gw=b=>b.join(""),CA=b=>b.split(/\b/),gA=Iw("<<<<<<< YOUR CHANGES","=======",">>>>>>> APP AUTHORS CHANGES",Gw),oA={splitFunction:CA,joinFunction:Gw,conflictFunction:gA};function tp(b,I,G,l={}){l=Object.assign({},oA,l);let[Z,c,W]=[b,I,G].map(N=>l.splitFunction.call(l,N)),d=UY.merge(Z,c,W);return BY.collateMerge(d,l.joinFunction,l.conflictFunction)}var lw=tp;var cw=require("obsidian");function bw(b,I){return b.line===I.line}function AA(b){let I=[];return b.forEach((G,l)=>{let Z=G.match(/^(#+)[\s]+(.*)$/);Z&&I.push({level:Z[1].length,text:Z[2],line:l})}),I}function Dh(b,I,G=!1){let l=AA(b),Z=l.find(N=>N.line===I),c=!!Z;if(!c&&G)throw new Error(`Target line ${I} is not a heading, but we are trying to find the end of its section.`);if(!c&&!G){let N=Zw(b,I,Y=>Y.trim()==="");return N!==null&&N>I?N-1:I}let W=b.length-1,d=iA(Z,l,b,G),m=rA(b,d,N=>N.trim()!=="");if(m!==null){if(m<I)return I;let N=b[m+1].trim()==="";return m+1===W&&!N?d:m===0?m+1:m}return d}function iA(b,I,G,l){let Z=I.findIndex(Y=>bw(Y,b)),c=Z===I.length-1,W=G.length-1;if(c)return W;let[d,m]=LA(b,I);if(m&&d===I.length)return W;if(m&&l)return I[d].line-1;if(m&&!l)return I[Z+1].line;if(!l&&!m){let Y=kA(b.line,I);return Y===null?W:Y}return W}function LA(b,I){let G=I.findIndex(Z=>bw(Z,b)),l=Zw(I,G,Z=>Z.level<=b.level);return l===null?[-1,!1]:[l,!0]}function kA(b,I){let G=I.findIndex(l=>l.line>b);return G===-1?null:G}function rA(b,I,G){for(let l=I-1;l>=0;l--)if(G(b[l]))return l;return null}function Zw(b,I,G){for(let l=I+1;l<b.length;l++)if(G(b[l]))return l;return null}var Th=class extends Wb{constructor(){super(...arguments);this.file=null;this.fileContent="";this.templaterProcessed=!1}async formatContentWithFile(G,l,Z,c){if(this.choice=l,this.file=c,this.fileContent=Z,!l||!c||Z===null)return G;let W=l.insertAfter.enabled||l.prepend||!l.captureToActiveFile;return await this.formatFileContent(G,W)}async formatContent(G,l){return this.choice=l,l?await this.formatFileContent(G):G}async formatFileContent(G,l=!0){let Z=await super.formatFileContent(G);if(Z=this.replaceLinebreakInString(Z),l&&this.file&&!this.templaterProcessed){let d=await KV(this.app,Z,this.file);d&&(Z=d),this.templaterProcessed=!0}if(Z.trim()==="")return this.fileContent;if(this.choice.prepend){let d=!this.choice.task;return`${this.fileContent}${d?`
`:""}${Z}`}if(this.choice.insertAfter.enabled)return await this.insertAfterHandler(Z);let W=this.file?this.getFrontmatterEndPosition(this.file):null;return W?this.insertTextAfterPositionInBody(Z,this.fileContent,W):`${Z}${this.fileContent}`}async formatContentOnly(G){let l=await super.formatFileContent(G);return l=this.replaceLinebreakInString(l),l.trim()===""?this.fileContent:l}normalizeTarget(G){return G.replace("\\n","").trimEnd()}findInsertAfterIndex(G,l){let Z=this.normalizeTarget(l),c=-1;for(let W=0;W<G.length;W++){let d=G[W].trimStart();if(d===Z)return W;if(d.startsWith(Z)){let m=d.slice(Z.length);if(/^\s*$/.test(m))return W;c===-1&&(c=W)}}return c}async insertAfterHandler(G){let l=await this.format(this.choice.insertAfter.after),Z=PF(this.fileContent),c=this.findInsertAfterIndex(Z,l);if(c===-1){if(this.choice.insertAfter?.createIfNotFound)return await this.createInsertAfterIfNotFound(G);jI(new Error("Unable to find insert after line in file"),"Insert After Error")}if(this.choice.insertAfter?.insertAtEnd){if(!this.file)throw new Error("Tried to get sections without file.");c=Dh(Z,c,!!this.choice.insertAfter.considerSubsections)??Z.length-1}return this.insertTextAfterPositionInBody(G,this.fileContent,c)}async createInsertAfterIfNotFound(G){let Z=`${this.replaceLinebreakInString(await this.format(this.choice.insertAfter.after))}
${G}`;if(this.choice.insertAfter?.createIfNotFoundLocation===od){let c=this.file?this.getFrontmatterEndPosition(this.file):-1;return this.insertTextAfterPositionInBody(Z,this.fileContent,c)}if(this.choice.insertAfter?.createIfNotFoundLocation===bV)return`${this.fileContent}
${Z}`;if(this.choice.insertAfter?.createIfNotFoundLocation===ZV)try{let c=this.app.workspace.getActiveViewOfType(cw.MarkdownView);if(!c)throw new Error("No active view.");let d=c.editor.getCursor().line;if(this.choice.insertAfter?.insertAtEnd){if(!this.file)throw new Error("Tried to get sections without file.");let N=PF(this.fileContent);d=Dh(N,d,!!this.choice.insertAfter.considerSubsections)??N.length-1}return this.insertTextAfterPositionInBody(Z,this.fileContent,d)}catch(c){jI(c,`Unable to insert line '${this.choice.insertAfter.after}' at cursor position`)}}getFrontmatterEndPosition(G){let l=this.app.metadataCache.getFileCache(G);return!l||!l.frontmatter?(B.logMessage("could not get frontmatter. Maybe there isn't any."),-1):l.frontmatterPosition?l.frontmatterPosition.end.line:-1}insertTextAfterPositionInBody(G,l,Z){if(Z===-1){let m=!this.choice.task;return`${G}${m?`
`:""}${l}`}let c=l.split(`
2025-08-03 11:01:42 +08:00
`),W=c.slice(0,Z+1).join(`
`),d=c.slice(Z+1).join(`
`);return`${W}
2025-08-12 16:40:13 +08:00
${G}${d}`}};function Ww(b){return b.captureToActiveFile&&!b.prepend&&!b.insertAfter.enabled?"currentLine":b.insertAfter.enabled?"insertAfter":b.prepend?"prepend":"append"}var dw=4e3,Sh=class extends MW{constructor(G,l,Z,c){super(G);this.choiceExecutor=c;this.choice=Z,this.plugin=l,this.formatter=new Th(G,l,c)}showSuccessNotice(G,{wasNewFile:l,action:Z}){let c=`'${G.basename}'`;if(l){new ep.Notice(`Created and captured to ${c}`,dw);return}let W="";switch(Z){case"currentLine":W=`Captured to current line in ${c}`;break;case"prepend":W=`Captured to top of ${c}`;break;case"append":W=`Captured to ${c}`;break;case"insertAfter":{let d=this.choice.insertAfter.after;W=d?`Captured to ${c} under '${d}'`:`Captured to ${c}`;break}}new ep.Notice(W,dw)}async run(){try{let G=await this.getFormattedPathToCaptureTo(this.choice.captureToActiveFile),l=this.getCaptureContent(),Z,c=await this.fileExists(G);if(c)Z=this.onFileExists.bind(this);else if(this.choice?.createFileIfItDoesntExist?.enabled)Z=this.onCreateFileIfItDoesntExist.bind(this);else{B.logWarning(`The file ${G} does not exist and "Create file if it doesn't exist" is disabled.`);return}let{file:W,newFileContent:d,captureContent:m}=await Z(G,l);if(this.choice.captureToActiveFile&&!this.choice.prepend&&!this.choice.insertAfter.enabled){let Y=await KV(this.app,m,W);G0(Y,this.app)}else await this.app.vault.modify(W,d),await hc(this.app,W);if(this.plugin.settings.showCaptureNotification){let Y=Ww(this.choice);this.showSuccessNotice(W,{wasNewFile:!c,action:Y})}let N=vZ(this.choice.appendLink);N.enabled&&DV(this.app,this.app.fileManager.generateMarkdownLink(W,""),N.placement),this.choice.openFile&&W&&(TV(this.app,W)||await vW(this.app,W,this.choice.fileOpening))}catch(G){jI(G,`Error running capture choice "${this.choice.name}"`)}}getCaptureContent(){let G;return this.choice.format.enabled?G=this.choice.format.format:G=OZ,this.choice.task&&(G=`- [ ] ${G}
`),G}async getFormattedPathToCaptureTo(G){if(G){let N=this.app.workspace.getActiveFile();return tl(N,"Cannot capture to active file - no active file."),N.path}let l=this.choice.captureTo,Z=await this.formatFilePath(l),c=Z.replace(/^\/$|\/\.md$|^\.md$/,""),W=c==="",d=W||Z0(this.app,c),m=Z.startsWith("#");if(d)return this.selectFileInFolder(c,W);if(m){let N=Z.replace(/\.md$/,"");return this.selectFileWithTag(N)}return Z}async selectFileInFolder(G,l){let Z=G.endsWith("/")||l?G:`${G}/`,c=EW(this.app,Z);tl(c.length>0,`Folder ${Z} is empty.`);let W=c.map(N=>N.path),d=await Ol.Suggest(this.app,W.map(N=>N.replace(Z,"")),W);tl(!!d&&d.length>0,"No file selected for capture.");let m=d.startsWith(`${Z}`)?d:`${Z}/${d}`;return await this.formatFilePath(m)}async selectFileWithTag(G){let l=G.startsWith("#")?G:`#${G}`,Z=c0(this.app,l);tl(Z.length>0,`No files with tag ${G}.`);let c=Z.map(d=>d.path),W=await Ol.Suggest(this.app,c,c);return tl(!!W&&W.length>0,"No file selected for capture."),await this.formatFilePath(W)}async onFileExists(G,l){let Z=this.getFileByPath(G);if(!Z)throw new Error("File not found");this.formatter.setTitle(Z.basename);let c=await this.formatter.formatContentOnly(l),W=await this.app.vault.read(Z),d=await this.formatter.formatContentWithFile(c,this.choice,W,Z),m=await this.app.vault.read(Z),N=d;if(m!==W){let Y=lw(m,W,d);tl(!Y.isSuccess,()=>`The file ${G} has been modified since the last read.
2025-07-08 07:31:48 +08:00
QuickAdd could not merge the versions two without conflicts, and will not modify the file.
2025-08-12 16:40:13 +08:00
This is in order to prevent data loss.`),N=Y.joinedResults()}return{file:Z,newFileContent:N,captureContent:c}}async onCreateFileIfItDoesntExist(G,l){let Z=G.split("/").pop()?.replace(/\.md$/,"")||"";this.formatter.setTitle(Z);let c=await this.formatter.formatContentOnly(l),W="";this.choice.createFileIfItDoesntExist.createWithTemplate&&(W=await new sZ(this.app,this.plugin,this.choice.createFileIfItDoesntExist.template,this.choiceExecutor).run());let d=await this.createFileWithInput(G,W);this.choice.createFileIfItDoesntExist.createWithTemplate&&W&&await hc(this.app,d);let m=await this.app.vault.cachedRead(d),N=await this.formatter.formatContentWithFile(c,this.choice,m,d);return{file:d,newFileContent:N,captureContent:c}}async formatFilePath(G){let l=await this.formatter.formatFileName(G,this.choice.name);return this.normalizeMarkdownFilePath("",l)}};var qh=require("obsidian");var oZ=class b extends qh.FuzzySuggestModal{constructor(G,l,Z){super(G.app);this.plugin=G;this.choices=l;this.choiceExecutor=new WZ(this.app,this.plugin);Z&&(this.choiceExecutor=Z)}static Open(G,l,Z){new b(G,l,Z).open()}renderSuggestion(G,l){l.empty(),qh.MarkdownRenderer.renderMarkdown(G.item.name,l,"",this.plugin),l.classList.add("quickadd-choice-suggestion")}getItemText(G){return G.name}getItems(){return this.choices}async onChooseItem(G,l){G.type==="Multi"?this.onChooseMultiType(G):await this.choiceExecutor.execute(G)}onChooseMultiType(G){let l=[...G.choices];G.name!="\u2190 Back"&&l.push(new td("\u2190 Back").addChoices(this.choices)),b.Open(this.plugin,l)}};var WZ=class{constructor(I,G){this.app=I;this.plugin=G;this.variables=new Map}async execute(I){switch(I.type){case"Template":{let G=I;await this.onChooseTemplateType(G);break}case"Capture":{let G=I;await this.onChooseCaptureType(G);break}case"Macro":{let G=I;await this.onChooseMacroType(G);break}case"Multi":{let G=I;this.onChooseMultiType(G);break}default:break}}async onChooseTemplateType(I){await new Bh(this.app,this.plugin,I,this).run()}async onChooseCaptureType(I){await new Sh(this.app,this.plugin,I,this).run()}async onChooseMacroType(I){let G=new yb(this.app,this.plugin,I,this,this.variables);await G.run(),Object.entries(G.params.variables).forEach(([l,Z])=>{this.variables.set(l,Z)})}onChooseMultiType(I){oZ.Open(this.plugin,I.choices,this)}};var mw={description:"Use QuickAdd template folder instead of Obsidian templates plugin folder / Templater templates folder.",migrate:async b=>{try{let I=b.app.plugins.plugins.templater,G=b.app.internalPlugins.plugins.templates;if(!I&&!G){B.logMessage("No template plugin found. Skipping migration.");return}if(G){let l=G.instance.options;l.folder&&(b.settings.templateFolderPath=l.folder,B.logMessage("Migrated template folder path to Obsidian Templates' setting."))}if(I){let l=I.settings;l.template_folder&&(b.settings.templateFolderPath=l.template_folder,B.logMessage("Migrated template folder path to Templaters setting."))}}catch(I){throw B.logError("Failed to migrate template folder path."),I}}};function fh(b){return b===null||typeof b!="object"||!("type"in b)||!("choices"in b)?!1:b.type==="Multi"&&b.choices!==void 0}function Ph(b){return b===null||typeof b!="object"||!("choice"in b)?!1:b.choice!==void 0}function wp(b){return typeof b!="object"||b===null?!1:"incrementFileName"in b}function Nw(b){for(let I of b)fh(I)&&(I.choices=Nw(I.choices)),wp(I)&&(I.setFileExistsBehavior=!0,I.fileExistsMode="Increment the file name",delete I.incrementFileName);return b}function zA(b){for(let I of b)if(Array.isArray(I.commands))for(let G of I.commands)Ph(G)&&wp(G.choice)&&(G.choice.setFileExistsBehavior=!0,G.choice.fileExistsMode="Increment the file name",delete G.choice.incrementFileName);return b}var xA={description:"'Increment file name' setting moved to 'Set default behavior if file already exists' setting",migrate:async b=>{let I=structuredClone(b.settings.choices),G=Nw(I),l=structuredClone(b.settings.macros||[]),Z=zA(l);b.settings.choices=structuredClone(G),b.settings.macros=Z}},Yw=xA;function sp(b){return b.type==="Capture"}function Vw(b){for(let I of b)fh(I)&&(
2025-07-08 07:31:48 +08:00
2025-08-03 11:01:42 +08:00
${Z}
2025-07-08 07:31:48 +08:00
2025-08-12 16:40:13 +08:00
QuickAdd will now revert to backup.`),b.settings=l}}b.saveSettings()}var pw=qA;var Jd=require("obsidian");async function fA(b,I,G){let l=await fetch(`https://api.github.com/repos/${b}/${I}/releases`),Z=await l.json();if(!l.ok&&"message"in Z||!Array.isArray(Z))throw new Error(`Failed to fetch releases: ${Z.message??"Unknown error"}`);let c=Z.findIndex(W=>W.tag_name===G);if(c===-1)throw new Error(`Could not find release with tag ${G}`);return Z.slice(0,c).filter(W=>!W.draft&&!W.prerelease)}function PA(b,I=1){let G=b.split(`
`);for(let l=0;l<G.length;l++)G[l].startsWith("#")&&(G[l]="#".repeat(I)+G[l]);return G.join(`
`)}var _h=class extends Jd.Modal{constructor(I,G){super(I),this.previousVersion=G,this.releaseNotesPromise=fA("chhoumann","quickadd",G),this.releaseNotesPromise.then(l=>{if(this.releases=l,this.releases.length===0){this.close();return}this.display()}).catch(l=>{B.logError(`Failed to fetch release notes: ${l}`)})}onOpen(){let{contentEl:I}=this;I.empty(),I.createEl("h1",{text:"Fetching release notes..."})}onClose(){let{contentEl:I}=this;I.empty()}display(){let{contentEl:I}=this;I.empty(),I.classList.add("quickadd-update-modal-container");let G=`### New in QuickAdd v${this.releases[0].tag_name}
`,l="Thank you for using QuickAdd! If you like the plugin, please consider supporting me by buying me a coffee. With your sponsorship, I'll be able to contribute more to my existing projects, start new ones, and be more responsive to issues & feature requests.",Z='<div class="quickadd-bmac-container"><a href="https://www.buymeacoffee.com/chhoumann" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 40px !important;width: 144px !important;" ></a></div>',c=I.createDiv("quickadd-update-modal"),W=this.releases.map(Y=>Y.body).join(`
2025-07-08 07:31:48 +08:00
---
2025-08-12 16:40:13 +08:00
`),d=`And now, here is everything new in QuickAdd since your last update (v${this.previousVersion}):`,N=`${G}
${l}
2025-07-08 07:31:48 +08:00
${Z}
I'd love to get your feedback on QuickAdd! Please fill out this <a href="https://forms.gle/WRq1ewcKK8qmkqps6">feedback form</a> to let me know what you think.
2025-08-03 11:01:42 +08:00
${d}
2025-07-08 07:31:48 +08:00
---
2025-08-12 16:40:13 +08:00
${PA(W)}`;Jd.MarkdownRenderer.renderMarkdown(N,c,this.app.vault.getRoot().path,new Jd.Component)}};var tG=require("obsidian");var $h=class extends tG.Modal{constructor(G,l){super(G);this.showAdvancedSettings=!1;this.settings=l,this.waitForClose=new Promise((Z,c)=>{this.rejectPromise=c,this.resolvePromise=Z}),this.open(),this.display()}get systemPromptTokenLength(){let G=cb(this.settings.model);return G?el(this.settings.systemPrompt,G):Number.POSITIVE_INFINITY}display(){this.contentEl.empty();let G=this.contentEl.createEl("h2",{text:`${this.settings.name} Settings`});G.style.textAlign="center",G.style.cursor="pointer",G.style.userSelect="none",G.addEventListener("click",async()=>{try{let l=await $I.Prompt(this.app,"New name",this.settings.name,this.settings.name);l&&l!==this.settings.name&&(this.settings.name=l,this.reload())}catch{}}),this.addResultJoinerSetting(this.contentEl),this.addChunkSeparatorSetting(this.contentEl),this.addMaxTokensSetting(this.contentEl),this.addMergeChunksSetting(this.contentEl),this.addModelSetting(this.contentEl),this.addOutputVariableNameSetting(this.contentEl),this.addShowAdvancedSettingsToggle(this.contentEl),this.showAdvancedSettings&&(this.settings.modelParameters||(this.settings.modelParameters={}),this.addTemperatureSetting(this.contentEl),this.addTopPSetting(this.contentEl),this.addFrequencyPenaltySetting(this.contentEl),this.addPresencePenaltySetting(this.contentEl)),this.addSystemPromptSetting(this.contentEl)}reload(){this.contentEl.empty(),this.display()}addModelSetting(G){new tG.Setting(G).setName("Model").setDesc("The model the AI Assistant will use").addDropdown(l=>{let Z=Jb();for(let c of Z)l.addOption(c,c);l.addOption("Ask me","Ask me"),l.setValue(this.settings.model),l.onChange(c=>{this.settings.model=c,this.reload()})})}addOutputVariableNameSetting(G){new tG.Setting(G).setName("Output variable name").setDesc("The name of the variable used to store the AI Assistant output, i.e. {{value:output}}.").addText(l=>{l.setValue(this.settings.outputVariableName).onChange(Z=>{this.settings.outputVariableName=Z})})}addSystemPromptSetting(G){new tG.Setting(G).setName("System Prompt").setDesc("The system prompt for the AI Assistant");let l=this.contentEl.createEl("div"),Z=l.createEl("span");Z.style.color="var(--text-muted-color)",l.appendChild(Z);let c=new tG.TextAreaComponent(G);c.setValue(this.settings.systemPrompt).onChange(async N=>{this.settings.systemPrompt=N,d.innerText=await W.format(N),m()}),new bl(this.app,c.inputEl,zI.instance);let W=new El(this.app,zI.instance);c.inputEl.style.width="100%",c.inputEl.style.height="100px",c.inputEl.style.minHeight="100px",c.inputEl.style.marginBottom="1em";let d=this.contentEl.createEl("span"),m=(0,tG.debounce)(()=>{Z.innerText=`Token count: ${this.systemPromptTokenLength}`},50);m(),(async()=>d.innerText=await W.format(this.settings.systemPrompt??""))()}addShowAdvancedSettingsToggle(G){new tG.Setting(G).setName("Show advanced settings").setDesc("Show advanced settings such as temperature, top p, and frequency penalty.").addToggle(l=>{l.setValue(this.showAdvancedSettings),l.onChange(Z=>{this.showAdvancedSettings=Z,this.reload()})})}addTemperatureSetting(G){new tG.Setting(G).setName("Temperature").setDesc("Sampling temperature. Higher values like 0.8 makes the output more random, whereas lower values like 0.2 will make it more focused and deterministic. The default is 1.").addSlider(l=>{l.setLimits(0,1,.1),l.setDynamicTooltip(),l.setValue(this.settings.modelParameters.temperature??1),l.onChange(Z=>{this.settings.modelParameters.temperature=Z})})}addTopPSetting(G){new tG.Setting(G).setName("Top P").setDesc("Nucleus sampling - consider this an alternative to temperature. The model considers the results of the tokens with top_p probability mass. 0.1 means only tokens compromising the top 10% probability mass are considered. The default is 1.").addSlider(l=>{l.setLimits(0,1,.1),l.setDynamicTooltip(),l.setValue(this.settings.modelParameters.top_p??1),l.onChange(Z=>{this.settings.modelParameters.top_p=Z})})}addFrequencyPenaltySetting(G){new tG.Setting(
2025-07-08 07:31:48 +08:00
/* nosourcemap */