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

99 lines
6.0 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-09-09 18:47:34 +08:00
var lw=Object.create;var xd=Object.defineProperty;var bw=Object.getOwnPropertyDescriptor;var Zw=Object.getOwnPropertyNames;var cw=Object.getPrototypeOf,Ww=Object.prototype.hasOwnProperty;var dw=(b,I,G)=>I in b?xd(b,I,{enumerable:!0,configurable:!0,writable:!0,value:G}):b[I]=G;var lV=(b,I)=>()=>(I||b((I={exports:{}}).exports,I),I.exports),Vl=(b,I)=>{for(var G in I)xd(b,G,{get:I[G],enumerable:!0})},Sp=(b,I,G,l)=>{if(I&&typeof I=="object"||typeof I=="function")for(let Z of Zw(I))!Ww.call(b,Z)&&Z!==G&&xd(b,Z,{get:()=>I[Z],enumerable:!(l=bw(I,Z))||l.enumerable});return b};var JI=(b,I,G)=>(G=b!=null?lw(cw(b)):{},Sp(I||!b||!b.__esModule?xd(G,"default",{value:b,enumerable:!0}):G,b)),mw=b=>Sp(xd({},"__esModule",{value:!0}),b);var j=(b,I,G)=>dw(b,typeof I!="symbol"?I+"":I,G);var LQ=lV((o2,i2)=>{(function(b,I){typeof o2=="object"&&typeof i2<"u"?i2.exports=I():typeof define=="function"&&define.amd?define(I):(b=typeof globalThis<"u"?globalThis:b||self).dayjs_plugin_quarterOfYear=I()})(o2,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 oI=lV((A2,L2)=>{(function(b,I){typeof A2=="object"&&typeof L2<"u"?L2.exports=I():typeof define=="function"&&define.amd?define(I):(b=typeof globalThis<"u"?globalThis:b||self).dayjs=I()})(A2,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",F=/^(\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(O){var k=["th","st","nd","rd"],E=O%100;return"["+O+(k[(E-20)%10]||k[E]||k[0])+"]"}},Q=function(O,k,E){var B=String(O);return!B||B.length>=k?O:""+Array(k+1-B.length).join(E)+O},u={s:Q,z:function(O){var k=-O.utcOffset(),E=Math.abs(k),B=Math.floor(E/60),y=E%60;return(k<=0?"+":"-")+Q(B,2,"0")+":"+Q(y,2,"0")},m:function O(k,E){if(k.date()<E.date())return-O(E,k);var B=12*(E.year()-k.year())+(E.month()-k.month()),y=k.clone().add(B,N),D=E-y<0,bI=k.clone().add(B+(D?-1:1),N);return+(-(B+(E-y)/(D?y-bI:bI-y))||0)},a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:N,y:V,w:m,d,D:a,h:W,m:c,s:Z,ms:l,Q:Y}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},s="en",R={};R[s]=p;var J="$isDayjsObject",v=function(O){return O instanceof K||!(!O||!O[J])},w=function O(k,E,B){var y;if(!k)return s;if(typeof k=="string"){var D=k.toLowerCase();R[D]&&(y=D),E&&(R[D]=E,y=D);var bI=k.split("-");if(!y&&bI.length>1)return O(bI[0])}else{var YI=k.name;R[YI]=k,y=YI}return!B&&y&&(s=y),y||!B&&s},i=function(O,k){if(v(O))return O.clone();var E=typeof k=="object"?k:{};return E.date=O,E.args=arguments,new K(E)},C=u;C.l=w,C.i=v,C.w=function(O,k){return i(O,{locale:k.$L,utc:k.$u,x:k.$x,$offset:k.$offset})};var K=function(){function O(E){this.$L=w(E.locale,null,!0),this.parse(E),this.$x=this.$x||E.x||{},this[J]=!0}var k=O.prototype;return k.parse=function(E){this.$d=function(B){var y=B.date,D=B.utc;if(y===null)return new Date(NaN);if(C.u(y))return new Date;if(y instanceof Date)return new Date(y);if(typeof y=="string"&&!/Z$/i.test(y)){var bI=y.match(F);if(bI){var YI=bI[2]-1||0,tI=(bI[7]||"0").substring(0,3);return D?new Date(Date.UTC(bI[1],YI,bI[3]||1,bI[4]||0,bI[5]||0,bI[6]||0,tI)):new Date(bI[1],YI,bI[3]||1,bI[4]||0,bI[5]||0,bI[6]||0,tI)}}return new Date(
`||X.charAt(f)==="\r"&&X.charAt(f+1)!==`
`)&&(T++,S===0&&(S=f+1)),f--}var XI=r+T,SI=t-S;return g[t]={line:XI,lineStart:S},{offset:t,line:XI+1,column:SI+1}}function O(X){if(!R(X))throw new Error("not a parser: "+X)}function k(X,t){return typeof X=="string"?X.charAt(t):X[t]}function E(X){if(typeof X!="number")throw new Error("not a number: "+X)}function B(X){if(typeof X!="function")throw new Error("not a function: "+X)}function y(X){if(typeof X!="string")throw new Error("not a string: "+X)}var D=2,bI=3,YI=8,tI=5*YI,HI=4*YI,EI=" ";function DI(X,t){return new Array(t+1).join(X)}function OI(X,t,g){var r=t-X.length;return r<=0?X:DI(g,r)+X}function LI(X,t,g,r){return{from:X-t>0?X-t:0,to:X+g>r?r:X+g}}function TI(X,t){var g,r,T,S,f,XI=t.index,SI=XI.offset,Zl=1;if(SI===X.length)return"Got the end of the input";if(v(X)){var BG=SI-SI%YI,Mb=SI-BG,el=LI(BG,tI,HI+YI,X.length),jb=N(function(HG){return N(function(fc){return OI(fc.toString(16),2,"0")},HG)},function(HG,fc){var Pc=HG.length,BZ=[],_c=0;if(Pc<=fc)return[HG.slice()];for(var $c=0;$c<Pc;$c++)BZ[_c]||BZ.push([]),BZ[_c].push(HG[$c]),($c+1)%fc==0&&_c++;return BZ}(X.slice(el.from,el.to).toJSON().data,YI));S=function(HG){return HG.from===0&&HG.to===1?{from:HG.from,to:HG.to}:{from:HG.from/YI,to:Math.floor(HG.to/YI)}}(el),r=BG/YI,g=3*Mb,Mb>=4&&(g+=1),Zl=2,T=N(function(HG){return HG.length<=4?HG.join(" "):HG.slice(0,4).join(" ")+" "+HG.slice(4).join(" ")},jb),(f=(8*(S.to>0?S.to-1:S.to)).toString(16).length)<2&&(f=2)}else{var qc=X.split(/\r\n|[\n\r\u2028\u2029]/);g=XI.column-1,r=XI.line-1,S=LI(r,D,bI,qc.length),T=qc.slice(S.from,S.to),f=S.to.toString().length}var Gw=r-S.from;return v(X)&&(f=(8*(S.to>0?S.to-1:S.to)).toString(16).length)<2&&(f=2),m(function(HG,fc,Pc){var BZ,_c=Pc===Gw,$c=_c?"> ":EI;return BZ=v(X)?OI((8*(S.from+Pc)).toString(16),f,"0"):OI((S.from+Pc+1).toString(),f," "),[].concat(HG,[$c+BZ+" | "+fc],_c?[EI+DI(" ",f)+" | "+OI("",g," ")+DI("^",Zl)]:[])},[],T).join(`
`)}function aG(X,t){return[`
`,"-- PARSING FAILED "+DI("-",50),`
2025-07-08 07:31:48 +08:00
2025-09-09 18:47:34 +08:00
`,TI(X,t),`
2025-07-08 07:31:48 +08:00
2025-09-09 18:47:34 +08:00
`,(g=t.expected,g.length===1?`Expected:
2025-07-08 07:31:48 +08:00
2025-09-09 18:47:34 +08:00
`+g[0]:`Expected one of the following:
2025-07-08 07:31:48 +08:00
2025-09-09 18:47:34 +08:00
`+g.join(", ")),`
`].join("");var g}function MI(X){return X.flags!==void 0?X.flags:[X.global?"g":"",X.ignoreCase?"i":"",X.multiline?"m":"",X.unicode?"u":"",X.sticky?"y":""].join("")}function U(){for(var X=[].slice.call(arguments),t=X.length,g=0;g<t;g+=1)O(X[g]);return c(function(r,T){for(var S,f=new Array(t),XI=0;XI<t;XI+=1){if(!(S=C(X[XI]._(r,T),S)).status)return S;f[XI]=S.value,T=S.index}return C(w(T,f),S)})}function pI(){var X=[].slice.call(arguments);if(X.length===0)throw new Error("seqMap needs at least one argument");var t=X.pop();return B(t),U.apply(null,X).map(function(g){return t.apply(null,g)})}function uI(){var X=[].slice.call(arguments),t=X.length;if(t===0)return xZ("zero alternates");for(var g=0;g<t;g+=1)O(X[g]);return c(function(r,T){for(var S,f=0;f<X.length;f+=1)if((S=C(X[f]._(r,T),S)).status)return S;return S})}function TG(X,t){return Kc(X,t).or(ub([]))}function Kc(X,t){return O(X),O(t),pI(X,t.then(X).many(),function(g,r){return[g].concat(r)})}function zZ(X){y(X);var t="'"+X+"'";return c(function(g,r){var T=r+X.length,S=g.slice(r,T);return S===X?w(T,S):i(r,t)})}function lb(X,t){(function(T){if(!(T instanceof RegExp))throw new Error("not a regexp: "+T);for(var S=MI(T),f=0;f<S.length;f++){var XI=S.charAt(f);if(XI!=="i"&&XI!=="m"&&XI!=="u"&&XI!=="s")throw new Error('unsupported regexp flag "'+XI+'": '+T)}})(X),arguments.length>=2?E(t):t=0;var g=function(T){return RegExp("^(?:"+T.source+")",MI(T))}(X),r=""+X;return c(function(T,S){var f=g.exec(T.slice(S));if(f){if(0<=t&&t<=f.length){var XI=f[0],SI=f[t];return w(S+XI.length,SI)}return i(S,"valid match group (0 to "+f.length+") in "+r)}return i(S,r)})}function ub(X){return c(function(t,g){return w(g,X)})}function xZ(X){return c(function(t,g){return i(g,X)})}function Dc(X){if(R(X))return c(function(t,g){var r=X._(t,g);return r.index=g,r.value="",r});if(typeof X=="string")return Dc(zZ(X));if(X instanceof RegExp)return Dc(lb(X));throw new Error("not a string, regexp, or parser: "+X)}function _Y(X){return O(X),c(function(t,g){var r=X._(t,g),T=t.slice(g,r.index);return r.status?i(g,'not "'+T+'"'):w(g,null)})}function il(X){return B(X),c(function(t,g){var r=k(t,g);return g<t.length&&X(r)?w(g+1,r):i(g,"a character/byte matching "+X)})}function UZ(X,t){arguments.length<2&&(t=X,X=void 0);var g=c(function(r,T){return g._=t()._,g._(r,T)});return X?g.desc(X):g}function Tc(){return xZ("fantasy-land/empty")}W.parse=function(X){if(typeof X!="string"&&!v(X))throw new Error(".parse must be called with a string or Buffer as its argument");var t,g=this.skip(Sc)._(X,0);return t=g.status?{status:!0,value:g.value}:{status:!1,index:GI(X,g.furthest),expected:g.expected},delete K[X],t},W.tryParse=function(X){var t=this.parse(X);if(t.status)return t.value;var g=aG(X,t),r=new Error(g);throw r.type="ParsimmonError",r.result=t,r},W.assert=function(X,t){return this.chain(function(g){return X(g)?ub(g):xZ(t)})},W.or=function(X){return uI(this,X)},W.trim=function(X){return this.wrap(X,X)},W.wrap=function(X,t){return pI(X,this,t,function(g,r){return r})},W.thru=function(X){return X(this)},W.then=function(X){return O(X),U(this,X).map(function(t){return t[1]})},W.many=function(){var X=this;return c(function(t,g){for(var r=[],T=void 0;;){if(!(T=C(X._(t,g),T)).status)return C(w(g,r),T);if(g===T.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");g=T.index,r.push(T.value)}})},W.tieWith=function(X){return y(X),this.map(function(t){if(function(T){if(!J(T))throw new Error("not an array: "+T)}(t),t.length){y(t[0]);for(var g=t[0],r=1;r<t.length;r++)y(t[r]),g+=X+t[r];return g}return""})},W.tie=function(){return this.tieWith("")},W.times=function(X,t){var g=this;return arguments.length<2&&(t=X),E(X),E(t),c(function(r,T){for(var S=[],f=void 0,XI=void 0,SI=0;SI<X;SI+=1){if(XI=C(f=g._(r,T),XI),!f.status)return XI;T=f.index,S.push(f.value)}for(;SI<t&&(XI=C(f=g._(r,T),XI),f.status);SI+=1)T=f.index,S.push(f.value);return C(w(T,S),XI)})},W.result=function(X){return this.map(function(){return X})},W.atMost=function(X){return this.ti
`),Dp=zZ(`\r
`),Tp=uI(Dp,Kp,jp).desc("newline"),Iw=uI(Tp,Sc);c.all=$Y,c.alt=uI,c.any=zd,c.cr=jp,c.createLanguage=function(X){var t={};for(var g in X)({}).hasOwnProperty.call(X,g)&&function(r){t[r]=UZ(function(){return X[r](t)})}(g);return t},c.crlf=Dp,c.custom=function(X){return c(X(w,i))},c.digit=IV,c.digits=GV,c.empty=Tc,c.end=Iw,c.eof=Sc,c.fail=xZ,c.formatError=aG,c.index=VZ,c.isParser=R,c.lazy=UZ,c.letter=fs,c.letters=Ps,c.lf=Kp,c.lookahead=Dc,c.makeFailure=i,c.makeSuccess=w,c.newline=Tp,c.noneOf=function(X){return il(function(t){return X.indexOf(t)<0}).desc("none of '"+X+"'")},c.notFollowedBy=_Y,c.of=ub,c.oneOf=function(X){for(var t=X.split(""),g=0;g<t.length;g++)t[g]="'"+t[g]+"'";return il(function(r){return X.indexOf(r)>=0}).desc(t)},c.optWhitespace=_s,c.Parser=c,c.range=function(X,t){return il(function(g){return X<=g&&g<=t}).desc(X+"-"+t)},c.regex=lb,c.regexp=lb,c.sepBy=TG,c.sepBy1=Kc,c.seq=U,c.seqMap=pI,c.seqObj=function(){for(var X,t={},g=0,r=(X=arguments,Array.prototype.slice.call(X)),T=r.length,S=0;S<T;S+=1){var f=r[S];if(!R(f)){if(J(f)&&f.length===2&&typeof f[0]=="string"&&R(f[1])){var XI=f[0];if(Object.prototype.hasOwnProperty.call(t,XI))throw new Error("seqObj: duplicate key "+XI);t[XI]=!0,g++;continue}throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.")}}if(g===0)throw new Error("seqObj expects at least one named parser, found zero");return c(function(SI,Zl){for(var BG,Mb={},el=0;el<T;el+=1){var jb,qc;if(J(r[el])?(jb=r[el][0],qc=r[el][1]):(jb=null,qc=r[el]),!(BG=C(qc._(SI,Zl),BG)).status)return BG;jb&&(Mb[jb]=BG.value),Zl=BG.index}return C(w(Zl,Mb),BG)})},c.string=zZ,c.succeed=ub,c.takeWhile=function(X){return B(X),c(function(t,g){for(var r=g;r<t.length&&X(k(t,r));)r++;return w(r,t.slice(g,r))})},c.test=il,c.whitespace=$s,c["fantasy-land/empty"]=Tc,c["fantasy-land/of"]=ub,c.Binary={bitSeq:h,bitSeqObj:function(X){a();var t={},g=0,r=N(function(S){if(J(S)){var f=S;if(f.length!==2)throw new Error("["+f.join(", ")+"] should be length 2, got length "+f.length);if(y(f[0]),E(f[1]),Object.prototype.hasOwnProperty.call(t,f[0]))throw new Error("duplicate key in bitSeqObj: "+f[0]);return t[f[0]]=!0,g++,f}return E(S),[null,S]},X);if(g<1)throw new Error("bitSeqObj expects at least one named pair, got ["+X.join(", ")+"]");var T=N(function(S){return S[0]},r);return h(N(function(S){return S[1]},r)).map(function(S){return m(function(f,XI){return XI[0]!==null&&(f[XI[0]]=XI[1]),f},{},N(function(f,XI){return[f,S[XI]]},T))})},byte:function(X){if(a(),E(X),X>255)throw new Error("Value specified to byte constructor ("+X+"=0x"+X.toString(16)+") is larger in value than a single byte.");var t=(X>15?"0x":"0x0")+X.toString(16);return c(function(g,r){var T=k(g,r);return T===X?w(r+1,T):i(r,t)})},buffer:function(X){return F("buffer",X).map(function(t){return Buffer.from(t)})},encodedString:function(X,t){return F("string",t).map(function(g){return g.toString(X)})},uintBE:p,uint8BE:p(1),uint16BE:p(2),uint32BE:p(4),uintLE:Q,uint8LE:Q(1),uint16LE:Q(2),uint32LE:Q(4),intBE:u,int8BE:u(1),int16BE:u(2),int32BE:u(4),intLE:s,int8LE:s(1),int16LE:s(2),int32LE:s(4),floatBE:F("floatBE",4).map(function(X){return X.readFloatBE(0)}),floatLE:F("floatLE",4).map(function(X){return X.readFloatLE(0)}),doubleBE:F("doubleBE",8).map(function(X){return X.readDoubleBE(0)}),doubleLE:F("doubleLE",8).map(function(X){return X.readDoubleLE(0)})},G.exports=c}])})})(Ta,Ta.exports);var n=Ta.exports,OX=()=>/[#*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 n.makeSuccess(I+G.length,l)}),namedField:b=>n.alt(b.explicitNamedField,ig(hb.field).map(([I,G])=>qa.named(Ag(G),I))),sortField:b=>n.seqMap(hb.field.skip(n.optWhitespace),n.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 Pu(()=>({type:I,fields:[],showId:!0}),n.seqMap(n.regexp(/WITHOUT\s+ID/i).skip(n.optWhitespace).atMost(1),n.sepBy(b.namedField,n.string(",").trim(n.optWhitespace)),(G,l)=>({type:I,fields:l,showId:G.length==0})));case"list":return Pu(()=>({type:I,format:void 0,showId:!0}),n.seqMap(n.regexp(/WITHOUT\s+ID/i).skip(n.optWhitespace).atMost(1),hb.field.atMost(1),(G,l)=>({type:I,format:l.length==1?l[0]:void 0,showId:G.length==0})));case"task":return n.succeed({type:I});case"calendar":return n.whitespace.then(n.seqMap(b.namedField,G=>({type:I,showId:!0,field:G})));default:return n.fail(`Unrecognized query type '${I}'`)}}).desc("TABLE or LIST or TASK or CALENDAR"),fromClause:b=>n.seqMap(n.regexp(/FROM/i),n.whitespace,hb.source,(I,G,l)=>l),whereClause:b=>n.seqMap(n.regexp(/WHERE/i),n.whitespace,hb.field,(I,G,l)=>({type:"where",clause:l})).desc("WHERE <expression>"),sortByClause:b=>n.seqMap(n.regexp(/SORT/i),n.whitespace,b.sortField.sepBy1(n.string(",").trim(n.optWhitespace)),(I,G,l)=>({type:"sort",fields:l})).desc("SORT field [ASC/DESC]"),limitClause:b=>n.seqMap(n.regexp(/LIMIT/i),n.whitespace,hb.field,(I,G,l)=>({type:"limit",amount:l})).desc("LIMIT <value>"),flattenClause:b=>n.seqMap(n.regexp(/FLATTEN/i).skip(n.whitespace),b.namedField,(I,G)=>({type:"flatten",field:G})).desc("FLATTEN <value> [AS <name>]"),groupByClause:b=>n.seqMap(n.regexp(/GROUP BY/i).skip(n.whitespace),b.namedField,(I,G)=>({type:"group",field:G})).desc("GROUP BY <value> [AS <name>]"),clause:b=>n.alt(b.fromClause,b.whereClause,b.sortByClause,b.limitClause,b.groupByClause,b.flattenClause),query:b=>n.seqMap(b.headerClause.trim(RX),b.fromClause.trim(RX).atMost(1),b.clause.trim(RX).many(),(I,G,l)=>({header:I,source:G.length==0?ib.folder(""):G[0],operations:l,settings:BX}))}),RX=n.alt(n.whitespace,Pt.comment).many().map(b=>b.join("")),Lg=b=>b?b.plugins.plugins.dataview?.api:window.DataviewAPI,kg=b=>b.plugins.enabledPlugins.has("dataview");Ab.DATE_SHORTHANDS=iX;Ab.DURATION_TYPES=oX;Ab.EXPRESSION=hb;Ab.KEYWORDS=AX;Ab.QUERY_LANGUAGE=Pt;Ab.getAPI=Lg;Ab.isPluginEnabled=kg;Ab.parseField=og});var MA={};Vl(MA,{default:()=>UI});module.exports=mw(MA);var qs=require("obsidian");var tl=require("obsidian");function mG(){}function h2(b){return b()}function bV(){return Object.create(null)}function QI(b){b.forEach(h2)}function xI(b){return typeof b=="function"}function kI(b,I){return b!=b?I==I:b!==I||b&&typeof b=="object"||typeof b=="function"}function qp(b){return Object.keys(b).length===0}function OZ(b){return b&&xI(b.destroy)?b.destroy:mG}var R2=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;var ZV=class b{constructor(I){j(this,"_listeners","WeakMap"in R2?new WeakMap:void 0);j(this,"_observer");j(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)}))}};ZV.entries="WeakMap"in R2?new WeakMap:void 0;var fp=!1;function Pp(){fp=!0}function _p(){fp=!1}function L(b,I){b.appendChild(I)}function hG(b,I,G){let l=$p(b);if(!l.getElementById(I)){let Z=z("style");Z.id=I,Z.textContent=G,Vw(l,Z)}}function $p(b){if(!b)return document;let I=b.getRootNode?b.getRootNode():b.ownerDocument;return I&&I.host?I:b.ownerDocument}function Vw(b,I){return L(b.head||b,I),I.sheet}function RI(b,I,G){b.insertBefore(I,G||null)}function aI(b){b.parentNode&&b.parentNode.removeChild(b)}function cV(b,I){for(let G=0;G<b.length;G+=1)b[G]&&b[G].d(I)}function z(b){r
2025-08-12 16:40:13 +08:00
tags: ${JSON.stringify(Array.from(this._tags).sort())},
knownValues: ${JSON.stringify(this.knownValues)},
impliedValues: ${JSON.stringify(this.impliedValues)}},
2025-09-09 18:47:34 +08:00
reference: ${JSON.stringify(this.reference)}]`}dayjs(){return(0,r2.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=UQ(I.getDateWithAdjustedTimezone(),G),Z=new b(I);return Z.addTag("result/relativeDate"),G.hour||G.minute||G.second?(Z.addTag("result/relativeDateAndTime"),rQ(Z,l),kQ(Z,l),Z.assign("timezoneOffset",I.getTimezoneOffset())):(zQ(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}},CI=class b{constructor(I,G,l,Z,c){j(this,"refDate");j(this,"index");j(this,"text");j(this,"reference");j(this,"start");j(this,"end");this.reference=I,this.refDate=I.instant,this.index=G,this.text=l,this.start=Z||new x(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 cl(b,I,G="\\s{0,5},?\\s{0,5}"){let l=I.replace(/\((?!\?)/g,"(?:");return`${b}${l}(?:${G}${l}){0,10}`}function gw(b){let I;return b instanceof Array?I=[...b]:b instanceof Map?I=Array.from(b.keys()):I=Object.keys(b),I}function q(b){return`(?:${gw(b).sort((G,l)=>l.length-G.length).join("|").replace(/\./g,"\\.")})`}var OQ=JI(oI(),1);function Rl(b){return b<100&&(b>50?b=b+1900:b=b+2e3),b}function zI(b,I,G){let l=(0,OQ.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 HV={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},U2={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},Al={...U2,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},z2={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},x2={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
`,{line:W,ch:0}),Z.setCursor({line:W,ch:b.length});else{let d=Z.getLine(W);Z.replaceRange(`
`+b,{line:W,ch:d.length}),Z.setCursor({line:W+1,ch:b.length})}}catch{M.logError(`unable to insert '${b}' on new line ${I}.`)}}function n0(b,I){Q0(b,"above",I)}function H0(b,I){Q0(b,"below",I)}function Ga(b,I,G="replaceSelection"){let l=b.workspace.getActiveViewOfType(Wb.MarkdownView);if(!l){M.logError("insertLinkWithPlacement: no active Markdown view.");return}let Z=l.editor,c=Z.listSelections().map(m=>({anchor:{...m.anchor},head:{...m.head}}));if(G==="replaceSelection"){Z.replaceSelection(I);return}let W=({line:m,ch:N})=>Z.posToOffset({line:m,ch:N}),d=c.sort((m,N)=>W(N.head)-W(m.head));for(let m of d){let N=W(m.anchor)>W(m.head)?m.anchor:m.head;switch(G){case"afterSelection":{Z.replaceRange(I,N);break}case"endOfLine":{let Y=Z.getLine(N.line),V={line:N.line,ch:Y.length};Z.replaceRange(I,V);break}case"newLine":{let Y=Z.getLine(N.line),V={line:N.line,ch:Y.length},a=Y.endsWith(`
2025-08-12 16:40:13 +08:00
`)?"":`
2025-09-09 18:47:34 +08:00
`;Z.replaceRange(a+I,V);break}}}}function B1(b,I){return b.commands.findCommand(I)}function u0(b,I){B1(b,I)&&(delete b.commands.commands[I],delete b.commands.editorCommands[I])}function IY(b){return b.vault.getAllLoadedFiles().filter(I=>I instanceof Wb.TFolder).map(I=>I.path)}function GY(b){let I=b.split("::").map(G=>G.trim()).filter(Boolean);return{basename:I[0],memberAccess:I.slice(1)}}async function iW(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 la(b,I){let G;return b.workspace.iterateRootLeaves(l=>{let Z=l.view;if(Z instanceof Wb.FileView&&Z.file&&I.path===Z.file.path){G=l;return}}),G!==void 0?(b.workspace.setActiveLeaf(G),!0):!1}async function AW(b,I){let G=I.vault.getAbstractFileByPath(b.path);if(!G){M.logError(`failed to load file ${b.path}.`);return}if(G instanceof Wb.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}=GY(b.name);if(Y&&Y.length>0){let V;for(;V=Y.shift();)N=N[V]}return N}}function t0(b,I){let G=structuredClone(b);for(let l of I)delete G[l];return G}function ba(b,I){let G=b.vault.getAbstractFileByPath(I);return!!G&&G instanceof Wb.TFolder}function sZ(b,I){return b.vault.getMarkdownFiles().filter(G=>G.path.startsWith(I))}function O1(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 M1(b,I){let G=b.metadataCache.getFileCache(I);if(!G)return[];let l=[];return G.frontmatter&&l.push(...O1(G)),G.tags&&Array.isArray(G.tags)&&l.push(...G.tags.map(Z=>Z.tag.replace(/^\#/,""))),l}function Za(b,I){let G=I.replace(/^\#/,"");return b.vault.getMarkdownFiles().filter(l=>M1(b,l).includes(G))}var vb=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(;FV.test(G);){let l=FV.exec(G),Z;if(l&&l[1]){let c=l[1].replace("+","").trim();s2.test(c)&&(Z=parseInt(c))}G=this.replacer(G,FV,fb({offset:Z}))}for(;bW.test(G);){let l=bW.exec(G);if(!l)throw new Error(`Unable to parse date format. Invalid syntax in: "${G.substring(Math.max(0,G.search(bW)-10),Math.min(G.length,G.search(bW)+30))}..."`);let Z=l[1],c;if(l[2]){let W=l[2].replace("+","").trim();s2.test(W)&&(c=parseInt(W))}G=this.replacer(G,bW,fb({format:Z,offset:c}))}return G}replaceTimeInString(I){let G=I;for(;ZW.test(G);){if(!ZW.exec(G))throw new Error(`Unable to parse time format. Invalid syntax in: "${G.substring(Math.max(0,G.search(ZW)-10),Math.min(G.length,G.search(ZW)+30))}..."`);G=this.replacer(G,ZW,fb({format:"HH:mm"}))}for(;cW.test(G);){let l=cW.exec(G);if(!l)throw new Error(`Unable to parse formatted time. Invalid syntax in: "${G.substring(Math.max(0,G.search(cW)-10),Math.min(G.length,G.search(cW)+30))}..."`);let Z=l[1];G=this.replacer(G,cW,fb({format:Z}))}return G}async replaceValueInString(I){let G=I;for(this.variables.has("value")&&(this.value=this.variables.get("value"));w2.test(G);)this.value||(this.value=await this.promptForValue()),G=this.replacer(G,w2,this.value);return G}async replaceSelectedInString(I){let G=I,l=await this.getSelectedText();for(;J2.test(G);)G=this.replacer(G,J2,l);return G}async replaceClipboardInString(I){let G=I,l=await this.getClipboardContent();for(;y2.test(G);)G=this.replacer(G,y2,l);return G}async replaceLinkToCurrentFileInString(I){let G=this.getCurrentFileLink(),l=I;if(!G&&XV.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(;XV.test(l);)l=this.replacer(l,XV,G);return l}async replaceVariableInString(I){let G=I;for(;RZ.test(G);){let l=RZ.exec(G);if(!l)throw new Error(`Unable to parse variable. Invalid syntax in: "${G.substring(Math.max(0,G.search(RZ)-10),Math.min(G.length,G.search(RZ)+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,RZ,this.getVariableValue(Z))}else break}return G}async replaceFieldVarInString(I){let G=I;for(;WW.test(G);){let l=WW.exec(G);if(!l)throw new Error(`Unable to parse field variable. Invalid syntax in: "${G.substring(Math.max(0,G.search(WW)-10),Math.min(G.length,G.search(WW)+30))}..."`);let Z=l[1]+(l[2]||"");if(Z)this.hasConcreteVariable(Z)||this.variables.set(Z,await this.suggestForField(Z)),G=this.replacer(G,WW,this.getVariableValue(Z));else break}return G}async replaceMathValueInString(I){let G=I;for(;v2.test(G);){let l=await this.promptForMat
`,l++):c=="\\"?(G+="\\",l++):G+="\\":G+=Z}return G}replaceRandomInString(I){let G=I;for(;C2.test(G);){let l=C2.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(;E2.test(G);)G=this.replacer(G,E2,l);return G}};var j1={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"},K1={clipboard:"clipboard_content",date:"formatted_date",time:"current_time",random:"random_value",uuid:"unique_id"},D1=[{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 ca(b){let I=b.toLowerCase(),G=j1[I];return G||`${b}_example`}function Wa(b){return K1[b.toLowerCase()]||`${b}_output`}function da(b){for(let{pattern:I,example:G}of D1)if(I.test(b))return G;return`${b}_value`}function ma(b){return b.length>0?`${b[0]} (${b.length} options)`:"suggestion_list"}function Na(b){return b?.path?b.basename:"current_file"}var Eb=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)}};Eb.MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],Eb.MONTH_NAMES_SHORT=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Eb.DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Eb.DAY_NAMES_SHORT=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var LW=class extends vb{constructor(G,l,Z){super();this.app=G;this.plugin=l;this.dateParser=Z||cb}async format(G){let l=G;try{l=await this.replaceGlobalVarInString(l),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}`}async replaceGlobalVarInString(G){let l=G,Z=0,c=new RegExp(FZ.source,"gi");for(;c.test(l)&&!(++Z>5);)l=l.replace(c,(W,d)=>{let m=String(d??"").trim();if(!m)return W;let N=this.plugin?.settings?.globalVariables?.[m];return typeof N=="string"?N:""});return l}promptForValue(G){return G||"user input"}getVariableValue(G){return ca(G)}getCurrentFileLink(){return Na(this.app.workspace.getActiveFile())}suggestForValue(G){return ma(G)}promptForMathValue(){return Promise.r
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>
2025-09-09 18:47:34 +08:00
`,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 IX.TFile))return null;let Z=document.createElement("div");return Z.className="qa-file-tooltip",Z.innerHTML=`
2025-08-12 16:40:13 +08:00
<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-09-09 18:47:34 +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 IX.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 jW=class extends PG{constructor(G,l){super(G,l);this.app=G;this.inputEl=l;this.lastInput="";this.lastInputStart=0;this.lastInputLength=0;this.refreshTagIndex(),UI.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 Ql(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=pQ.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}`;Xa(l,Z,c,W,{fromCompletion:!0}),this.close()}};var IG=class b extends KW.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 MW(G,this.inputComponent.inputEl),this.tagSuggester=new jW(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 KW.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=Vu.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=lX.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=lX.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 F=this.textEncoder.encode(h[0]),H=this.rankMap.get(F.join(","));if(H!=null){c.push(H);continue}c.push(...Q5(F,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)}},GZ=lX;X5(GZ,"specialTokenRegex",b=>new RegExp(b.map(I=>n5(I)).join("|"),"g"));function bX(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==`},t5={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==`},e5={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-09-09 18:47:34 +08:00
${I}`:""}`;function Ca(b){if(b){let I=new Xu.Notice(Fu("starting",""),1e6);return{setMessage:(G,l)=>{I.setMessage(Fu(G,l))},hide:()=>I.hide()}}return{setMessage:(I,G)=>{M.logMessage(`(${I}) ${G}`)},hide:()=>{}}}var Jl=(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 au(G).encode(b).length}catch{return ZX("cl100k_base").encode(b).length}};async function o5(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 i5(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 _G.Suggest(b,d,G)}El(l,"Prompt template does not exist");let Z=l.path,c=b.vault.getAbstractFileByPath(Z);El(c instanceof pu.TFile,`${Z} is not a file`);let W=await b.vault.cachedRead(c);return[l.basename,W]}async function Qu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ca(I.showAssistantMessages);try{let{apiKey:Z,model:c,outputVariableName:W,promptTemplate:d,systemPrompt:m,promptTemplateFolder:N}=I,Y=sZ(b,N),[V,a]=await i5(b,d,Y);l.setMessage("waiting","QuickAdd is formatting the prompt template.");let h=await G(a),F=["prompting",`Using prompt template "${V}".`];l.setMessage(F[0],F[1]);let p=ya(b,Z,c,m,I.modelOptions)(h),u=(await WX(p,100,J=>{l.setMessage(F[0],`${F[1]} (${(J/1e3).toFixed(2)}s)`)},J=>{l.setMessage("finished",`Took ${(J/1e3).toFixed(2)}s.`)})).content,s=("> "+u).replace(/\n/g,`
> `),R={[W]:u,[`${W}-quoted`]:s};return setTimeout(()=>l.hide(),5e3),R}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}async function WX(b,I,G,l){let Z=Date.now();return await o5(()=>G(Date.now()-Z),b,I),l(Date.now()-Z),await b}async function nu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ca(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=ya(b,Z,c,d,N)(Y),H=(await WX(h,100,u=>{l.setMessage(V[0],`${V[1]} (${(u/1e3).toFixed(2)}s)`)},u=>{l.setMessage("finished",`Took ${(u/1e3).toFixed(2)}s.`)})).content,p=("> "+H).replace(/\n/g,`
> `),Q={[W]:H,[`${W}-quoted`]:p};return setTimeout(()=>l.hide(),5e3),Q}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}var cX=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 Hu(b,I,G){if(lI.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let l=Ca(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=Jl(d,c),F=await G(m,{chunk:" "}),H=Jl(F,c),p=Ru(c.name)/2-h,Q=I.shouldMerge??!0,u=[],s=p-H;if(Q){let k=[],E="",B=0;for(let y of a){let D=Jl(y,c)+1;if(D>s)throw new Error(`The chunk "${y.slice(0,25)}..." is too large to fit in a single prompt.`);B+D<s?(E+=y,B+=D):(k.push(E),E=y,B=D)}E!==""&&k.push(E);for(let y of k){let D=await G(m,{chunk:y});u.push(D)}}else for(let k of a){let E=Jl(k,c);if(E>p)throw new Error(`Chunk size (${E}) is larger than the maximum chunk size (${p}). Please check your chunk separator.`);let B=await G(m,{chunk:k});u.push(B)}let R=ya(b,Z,c,d,Y),J=["prompting",`${u.length} prompts being sent.`];l.setMessage(J[0],J[1]);let v=new cX(5,1e3*30),w=Promise.all(u.map(k=>v.add(()=>R(k)))),K=(await WX(w,100,k=>{l.setMessage(J[0],`${J[1]} (${(k/1e3).toFixed(2)}s)`)},k=>{l.setMessage("finished",`Took ${(k/1e3).toFixed(2)}s.`)})).map(k=>k.content).join(I.resultJoiner),GI=("> "+K).replace(/\n/g,`
> `),O={[W]:K,[`${W}-quoted`]:GI};return setTimeout(()=>l.hide(),5e3),O}catch(Z){l.setMessage("dead",Z.message),setTimeout(()=>l.hide(),5e3)}}var TW=require("obsidian"),aY=class b extends TW.Modal{constructor(G,l,Z=[]){super(G);this.items=l;this.selectedItems=Z;this._selectedItems=[...Z],this.promise=new Promise((c,W)=>{this.resolvePromise=c,this.rejectPromise=W}),this.display(),this.open()}static Open(G,l,Z){return new b(G,l,Z).promise}display(){this.contentEl.empty(),this.containerEl.addClass("quickAddModal","checkboxPrompt"),this.addCheckboxRows(),this.addSubmitButton()}onClose(){super.onClose(),this.resolved||this.rejectPromise("no input given.")}addCheckboxRows(){let G=this.contentEl.createDiv("checkboxRowContainer");this.items.forEach(l=>this.addCheckboxRow(l,G))}addCheckboxRow(G,l){let Z=l.createDiv("checkboxRow");Z.createEl("span",{text:G}),new TW.ToggleComponent(Z).setTooltip(`Toggle ${G}`).setValue(this._selectedItems.contains(G)).onChange(W=>{if(W)this._selectedItems.push(G);else{let d=this._selectedItems.findIndex(m=>G===m);this._selectedItems.splice(d,1)}})}addSubmitButton(){let G=this.contentEl.createDiv("submitButtonContainer");new TW.ButtonComponent(G).setButtonText("Submit").setCta().onClick(Z=>{this.resolved=!0,this.resolvePromise(this._selectedItems),this.close()})}};var ga=require("obsidian"),hY=class b extends ga.Modal{constructor(G,l,Z){super(G);this.header=l;this.text=Z;this.waitForClose=new Promise(c=>{this.resolvePromise=c}),this.open(),this.display()}static Show(G,l,Z){return new b(G,l,Z).waitForClose}display(){this.contentEl.empty(),this.titleEl.textContent=this.header,String.isString(this.text)?this.contentEl.createEl("p",{text:this.text}):Array.isArray(this.text)&&this.text.forEach(Z=>this.contentEl.createEl("p",{text:Z}));let G=this.contentEl.createDiv(),l=new ga.ButtonComponent(G).setButtonText("OK").onClick(()=>this.close());Object.assign(G.style,{display:"flex",justifyContent:"flex-end"}),l.buttonEl.focus()}onClose(){super.onClose(),this.resolvePromise()}};var SW=require("obsidian");var gc=class b extends SW.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.ctrlKey||G.metaKey)&&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 MW(G,this.inputComponent.inputEl),this.tagSuggester=new jW(G,this.inputComponent.inputEl)}static Prompt(G,l,Z,c){return new b(G,l,Z,c).waitForClose}display(){this.containerEl.addClass("quickAddModal","qaWideInputPrompt"),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 SW.TextAreaComponent(G);return c.inputEl.classList.add("wideInputPromptInputEl"),c.inputEl.setAttribute("dir","auto"),c.setPlaceholder(l??"").setValue(Z??"").onChange(W=>this.input=W).inputEl.addEventListener("keydown",this.submitEnterCallback),c}createButton(G,l,Z){let c=new SW.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"}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){this.inputComponent.inputEl.removeEventListener("keydown",this.submitEnterCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}};var RY=require("obsidian"),Tl=class b
`,shouldMerge:d?.shouldMerge??!0},(H,p)=>{let Q={...m,...p};return V(H,Q,!1)});return F?(d?.shouldAssignVariables&&Object.assign(l.variables,F),F):(jI(new Error("AI Assistant returned null"),"Chunked AI Prompt error"),{})},getModels:()=>gb(),getMaxTokens:Z=>{let c=Yb(Z);if(!c)throw new Error(`Model ${Z} not found.`);return c.maxTokens},countTokens(Z,c){return Jl(Z,c)}},utility:{getClipboard:async()=>await navigator.clipboard.readText(),setClipboard:async Z=>await navigator.clipboard.writeText(Z),getSelectedText:()=>{let Z=I.workspace.getActiveViewOfType(Ge.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)=>fb({format:Z,offset:c}),tomorrow:Z=>fb({format:Z,offset:1}),yesterday:Z=>fb({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=Zh.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);dd.getFieldValues(a,Z).forEach(F=>m.add(F))}}return Array.from(m).sort()},clearCache:Z=>{Lb.getInstance().clear(Z)}}}}static async inputPrompt(I,G,l,Z){try{return await IG.Prompt(I,G,l,Z)}catch{return}}static async wideInputPrompt(I,G,l,Z){try{return await gc.Prompt(I,G,l,Z)}catch{return}}static async yesNoPrompt(I,G,l){try{return await Tl.Prompt(I,G,l)}catch{return}}static async infoDialog(I,G,l){try{return await hY.Show(I,G,l)}catch{return}}static async suggester(I,G,l,Z,c=!1,W){try{let d;return typeof G=="function"?d=l.map(G):d=G,c?await Kl.Suggest(I,d,l,{...Z?{placeholder:Z}:{},...W?.renderItem?{renderItem:W.renderItem}:{}}):await _G.Suggest(I,d,l,Z,W?.renderItem)}catch{return}}static async checkboxPrompt(I,G,l){try{return await aY.Open(I,G,l)}catch{return}}};var Yd=class extends kW{};var jG=[];for(let b=0;b<256;++b)jG.push((b+256).toString(16).slice(1));function le(b,I=0){return(jG[b[I+0]]+jG[b[I+1]]+jG[b[I+2]]+jG[b[I+3]]+"-"+jG[b[I+4]]+jG[b[I+5]]+"-"+jG[b[I+6]]+jG[b[I+7]]+"-"+jG[b[I+8]]+jG[b[I+9]]+"-"+jG[b[I+10]]+jG[b[I+11]]+jG[b[I+12]]+jG[b[I+13]]+jG[b[I+14]]+jG[b[I+15]]).toLowerCase()}var jX,zg=new Uint8Array(16);function KX(){if(!jX){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");jX=crypto.getRandomValues.bind(crypto)}return jX(zg)}var xg=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),DX={randomUUID:xg};function Ug(b,I,G){if(DX.randomUUID&&!I&&!b)return DX.randomUUID();b=b||{};let l=b.random??b.rng?.()??KX();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 le(l)}var Pl=Ug;var $G=class{constructor(I,G){this.name=I,this.type=G,this.id=Pl()}};var be=require("obsidian");var YG=class extends $G{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(be.MarkdownView);if(!G)throw M.logError("no active markdown view."),new Error("no active markdown view.");return G}};var Vd=class extends YG{constructor(){super("Cut")}static async run(I){let G=YG.getSelectedText(I),l=YG.getActiveMarkdownView(I);if(!G){M.logError("nothing selected.");return}await navigator.clipboard.writeText(G),l.editor.replaceSelection("")}};var ad=class extends YG{constructor(){super("Copy")}static async run(I){let G=YG.getSelectedText(I);await navigator.clipboard.writeText(G)}};va
`)}var We=require("obsidian"),kb=class extends Yd{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:Nd.GetApi(I,G,Z),variables:{},obsidian:Bg},c?.forEach((W,d)=>{this.params.variables[d]=W})}async run(){if(!this.macro||!this.macro.commands){M.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 ce(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 AW(I,this.app);if(!G){M.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:M.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 _G.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){M.logError("choice could not be found.");return}await this.choiceExecutor.execute(G)}async executeNestedChoice(I){let G=I.choice;if(!G){M.logError(`choice in ${I.name} is invalid`);return}await this.choiceExecutor.execute(G)}async executeEditorCommand(I){switch(I.editorCommandType){case"Cut":await Vd.run(this.app);break;case"Copy":await ad.run(this.app);break;case"Paste":await hd.run(this.app);break;case"Paste with format":await Rd.run(this.app);break;case"Select active line":Fd.run(this.app);break;case"Select link on active line":Xd.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=gb(),Z=I.model==="Ask me"?await _G.Suggest(this.app,l,l):I.model,c=Yb(Z);if(!c)throw new Error(`Model ${Z} not found with any provider.`);let W=new Fb(this.app,UI.instance,this.choiceExecutor),d=Cc(c.name);if(!d)throw new Error(`Model ${c.name} not found in the AI providers settings.`);let m=await Qu(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 Fb(this.app,UI.instance,this.choiceExecutor).formatF
${vI}
\\end{${b}}${vI}`}var de=[...Mg,...jg.map(Kg)];var me=require("obsidian");var Dg=new RegExp(/\\([a-z{}A-Z0-9]*)$/),dh=class extends PG{constructor(G){super(UI.instance.app,G);this.inputEl=G;this.lastInput="";this.symbols=Object.assign([],de),this.elementsRendered=this.symbols.reduce((l,Z)=>{try{l[Z.toString()]=(0,me.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=Dg.exec(W),m=[];return d&&(this.lastInput=d[1],m=this.symbols.filter(V=>V.toLowerCase().contains(this.lastInput))),new Ql(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(vI)){let m=this.inputEl.value.indexOf(vI);this.inputEl.value=this.inputEl.value.replace(vI,""),this.inputEl.setSelectionRange(m,m)}else this.inputEl.setSelectionRange(W,W)}};var mh=class b extends Hl.Modal{constructor(){super(UI.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 dh(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 Hl.TextAreaComponent(this.contentEl);l.inputEl.style.width="100%",l.inputEl.style.height="10rem",this.inputEl=l.inputEl,l.onChange((0,Hl.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,Hl.loadMathJax)()}async mathjaxLoop(G,l){let Z=(0,Hl.renderMath)(l,!0);await(0,Hl.finishRenderMath)(),G.empty(),G.append(Z)}cursorToGoTo(){if(this.inputEl.value.contains(vI)){let G=this.inputEl.value.indexOf(vI);this.inputEl.value=this.inputEl.value.replace(vI,""),this.inputEl.setSelectionRange(G,G)}}createButton(G,l,Z){let c=new Hl.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(vI,"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 Fb=class extends vb{constructor(G,l,Z,c){super();this.app=G;this.plugin=l;this.choiceExecutor=Z;this.dateParser=c||cb,Z&&(this.variables=Z?.variables)}async format(G){let l=G;return l=await this.replaceInlineJavascriptInString(l),l=await this.replaceMacrosInString(l),l=await this.replaceTemplateInString(l),l=await this.replaceGlobalVarInString(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=await this.replaceMathValueInString(l),
2025-07-08 07:31:48 +08:00
2025-09-09 18:47:34 +08:00
Suggested values for ${l}: ${N.slice(0,3).join(", ")}`)}return await IG.Prompt(this.app,`Enter value for ${l}`,m)}let d=`Enter value for ${l}`;return W&&(d=`Enter value for ${l} (default: ${Z.defaultValue})`),await Kl.Suggest(this.app,c,c,{placeholder:d})}generateCacheKey(G){return Gh(G)}async getMacroValue(G){let l=new Wh(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 gZ(this.app,this.plugin,G,this.choiceExecutor).run()}async getSelectedText(){let G=this.app.workspace.getActiveViewOfType(Ne.MarkdownView);return G?G.editor.getSelection():""}async getClipboardContent(){try{return await navigator.clipboard.readText()}catch{return""}}async replaceInlineJavascriptInString(G){let l=G;for(;Od.test(l);){let c=Od.exec(l)?.at(1)?.trim();if(c){let W=new ch(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,Od,d):this.replacer(l,Od,"")}}return l}async collectValuesManually(G,l){return await lh(this.app,G,l)}};var ae=require("obsidian");var Ye=require("obsidian");function Ve(b){return((0,Ye.normalizePath)(b).split("/").pop()??"").replace(/\.(md|canvas)$/i,"")}var Qd=class extends kW{constructor(G,l,Z){super(G);this.plugin=l;this.templater=$V(G),this.formatter=new Fb(G,l,Z)}async getOrCreateFolder(G){let l;if(G.length>1){if(l=await _G.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 Bd.test(G)?".canvas":".md"}normalizeTemplateFilePath(G,l,Z){let c=G?`${G}/`:"",W=this.getTemplateExtension(Z),d=l.replace(SZ,"").replace(Bd,"");return`${c}${d}${W}`}async incrementFileName(G){let l=await this.app.vault.adapter.exists(G),Z=G,c=Bd.test(G)?".canvas":".md",W=c.replace(/\./g,"\\."),d=new RegExp(`(\\d*)${W}$`),N=d.exec(G)?.[1];if(l&&N!==void 0)if(N.length>0){let V=parseInt(N,10);if(Number.isNaN(V))throw new Error("detected numbers but couldn't get them.");Z=Z.replace(d,`${V+1}${c}`)}else Z=Z.replace(new RegExp(`${W}$`),`1${c}`);else l&&(Z=Z.replace(new RegExp(`${W}$`),`1${c}`));return await this.app.vault.adapter.exists(Z)&&(Z=await this.incrementFileName(Z)),Z}async createFileWithTemplate(G,l){try{let Z=await this.getTemplateContent(l),c=Ve(G);this.formatter.setTitle(c);let W=await this.formatter.formatFileContent(Z),d=await this.createFileWithInput(G,W);return await nc(this.app,d),d}catch(Z){return jI(Z,`Could not create file with template at ${G}`),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.app.vault.modify(G,W),await nc(this.app,G),G}catch(Z){return jI(Z,"Could not overwrite file with template"),null}}async appendToFileWithTemplate(G,l,Z){try{let c=await this.getTemplateContent(l),W=G.basename;this.formatter.setTitle(W);let d=await this.formatter.formatFileContent(c),m=await this.app.vault.cachedRead(G),N=Z==="top"?`${d}
2025-08-12 16:40:13 +08:00
${m}`:`${m}
2025-09-09 18:47:34 +08:00
${d}`;return await this.app.vault.modify(G,N),await nc(this.app,G),G}catch(c){return jI(c,"Could not append to file with template"),null}}async getTemplateContent(G){let l=G;!SZ.test(G)&&!Bd.test(G)&&(l+=".md");let Z=this.app.vault.getAbstractFileByPath(l);if(!(Z instanceof ae.TFile))throw new Error(`Template file not found at path "${l}".`);return await this.app.vault.cachedRead(Z)}};var gZ=class extends Qd{constructor(G,l,Z,c){super(G,l,c);this.templatePath=Z}async run(){let G=await this.getTemplateContent(this.templatePath);return G||M.logError(`Template ${this.templatePath} not found.`),G=await this.formatter.formatFileContent(G),G}};var ml=class extends vb{constructor(G,l,Z){super();this.app=G;this.plugin=l;this.dateParser=Z||cb}async format(G){let l=G;try{l=await this.replaceGlobalVarInString(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.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}async replaceGlobalVarInString(G){let l=G,Z=0,c=new RegExp(FZ.source,"gi");for(;c.test(l)&&!(++Z>5);)l=l.replace(c,(W,d)=>{let m=String(d??"").trim();if(!m)return W;let N=this.plugin?.settings?.globalVariables?.[m];return typeof N=="string"?N:""});return l}promptForValue(G){return G||"user input"}getVariableValue(G){return ca(G)}getCurrentFileLink(){return Na(this.app.workspace.getActiveFile())}suggestForValue(G){return ma(G)}getMacroValue(G){return Wa(G)}promptForMathValue(){return Promise.resolve("calculation_result")}promptForVariable(G,l){return Promise.resolve(da(G))}async getTemplateContent(G){try{return await new gZ(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(TZ.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=Eb.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 Tg(b){return typeof b=="object"&&b!==null&&"enabled"in b&&"placement"in b}function oZ(b){return Tg(b)?b:{enabled:b,placement:"replaceSelection"}}var rG=class extends PG{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:nQ,token:1,suggestion:"{{DATE:}}",cursorOffset:2},{regex:QQ,token:0,suggestion:t2},{regex:iQ,token:10,suggestion:mQ},{regex:HQ,token:4,suggestion:e2},{regex:uQ,token:3,suggestion:DZ},{regex:EQ,token:9,suggestion:NQ},{regex:yQ,token:11,suggestion:aQ},{regex:CQ,token:12,suggestion:hQ},{regex:gQ,token:13,suggestion:"{{RANDOM:}}",cursorOffset:2},{regex:oQ,token:15,suggestion:"{{GLOBAL_VAR:}}",cursorOffset:2},{regex:tQ,token:5,suggestion:"{{VALUE:}}",cursorOffset:2},{regex:eQ,token:2,suggestion:"{{VDATE:}}",cursorOffset:2}];this.contextualTokens=[{regex:sQ,token:6,suggestion:YQ},{regex:JQ,token:14,suggestion:VQ},{regex:wQ,token:8,suggestion:"{{TEMPLATE:"},{regex:vQ,token:7,suggestion:"{{MACRO:"}];this.macroNames=ZZ(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.input
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function No(){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 rY(b,I){var G=typeof Symbol<"u"&&b[Symbol.iterator]||b["@@iterator"];if(!G){if(Array.isArray(b)||(G=cp(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 Yo="finalize",Vo="consider";function vd(b,I,G){b.dispatchEvent(new CustomEvent(Yo,{detail:{items:I,info:G}}))}function kZ(b,I,G){b.dispatchEvent(new CustomEvent(Vo,{detail:{items:I,info:G}}))}var Hh="draggedEntered",zY="draggedLeft",uh="draggedOverIndex",Wp="draggedLeftDocument",Rh={LEFT_FOR_ANOTHER:"leftForAnother",OUTSIDE_OF_ANY:"outsideOfAny"};function ao(b,I,G){b.dispatchEvent(new CustomEvent(Hh,{detail:{indexObj:I,draggedEl:G}}))}function ho(b,I,G){b.dispatchEvent(new CustomEvent(zY,{detail:{draggedEl:I,type:Rh.LEFT_FOR_ANOTHER,theOtherDz:G}}))}function Ro(b,I){b.dispatchEvent(new CustomEvent(zY,{detail:{draggedEl:I,type:Rh.OUTSIDE_OF_ANY}}))}function Fo(b,I,G){b.dispatchEvent(new CustomEvent(uh,{detail:{indexObj:I,draggedEl:G}}))}function Xo(b){window.dispatchEvent(new CustomEvent(Wp,{detail:{draggedEl:b}}))}var Yl={DRAG_STARTED:"dragStarted",DRAGGED_ENTERED:Hh,DRAGGED_ENTERED_ANOTHER:"dragEnteredAnother",DRAGGED_OVER_INDEX:uh,DRAGGED_LEFT:zY,DRAGGED_LEFT_ALL:"draggedLeftAll",DROPPED_INTO_ZONE:"droppedIntoZone",DROPPED_INTO_ANOTHER:"droppedIntoAnother",DROPPED_OUTSIDE_OF_ANY:"droppedOutsideOfAny",DRAG_STOPPED:"dragStopped"},ll={POINTER:"pointer",KEYBOARD:"keyboard"},th="isDndShadowItem",eh="data-is-dnd-shadow-item-internal",po="data-is-dnd-shadow-item-hint",Mc="id:dnd-shadow-placeholder-0000",Qo="dnd-action-dragged-el",UG="id",_X=0;function ye(){_X++}function Ce(){if(_X===0)throw new Error("Bug! trying to decrement when there are no dropzones");_X--}var dp=typeof window>"u",nI=function(){};function $X(b){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,G,l=I?to(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,F=d?l.height/d:b.offsetHeight;return{x:V,y:a,width:h,height:F,top:a,right:V+h,bottom:a+F,left:V}}else return l}function ge(b){var I=$X(b);return{top:I.top+window.scrollY,bottom:I.bottom+window.scrollY,left:I.left+window.scrollX,right:I.right+window.scrollX}}function oe(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 ie(b){return{x:(b.left+b.right)/2,y:(b.top+b.bottom)/2}}function no(b,I){return Math.sqrt(Math.pow(b.x-I.x,2)+Math.pow(b.y-I.y,2))}function sh(b,I){return b.y<=I.bottom&&b.y>=I.top&&b.x>=I.left&&b.x<=I.right}function AY(b){return ie(oe(b))}function Qe(b,I){var G=AY(b),l=ge(I);return sh(G,l)}function Ho(b,I){var G=AY(b),l=AY(I);return no(G,l)}function uo(b){var I=oe(b);return I.right<0||I.left>document.documentElement.scrollWidth||I.bottom<0||I.top>document.documentElement.scrollHeight}function to(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 ed;function mp(){nI(function(){return"resetting indexes cache"}),ed=new Map}mp();function eo(b){var I=Array.from(b.children).f
2025-08-12 16:40:13 +08:00
${G?"Deleting this choice will delete all ("+b.choices.length+") choices inside it!":""}
${l?"Deleting this choice will delete its macro commands!":""}
2025-09-09 18:47:34 +08:00
`)}async function Zs(b,I,G){if(b.type==="Multi"){let Z=await IG.Prompt(I,`Rename ${b.name}`,"",b.name);return Z?{...b,name:Z}:void 0}let l=ri(b,I,G);if(!l)throw new Error("Invalid choice type");return await l.waitForClose}function cs(b){return{...b,command:!b.command}}var Uh=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)}};function Ws(b,I,G){if(!I||!G)return b;let l=np(b,I),Z=np(b,G);if(!l||!Z||Z.type!=="Multi"||l.type==="Multi"&&(l.id===Z.id||zi(l).has(Z.id)))return b;let{updated:c,removed:W}=ds(b,I);return W?ms(c,G,W)??b:b}function np(b,I){for(let G of b){if(G.id===I)return G;if(G.type==="Multi"){let l=np(G.choices,I);if(l)return l}}}function zi(b){let I=new Set,G=l=>{I.add(l.id),l.type==="Multi"&&l.choices.forEach(G)};return(b.choices??[]).forEach(G),I}function ds(b,I){let G;return{updated:b.map(Z=>{if(Z.id===I){G=Z;return}if(Z.type!=="Multi")return Z;let c=ds(Z.choices,I);return c.removed&&(G=c.removed),c.removed?{...Z,choices:c.updated}:Z}).filter(Boolean),removed:G}}function ms(b,I,G){let l=!1,Z=b.map(c=>{if(c.id===I&&c.type==="Multi"){l=!0;let d=c;return{...d,choices:[...d.choices,G]}}if(c.type!=="Multi")return c;let W=ms(c.choices,I,G);return W?(l=!0,{...c,choices:W}):c});return l?Z:void 0}var Bb=require("obsidian");var sG=require("obsidian");var Ns=require("obsidian");var Bh=null,xi=24*60*60*1e3;async function jY(){if(Bh&&Date.now()-Bh.fetchedAt<xi)return Bh.data;if(lI.getState().disableOnlineFeatures)throw new Error("Fetching models directory is disabled: Online features are turned off.");let I=await(await(0,Ns.requestUrl)({url:"https://models.dev/api.json",method:"GET"})).json;return Bh={data:I,fetchedAt:Date.now()},I}function Ui(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 Oh(b){let I=await jY(),G=Ui(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 Mh(b){return b.map(I=>({name:I.id,maxTokens:Math.max(1,Math.floor(I.limit?.context??128e3))}))}function tp(b,I){let G=new Set(b.map(Z=>Z.name)),l=I.filter(Z=>!G.has(Z.name));return b.concat(l)}var Ub=require("obsidian");var jh=class extends Ub.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 jY(),this.allModels=await Oh(this.provider),this.filtered=this.allModels.slice()}catch(G){new Ub.Notice(`Failed to load model directory: ${G.message??G}`)}}display(){this.contentEl.empty(),this.modalEl.style.width="min(100v
2025-08-12 16:40:13 +08:00
`)}}).join(`
2025-09-09 18:47:34 +08:00
`)}}var gs=b=>b.join(""),QA=b=>b.split(/\b/),nA=Cs("<<<<<<< YOUR CHANGES","=======",">>>>>>> APP AUTHORS CHANGES",gs),HA={splitFunction:QA,joinFunction:gs,conflictFunction:nA};function rp(b,I,G,l={}){l=Object.assign({},HA,l);let[Z,c,W]=[b,I,G].map(N=>l.splitFunction.call(l,N)),d=qY.merge(Z,c,W);return fY.collateMerge(d,l.joinFunction,l.conflictFunction)}var os=rp;var Ls=require("obsidian");function is(b,I){return b.line===I.line}function uA(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 c2(b,I,G=!1){let l=uA(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=As(b,I,Y=>Y.trim()==="");return N!==null&&N>I?N-1:I}let W=b.length-1,d=tA(Z,l,b,G),m=wA(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 tA(b,I,G,l){let Z=I.findIndex(Y=>is(Y,b)),c=Z===I.length-1,W=G.length-1;if(c)return W;let[d,m]=eA(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=sA(b.line,I);return Y===null?W:Y}return W}function eA(b,I){let G=I.findIndex(Z=>is(Z,b)),l=As(I,G,Z=>Z.level<=b.level);return l===null?[-1,!1]:[l,!0]}function sA(b,I){let G=I.findIndex(l=>l.line>b);return G===-1?null:G}function wA(b,I,G){for(let l=I-1;l>=0;l--)if(G(b[l]))return l;return null}function As(b,I,G){for(let l=I+1;l<b.length;l++)if(G(b[l]))return l;return null}var W2=class extends Fb{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 Ia(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.formatLocationString(this.choice.insertAfter.after),Z=TX(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=c2(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.formatLocationString(this.choice.insertAfter.after))}
${G}`;if(this.choice.insertAfter?.createIfNotFoundLocation===Ud){let c=this.file?this.getFrontmatterEndPosition(this.file):-1;return this.insertTextAfterPositionInBody(Z,this.fileContent,c)}if(this.choice.insertAfter?.createIfNotFoundLocation===hV)return`${this.fileContent}
${Z}`;if(this.choice.insertAfter?.createIfNotFoundLocation===RV)try{let c=this.app.workspace.getActiveViewOfType(Ls.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=TX(this.fileContent);d=c2(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?(M.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?`
2025-08-12 16:40:13 +08:00
`:""}${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-09-09 18:47:34 +08:00
${G}${d}`}};function zp(b){return b.captureToActiveFile&&b.newLineCapture?.enabled?b.newLineCapture.direction==="above"?"newLineAbove":"newLineBelow":b.captureToActiveFile&&!b.prepend&&!b.insertAfter.enabled?"currentLine":b.insertAfter.enabled?"insertAfter":b.prepend?"prepend":"append"}var ks=4e3,d2=class extends Yd{constructor(G,l,Z,c){super(G);this.choiceExecutor=c;this.choice=Z,this.plugin=l,this.formatter=new W2(G,l,c)}showSuccessNotice(G,{wasNewFile:l,action:Z}){let c=`'${G.basename}'`;if(l){new xp.Notice(`Created and captured to ${c}`,ks);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 xp.Notice(W,ks)}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{M.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),N=zp(this.choice);if(N==="currentLine"||N==="newLineAbove"||N==="newLineBelow"){let V=await Ia(this.app,m,W);switch(N){case"currentLine":p0(V,this.app);break;case"newLineAbove":n0(V,this.app);break;case"newLineBelow":H0(V,this.app);break}}else await this.app.vault.modify(W,d),await nc(this.app,W);if(this.plugin.settings.showCaptureNotification){let V=zp(this.choice);this.showSuccessNotice(W,{wasNewFile:!c,action:V})}let Y=oZ(this.choice.appendLink);Y.enabled&&Ga(this.app,this.app.fileManager.generateMarkdownLink(W,""),Y.placement),this.choice.openFile&&W&&(la(this.app,W)||await iW(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=DZ,this.choice.task&&(G=`- [ ] ${G}
`),G}async getFormattedPathToCaptureTo(G){let l=this.choiceExecutor?.variables?.get(Md);if(!G&&l&&typeof l=="string"&&l.length>0)return l;if(G){let Y=this.app.workspace.getActiveFile();return El(Y,"Cannot capture to active file - no active file."),Y.path}let Z=this.choice.captureTo,c=await this.formatFilePath(Z),W=c.replace(/^\/$|\/\.md$|^\.md$/,""),d=W==="",m=d||ba(this.app,W),N=c.startsWith("#");if(m)return this.selectFileInFolder(W,d);if(N){let Y=c.replace(/\.md$/,"");return this.selectFileWithTag(Y)}return c}async selectFileInFolder(G,l){let Z=G.endsWith("/")||l?G:`${G}/`,c=sZ(this.app,Z);El(c.length>0,`Folder ${Z} is empty.`);let W=c.map(N=>N.path),d=await Kl.Suggest(this.app,W.map(N=>N.replace(Z,"")),W);El(!!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=Za(this.app,l);El(Z.length>0,`No files with tag ${G}.`);let c=Z.map(d=>d.path),W=await Kl.Suggest(this.app,c,c);return El(!!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=os(m,W,d);El(!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-09-09 18:47:34 +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 gZ(this.app,this.plugin,this.choice.createFileIfItDoesntExist.template,this.choiceExecutor).run());let d=await this.createFileWithInput(G,W);this.choice.createFileIfItDoesntExist.createWithTemplate&&W&&await nc(this.app,d);let m=await this.app.vault.read(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 m2=require("obsidian");var rZ=class b extends m2.FuzzySuggestModal{constructor(G,l,Z){super(G.app);this.plugin=G;this.choices=l;this.choiceExecutor=new YZ(this.app,this.plugin);Z&&(this.choiceExecutor=Z)}static Open(G,l,Z){new b(G,l,Z).open()}renderSuggestion(G,l){l.empty(),m2.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 gd("\u2190 Back").addChoices(this.choices)),b.Open(this.plugin,l)}};var rs=require("obsidian");var PY=class extends vb{constructor(G,l,Z){super();this.app=G;this.plugin=l;this.choiceExecutor=Z;this.requirements=new Map;this.templatesToScan=new Set;this.dateParser=cb,Z&&(this.variables=new Map(Z.variables))}async scanString(G){let l=await this.replaceGlobalVarInString(G);this.scanVariableTokens(l),await this.format(l)}async format(G){let l=G;l=await this.replaceGlobalVarInString(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=await this.replaceMathValueInString(l),l=this.replaceRandomInString(l);{let Z=new RegExp(dW.source,"gi"),c;for(;(c=Z.exec(l))!==null;){let W=c[1];W&&this.templatesToScan.add(W)}}return l}async replaceGlobalVarInString(G){let l=G,Z=0,c=new RegExp(FZ.source,"gi");for(;c.test(l)&&!(++Z>5);)l=l.replace(c,(W,d)=>{let m=String(d??"").trim();if(!m)return W;let N=this.plugin?.settings?.globalVariables?.[m];return typeof N=="string"?N:""});return l}scanVariableTokens(G){let l=new RegExp(RZ.source,"gi"),Z;for(;(Z=l.exec(G))!==null;){let c=(Z[1]??"").trim();if(!c)continue;let W=c.indexOf("|"),d=c,m;if(W!==-1&&(m=c.substring(W+1).trim(),d=c.substring(0,W).trim()),!d)continue;let N=W===-1&&d.includes(",");if(this.requirements.has(d)){if(m){let Y=this.requirements.get(d);Y.defaultValue===void 0&&(Y.defaultValue=m)}}else{let Y={id:d,label:d,type:N?"dropdown":"text"};N&&(Y.options=d.split(",").map(V=>V.trim()).filter(Boolean)),m&&(Y.defaultValue=m),this.requirements.set(d,Y)}}}async promptForValue(G){let l="value";return this.requirements.has(l)||this.requirements.set(l,{id:l,label:G||"Enter value",type:this.plugin.settings.inputPrompt==="multi-line"?"textarea":"text",source:"collected"}),""}async promptForVariable(G,l){if(!G)return"";if(l?.type==="VDATE"&&l.dateFormat)return this.requirements.has(G)||this.requirements.set(G,{id:G,label:G,type:"date",defaultValue:l.defaultValue,dateFormat:l.dateFormat,source:"collected"}),l.defaultValue??"";if(!this.requirements.has(G)){let Z=G.includes(","),c={id:G,label:G,type:Z?"dropdown":"text",source:"collected"};Z&&(c.options=G.split(",").map(W=>W.trim()).filter(Boolean)),l?.defaultValue&&(c.defaultValue=l.defaultValue),this.requirements.set(G,c)}return l?.defaultValue??""}async promptForMathValue(){let G="mvalue";return this.requirements.has(G)||this.requirements.set
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-09-09 18:47:34 +08:00
QuickAdd will now revert to backup.`),b.settings=l}}b.saveSettings()}var Ss=UA;var rd=require("obsidian");async function BA(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 OA(b,I=1){let G=b.split(`
2025-08-12 16:40:13 +08:00
`);for(let l=0;l<G.length;l++)G[l].startsWith("#")&&(G[l]="#".repeat(I)+G[l]);return G.join(`
2025-09-09 18:47:34 +08:00
`)}var V2=class extends rd.Modal{constructor(I,G){super(I),this.previousVersion=G,this.releaseNotesPromise=BA("chhoumann","quickadd",G),this.releaseNotesPromise.then(l=>{if(this.releases=l,this.releases.length===0){this.close();return}this.display()}).catch(l=>{M.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}
2025-08-12 16:40:13 +08:00
`,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-09-09 18:47:34 +08:00
${OA(W)}`;rd.MarkdownRenderer.renderMarkdown(N,c,this.app.vault.getRoot().path,new rd.Component)}};var vG=require("obsidian");var a2=class extends vG.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=Yb(this.settings.model);return G?Jl(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 IG.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 vG.Setting(G).setName("Model").setDesc("The model the AI Assistant will use").addDropdown(l=>{let Z=gb();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 vG.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 vG.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 vG.TextAreaComponent(G);c.setValue(this.settings.systemPrompt).onChange(async N=>{this.settings.systemPrompt=N,d.innerText=await W.format(N),m()}),new rG(this.app,c.inputEl,UI.instance);let W=new ml(this.app,UI.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,vG.debounce)(()=>{Z.innerText=`Token count: ${this.systemPromptTokenLength}`},50);m(),(async()=>d.innerText=await W.format(this.settings.systemPrompt??""))()}addShowAdvancedSettingsToggle(G){new vG.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 vG.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 vG.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 vG.Setting(
2025-07-08 07:31:48 +08:00
/* nosourcemap */