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

88 lines
3.5 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
*/
var R4=Object.create;var T1=Object.defineProperty;var n4=Object.getOwnPropertyDescriptor;var X4=Object.getOwnPropertyNames;var p4=Object.getPrototypeOf,s4=Object.prototype.hasOwnProperty;var e4=(G,I,l)=>I in G?T1(G,I,{enumerable:!0,configurable:!0,writable:!0,value:l}):G[I]=l;var fa=(G,I)=>()=>(I||G((I={exports:{}}).exports,I),I.exports),t4=(G,I)=>{for(var l in I)T1(G,l,{get:I[l],enumerable:!0})},ja=(G,I,l,c)=>{if(I&&typeof I=="object"||typeof I=="function")for(let b of X4(I))!s4.call(G,b)&&b!==l&&T1(G,b,{get:()=>I[b],enumerable:!(c=n4(I,b))||c.enumerable});return G};var dW=(G,I,l)=>(l=G!=null?R4(p4(G)):{},ja(I||!G||!G.__esModule?T1(l,"default",{value:G,enumerable:!0}):l,G)),E4=G=>ja(T1({},"__esModule",{value:!0}),G);var oI=(G,I,l)=>(e4(G,typeof I!="symbol"?I+"":I,l),l);var UV=fa(cd=>{"use strict";cd.byteLength=HY;cd.toByteArray=nY;cd.fromByteArray=sY;var x2=[],c2=[],YY=typeof Uint8Array<"u"?Uint8Array:Array,o3="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(WG=0,xV=o3.length;WG<xV;++WG)x2[WG]=o3[WG],c2[o3.charCodeAt(WG)]=WG;var WG,xV;c2["-".charCodeAt(0)]=62;c2["_".charCodeAt(0)]=63;function kV(G){var I=G.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var l=G.indexOf("=");l===-1&&(l=I);var c=l===I?0:4-l%4;return[l,c]}function HY(G){var I=kV(G),l=I[0],c=I[1];return(l+c)*3/4-c}function RY(G,I,l){return(I+l)*3/4-l}function nY(G){var I,l=kV(G),c=l[0],b=l[1],Z=new YY(RY(G,c,b)),d=0,W=b>0?c-4:c,a;for(a=0;a<W;a+=4)I=c2[G.charCodeAt(a)]<<18|c2[G.charCodeAt(a+1)]<<12|c2[G.charCodeAt(a+2)]<<6|c2[G.charCodeAt(a+3)],Z[d++]=I>>16&255,Z[d++]=I>>8&255,Z[d++]=I&255;return b===2&&(I=c2[G.charCodeAt(a)]<<2|c2[G.charCodeAt(a+1)]>>4,Z[d++]=I&255),b===1&&(I=c2[G.charCodeAt(a)]<<10|c2[G.charCodeAt(a+1)]<<4|c2[G.charCodeAt(a+2)]>>2,Z[d++]=I>>8&255,Z[d++]=I&255),Z}function XY(G){return x2[G>>18&63]+x2[G>>12&63]+x2[G>>6&63]+x2[G&63]}function pY(G,I,l){for(var c,b=[],Z=I;Z<l;Z+=3)c=(G[Z]<<16&16711680)+(G[Z+1]<<8&65280)+(G[Z+2]&255),b.push(XY(c));return b.join("")}function sY(G){for(var I,l=G.length,c=l%3,b=[],Z=16383,d=0,W=l-c;d<W;d+=Z)b.push(pY(G,d,d+Z>W?W:d+Z));return c===1?(I=G[l-1],b.push(x2[I>>2]+x2[I<<4&63]+"==")):c===2&&(I=(G[l-2]<<8)+G[l-1],b.push(x2[I>>10]+x2[I>>4&63]+x2[I<<2&63]+"=")),b.join("")}});var A5=fa(j2=>{"use strict";Object.defineProperty(j2,"__esModule",{value:!0});require("obsidian");var dc=class extends Error{},S3=class extends dc{constructor(I){super(`Invalid DateTime: ${I.toMessage()}`)}},D3=class extends dc{constructor(I){super(`Invalid Interval: ${I.toMessage()}`)}},K3=class extends dc{constructor(I){super(`Invalid Duration: ${I.toMessage()}`)}},hG=class extends dc{},pd=class extends dc{constructor(I){super(`Invalid unit ${I}`)}},Al=class extends dc{},L2=class extends dc{constructor(){super("Zone is an abstract class")}},L="numeric",t2="short",jl="long",sd={year:L,month:L,day:L},AN={year:L,month:t2,day:L},jY={year:L,month:t2,day:L,weekday:t2},gN={year:L,month:jl,day:L},zN={year:L,month:jl,day:L,weekday:jl},xN={hour:L,minute:L},kN={hour:L,minute:L,second:L},UN={hour:L,minute:L,second:L,timeZoneName:t2},MN={hour:L,minute:L,second:L,timeZoneName:jl},BN={hour:L,minute:L,hourCycle:"h23"},LN={hour:L,minute:L,second:L,hourCycle:"h23"},fN={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:t2},jN={hour:L,minute:L,second:L,hourCycle:"h23",timeZoneName:jl},TN={year:L,month:L,day:L,hour:L,minute:L},CN={year:L,month:L,day:L,hour:L,minute:L,second:L},SN={year:L,month:t2,day:L,hour:L,minute:L},DN={year:L,month:t2,day:L,hour:L,minute:L,second:L},TY={year:L,month:t2,day:L,weekday:t2,hour:L,minute:L},KN={year:L,month:jl,day:L,hour:L,minute:L,timeZoneName:t2},ON={year:L,month:jl,day:L,hour:L,minute:L,second:L,timeZoneName:t2},PN={year:L,month:jl,day:L,weekday:jl,hour:L,minute:L,timeZoneName:jl},qN={year:L,month:jl,day:L,weekday:jl,hour:L,minute:L,second:L,timeZoneName:jl},HG=class{get type(){throw new L2}get name(){throw new L2}get ianaName(){return this.name}get isUniversal(){throw new L2}offsetName(I,l){throw new L2}formatOffset(I,l){throw new L2}offset(I){throw new L2}equal
`||H.charAt(k)==="\r"&&H.charAt(k+1)!==`
`)&&(A++,x===0&&(x=k+1)),k--}var II=o+A,tI=p-x;return u[p]={line:II,lineStart:x},{offset:p,line:II+1,column:tI+1}}function y(H){if(!Y(H))throw new Error("not a parser: "+H)}function cI(H,p){return typeof H=="string"?H.charAt(p):H[p]}function dI(H){if(typeof H!="number")throw new Error("not a number: "+H)}function YI(H){if(typeof H!="function")throw new Error("not a function: "+H)}function hI(H){if(typeof H!="string")throw new Error("not a string: "+H)}var uI=2,Sl=3,xI=8,W2=5*xI,dl=4*xI,nl=" ";function a2(H,p){return new Array(p+1).join(H)}function z(H,p,u){var o=p-H.length;return o<=0?H:a2(u,o)+H}function VI(H,p,u,o){return{from:H-p>0?H-p:0,to:H+u>o?o:H+u}}function pI(H,p){var u,o,A,x,k,II=p.index,tI=II.offset,tl=1;if(tI===H.length)return"Got the end of the input";if(Q(H)){var al=tI-tI%xI,D2=tI-al,zl=VI(al,W2,dl+xI,H.length),K2=m(function(SI){return m(function(uG){return z(uG.toString(16),2,"0")},SI)},function(SI,uG){var QG=SI.length,Ac=[],vG=0;if(QG<=uG)return[SI.slice()];for(var JG=0;JG<QG;JG++)Ac[vG]||Ac.push([]),Ac[vG].push(SI[JG]),(JG+1)%uG==0&&vG++;return Ac}(H.slice(zl.from,zl.to).toJSON().data,xI));x=function(SI){return SI.from===0&&SI.to===1?{from:SI.from,to:SI.to}:{from:SI.from/xI,to:Math.floor(SI.to/xI)}}(zl),o=al/xI,u=3*D2,D2>=4&&(u+=1),tl=2,A=m(function(SI){return SI.length<=4?SI.join(" "):SI.slice(0,4).join(" ")+" "+SI.slice(4).join(" ")},K2),(k=(8*(x.to>0?x.to-1:x.to)).toString(16).length)<2&&(k=2)}else{var EG=H.split(/\r\n|[\n\r\u2028\u2029]/);u=II.column-1,o=II.line-1,x=VI(o,uI,Sl,EG.length),A=EG.slice(x.from,x.to),k=x.to.toString().length}var H4=o-x.from;return Q(H)&&(k=(8*(x.to>0?x.to-1:x.to)).toString(16).length)<2&&(k=2),a(function(SI,uG,QG){var Ac,vG=QG===H4,JG=vG?"> ":nl;return Ac=Q(H)?z((8*(x.from+QG)).toString(16),k,"0"):z((x.from+QG+1).toString(),k," "),[].concat(SI,[JG+Ac+" | "+uG],vG?[nl+a2(" ",k)+" | "+z("",u," ")+a2("^",tl)]:[])},[],A).join(`
`)}function Wl(H,p){return[`
`,"-- PARSING FAILED "+a2("-",50),`
`,pI(H,p),`
`,(u=p.expected,u.length===1?`Expected:
`+u[0]:`Expected one of the following:
`+u.join(", ")),`
`].join("");var u}function J2(H){return H.flags!==void 0?H.flags:[H.global?"g":"",H.ignoreCase?"i":"",H.multiline?"m":"",H.unicode?"u":"",H.sticky?"y":""].join("")}function Vc(){for(var H=[].slice.call(arguments),p=H.length,u=0;u<p;u+=1)y(H[u]);return Z(function(o,A){for(var x,k=new Array(p),II=0;II<p;II+=1){if(!(x=v(H[II]._(o,A),x)).status)return x;k[II]=x.value,A=x.index}return v(e(A,k),x)})}function S2(){var H=[].slice.call(arguments);if(H.length===0)throw new Error("seqMap needs at least one argument");var p=H.pop();return YI(p),Vc.apply(null,H).map(function(u){return p.apply(null,u)})}function Nc(){var H=[].slice.call(arguments),p=H.length;if(p===0)return ic("zero alternates");for(var u=0;u<p;u+=1)y(H[u]);return Z(function(o,A){for(var x,k=0;k<H.length;k+=1)if((x=v(H[k]._(o,A),x)).status)return x;return x})}function Cb(H,p){return pG(H,p).or(w2([]))}function pG(H,p){return y(H),y(p),S2(H,p.then(H).many(),function(u,o){return[u].concat(o)})}function oc(H){hI(H);var p="'"+H+"'";return Z(function(u,o){var A=o+H.length,x=u.slice(o,A);return x===H?e(A,x):w(o,p)})}function m2(H,p){(function(A){if(!(A instanceof RegExp))throw new Error("not a regexp: "+A);for(var x=J2(A),k=0;k<x.length;k++){var II=x.charAt(k);if(II!=="i"&&II!=="m"&&II!=="u"&&II!=="s")throw new Error('unsupported regexp flag "'+II+'": '+A)}})(H),arguments.length>=2?dI(p):p=0;var u=function(A){return RegExp("^(?:"+A.source+")",J2(A))}(H),o=""+H;return Z(function(A,x){var k=u.exec(A.slice(x));if(k){if(0<=p&&p<=k.length){var II=k[0],tI=k[p];return e(x+II.length,tI)}return w(x,"valid match group (0 to "+k.length+") in "+o)}return w(x,o)})}function w2(H){return Z(function(p,u){return e(u,H)})}function ic(H){return Z(function(p,u){return w(u,H)})}function sG(H){if(Y(H))return Z(function(p,u){var o=H._(p,u);return o.index=u,o.value="",o});if(typeof H=="string")return sG(oc(H));if(H instanceof RegExp)return sG(m2(H));throw new Error("not a string, regexp, or parser: "+H)}function Sb(H){return y(H),Z(function(p,u){var o=H._(p,u),A=p.slice(u,o.index);return o.status?w(u,'not "'+A+'"'):e(u,null)})}function Dl(H){return YI(H),Z(function(p,u){var o=cI(p,u);return u<p.length&&H(o)?e(u+1,o):w(u,"a character/byte matching "+H)})}function rc(H,p){arguments.length<2&&(p=H,H=void 0);var u=Z(function(o,A){return u._=p()._,u._(o,A)});return H?u.desc(H):u}function eG(){return ic("fantasy-land/empty")}d.parse=function(H){if(typeof H!="string"&&!Q(H))throw new Error(".parse must be called with a string or Buffer as its argument");var p,u=this.skip(tG)._(H,0);return p=u.status?{status:!0,value:u.value}:{status:!1,index:bI(H,u.furthest),expected:u.expected},delete T[H],p},d.tryParse=function(H){var p=this.parse(H);if(p.status)return p.value;var u=Wl(H,p),o=new Error(u);throw o.type="ParsimmonError",o.result=p,o},d.assert=function(H,p){return this.chain(function(u){return H(u)?w2(u):ic(p)})},d.or=function(H){return Nc(this,H)},d.trim=function(H){return this.wrap(H,H)},d.wrap=function(H,p){return S2(H,this,p,function(u,o){return o})},d.thru=function(H){return H(this)},d.then=function(H){return y(H),Vc(this,H).map(function(p){return p[1]})},d.many=function(){var H=this;return Z(function(p,u){for(var o=[],A=void 0;;){if(!(A=v(H._(p,u),A)).status)return v(e(u,o),A);if(u===A.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");u=A.index,o.push(A.value)}})},d.tieWith=function(H){return hI(H),this.map(function(p){if(function(A){if(!t(A))throw new Error("not an array: "+A)}(p),p.length){hI(p[0]);for(var u=p[0],o=1;o<p.length;o++)hI(p[o]),u+=H+p[o];return u}return""})},d.tie=function(){return this.tieWith("")},d.times=function(H,p){var u=this;return arguments.length<2&&(p=H),dI(H),dI(p),Z(function(o,A){for(var x=[],k=void 0,II=void 0,tI=0;tI<H;tI+=1){if(II=v(k=u._(o,A),II),!k.status)return II;A=k.index,x.push(k.value)}for(;tI<p&&(II=v(k=u._(o,A),II),k.status);tI+=1)A=k.index,x.push(k.value);return v(e(A,x),II)})},d.result=function(H){return this.map(function(){return H})},d.atMost=function(H){r
`),Ba=oc(`\r
`),La=Nc(Ba,Ma,Ua).desc("newline"),Y4=Nc(La,tG);Z.all=Db,Z.alt=Nc,Z.any=j1,Z.cr=Ua,Z.createLanguage=function(H){var p={};for(var u in H)({}).hasOwnProperty.call(H,u)&&function(o){p[o]=rc(function(){return H[o](p)})}(u);return p},Z.crlf=Ba,Z.custom=function(H){return Z(H(e,w))},Z.digit=Kb,Z.digits=Ob,Z.empty=eG,Z.end=Y4,Z.eof=tG,Z.fail=ic,Z.formatError=Wl,Z.index=hc,Z.isParser=Y,Z.lazy=rc,Z.letter=V4,Z.letters=N4,Z.lf=Ma,Z.lookahead=sG,Z.makeFailure=w,Z.makeSuccess=e,Z.newline=La,Z.noneOf=function(H){return Dl(function(p){return H.indexOf(p)<0}).desc("none of '"+H+"'")},Z.notFollowedBy=Sb,Z.of=w2,Z.oneOf=function(H){for(var p=H.split(""),u=0;u<p.length;u++)p[u]="'"+p[u]+"'";return Dl(function(o){return H.indexOf(o)>=0}).desc(p)},Z.optWhitespace=h4,Z.Parser=Z,Z.range=function(H,p){return Dl(function(u){return H<=u&&u<=p}).desc(H+"-"+p)},Z.regex=m2,Z.regexp=m2,Z.sepBy=Cb,Z.sepBy1=pG,Z.seq=Vc,Z.seqMap=S2,Z.seqObj=function(){for(var H,p={},u=0,o=(H=arguments,Array.prototype.slice.call(H)),A=o.length,x=0;x<A;x+=1){var k=o[x];if(!Y(k)){if(t(k)&&k.length===2&&typeof k[0]=="string"&&Y(k[1])){var II=k[0];if(Object.prototype.hasOwnProperty.call(p,II))throw new Error("seqObj: duplicate key "+II);p[II]=!0,u++;continue}throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.")}}if(u===0)throw new Error("seqObj expects at least one named parser, found zero");return Z(function(tI,tl){for(var al,D2={},zl=0;zl<A;zl+=1){var K2,EG;if(t(o[zl])?(K2=o[zl][0],EG=o[zl][1]):(K2=null,EG=o[zl]),!(al=v(EG._(tI,tl),al)).status)return al;K2&&(D2[K2]=al.value),tl=al.index}return v(e(tl,D2),al)})},Z.string=oc,Z.succeed=w2,Z.takeWhile=function(H){return YI(H),Z(function(p,u){for(var o=u;o<p.length&&H(cI(p,o));)o++;return e(o,p.slice(u,o))})},Z.test=Dl,Z.whitespace=F4,Z["fantasy-land/empty"]=eG,Z["fantasy-land/of"]=w2,Z.Binary={bitSeq:F,bitSeqObj:function(H){h();var p={},u=0,o=m(function(x){if(t(x)){var k=x;if(k.length!==2)throw new Error("["+k.join(", ")+"] should be length 2, got length "+k.length);if(hI(k[0]),dI(k[1]),Object.prototype.hasOwnProperty.call(p,k[0]))throw new Error("duplicate key in bitSeqObj: "+k[0]);return p[k[0]]=!0,u++,k}return dI(x),[null,x]},H);if(u<1)throw new Error("bitSeqObj expects at least one named pair, got ["+H.join(", ")+"]");var A=m(function(x){return x[0]},o);return F(m(function(x){return x[1]},o)).map(function(x){return a(function(k,II){return II[0]!==null&&(k[II[0]]=II[1]),k},{},m(function(k,II){return[k,x[II]]},A))})},byte:function(H){if(h(),dI(H),H>255)throw new Error("Value specified to byte constructor ("+H+"=0x"+H.toString(16)+") is larger in value than a single byte.");var p=(H>15?"0x":"0x0")+H.toString(16);return Z(function(u,o){var A=cI(u,o);return A===H?e(o+1,A):w(o,p)})},buffer:function(H){return R("buffer",H).map(function(p){return Buffer.from(p)})},encodedString:function(H,p){return R("string",p).map(function(u){return u.toString(H)})},uintBE:E,uint8BE:E(1),uint16BE:E(2),uint32BE:E(4),uintLE:s,uint8LE:s(1),uint16LE:s(2),uint32LE:s(4),intBE:J,int8BE:J(1),int16BE:J(2),int32BE:J(4),intLE:i,int8LE:i(1),int16LE:i(2),int32LE:i(4),floatBE:R("floatBE",4).map(function(H){return H.readFloatBE(0)}),floatLE:R("floatLE",4).map(function(H){return H.readFloatLE(0)}),doubleBE:R("doubleBE",8).map(function(H){return H.readDoubleBE(0)}),doubleLE:R("doubleLE",8).map(function(H){return H.readDoubleLE(0)})},l.exports=Z}])})})(Qd,Qd.exports);var n=Qd.exports,na=()=>/[#*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
`)[0];let c=l.substring(2).trim();return n.makeSuccess(I+l.length,c)}),namedField:G=>n.alt(G.explicitNamedField,LR(e2.field).map(([I,l])=>vd.named(fR(l),I))),sortField:G=>n.seqMap(e2.field.skip(n.optWhitespace),n.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1),(I,l)=>{let c=l.length==0?"ascending":l[0].toLowerCase();return c=="desc"&&(c="descending"),c=="asc"&&(c="ascending"),{field:I,direction:c}}),headerClause:G=>G.queryType.chain(I=>{switch(I){case"table":return rN(()=>({type:I,fields:[],showId:!0}),n.seqMap(n.regexp(/WITHOUT\s+ID/i).skip(n.optWhitespace).atMost(1),n.sepBy(G.namedField,n.string(",").trim(n.optWhitespace)),(l,c)=>({type:I,fields:c,showId:l.length==0})));case"list":return rN(()=>({type:I,format:void 0,showId:!0}),n.seqMap(n.regexp(/WITHOUT\s+ID/i).skip(n.optWhitespace).atMost(1),e2.field.atMost(1),(l,c)=>({type:I,format:c.length==1?c[0]:void 0,showId:l.length==0})));case"task":return n.succeed({type:I});case"calendar":return n.whitespace.then(n.seqMap(G.namedField,l=>({type:I,showId:!0,field:l})));default:return n.fail(`Unrecognized query type '${I}'`)}}).desc("TABLE or LIST or TASK or CALENDAR"),fromClause:G=>n.seqMap(n.regexp(/FROM/i),n.whitespace,e2.source,(I,l,c)=>c),whereClause:G=>n.seqMap(n.regexp(/WHERE/i),n.whitespace,e2.field,(I,l,c)=>({type:"where",clause:c})).desc("WHERE <expression>"),sortByClause:G=>n.seqMap(n.regexp(/SORT/i),n.whitespace,G.sortField.sepBy1(n.string(",").trim(n.optWhitespace)),(I,l,c)=>({type:"sort",fields:c})).desc("SORT field [ASC/DESC]"),limitClause:G=>n.seqMap(n.regexp(/LIMIT/i),n.whitespace,e2.field,(I,l,c)=>({type:"limit",amount:c})).desc("LIMIT <value>"),flattenClause:G=>n.seqMap(n.regexp(/FLATTEN/i).skip(n.whitespace),G.namedField,(I,l)=>({type:"flatten",field:l})).desc("FLATTEN <value> [AS <name>]"),groupByClause:G=>n.seqMap(n.regexp(/GROUP BY/i).skip(n.whitespace),G.namedField,(I,l)=>({type:"group",field:l})).desc("GROUP BY <value> [AS <name>]"),clause:G=>n.alt(G.fromClause,G.whereClause,G.sortByClause,G.limitClause,G.groupByClause,G.flattenClause),query:G=>n.seqMap(G.headerClause.trim(C3),G.fromClause.trim(C3).atMost(1),G.clause.trim(C3).many(),(I,l,c)=>({header:I,source:l.length==0?f2.folder(""):l[0],operations:c,settings:Ra}))}),C3=n.alt(n.whitespace,r5.comment).many().map(G=>G.join("")),jR=G=>G?G.plugins.plugins.dataview?.api:window.DataviewAPI,TR=G=>G.plugins.enabledPlugins.has("dataview");j2.DATE_SHORTHANDS=aa;j2.DURATION_TYPES=Wa;j2.EXPRESSION=e2;j2.KEYWORDS=ma;j2.QUERY_LANGUAGE=r5;j2.getAPI=jR;j2.isPluginEnabled=TR;j2.parseField=BR});var zn={};t4(zn,{default:()=>nI});module.exports=E4(zn);var m4=require("obsidian");var Q2=require("obsidian");function Ql(){}function V2(G,I){for(let l in I)G[l]=I[l];return G}function VW(G){return G()}function Ta(){return Object.create(null)}function QI(G){G.forEach(VW)}function JI(G){return typeof G=="function"}function HI(G,I){return G!=G?I==I:G!==I||G&&typeof G=="object"||typeof G=="function"}function Ca(G){return Object.keys(G).length===0}function qb(G,I,l,c){if(G){let b=Sa(G,I,l,c);return G[0](b)}}function Sa(G,I,l,c){return G[1]&&c?V2(l.ctx.slice(),G[1](c(I))):l.ctx}function _b(G,I,l,c){if(G[2]&&c){let b=G[2](c(l));if(I.dirty===void 0)return b;if(typeof b=="object"){let Z=[],d=Math.max(I.dirty.length,b.length);for(let W=0;W<d;W+=1)Z[W]=I.dirty[W]|b[W];return Z}return I.dirty|b}return I.dirty}function $b(G,I,l,c,b,Z){if(b){let d=Sa(I,l,c,Z);G.p(d,b)}}function IZ(G){if(G.ctx.length>32){let I=[],l=G.ctx.length/32;for(let c=0;c<l;c++)I[c]=-1;return I}return-1}function lZ(G){let I={};for(let l in G)l[0]!=="$"&&(I[l]=G[l]);return I}function iG(G,I){let l={};I=new Set(I);for(let c in G)!I.has(c)&&c[0]!=="$"&&(l[c]=G[c]);return l}function cZ(G){return G&&JI(G.destroy)?G.destroy:Ql}var Da=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,S1=class{constructor(I){this.options=I,this._listeners="WeakMap"in Da?new WeakMap:void 0}observe(I,l){return this._listeners.set(I,l),this._getObserver().observe(I,this.options),()=>{this._listeners.delete(I),this._observer.unobserve(I)}}_getObserver(){var I;return(I=this._obs
<div class="qa-suggestion-content">
<span class="suggestion-main-text">${W}</span>
${m}
</div>
<span class="suggestion-sub-text">${a}</span>
`,this.addHoverTooltip(c,b)}addHoverTooltip(l,c){let b,Z=()=>{clearTimeout(b),document.querySelector(".qa-file-tooltip")?.remove()};l.addEventListener("mouseenter",()=>{Z(),b=setTimeout(async()=>{let W=this.createTooltip(c);W&&(document.body.appendChild(W),this.positionTooltip(W,l))},200)}),l.addEventListener("mouseleave",Z),l.addEventListener("blur",Z);let d=()=>Z();document.addEventListener("scroll",d,{passive:!0}),l._tooltipCleanup=()=>{Z(),document.removeEventListener("scroll",d)}}createTooltip(l){let c=this.app.vault.getAbstractFileByPath(l.path);if(!c||!(c instanceof v3.TFile))return null;let b=document.createElement("div");return b.className="qa-file-tooltip",b.innerHTML=`
<div class="qa-tooltip-header">${c.basename}</div>
<div class="qa-tooltip-content">
<div>Path: ${c.path}</div>
<div>Modified: ${new Date(c.stat.mtime).toLocaleDateString()}</div>
</div>
`,b}positionTooltip(l,c){let b=c.getBoundingClientRect();l.style.position="fixed",l.style.left=`${b.right+10}px`,l.style.top=`${b.top}px`,l.style.zIndex="1000"}close(){document.querySelectorAll(".qaFileSuggestionItem").forEach(b=>{b._tooltipCleanup&&b._tooltipCleanup()}),document.querySelectorAll(".qa-file-tooltip").forEach(b=>b.remove()),super.close()}async selectSuggestion(l){if(this.inputEl.selectionStart===null)return;let c=this.inputEl.selectionStart,b=this.lastInput.length,Z=this.inputEl.value,d=0,W=this.inputEl.value.slice(c-this.lastInput.length-3,c-this.lastInput.length)==="![[";if(l.matchType==="unresolved")d=this.makeLinkManually(Z,l.displayText.replace(/.md$/,""),c,b);else if(l.matchType==="heading"||l.matchType==="block"){let a=l.displayText;d=this.makeLinkManually(Z,a,c,b)}else if(W)d=this.makeLinkManually(Z,l.displayText,c,b);else{let a=this.app.vault.getAbstractFileByPath(l.file.path);if(a instanceof v3.TFile){let m=l.matchType==="alias"?l.displayText:void 0;d=this.makeLinkObsidianMethod(a,Z,c,b,m)}else d=this.makeLinkManually(Z,l.displayText,c,b)}this.inputEl.trigger("input"),this.close(),this.inputEl.setSelectionRange(d,d)}makeLinkObsidianMethod(l,c,b,Z,d){let W=this.app.vault.getAbstractFileByPath(l.path),a=this.app.fileManager.generateMarkdownLink(W,"","",d??"");return this.inputEl.value=this.getNewInputValueForFileLink(c,a,b,Z),b-Z+a.length+2}makeLinkManually(l,c,b,Z){return this.inputEl.value=this.getNewInputValueForFileName(l,c,b,Z),b-Z+c.length+2}getNewInputValueForFileLink(l,c,b,Z){return`${l.substr(0,b-Z-2)}${c}${l.substr(b)}`}getNewInputValueForFileName(l,c,b,Z){return`${l.substr(0,b-Z)}${c}]]${l.substr(b)}`}};var b1=class extends yl{constructor(l,c){super(l,c);this.app=l;this.inputEl=c;this.lastInput="";this.lastInputStart=0;this.refreshTagIndex(),nI.instance.registerEvent(this.app.metadataCache.on("resolved",()=>this.refreshTagIndex()))}refreshTagIndex(){let l=this.app.metadataCache.getTags(),c=Object.keys(l);this.tagSet=new Set(c),this.sortedTags=c.sort((b,Z)=>b.length!==Z.length?b.length-Z.length:b.localeCompare(Z)),this.fuse=new ol(this.sortedTags,{threshold:.4,includeScore:!0,keys:[""]})}getSuggestions(l){if(this.inputEl.selectionStart===null)return[];let c=this.inputEl.selectionStart,b=l.slice(0,c),Z=Pm.exec(b);if(!Z)return[];let d=b.lastIndexOf("[[");if(d!==-1&&d<Z.index)return[];let W=Z[1];this.lastInput=W,this.lastInputStart=Z.index+1;let a=this.sortedTags.filter(h=>h.toLowerCase().startsWith(W.toLowerCase())).slice(0,5),m=this.fuse.search(W).filter(h=>h.score<.8).map(h=>h.item).slice(0,10),V=new Set(a),N=[...a];for(let h of m)!V.has(h)&&N.length<15&&(N.push(h),V.add(h));return N}renderSuggestion(l,c){let b=this.renderMatch(l,this.lastInput);c.innerHTML=b}selectSuggestion(l){if(this.inputEl.selectionStart===null)return;let c=this.inputEl.selectionStart,b=this.lastInputStart,Z=c;wZ(this.inputEl,b,Z,l),this.close()}};var vI=class extends Z1.Modal{constructor(l,c,b,Z){super(l);this.header=c;this.didSubmit=!1;this.submitClickCallback=l=>this.submit();this.cancelClickCallback=l=>this.cancel();this.submitEnterCallback=l=>{!l.isComposing&&l.key==="Enter"&&(l.preventDefault(),this.submit())};this.placeholder=b??"",this.input=Z??"",this.waitForClose=new Promise((d,W)=>{this.resolvePromise=d,this.rejectPromise=W}),this.display(),this.open(),this.fileSuggester=new G1(l,this.inputComponent.inputEl),this.tagSuggester=new b1(l,this.inputComponent.inputEl)}static Prompt(l,c,b,Z){return new vI(l,c,b,Z).waitForClose}display(){this.containerEl.addClass("quickAddModal","qaInputPrompt"),this.contentEl.empty(),this.titleEl.textContent=this.header;let l=this.contentEl.createDiv();this.inputComponent=this.createInputField(l,this.placeholder,this.input),this.createButtonBar(l)}createInputField(l,c,b){let Z=new Z1.TextComponent(l);return Z.inputEl.style.width="100%",Z.setPlaceholder(c??"").setValue(b??"").onChange(d=>this.input=d).inputEl.addEventListener("keydown",this.submitEnterCallback),Z}createButton(l,c,b){let Z=new Z1.ButtonComponent(l);return Z.setButtonText(c).onClick(b),Z}createButtonBar(l){let c
})`)(c,Z,b);let a=b.default||Z.exports;if(!a)return;let m=a,{memberAccess:V}=eb(G.name);if(V&&V.length>0){let N;for(;N=V.shift();)m=m[N]}return m}}function wV(G,I){let l=structuredClone(G);for(let c of I)delete l[c];return l}function yV(G){let I=Z=>Z.type==="Template",l=Z=>Z.type==="Macro",c=Z=>Z.type==="Capture",b=Z=>Z.type==="Multi";return I(G)||l(G)||c(G)||b(G)}function oV(G,I){let l=G.vault.getAbstractFileByPath(I);return!!l&&l instanceof lc.TFolder}function m1(G,I){return G.vault.getMarkdownFiles().filter(l=>l.path.startsWith(I))}function mY(G){let I=G.frontmatter;if(!I)return[];let l=Object.entries(I);if(!l.length)return[];let c=l.filter(([Z,d])=>{let W=Z.toLowerCase();return W==="tags"||W==="tag"});return c?c.flatMap(([Z,d])=>{if(typeof d=="string")return d.split(/,|\s+/).map(W=>W.trim());if(Array.isArray(d))return d}).filter(Z=>!!Z):[]}function VY(G,I){let l=G.metadataCache.getFileCache(I);if(!l)return[];let c=[];return l.frontmatter&&c.push(...mY(l)),l.tags&&Array.isArray(l.tags)&&c.push(...l.tags.map(b=>b.tag.replace(/^\#/,""))),c}function iV(G,I){let l=I.replace(/^\#/,"");return G.vault.getMarkdownFiles().filter(c=>VY(G,c).includes(l))}var tc=class{constructor(){this.variables=new Map}replacer(I,l,c){return I.replace(l,function(){return c})}replaceDateInString(I){let l=I;for(;AZ.test(l);){let c=AZ.exec(l),b;if(c&&c[1]){let Z=c[1].replace("+","").trim();Z3.test(Z)&&(b=parseInt(Z))}l=this.replacer(l,AZ,cc({offset:b}))}for(;OG.test(l);){let c=OG.exec(l);if(!c)throw new Error(`Unable to parse date format. Invalid syntax in: "${l.substring(Math.max(0,l.search(OG)-10),Math.min(l.length,l.search(OG)+30))}..."`);let b=c[1],Z;if(c[2]){let d=c[2].replace("+","").trim();Z3.test(d)&&(Z=parseInt(d))}l=this.replacer(l,OG,cc({format:b,offset:Z}))}return l}replaceTimeInString(I){let l=I;for(;PG.test(l);){if(!PG.exec(l))throw new Error(`Unable to parse time format. Invalid syntax in: "${l.substring(Math.max(0,l.search(PG)-10),Math.min(l.length,l.search(PG)+30))}..."`);l=this.replacer(l,PG,cc({format:"HH:mm"}))}for(;qG.test(l);){let c=qG.exec(l);if(!c)throw new Error(`Unable to parse formatted time. Invalid syntax in: "${l.substring(Math.max(0,l.search(qG)-10),Math.min(l.length,l.search(qG)+30))}..."`);let b=c[1];l=this.replacer(l,qG,cc({format:b}))}return l}async replaceValueInString(I){let l=I;for(this.variables.has("value")&&(this.value=this.variables.get("value"));d3.test(l);)this.value||(this.value=await this.promptForValue()),l=this.replacer(l,d3,this.value);return l}async replaceSelectedInString(I){let l=I,c=await this.getSelectedText();for(;a3.test(l);)l=this.replacer(l,a3,c);return l}async replaceLinkToCurrentFileInString(I){let l=this.getCurrentFileLink(),c=I;if(!l&&gZ.test(c))throw new Error("Unable to get current file path. Make sure you have a file open in the editor.");if(!l)return c;for(;gZ.test(c);)c=this.replacer(c,gZ,l);return c}async replaceVariableInString(I){let l=I;for(;_G.test(l);){let c=_G.exec(l);if(!c)throw new Error(`Unable to parse variable. Invalid syntax in: "${l.substring(Math.max(0,l.search(_G)-10),Math.min(l.length,l.search(_G)+30))}..."`);let b=c[1],Z="";if(b){let d=b.indexOf("|");if(d!==-1&&(Z=b.substring(d+1).trim(),b=b.substring(0,d).trim()),!this.getVariableValue(b)){let W=b.split(","),a="";W.length===1?a=await this.promptForVariable(b):a=await this.suggestForValue(W),!a&&Z&&(a=Z),this.variables.set(b,a)}l=this.replacer(l,_G,this.getVariableValue(b))}else break}return l}async replaceFieldVarInString(I){let l=I;for(;$G.test(l);){let c=$G.exec(l);if(!c)throw new Error(`Unable to parse field variable. Invalid syntax in: "${l.substring(Math.max(0,l.search($G)-10),Math.min(l.length,l.search($G)+30))}..."`);let b=c[1]+(c[2]||"");if(b)this.getVariableValue(b)||this.variables.set(b,await this.suggestForField(b)),l=this.replacer(l,$G,this.getVariableValue(b));else break}return l}async replaceMathValueInString(I){let l=I;for(;W3.test(l);){let c=await this.promptForMathValue();l=this.replacer(l,W3,c)}return l}async replaceMacrosInString(I){let l=I;for(;zZ.test(l);){let c=zZ.exec(l);if(!c||!c[1])conti
`,c++):Z=="\\"?(l+="\\",c++):l+="\\":l+=b}return l}};var NY={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"},hY={clipboard:"clipboard_content",date:"formatted_date",time:"current_time",random:"random_value",uuid:"unique_id"},FY=[{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 DZ(G){let I=G.toLowerCase(),l=NY[I];return l||`${G}_example`}function KZ(G){return hY[G.toLowerCase()]||`${G}_output`}function OZ(G){for(let{pattern:I,example:l}of FY)if(I.test(G))return l;return`${G}_value`}function PZ(G){return G.length>0?`${G[0]} (${G.length} options)`:"suggestion_list"}function qZ(G){return G?.path?G.basename:"current_file"}var z2=class{static generate(I,l=new Date){let c=l.getFullYear(),b=(l.getMonth()+1).toString().padStart(2,"0"),Z=l.getDate().toString().padStart(2,"0"),d=l.getHours().toString().padStart(2,"0"),W=l.getMinutes().toString().padStart(2,"0"),a=l.getSeconds().toString().padStart(2,"0");return I.replace(/YYYY/g,c.toString()).replace(/YY/g,c.toString().slice(-2)).replace(/MMMM/g,this.MONTH_NAMES[l.getMonth()]).replace(/MMM/g,this.MONTH_NAMES_SHORT[l.getMonth()]).replace(/MM/g,b).replace(/M/g,(l.getMonth()+1).toString()).replace(/dddd/g,this.DAY_NAMES[l.getDay()]).replace(/ddd/g,this.DAY_NAMES_SHORT[l.getDay()]).replace(/DD/g,Z).replace(/D/g,l.getDate().toString()).replace(/HH/g,d).replace(/H/g,l.getHours().toString()).replace(/mm/g,W).replace(/m/g,l.getMinutes().toString()).replace(/ss/g,a).replace(/s/g,l.getSeconds().toString()).replace(/ww/g,this.getWeekNumber(l).toString().padStart(2,"0")).replace(/w/g,this.getWeekNumber(l).toString())}static getWeekNumber(I){let l=new Date(I.getFullYear(),0,1),c=(I.getTime()-l.getTime())/864e5;return Math.ceil((c+l.getDay()+1)/7)}};z2.MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],z2.MONTH_NAMES_SHORT=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],z2.DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],z2.DAY_NAMES_SHORT=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var V1=class extends tc{constructor(l){super();this.app=l}async format(l){let c=l;try{c=await this.replaceMacrosInString(c),c=this.replaceDateInString(c),c=this.replaceTimeInString(c),c=await this.replaceValueInString(c),c=await this.replaceDateVariableInString(c),c=await this.replaceVariableInString(c),c=await this.replaceFieldVarInString(c)}catch{return l}return`Preview: ${c}`}promptForValue(l){return l||"user input"}getVariableValue(l){return DZ(l)}getCurrentFileLink(){return qZ(this.app.workspace.getActiveFile())}getNaturalLanguageDates(){return g2(this.app)}suggestForValue(l){return PZ(l)}promptForMathValue(){return Promise.resolve("calculation_result")}getMacroValue(l){return KZ(l)}async promptForVariable(l){return OZ(l)}async getTemplateContent(l){return`[${l.split("/").pop()?.replace(".md","")||l} template content...]`}async getSelectedText(){return"selected_text"}suggestForField(l){return`${l}_field_value`}async replaceDateVariableInString(l){let c=l;return c=c.replace(new RegExp(lG.source,"gi"),(b,Z,d)=>{let W=Z?.trim(),a=d?.trim();if(!W||!a)return b;let m=new Date,V;try{V=z2.generate(a,m)}catch{V=`[${a}]`}return V}),c}};var ul=class extends yl{constructor(l,c,b,Z=!1){super(l,c);this.app=l;this.inputEl=c;this.plugin=b;this.suggestForFileNames=Z;this.lastInput="";this.lastInputStart=0;this.tokenDefinitions=[{regex:_m,token:1,suggestion:"{{DATE:}}",cursorOffset:2},{regex:qm,token:0,suggestion:G3},{regex:aV,token:10,suggestion:jm},{regex:$m,token:4,suggestion:b3},{regex:IV,token:3,suggestion:IG},{regex
`).filter(Boolean).reduce((c,b)=>{let[Z,d,...W]=b.split(" "),a=Number.parseInt(d,10);return W.forEach((m,V)=>c[m]=a+V),c},{});for(let[c,b]of Object.entries(l)){let Z=MV.default.toByteArray(c);this.rankMap.set(Z.join(","),b),this.textMap.set(b,Z)}this.specialTokens={...G.special_tokens,...I},this.inverseSpecialTokens=Object.entries(this.specialTokens).reduce((c,[b,Z])=>(c[Z]=this.textEncoder.encode(b),c),{})}encode(G,I=[],l="all"){let c=new RegExp(this.patStr,"ug"),b=i3.specialTokenRegex(Object.keys(this.specialTokens)),Z=[],d=new Set(I==="all"?Object.keys(this.specialTokens):I),W=new Set(l==="all"?Object.keys(this.specialTokens).filter(m=>!d.has(m)):l);if(W.size>0){let m=i3.specialTokenRegex([...W]),V=G.match(m);if(V!=null)throw new Error(`The text contains a special token that is not allowed: ${V[0]}`)}let a=0;for(;;){let m=null,V=a;for(;b.lastIndex=V,m=b.exec(G),!(m==null||d.has(m[0]));)V=m.index+1;let N=m?.index??G.length;for(let F of G.substring(a,N).matchAll(c)){let R=this.textEncoder.encode(F[0]),X=this.rankMap.get(R.join(","));if(X!=null){Z.push(X);continue}Z.push(...QY(R,this.rankMap))}if(m==null)break;let h=this.specialTokens[m[0]];Z.push(h),a=m.index+m[0].length}return Z}decode(G){let I=[],l=0;for(let Z=0;Z<G.length;++Z){let d=G[Z],W=this.textMap.get(d)??this.inverseSpecialTokens[d];W!=null&&(I.push(W),l+=W.length)}let c=new Uint8Array(l),b=0;for(let Z of I)c.set(Z,b),b+=Z.length;return this.textDecoder.decode(c)}},Ec=i3;EY(Ec,"specialTokenRegex",G=>new RegExp(G.map(I=>vY(I)).join("|"),"g"));function r3(G){switch(G){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":return"cl100k_base";default:throw new Error("Unknown model")}}var JY={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==
! 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==`},yY={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==`},oY={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
${I}`:""}`;function bd(G){if(G){let I=new TV.Notice(jV("starting",""),1e6);return{setMessage:(l,c)=>{I.setMessage(jV(l,c))},hide:()=>I.hide()}}return{setMessage:(I,l)=>{B.logMessage(`(${I}) ${l}`)},hide:()=>{}}}var Ll=(G,I)=>{let l=I.name==="gpt-3.5-turbo-16k"?"gpt-3.5-turbo":I.name;l=l==="gpt-4-1106-preview"?"gpt-4":l,l=l==="gpt-3.5-turbo-1106"?"gpt-3.5-turbo":l;try{return BV(l).encode(G).length}catch{return A3("cl100k_base").encode(G).length}};async function xY(G,I,l){if(typeof G!="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 l!="number"||l<=0)throw new TypeError("Interval must be a positive number.");let c=!1;for(I.finally(()=>{c=!0});!c;)G(),await sleep(l)}async function kY(G,I,l){let c;if(I.enable)c=l.find(W=>W.path.endsWith(I.name));else{let W=l.map(a=>a.basename);c=await cl.Suggest(G,W,l)}Bl(c,"Prompt template does not exist");let b=c.path,Z=G.vault.getAbstractFileByPath(b);Bl(Z instanceof CV.TFile,`${b} is not a file`);let d=await G.vault.cachedRead(Z);return[c.basename,d]}async function SV(G,I,l){if(C.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let c=bd(I.showAssistantMessages);try{let{apiKey:b,model:Z,outputVariableName:d,promptTemplate:W,systemPrompt:a,promptTemplateFolder:m}=I,V=m1(G,m),[N,h]=await kY(G,W,V);c.setMessage("waiting","QuickAdd is formatting the prompt template.");let F=await l(h),R=["prompting",`Using prompt template "${N}".`];c.setMessage(R[0],R[1]);let E=Gd(G,b,Z,a,I.modelOptions)(F),J=(await x3(E,100,t=>{c.setMessage(R[0],`${R[1]} (${(t/1e3).toFixed(2)}s)`)},t=>{c.setMessage("finished",`Took ${(t/1e3).toFixed(2)}s.`)})).content,i=("> "+J).replace(/\n/g,`
> `),Y={[d]:J,[`${d}-quoted`]:i};return setTimeout(()=>c.hide(),5e3),Y}catch(b){c.setMessage("dead",b.message),setTimeout(()=>c.hide(),5e3)}}async function x3(G,I,l,c){let b=Date.now();return await xY(()=>l(Date.now()-b),G,I),c(Date.now()-b),await G}async function DV(G,I,l){if(C.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let c=bd(I.showAssistantMessages);try{let{apiKey:b,model:Z,outputVariableName:d,systemPrompt:W,prompt:a,modelOptions:m}=I;c.setMessage("waiting","QuickAdd is formatting the prompt template.");let V=await l(a),N=["prompting","Using custom prompt."];c.setMessage(N[0],N[1]);let F=Gd(G,b,Z,W,m)(V),X=(await x3(F,100,J=>{c.setMessage(N[0],`${N[1]} (${(J/1e3).toFixed(2)}s)`)},J=>{c.setMessage("finished",`Took ${(J/1e3).toFixed(2)}s.`)})).content,E=("> "+X).replace(/\n/g,`
> `),s={[d]:X,[`${d}-quoted`]:E};return setTimeout(()=>c.hide(),5e3),s}catch(b){c.setMessage("dead",b.message),setTimeout(()=>c.hide(),5e3)}}var z3=class{constructor(I,l){this.maxRequests=I;this.intervalMs=l;this.queue=[];this.pendingPromises=[]}add(I){return new Promise((l,c)=>{this.queue.push(async()=>{try{l(await I())}catch(b){c(b)}}),this.schedule()})}schedule(){if(this.queue.length===0||this.pendingPromises.length>=this.maxRequests)return;let I=this.queue.shift();if(!I)return;let l=I();this.pendingPromises.push(l),l.finally(()=>{this.pendingPromises=this.pendingPromises.filter(c=>c!==l),this.schedule()}),setTimeout(()=>this.schedule(),this.intervalMs)}};async function KV(G,I,l){if(C.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let c=bd(I.showAssistantMessages);try{let{apiKey:b,model:Z,outputVariableName:d,systemPrompt:W,promptTemplate:a,text:m,modelOptions:V}=I;c.setMessage("chunking","Creating prompt chunks with text and prompt template");let N=I.chunkSeparator||/\n/g,h=m.split(N),F=Ll(W,Z),R=await l(a,{chunk:" "}),X=Ll(R,Z),E=fV(Z.name)/2-F,s=I.shouldMerge??!0,J=[],i=E-X;if(s){let cI=[],dI="",YI=0;for(let hI of h){let uI=Ll(hI,Z)+1;if(uI>i)throw new Error(`The chunk "${hI.slice(0,25)}..." is too large to fit in a single prompt.`);YI+uI<i?(dI+=hI,YI+=uI):(cI.push(dI),dI=hI,YI=uI)}dI!==""&&cI.push(dI);for(let hI of cI){let uI=await l(a,{chunk:hI});J.push(uI)}}else for(let cI of h){let dI=Ll(cI,Z);if(dI>E)throw new Error(`Chunk size (${dI}) is larger than the maximum chunk size (${E}). Please check your chunk separator.`);let YI=await l(a,{chunk:cI});J.push(YI)}let Y=Gd(G,b,Z,W,V),t=["prompting",`${J.length} prompts being sent.`];c.setMessage(t[0],t[1]);let Q=new z3(5,1e3*30),e=Promise.all(J.map(cI=>Q.add(()=>Y(cI)))),T=(await x3(e,100,cI=>{c.setMessage(t[0],`${t[1]} (${(cI/1e3).toFixed(2)}s)`)},cI=>{c.setMessage("finished",`Took ${(cI/1e3).toFixed(2)}s.`)})).map(cI=>cI.content).join(I.resultJoiner),bI=("> "+T).replace(/\n/g,`
> `),y={[d]:T,[`${d}-quoted`]:bI};return setTimeout(()=>c.hide(),5e3),y}catch(b){c.setMessage("dead",b.message),setTimeout(()=>c.hide(),5e3)}}var Zd=class{static filterFiles(I,l,c){return Object.keys(l).length===0?I:I.filter(b=>!(l.folder&&!this.matchesFolder(b,l.folder)||l.tags&&l.tags.length>0&&!this.matchesTags(b,l.tags,c)))}static matchesFolder(I,l){let c=this.normalizePath(l),b=this.normalizePath(I.path);return b.startsWith(c+"/")||b.substring(0,b.lastIndexOf("/"))===c}static matchesTags(I,l,c){let b=c(I);if(!b||!b.tags)return!1;let Z=b.tags.map(d=>d.tag.startsWith("#")?d.tag.substring(1):d.tag);return l.every(d=>Z.includes(d))}static normalizePath(I){return I.replace(/^\/+|\/+$/g,"")}};var dd=class{static parseInlineFields(I){let l=new Map,c=this.removeCodeBlocksAndFrontmatter(I),b;for(;(b=dd.INLINE_FIELD_REGEX.exec(c))!==null;){let Z=b[1].trim(),d=b[2].trim();d&&(l.has(Z)||l.set(Z,new Set),d.includes(",")?d.split(",").map(a=>a.trim()).filter(a=>a.length>0).forEach(a=>l.get(Z)?.add(a)):l.get(Z)?.add(d))}return dd.INLINE_FIELD_REGEX.lastIndex=0,l}static removeCodeBlocksAndFrontmatter(I){let l=/^---\n[\s\S]*?\n---\n/;I=I.replace(l,"");let c=/```[\s\S]*?```|`[^`]*`/g;return I=I.replace(c,""),I}static getFieldValues(I,l){return this.parseInlineFields(I).get(l)||new Set}},mG=dd;mG.INLINE_FIELD_REGEX=/(?:^|[\n\r])[ \t]*(?![-*+][ \t]+\[[ xX]\])([a-zA-Z0-9_\- ]+)::[ \t]*(.*)$/gm;var il=class{constructor(){this.cache=new Map;this.TTL=5*60*1e3;this.MAX_CACHE_ENTRIES=100;this.MAX_VALUES_PER_ENTRY=1e3;this.cleanupInterval=null}static getInstance(){return il.instance||(il.instance=new il),il.instance}startAutomaticCleanup(I){if(this.cleanupInterval===null&&typeof window<"u"){let l=window.setInterval(()=>{this.cleanExpired()},6e4);this.cleanupInterval=I(l)}}get(I,l){let c=this.makeKey(I,l),b=this.cache.get(c);return b?Date.now()-b.timestamp>this.TTL?(this.cache.delete(c),null):new Set(b.values):null}set(I,l,c){let b=this.makeKey(I,c),Z=new Set,d=0;for(let W of l){if(d>=this.MAX_VALUES_PER_ENTRY)break;Z.add(W),d++}this.cache.size>=this.MAX_CACHE_ENTRIES&&!this.cache.has(b)&&this.evictOldestEntries(1),this.cache.set(b,{values:Z,timestamp:Date.now()})}evictOldestEntries(I){let l=Array.from(this.cache.entries()).sort(([,c],[,b])=>c.timestamp-b.timestamp).slice(0,I);for(let[c]of l)this.cache.delete(c)}clear(I){if(I){let l=[];for(let c of this.cache.keys())(c.startsWith(`${I}:`)||c===I)&&l.push(c);for(let c of l)this.cache.delete(c)}else this.cache.clear()}cleanExpired(){let I=Date.now(),l=[];for(let[c,b]of this.cache.entries())I-b.timestamp>this.TTL&&l.push(c);for(let c of l)this.cache.delete(c)}getStats(){return{size:this.cache.size,maxSize:this.MAX_CACHE_ENTRIES,cleanupInterval:this.cleanupInterval}}destroy(){this.cleanupInterval=null,this.cache.clear()}makeKey(I,l){return l?`${I}:${l}`:I}};var H1=class{static GetApi(I,l,c){return{inputPrompt:(b,Z,d)=>this.inputPrompt(I,b,Z,d),wideInputPrompt:(b,Z,d)=>this.wideInputPrompt(I,b,Z,d),yesNoPrompt:(b,Z)=>this.yesNoPrompt(I,b,Z),infoDialog:(b,Z)=>this.infoDialog(I,b,Z),suggester:(b,Z)=>this.suggester(I,b,Z),checkboxPrompt:(b,Z)=>this.checkboxPrompt(I,b,Z),executeChoice:async(b,Z)=>{let d=l.getChoiceByName(b);d||EI(new Error(`Choice named '${b}' not found`),"API executeChoice error"),Z&&Object.keys(Z).forEach(W=>{c.variables.set(W,Z[W])}),await c.execute(d),c.variables.clear()},format:async(b,Z,d=!0)=>{Z&&Object.keys(Z).forEach(a=>{c.variables.set(a,Z[a])});let W=await new U2(I,l,c).formatFileContent(b);return d&&c.variables.clear(),W},ai:{prompt:async(b,Z,d)=>{let W=C.getState(),a=W.ai;if(W.disableOnlineFeatures)throw new Error("Rejecting request to `prompt` via API AI module. Online features are disabled in settings.");let m=this.GetApi(I,l,c).format,V;if(typeof Z=="string"){let F=X2(Z);if(!F)throw new Error(`Model '${Z}' not found.`);V=F}else V=Z;let N=aG(V.name);if(!N)throw new Error(`Model '${V.name}' not found in any provider`);let h=await DV(I,{model:V,prompt:b,apiKey:N.apiKey,modelOptions:d?.modelOptions??{},outputVariableName:d?.variableName??"output",showAssistantMessages:d?.sh
`,shouldMerge:W?.shouldMerge??!0},(X,E)=>{let s={...a,...E};return N(X,s,!1)});return R?(W?.shouldAssignVariables&&Object.assign(c.variables,R),R):(EI(new Error("AI Assistant returned null"),"Chunked AI Prompt error"),{})},getModels:()=>k2(),getMaxTokens:b=>{let Z=X2(b);if(!Z)throw new Error(`Model ${b} not found.`);return Z.maxTokens},countTokens(b,Z){return Ll(b,Z)}},utility:{getClipboard:async()=>await navigator.clipboard.readText(),setClipboard:async b=>await navigator.clipboard.writeText(b),getSelectedText:()=>{let b=I.workspace.getActiveViewOfType(OV.MarkdownView);if(!b){EI(new Error("No active view"),"Could not get selected text");return}if(!b.editor.somethingSelected()){EI(new Error("No text selected"),"Could not get selected text");return}return b.editor.getSelection()}},date:{now:(b,Z)=>cc({format:b,offset:Z}),tomorrow:b=>cc({format:b,offset:1}),yesterday:b=>cc({format:b,offset:-1})},fieldSuggestions:{getFieldValues:async(b,Z)=>{let d={folder:Z?.folder,tags:Z?.tags,inline:Z?.includeInline??!1},W=I.vault.getMarkdownFiles();W=Zd.filterFiles(W,d,m=>I.metadataCache.getFileCache(m));let a=new Set;for(let m of W){let N=I.metadataCache.getFileCache(m)?.frontmatter?.[b];if(N!=null){if(Array.isArray(N))N.forEach(h=>{let F=h.toString().trim();F&&a.add(F)});else if(typeof N!="object"){let h=N.toString().trim();h&&a.add(h)}}if(d.inline){let h=await I.vault.read(m);mG.getFieldValues(h,b).forEach(R=>a.add(R))}}return Array.from(a).sort()},clearCache:b=>{il.getInstance().clear(b)}}}}static async inputPrompt(I,l,c,b){try{return await vI.Prompt(I,l,c,b)}catch{return}}static async wideInputPrompt(I,l,c,b){try{return await Gc.Prompt(I,l,c,b)}catch{return}}static async yesNoPrompt(I,l,c){try{return await wl.Prompt(I,l,c)}catch{return}}static async infoDialog(I,l,c){try{return await ZG.Show(I,l,c)}catch{return}}static async suggester(I,l,c){try{let b;return typeof l=="function"?b=c.map(l):b=l,await cl.Suggest(I,b,c)}catch{return}}static async checkboxPrompt(I,l,c){try{return await dG.Open(I,l,c)}catch{return}}};var R1=class extends h1{};var sl=class{constructor(I,l){this.name=I,this.type=l,this.id=O2()}};var PV=require("obsidian");var Gl=class extends sl{constructor(l){super(l,"EditorCommand");this.editorCommandType=l}static getSelectedText(l){return this.getActiveMarkdownView(l).editor.getSelection()}static getActiveMarkdownView(l){let c=l.workspace.getActiveViewOfType(PV.MarkdownView);if(!c)throw B.logError("no active markdown view."),new Error("no active markdown view.");return c}};var n1=class extends Gl{constructor(){super("Cut")}static async run(I){let l=Gl.getSelectedText(I),c=Gl.getActiveMarkdownView(I);if(!l){B.logError("nothing selected.");return}await navigator.clipboard.writeText(l),c.editor.replaceSelection("")}};var p1=class extends Gl{constructor(){super("Copy")}static async run(I){let l=Gl.getSelectedText(I);await navigator.clipboard.writeText(l)}};var s1=class extends Gl{constructor(){super("Paste")}static async run(I){let l=await navigator.clipboard.readText(),c=Gl.getActiveMarkdownView(I);if(!c){B.logError("no active markdown view.");return}c.editor.replaceSelection(l)}};var e1=class extends Gl{constructor(){super("Select active line")}static run(I){let l=Gl.getActiveMarkdownView(I),{line:c}=l.editor.getCursor(),Z=l.editor.getLine(c).length;l.editor.setSelection({line:c,ch:0},{line:c,ch:Z})}};var t1=class extends Gl{constructor(){super("Select link on active line")}static run(I){let l=Gl.getActiveMarkdownView(I),{line:c}=l.editor.getCursor(),b=l.editor.getLine(c),Z=mV.exec(b);if(!Z){B.logError(`no internal link found on line ${c}.`);return}let d=Z.index,W=Z[0].length+d;l.editor.setSelection({line:c,ch:d},{line:c,ch:W})}};function qV(G){return new Promise(I=>setTimeout(I,G))}function k3(G){return G.split(`
`)}function _V(G){return G.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}var M2=class extends R1{constructor(l,c,b,Z,d,W){super(l);this.choice=b,this.plugin=c,this.macros=Z,this.choiceExecutor=d,this.params={app:this.app,quickAddApi:H1.GetApi(l,c,d),variables:{},obsidian:UY},W?.forEach((a,m)=>{this.params.variables[m]=a})}async run(){let l=this.choice.macroId??this.choice?.macro?.id,c=this.macros.find(b=>b.id===l);if(!c||!c?.commands){B.logError(`No commands in the selected macro. Did you select a macro for '${this.choice.name}'?`);return}await this.executeCommands(c.commands)}async executeCommands(l){for(let c of l)c?.type==="Obsidian"&&this.executeObsidianCommand(c),c?.type==="UserScript"&&await this.executeUserScript(c),c?.type==="Choice"&&await this.executeChoice(c),c?.type==="Wait"&&await qV(c.time),c?.type==="NestedChoice"&&await this.executeNestedChoice(c),c?.type==="EditorCommand"&&await this.executeEditorCommand(c),c?.type==="AIAssistant"&&await this.executeAIAssistant(c),Object.keys(this.params.variables).forEach(b=>{this.choiceExecutor.variables.set(b,this.params.variables[b])})}async executeUserScript(l){let c=await SZ(l,this.app);if(!c){B.logError(`failed to load user script ${l.path}.`);return}c.settings&&(this.userScriptCommand=l);try{await this.userScriptDelegator(c)}catch(b){EI(b,`Failed to run user script ${l.name}`)}this.userScriptCommand&&(this.userScriptCommand=null)}async runScriptWithSettings(l,c){if(typeof l!="function"&&l.entry&&typeof l.entry=="function")return await this.onExportIsFunction(l.entry,c.settings);if(typeof l=="function")return await this.onExportIsFunction(l,c.settings)}async userScriptDelegator(l){switch(typeof l){case"function":this.userScriptCommand?await this.runScriptWithSettings(l,this.userScriptCommand):await this.onExportIsFunction(l);break;case"object":await this.onExportIsObject(l);break;case"bigint":case"boolean":case"number":case"string":this.output=l.toString();break;default:B.logError(`user script in macro for '${this.choice.name}' is invalid`)}}async onExportIsFunction(l,c){this.output=await l(this.params,c||{})}async onExportIsObject(l){if(Object.keys(l).length===0)throw new Error(`user script in macro for '${this.choice.name}' is an empty object`);if(this.userScriptCommand&&l.entry!==null){await this.runScriptWithSettings(l,this.userScriptCommand);return}try{let c=Object.keys(l),b=await cl.Suggest(this.app,c,c);await this.userScriptDelegator(l[b])}catch(c){EI(c,"Error in script object handling","LOG")}}executeObsidianCommand(l){this.app.commands.executeCommandById(l.commandId)}async executeChoice(l){let c=this.plugin.getChoiceById(l.choiceId);if(!c){B.logError("choice could not be found.");return}await this.choiceExecutor.execute(c)}async executeNestedChoice(l){let c=l.choice;if(!c){B.logError(`choice in ${l.name} is invalid`);return}await this.choiceExecutor.execute(c)}async executeEditorCommand(l){switch(l.editorCommandType){case"Cut":await n1.run(this.app);break;case"Copy":await p1.run(this.app);break;case"Paste":await s1.run(this.app);break;case"Select active line":e1.run(this.app);break;case"Select link on active line":t1.run(this.app);break}}async executeAIAssistant(l){if(C.getState().disableOnlineFeatures)throw new Error("Blocking request to OpenAI: Online features are disabled in settings.");let c=C.getState().ai,b=k2(),Z=l.model==="Ask me"?await cl.Suggest(this.app,b,b):l.model,d=X2(Z);if(!d)throw new Error(`Model ${Z} not found with any provider.`);let W=new U2(this.app,nI.instance,this.choiceExecutor),a=aG(d.name);if(!a)throw new Error(`Model ${d.name} not found in the AI providers settings.`);let m=await SV(this.app,{apiKey:a.apiKey,model:d,outputVariableName:l.outputVariableName,promptTemplate:l.promptTemplate,promptTemplateFolder:c.promptTemplatesFolderPath,systemPrompt:l.systemPrompt,showAssistantMessages:c.showAssistant,modelOptions:l.modelParameters},async V=>W.formatFileContent(V));for(let V in m)this.choiceExecutor.variables.set(V,m[V])}};var Wd=class extends M2{constructor(l,c,b,Z,d){super(l,c,null,b,Z,d)}async runAndGetOutput(l){let{basename:c,me
${WI}
\\end{${G}}${WI}`}var $V=[...MY,...BY.map(LY)];var IN=require("obsidian");var fY=new RegExp(/\\([a-z{}A-Z0-9]*)$/),md=class extends yl{constructor(l){super(nI.instance.app,l);this.inputEl=l;this.lastInput="";this.symbols=Object.assign([],$V),this.elementsRendered=this.symbols.reduce((c,b)=>{try{c[b.toString()]=(0,IN.renderMath)(b,!0)}catch{}return c},{})}getSuggestions(l){if(this.inputEl.selectionStart===null)return[];let c=this.inputEl.selectionStart,b=l.substr(0,c),Z=b.lastIndexOf("\\"),d=b.substr(Z),W=fY.exec(d),a=[];return W&&(this.lastInput=W[1],a=this.symbols.filter(N=>N.toLowerCase().contains(this.lastInput))),new ol(a,{findAllMatches:!0,threshold:.8}).search(this.lastInput).map(N=>N.item)}renderSuggestion(l,c){l&&(c.setText(l),c.append(this.elementsRendered[l]))}selectSuggestion(l){if(this.inputEl.selectionStart===null)return;let c=this.inputEl.selectionStart,b=this.lastInput.length,Z=this.inputEl.value,d=0,W=l.replace(/\\\\/g,"\\");if(this.inputEl.value=`${Z.substr(0,c-b-1)}${W}${Z.substr(c)}`,d=c-b+l.length-1,this.inputEl.trigger("input"),this.close(),l.contains(WI)){let a=this.inputEl.value.indexOf(WI);this.inputEl.value=this.inputEl.value.replace(WI,""),this.inputEl.setSelectionRange(a,a)}else this.inputEl.setSelectionRange(d,d)}};var E1=class extends rl.Modal{constructor(){super(nI.instance.app);this.didSubmit=!1;this.keybindListener=l=>{l.ctrlKey&&l.key==="Enter"&&this.submit(),l.key==="Tab"&&(l.preventDefault(),this.cursorToGoTo())};this.submitClickCallback=l=>this.submit();this.cancelClickCallback=l=>this.cancel();this.open(),this.display(),this.waitForClose=new Promise((l,c)=>{this.resolvePromise=l,this.rejectPromise=c}),new md(this.inputEl),this.inputEl.focus(),this.inputEl.select()}static Prompt(){return new E1().waitForClose}display(){this.containerEl.addClass("quickAddModal","qaMathModal"),this.contentEl.empty();let l=this.contentEl.createDiv();l.className="math math-block is-loaded";let c=new rl.TextAreaComponent(this.contentEl);c.inputEl.style.width="100%",c.inputEl.style.height="10rem",this.inputEl=c.inputEl,c.onChange((0,rl.debounce)(async b=>await this.mathjaxLoop(l,b),50)),c.inputEl.addEventListener("keydown",this.keybindListener),this.createButtonBar(this.contentEl.createDiv())}async onOpen(){super.onOpen(),await(0,rl.loadMathJax)()}async mathjaxLoop(l,c){let b=(0,rl.renderMath)(c,!0);await(0,rl.finishRenderMath)(),l.empty(),l.append(b)}cursorToGoTo(){if(this.inputEl.value.contains(WI)){let l=this.inputEl.value.indexOf(WI);this.inputEl.value=this.inputEl.value.replace(WI,""),this.inputEl.setSelectionRange(l,l)}}createButton(l,c,b){let Z=new rl.ButtonComponent(l);return Z.setButtonText(c).onClick(b),Z}createButtonBar(l){let c=l.createDiv();this.createButton(c,"Ok",this.submitClickCallback).setCta().buttonEl.style.marginRight="0",this.createButton(c,"Cancel",this.cancelClickCallback),c.style.display="flex",c.style.flexDirection="row-reverse",c.style.justifyContent="flex-start",c.style.marginTop="1rem"}removeInputListeners(){this.inputEl.removeEventListener("keydown",this.keybindListener)}resolveInput(){let l=this.inputEl.value.replace("\\n","\\\\n").replace(new RegExp(WI,"g"),"");this.didSubmit?this.resolvePromise(l):this.rejectPromise("No input given.")}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListeners()}};var u1=class{factory(){return nI.instance.settings.inputPrompt==="multi-line"?Gc:vI}};var lN=require("obsidian"),B2=class extends lN.FuzzySuggestModal{constructor(l,c,b,Z={}){super(l);this.displayItems=c;this.items=b;this.promise=new Promise((d,W)=>{this.resolvePromise=d,this.rejectPromise=W}),this.inputEl.addEventListener("keydown",d=>{if(d.code!=="Tab"||!("chooser"in this))return;let{values:W,selectedItem:a}=this.chooser,{value:m}=this.inputEl;this.inputEl.value=W[a].item??m}),Z.placeholder&&this.setPlaceholder(Z.placeholder),Z.limit&&(this.limit=Z.limit),Z.emptyStateText&&(this.emptyStateText=Z.emptyStateText),this.open()}static Suggest(l,c,b,Z={}){return new B2(l,c,b,Z).promise}getItemText(l){return l===t
Suggested values for ${c}: ${N.slice(0,3).join(", ")}`)}return await vI.Prompt(this.app,`Enter value for ${c}`,V)}let m=`Enter value for ${c}`;return a.hasDefaultValue&&(m=`Enter value for ${c} (default: ${b.defaultValue})`),await B2.Suggest(this.app,a.values,a.values,{placeholder:m})}}generateCacheKey(l){let c=[];return l.folder&&c.push(`folder:${l.folder}`),l.tags&&c.push(`tags:${l.tags.join(",")}`),l.inline&&c.push("inline:true"),l.caseSensitive&&c.push("case-sensitive:true"),l.excludeFolders&&c.push(`exclude-folders:${l.excludeFolders.join(",")}`),l.excludeTags&&c.push(`exclude-tags:${l.excludeTags.join(",")}`),l.excludeFiles&&c.push(`exclude-files:${l.excludeFiles.join(",")}`),l.defaultValue&&c.push(`default:${l.defaultValue}`),l.defaultEmpty&&c.push("default-empty:true"),l.defaultAlways&&c.push("default-always:true"),c.join("|")}async getMacroValue(l){let c=new Wd(this.app,this.plugin,this.plugin.settings.macros,this.choiceExecutor,this.variables),b=await c.runAndGetOutput(l)??"";return Object.keys(c.params.variables).forEach(Z=>{this.variables.set(Z,c.params.variables[Z])}),b}async getTemplateContent(l){return await new Jc(this.app,this.plugin,l,this.choiceExecutor).run()}async getSelectedText(){let l=this.app.workspace.getActiveViewOfType(g5.MarkdownView);return l?l.editor.getSelection():""}async replaceInlineJavascriptInString(l){let c=l;for(;Rb.test(c);){let Z=Rb.exec(c)?.at(1)?.trim();if(Z){let d=new ad(this.app,this.plugin,this.choiceExecutor,this.variables),W=await d.runAndGetOutput(Z);for(let a in d.params.variables)this.variables.set(a,d.params.variables[a]);c=typeof W=="string"?this.replacer(c,Rb,W):this.replacer(c,Rb,"")}}return c}};var z5=require("obsidian");var x1=class extends h1{constructor(l,c,b){super(l);this.plugin=c;this.templater=fZ(l),this.formatter=new U2(l,c,b)}async getOrCreateFolder(l){let c;if(l.length>1){if(c=await cl.Suggest(this.app,l,l),!c)throw new Error("No folder selected.")}else c=l[0];return c?await this.createFolder(c):c="",c}async getFormattedFilePath(l,c,b){let Z=await this.formatter.formatFileName(c,b);return this.normalizeMarkdownFilePath(l,Z)}getTemplateExtension(l){return Hb.test(l)?".canvas":".md"}normalizeTemplateFilePath(l,c,b){let Z=l?`${l}/`:"",d=this.getTemplateExtension(b),W=c.replace(Yb,"").replace(Hb,"");return`${Z}${W}${d}`}async incrementFileName(l){let c=oZ.exec(l),b=c&&typeof c.at=="function"?c?.at(1):void 0,Z=await this.app.vault.adapter.exists(l),d=l,W=Hb.test(l)?".canvas":".md";if(Z&&b){let m=parseInt(b);if(!m)throw new Error("detected numbers but couldn't get them.");d=d.replace(oZ,`${m+1}${W}`)}else Z&&(d=d.replace(oZ,`1${W}`));return await this.app.vault.adapter.exists(d)&&(d=await this.incrementFileName(d)),d}async createFileWithTemplate(l,c){try{let b=await this.getTemplateContent(c),Z=await this.formatter.formatFileContent(b),d=await this.createFileWithInput(l,Z);return await a1(this.app,d),d}catch(b){return EI(b,"Could not create file with template"),null}}async overwriteFileWithTemplate(l,c){try{let b=await this.getTemplateContent(c),Z=await this.formatter.formatFileContent(b);return await this.app.vault.modify(l,Z),await a1(this.app,l),l}catch(b){return EI(b,"Could not overwrite file with template"),null}}async appendToFileWithTemplate(l,c,b){try{let Z=await this.getTemplateContent(c),d=await this.formatter.formatFileContent(Z),W=await this.app.vault.cachedRead(l),a=b==="top"?`${d}
${W}`:`${W}
${d}`;return await this.app.vault.modify(l,a),await a1(this.app,l),l}catch(Z){return EI(Z,"Could not append to file with template"),null}}async getTemplateContent(l){let c=l;!Yb.test(l)&&!Hb.test(l)&&(c+=".md");let b=this.app.vault.getAbstractFileByPath(c);if(!(b instanceof z5.TFile))throw new Error(`Template file not found at path "${c}".`);return await this.app.vault.cachedRead(b)}};var Jc=class extends x1{constructor(l,c,b,Z){super(l,c,Z);this.templatePath=b}async run(){let l=await this.getTemplateContent(this.templatePath);return l||B.logError(`Template ${this.templatePath} not found.`),l=await this.formatter.formatFileContent(l),l}};var Tl=class extends tc{constructor(l,c){super();this.app=l;this.plugin=c}async format(l){let c=l;try{c=this.replaceDateInString(c),c=this.replaceTimeInString(c),c=await this.replaceValueInString(c),c=await this.replaceDateVariableInString(c),c=await this.replaceVariableInString(c),c=await this.replaceLinkToCurrentFileInString(c),c=await this.replaceMacrosInString(c),c=await this.replaceTemplateInString(c),c=await this.replaceFieldVarInString(c),c=this.replaceLinebreakInString(c)}catch{return l}return c}promptForValue(l){return l||"user input"}getVariableValue(l){return DZ(l)}getCurrentFileLink(){return qZ(this.app.workspace.getActiveFile())}getNaturalLanguageDates(){return g2(this.app)}suggestForValue(l){return PZ(l)}getMacroValue(l){return KZ(l)}promptForMathValue(){return Promise.resolve("calculation_result")}promptForVariable(l){return Promise.resolve(OZ(l))}async getTemplateContent(l){try{return await new Jc(this.app,this.plugin,l,void 0).run()}catch{return`Template (not found): ${l}`}}async getSelectedText(){return"selected_text"}async suggestForField(l){return Promise.resolve(`${l}_field_value`)}async replaceDateVariableInString(l){let c=l;return c=c.replace(new RegExp(lG.source,"gi"),(b,Z,d)=>{let W=Z?.trim(),a=d?.trim();if(!W||!a)return b;let m=new Date,V;try{V=z2.generate(a,m)}catch{V=`[${a} format]`}return V}),c}};var k1=class extends ec{constructor(l,c,b){super(l);this.plugin=b;this.choice=c,this.display()}display(){this.containerEl.addClass("captureChoiceBuilder"),this.contentEl.empty(),this.addCenteredChoiceNameHeader(this.choice),this.addCapturedToSetting(),this.choice?.captureToActiveFile||(this.addCreateIfNotExistsSetting(),this.choice?.createFileIfItDoesntExist?.enabled&&this.addCreateWithTemplateSetting()),this.addTaskSetting(),this.addPrependSetting(),this.addAppendLinkSetting(),this.addInsertAfterSetting(),this.choice.captureToActiveFile||(this.addOpenFileSetting(),this.choice.openFile&&this.addOpenFileInNewTabSetting()),this.addFormatSetting()}addCapturedToSetting(){let l;new iI.Setting(this.contentEl).setName("Capture To").setDesc("File to capture to. Supports some format syntax.");let c=this.contentEl.createDiv("captureToContainer"),b=c.createDiv("captureToActiveFileContainer"),Z=b.createEl("span");Z.textContent="Capture to active file";let d=new iI.ToggleComponent(b);if(d.setValue(this.choice?.captureToActiveFile),d.onChange(W=>{this.choice.captureToActiveFile=W,this.reload()}),!this.choice?.captureToActiveFile){let W=c.createDiv("captureToFileContainer"),a=W.createEl("span"),m=new V1(this.app);(async()=>a.textContent=await m.format(this.choice.captureTo))();let V=new iI.TextComponent(W);V.setPlaceholder("File name format"),l=V,V.inputEl.style.width="100%",V.inputEl.style.marginBottom="8px",V.setValue(this.choice.captureTo).setDisabled(this.choice?.captureToActiveFile).onChange(async h=>{this.choice.captureTo=h,a.textContent=await m.format(h)});let N=[...this.app.vault.getMarkdownFiles().map(h=>h.path),...Dm];new Hl(this.app,l.inputEl,N,50)}}addPrependSetting(){new iI.Setting(this.contentEl).setName("Write to bottom of file").setDesc(`Put value at the bottom of the file - otherwise at the ${this.choice?.captureToActiveFile?"active cursor location":"top"}.`).addToggle(c=>{c.setValue(this.choice.prepend),c.onChange(b=>{this.choice.prepend=b,this.choice.prepend&&this.choice.insertAfter.enabled&&(this.choice.insertAfter.enabled=!1,this.reload())})})}addTaskSetting()
${e?"Deleting this choice will delete all ("+t.choices.length+") choices inside it!":""}
${Q?"Deleting this choice will delete the macro associated with it!":""}
`)&&(Q&&(l(9,b=b.filter(v=>v.id!==t.macroId)),d(b)),l(0,c=c.filter(v=>C5(t.id,v))),a.removeCommandForChoice(t),Z(c))}async function N(Y){let{choice:t}=Y.detail,Q;if(t.type==="Multi"){Q=t;let e=await vI.Prompt(W,`Rename ${t.name}`,"",t.name);if(!e)return;Q.name=e}else{let e=X(t);if(!e)throw new Error("Invalid choice type");Q=await e.waitForClose}Q&&(l(0,c=c.map(e=>va(e,Q))),a.removeCommandForChoice(t),a.addCommandForChoice(Q),Z(c))}async function h(Y){let{choice:t}=Y.detail,Q={...t,command:!t.command};Q.command?a.addCommandForChoice(Q):a.removeCommandForChoice(Q),l(0,c=c.map(e=>va(e,Q))),Z(c)}async function F(Y){let{choice:t}=Y.detail,Q=R(t);l(0,c=[...c,Q]),Z(c)}function R(Y){if(!yV(Y))throw new Error("Invalid choice type");let t;switch(Y.type){case"Template":t=new jc(`${Y.name} (copy)`);break;case"Capture":t=new Tc(`${Y.name} (copy)`);break;case"Macro":t=new Zb(`${Y.name} (copy)`);break;case"Multi":t=new Cc(`${Y.name} (copy)`);break}return Y.type!=="Multi"?Object.assign(t,wV(Y,["id","name"])):t.choices=Y.choices.map(Q=>R(Q)),t}function X(Y){switch(Y.type){case"Template":return new N1(W,Y,a);case"Capture":return new k1(W,Y,a);case"Macro":return new Bd(W,Y,b,C.getState().choices);case"Multi":default:break}}async function E(){let Y=await new Ld(W,a,b,c).waitForClose;Y&&(d(Y),l(9,b=Y))}async function s(){let Y=await new jd(W,C.getState().ai).waitForClose;Y&&C.setState(t=>({...t,ai:Y}))}function J(Y){c=Y,l(0,c)}let i=Y=>Z(Y.detail.choices);return G.$$set=Y=>{"choices"in Y&&l(0,c=Y.choices),"macros"in Y&&l(9,b=Y.macros),"saveChoices"in Y&&l(1,Z=Y.saveChoices),"saveMacros"in Y&&l(10,d=Y.saveMacros),"app"in Y&&l(11,W=Y.app),"plugin"in Y&&l(12,a=Y.plugin)},[c,Z,m,V,N,h,F,E,s,b,d,W,a,J,i]}var Ja=class extends FI{constructor(I){super(),RI(this,I,Hn,Yn,HI,{choices:0,macros:9,saveChoices:1,saveMacros:10,app:11,plugin:12},hn)}},S5=Ja;var Rn={name:"OpenAI",endpoint:"https://api.openai.com/v1",apiKey:"",models:[{name:"text-davinci-003",maxTokens:4096},{name:"gpt-3.5-turbo",maxTokens:4096},{name:"gpt-3.5-turbo-16k",maxTokens:16384},{name:"gpt-3.5-turbo-1106",maxTokens:16385},{name:"gpt-4",maxTokens:8192},{name:"gpt-4-32k",maxTokens:32768},{name:"gpt-4-1106-preview",maxTokens:128e3},{name:"gpt-4-turbo",maxTokens:128e3},{name:"gpt-4o",maxTokens:128e3},{name:"gpt-4o-mini",maxTokens:128e3}]},Td=[Rn];var ld={choices:[],macros:[],inputPrompt:"single-line",devMode:!1,templateFolderPath:"",announceUpdates:!0,version:"0.0.0",disableOnlineFeatures:!0,enableRibbonIcon:!1,ai:{defaultModel:"Ask me",defaultSystemPrompt:'As an AI assistant within Obsidian, your primary goal is to help users manage their ideas and knowledge more effectively. Format your responses using Markdown syntax. Please use the [[Obsidian]] link format. You can write aliases for the links by writing [[Obsidian|the alias after the pipe symbol]]. To use mathematical notation, use LaTeX syntax. LaTeX syntax for larger equations should be on separate lines, surrounded with double dollar signs ($$). You can also inline math expressions by wrapping it in $ symbols. For example, use $$w_{ij}^{ ext{new}}:=w_{ij}^{ ext{current}}+etacdotdelta_jcdot x_{ij}$$ on a separate line, but you can write "($eta$ = learning rate, $delta_j$ = error term, $x_{ij}$ = input)" inline.',promptTemplatesFolderPath:"",showAssistant:!0,providers:Td},migrations:{migrateToMacroIDFromEmbeddedMacro:!1,useQuickAddTemplateFolder:!1,incrementFileNameSettingMoveToDefaultBehavior:!1,mutualExclusionInsertAfterAndWriteToBottomOfFile:!1,setVersionAfterUpdateModalRelease:!1,addDefaultAIProviders:!1}},Cd=class extends Q2.PluginSettingTab{constructor(l,c){super(l,c);this.plugin=c}display(){let{containerEl:l}=this;l.empty(),l.createEl("h2",{text:"QuickAdd Settings"}),this.addChoicesSetting(),this.addUseMultiLineInputPromptSetting(),this.addTemplateFolderPathSetting(),this.addAnnounceUpdatesSetting(),this.addDisableOnlineFeaturesSetting(),this.addEnableRibbonIconSetting()}addAnnounceUpdatesSetting(){let l=new Q2.Setting(this.containerEl);l.setName("Announce Updates"),l.setDesc("Display release notes when a new vers
`:""}${b}`}if(this.choice.insertAfter.enabled)return await this.insertAfterHandler(b);let d=this.file?this.getFrontmatterEndPosition(this.file):null;return d?this.insertTextAfterPositionInBody(b,this.fileContent,d):`${b}${this.fileContent}`}async formatContentOnly(l){let c=await super.formatFileContent(l);return c=this.replaceLinebreakInString(c),c.trim()===""?this.fileContent:c}async insertAfterHandler(l){let c=await this.format(this.choice.insertAfter.after),b=new RegExp(`\\s*${_V(c.replace("\\n",""))}\\s*`),Z=k3(this.fileContent),d=Z.findIndex(a=>b.test(a));if(d===-1){if(this.choice.insertAfter?.createIfNotFound)return await this.createInsertAfterIfNotFound(l);EI(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.");d=Od(Z,d,!!this.choice.insertAfter.considerSubsections)??Z.length-1}return this.insertTextAfterPositionInBody(l,this.fileContent,d)}async createInsertAfterIfNotFound(l){let b=`${this.replaceLinebreakInString(await this.format(this.choice.insertAfter.after))}
${l}`;if(this.choice.insertAfter?.createIfNotFoundLocation===Fb){let Z=this.file?this.getFrontmatterEndPosition(this.file):-1;return this.insertTextAfterPositionInBody(b,this.fileContent,Z)}if(this.choice.insertAfter?.createIfNotFoundLocation===iZ)return`${this.fileContent}
${b}`;if(this.choice.insertAfter?.createIfNotFoundLocation===rZ)try{let Z=this.app.workspace.getActiveViewOfType(P5.MarkdownView);if(!Z)throw new Error("No active view.");let W=Z.editor.getCursor().line;if(this.choice.insertAfter?.insertAtEnd){if(!this.file)throw new Error("Tried to get sections without file.");let m=k3(this.fileContent);W=Od(m,W,!!this.choice.insertAfter.considerSubsections)??m.length-1}return this.insertTextAfterPositionInBody(b,this.fileContent,W)}catch(Z){EI(Z,`Unable to insert line '${this.choice.insertAfter.after}' at cursor position`)}}getFrontmatterEndPosition(l){let c=this.app.metadataCache.getFileCache(l);return!c||!c.frontmatter?(B.logMessage("could not get frontmatter. Maybe there isn't any."),-1):c.frontmatterPosition?c.frontmatterPosition.end.line:-1}insertTextAfterPositionInBody(l,c,b){if(b===-1){let a=!this.choice.task;return`${l}${a?`
`:""}${c}`}let Z=c.split(`
`),d=Z.slice(0,b+1).join(`
`),W=Z.slice(b+1).join(`
`);return`${d}
${l}${W}`}};var qd=class{isResolved(){return!this.hasConflicts}isConflicted(){return this.hasConflicts}},wc=class extends qd{constructor(I,l,c){super(),this.left=I,this.base=l,this.right=c,this.hasConflicts=!0}static create(I){return new wc(I.left,I.base,I.right)}apply(I){return wc.create({left:I(this.left),base:I(this.base),right:I(this.right)})}},gl=class extends qd{constructor(I){super(),this.hasConflicts=!1,this.result=I}combine(I){this.result=this.result.concat(I.result)}apply(I){return new gl(I(this.result))}};var d2=class{constructor(I,l){this.left=I,this.right=l}static executeDiff(I,l){if(!I.push)throw new Error("Argument is not an array");let c=d2.diff(I,l);return new oa(I,l,c).convertToTypedOutput()}static diff(I,l){return new d2(I,l).performDiff()}performDiff(){let I=this.identifyUniquePositions();I.sort((Z,d)=>d[0]-Z[0]);let[l,c]=this.findNextChange(),b=new _d(l,c,[]);return I.forEach(Z=>{b=this.getDifferences(b,Z)}),b.changeRanges}getDifferences(I,l){let[c,b]=[I.leftChangePos,I.rightChangePos],[Z,d]=l;if(Z<c||d<b)return I;{let[W,a,m,V]=this.findPrevChange(c,b,Z-1,d-1),[N,h]=this.findNextChange(Z+1,d+1),F=this.appendChangeRange(I.changeRanges,W,a,m,V);return new _d(N,h,F)}}findNextChange(I=0,l=0){let c=this.left.slice(I)||[],b=this.right.slice(l)||[],Z=this.mismatchOffset(c,b);return[I+Z,l+Z]}findPrevChange(I,l,c,b){if(I>c||l>b)return[I,c,l,b];{let Z=this.left.slice(I,c+1).reverse()||[],d=this.right.slice(l,b+1).reverse()||[],W=this.mismatchOffset(Z,d);return[I,c-W,l,b-W]}}mismatchOffset(I,l){let c=Math.max(I.length,l.length);for(let b=0;b<c;b++)if(I[b]!==l[b])return b;return Math.min(I.length,l.length)}identifyUniquePositions(){let I=this.findUnique(this.left),l=this.findUnique(this.right),c=new Set(...I.keys()),b=new Set(...l.keys()),d=[...new Set([...c].filter(W=>b.has(W)))].map(W=>[I.get(W),l.get(W)]);return d.unshift([this.left.length,this.right.length]),d}findUnique(I){let l=new Map;I.forEach((b,Z)=>{l.set(b,new ya(Z,!l.has(b)))});let c=new Map;for(let[b,Z]of l.entries())Z.unique&&c.set(b,Z.pos);return c}appendChangeRange(I,l,c,b,Z){return l<=c&&b<=Z?I.push(new Tb(C2.change,l+1,c+1,b+1,Z+1)):l<=c?I.push(new Tb(C2.remove,l+1,c+1,b+1,b)):b<=Z&&I.push(new Tb(C2.add,l+1,l,b+1,Z+1)),I}},ya=class{constructor(I,l){this.pos=I,this.unique=l}},B1=class{constructor(I,l){this.text=I,this.low=l}},oa=class{constructor(I,l,c){this.oldTextArray=I,this.newTextArray=l,this.chunks=c,this.oldText=[],this.newText=[]}convertToTypedOutput(){let I=new ia(0,0);return this.chunks.forEach(l=>{let[c,b]=this.setTextNodeIndexes(l,I.oldIndex,I.newIndex),[Z,d]=this.appendChanges(l,I.oldIndex+c,I.newIndex+b);I.oldIndex=Z,I.newIndex=d}),this.setTheRemainingTextNodeIndexes(I.oldIndex,I.newIndex),{oldText:this.oldText,newText:this.newText}}setTextNodeIndexes(I,l,c){let b=0;for(;l+b<I.leftLo-1;)this.oldText.push(new B1(this.oldTextArray[l+b],c+b)),b+=1;let Z=0;for(;c+Z<I.rightLo-1;)this.newText.push(new B1(this.newTextArray[c+Z],l+Z)),Z+=1;return[b,Z]}appendChanges(I,l,c){for(;l<=I.leftHi-1;)this.oldText.push(this.oldTextArray[l]),l+=1;for(;c<=I.rightHi-1;)this.newText.push(this.newTextArray[c]),c+=1;return[l,c]}setTheRemainingTextNodeIndexes(I,l){let c=0;for(;I+c<this.oldTextArray.length;)this.oldText.push(new B1(this.oldTextArray[I+c],l+c)),c+=1;for(;l+c<this.newTextArray.length;)this.newText.push(new B1(this.newTextArray[l+c],I+c)),c+=1}},ia=class{constructor(I,l){this.oldIndex=I,this.newIndex=l}},C2;(function(G){G.change="change",G.add="add",G.remove="remove"})(C2||(C2={}));var Tb=class{constructor(I,l,c,b,Z){this.action=I,this.leftLo=l,this.leftHi=c,this.rightLo=b,this.rightHi=Z}},_d=class{constructor(I,l,c){this.leftChangePos=I,this.rightChangePos=l,this.changeRanges=c}};var L1=class{constructor(I,l,c,b,Z){this.code=I,this.baseLo=l,this.baseHi=c,this.sideLo=b,this.sideHi=Z}static fromChangeRange(I){return new L1(I.action,I.leftLo,I.leftHi,I.rightLo,I.rightHi)}},yc=class{constructor(I,l,c){this.left=I,this.base=l,this.right=c}static executeDiff(I,l,c){return new yc(I,l,c).getDifferences()}getDifferences(){let I=d2.diff(this.base,this
`)}}).join(`
`)}}var _5=G=>G.join(""),tn=G=>G.split(/\b/),En=q5("<<<<<<< YOUR CHANGES","=======",">>>>>>> APP AUTHORS CHANGES",_5),un={splitFunction:tn,joinFunction:_5,conflictFunction:En};function ga(G,I,l,c={}){c=Object.assign({},un,c);let[b,Z,d]=[G,I,l].map(m=>c.splitFunction.call(c,m)),W=RG.merge(b,Z,d);return XG.collateMerge(W,c.joinFunction,c.conflictFunction)}var $5=ga;var IW=class extends R1{constructor(l,c,b,Z){super(l);this.choiceExecutor=Z;this.choice=b,this.plugin=c,this.formatter=new Pd(l,c,Z)}async run(){try{let l=await this.getFormattedPathToCaptureTo(this.choice.captureToActiveFile),c=this.getCaptureContent(),b;if(await this.fileExists(l))b=this.onFileExists.bind(this);else if(this.choice?.createFileIfItDoesntExist?.enabled)b=this.onCreateFileIfItDoesntExist.bind(this);else{B.logWarning(`The file ${l} does not exist and "Create file if it doesn't exist" is disabled.`);return}let{file:Z,newFileContent:d,captureContent:W}=await b(l,c);if(this.choice.captureToActiveFile&&!this.choice.prepend&&!this.choice.insertAfter.enabled){let a=await jZ(this.app,W,Z);pb(a,this.app)}else await this.app.vault.modify(Z,d),await a1(this.app,Z);if(this.choice.appendLink){let a=this.app.fileManager.generateMarkdownLink(Z,"");pb(a,this.app)}this.choice.openFile&&Z&&(CZ(this.app,Z)||await TZ(this.app,Z,{openInNewTab:this.choice.openFileInNewTab.enabled,direction:this.choice.openFileInNewTab.direction,focus:this.choice.openFileInNewTab.focus,mode:this.choice.openFileInMode}))}catch(l){EI(l,`Error running capture choice "${this.choice.name}"`)}}getCaptureContent(){let l;return this.choice.format.enabled?l=this.choice.format.format:l=IG,this.choice.task&&(l=`- [ ] ${l}
`),l}async getFormattedPathToCaptureTo(l){if(l){let m=this.app.workspace.getActiveFile();return Bl(m,"Cannot capture to active file - no active file."),m.path}let c=this.choice.captureTo,b=await this.formatFilePath(c),Z=b.replace(/^\/$|\/\.md$|^\.md$/,""),d=Z==="",W=d||oV(this.app,Z),a=b.startsWith("#");if(W)return this.selectFileInFolder(Z,d);if(a){let m=b.replace(/\.md$/,"");return this.selectFileWithTag(m)}return b}async selectFileInFolder(l,c){let b=l.endsWith("/")||c?l:`${l}/`,Z=m1(this.app,b);Bl(Z.length>0,`Folder ${b} is empty.`);let d=Z.map(m=>m.path),W=await B2.Suggest(this.app,d.map(m=>m.replace(b,"")),d);Bl(!!W&&W.length>0,"No file selected for capture.");let a=W.startsWith(`${b}`)?W:`${b}/${W}`;return await this.formatFilePath(a)}async selectFileWithTag(l){let c=l.startsWith("#")?l:`#${l}`,b=iV(this.app,c);Bl(b.length>0,`No files with tag ${l}.`);let Z=b.map(W=>W.path),d=await B2.Suggest(this.app,Z,Z);return Bl(!!d&&d.length>0,"No file selected for capture."),await this.formatFilePath(d)}async onFileExists(l,c){let b=this.getFileByPath(l);if(!b)throw new Error("File not found");let Z=await this.formatter.formatContentOnly(c),d=await this.app.vault.read(b),W=await this.formatter.formatContentWithFile(Z,this.choice,d,b),a=await this.app.vault.read(b),m=W;if(a!==d){let V=$5(a,d,W);Bl(!V.isSuccess,()=>`The file ${l} has been modified since the last read.
QuickAdd could not merge the versions two without conflicts, and will not modify the file.
This is in order to prevent data loss.`),m=V.joinedResults()}return{file:b,newFileContent:m,captureContent:Z}}async onCreateFileIfItDoesntExist(l,c){let b=await this.formatter.formatContentOnly(c),Z="";this.choice.createFileIfItDoesntExist.createWithTemplate&&(Z=await new Jc(this.app,this.plugin,this.choice.createFileIfItDoesntExist.template,this.choiceExecutor).run());let d=await this.createFileWithInput(l,Z),W=await this.app.vault.cachedRead(d),a=await this.formatter.formatContentWithFile(b,this.choice,W,d);return{file:d,newFileContent:a,captureContent:b}}async formatFilePath(l){let c=await this.formatter.formatFileName(l,this.choice.name);return this.normalizeMarkdownFilePath("",c)}};var lW=require("obsidian");var v2=class extends lW.FuzzySuggestModal{constructor(l,c,b){super(l.app);this.plugin=l;this.choices=c;this.choiceExecutor=new mc(this.app,this.plugin);b&&(this.choiceExecutor=b)}static Open(l,c,b){new v2(l,c,b).open()}renderSuggestion(l,c){c.empty(),lW.MarkdownRenderer.renderMarkdown(l.item.name,c,"",this.plugin),c.classList.add("quickadd-choice-suggestion")}getItemText(l){return l.name}getItems(){return this.choices}async onChooseItem(l,c){l.type==="Multi"?this.onChooseMultiType(l):await this.choiceExecutor.execute(l)}onChooseMultiType(l){let c=[...l.choices];l.name!="\u2190 Back"&&c.push(new Cc("\u2190 Back").addChoices(this.choices)),v2.Open(this.plugin,c)}};var mc=class{constructor(I,l){this.app=I;this.plugin=l;this.variables=new Map}async execute(I){switch(I.type){case"Template":{let l=I;await this.onChooseTemplateType(l);break}case"Capture":{let l=I;await this.onChooseCaptureType(l);break}case"Macro":{let l=I;await this.onChooseMacroType(l);break}case"Multi":{let l=I;this.onChooseMultiType(l);break}default:break}}async onChooseTemplateType(I){await new Kd(this.app,this.plugin,I,this).run()}async onChooseCaptureType(I){await new IW(this.app,this.plugin,I,this).run()}async onChooseMacroType(I){let l=new M2(this.app,this.plugin,I,this.plugin.settings.macros,this,this.variables);await l.run(),Object.entries(l.params.variables).forEach(([c,b])=>{this.variables.set(c,b)})}onChooseMultiType(I){v2.Open(this.plugin,I.choices,this)}};var I4={description:"Migrate to macro ID from embedded macro in macro choices.",migrate:async G=>{function I(l){if(l.type==="Multi"){let b=l,Z=b.choices.map(I);return b={...b,choices:Z},b}if(l.type!=="Macro")return l;let c=l;return c.macro&&(c.macroId=c.macro.id,delete c.macro),c}G.settings.choices=G.settings.choices.map(I),await G.saveSettings()}};var l4={description:"Use QuickAdd template folder instead of Obsidian templates plugin folder / Templater templates folder.",migrate:async G=>{try{let I=G.app.plugins.plugins.templater,l=G.app.internalPlugins.plugins.templates;if(!I&&!l){B.logMessage("No template plugin found. Skipping migration.");return}if(l){let c=l.instance.options;c.folder&&(G.settings.templateFolderPath=c.folder,B.logMessage("Migrated template folder path to Obsidian Templates' setting."))}if(I){let c=I.settings;c.template_folder&&(G.settings.templateFolderPath=c.template_folder,B.logMessage("Migrated template folder path to Templaters setting."))}}catch(I){throw B.logError("Failed to migrate template folder path."),I}}};function cW(G){return G===null||typeof G!="object"||!("type"in G)||!("choices"in G)?!1:G.type==="Multi"&&G.choices!==void 0}function GW(G){return G===null||typeof G!="object"||!("choice"in G)?!1:G.choice!==void 0}function za(G){return typeof G!="object"||G===null?!1:"incrementFileName"in G}function c4(G){for(let I of G)cW(I)&&(I.choices=c4(I.choices)),za(I)&&(I.setFileExistsBehavior=!0,I.fileExistsMode="Increment the file name",delete I.incrementFileName);return G}function Qn(G){for(let I of G)if(Array.isArray(I.commands))for(let l of I.commands)GW(l)&&za(l.choice)&&(l.choice.setFileExistsBehavior=!0,l.choice.fileExistsMode="Increment the file name",delete l.choice.incrementFileName);return G}var vn={description:"'Increment file name' setting moved to 'Set default behavior if file already exists' setting",migrate:async G=>{let I=structuredClone(G.sett
${b}
QuickAdd will now revert to backup.`),G.settings=c}}G.saveSettings()}var a4=rn;var f1=require("obsidian");async function An(G,I,l){let c=await fetch(`https://api.github.com/repos/${G}/${I}/releases`),b=await c.json();if(!c.ok&&"message"in b||!Array.isArray(b))throw new Error(`Failed to fetch releases: ${b.message??"Unknown error"}`);let Z=b.findIndex(d=>d.tag_name===l);if(Z===-1)throw new Error(`Could not find release with tag ${l}`);return b.slice(0,Z).filter(d=>!d.draft&&!d.prerelease)}function gn(G,I=1){let l=G.split(`
`);for(let c=0;c<l.length;c++)l[c].startsWith("#")&&(l[c]="#".repeat(I)+l[c]);return l.join(`
`)}var bW=class extends f1.Modal{constructor(l,c){super(l);this.previousVersion=c,this.releaseNotesPromise=An("chhoumann","quickadd",c),this.releaseNotesPromise.then(b=>{if(this.releases=b,this.releases.length===0){this.close();return}this.display()}).catch(b=>{B.logError(`Failed to fetch release notes: ${b}`)})}onOpen(){let{contentEl:l}=this;l.empty(),l.createEl("h1",{text:"Fetching release notes..."})}onClose(){let{contentEl:l}=this;l.empty()}display(){let{contentEl:l}=this;l.empty(),l.classList.add("quickadd-update-modal-container");let c=`### New in QuickAdd v${this.releases[0].tag_name}
`,b="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>',d=l.createDiv("quickadd-update-modal"),W=this.releases.map(N=>N.body).join(`
---
`),a=`And now, here is everything new in QuickAdd since your last update (v${this.previousVersion}):`,V=`${c}
${b}
${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.
${a}
---
${gn(W)}`;f1.MarkdownRenderer.renderMarkdown(V,d,this.app.vault.getRoot().path,new f1.Component)}};var PI=require("obsidian");var ZW=class extends PI.Modal{constructor(l,c){super(l);this.showAdvancedSettings=!1;this.settings=c,this.waitForClose=new Promise((b,Z)=>{this.rejectPromise=Z,this.resolvePromise=b}),this.open(),this.display()}get systemPromptTokenLength(){let l=X2(this.settings.model);return l?Ll(this.settings.systemPrompt,l):Number.POSITIVE_INFINITY}display(){this.contentEl.empty();let l=this.contentEl.createEl("h2",{text:`${this.settings.name} Settings`});l.style.textAlign="center",l.style.cursor="pointer",l.style.userSelect="none",l.addEventListener("click",async()=>{try{let c=await vI.Prompt(this.app,"New name",this.settings.name,this.settings.name);c&&c!==this.settings.name&&(this.settings.name=c,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(l){new PI.Setting(l).setName("Model").setDesc("The model the AI Assistant will use").addDropdown(c=>{let b=k2();for(let Z of b)c.addOption(Z,Z);c.addOption("Ask me","Ask me"),c.setValue(this.settings.model),c.onChange(Z=>{this.settings.model=Z,this.reload()})})}addOutputVariableNameSetting(l){new PI.Setting(l).setName("Output variable name").setDesc("The name of the variable used to store the AI Assistant output, i.e. {{value:output}}.").addText(c=>{c.setValue(this.settings.outputVariableName).onChange(b=>{this.settings.outputVariableName=b})})}addSystemPromptSetting(l){new PI.Setting(l).setName("System Prompt").setDesc("The system prompt for the AI Assistant");let c=this.contentEl.createEl("div"),b=c.createEl("span");b.style.color="var(--text-muted-color)",c.appendChild(b);let Z=new PI.TextAreaComponent(l);Z.setValue(this.settings.systemPrompt).onChange(async m=>{this.settings.systemPrompt=m,W.innerText=await d.format(m),a()}),new ul(this.app,Z.inputEl,nI.instance);let d=new Tl(this.app,nI.instance);Z.inputEl.style.width="100%",Z.inputEl.style.height="100px",Z.inputEl.style.minHeight="100px",Z.inputEl.style.marginBottom="1em";let W=this.contentEl.createEl("span"),a=(0,PI.debounce)(()=>{b.innerText=`Token count: ${this.systemPromptTokenLength}`},50);a(),(async()=>W.innerText=await d.format(this.settings.systemPrompt??""))()}addShowAdvancedSettingsToggle(l){new PI.Setting(l).setName("Show advanced settings").setDesc("Show advanced settings such as temperature, top p, and frequency penalty.").addToggle(c=>{c.setValue(this.showAdvancedSettings),c.onChange(b=>{this.showAdvancedSettings=b,this.reload()})})}addTemperatureSetting(l){new PI.Setting(l).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(c=>{c.setLimits(0,1,.1),c.setDynamicTooltip(),c.setValue(this.settings.modelParameters.temperature??1),c.onChange(b=>{this.settings.modelParameters.temperature=b})})}addTopPSetting(l){new PI.Setting(l).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(c=>{c.setLimits(0,1,.1),c.setDynamicTooltip(),c.setValue(this.settings.modelParameters.top_p??1),c.onChange(b=>{this.settings.modelParameters.top_p=b})})}addFrequencyPenaltySetting(l){new PI.Setting(
/* nosourcemap */