1
0
Fork 0
obsidian-vault-starter/.obsidian/plugins/obsidian-tasks-plugin/main.js

375 lines
454 KiB
JavaScript
Raw Permalink Normal View History

/*
2022-04-07 16:18:07 +00:00
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source visit the plugins github repository
*/
/*
License obsidian-tasks:
MIT License
2023-03-29 16:30:35 +00:00
Copyright (c) 2021 Martin Schenck and Clare Macrae
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/*
License rrule (included library):
rrule.js: Library for working with recurrence rules for calendar dates.
=======================================================================
Copyright 2010, Jakub Roztocil <jakub@roztocil.name> and Lars Schöning
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of The author nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR AND CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
./rrule.js and ./test/tests.js is based on python-dateutil. LICENCE:
python-dateutil - Extensions to the standard Python datetime module.
====================================================================
Copyright (c) 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net>
Copyright (c) 2012 - Tomi Pieviläinen <tomi.pievilainen@iki.fi>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
License chrono-node (included library):
The MIT License
Copyright (c) 2014, Wanasit Tanakitrungruang
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
2024-05-04 11:47:19 +00:00
"use strict";var zk=Object.create;var ba=Object.defineProperty,Kk=Object.defineProperties,Qk=Object.getOwnPropertyDescriptor,Xk=Object.getOwnPropertyDescriptors,Zk=Object.getOwnPropertyNames,su=Object.getOwnPropertySymbols,Jk=Object.getPrototypeOf,Ac=Object.prototype.hasOwnProperty,eg=Object.prototype.propertyIsEnumerable;var Jh=(r,e,t)=>e in r?ba(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,X=(r,e)=>{for(var t in e||(e={}))Ac.call(e,t)&&Jh(r,t,e[t]);if(su)for(var t of su(e))eg.call(e,t)&&Jh(r,t,e[t]);return r},be=(r,e)=>Kk(r,Xk(e));var au=(r,e)=>{var t={};for(var n in r)Ac.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&su)for(var n of su(r))e.indexOf(n)<0&&eg.call(r,n)&&(t[n]=r[n]);return t};var k=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),eE=(r,e)=>{for(var t in e)ba(r,t,{get:e[t],enumerable:!0})},tg=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Zk(e))!Ac.call(r,i)&&i!==t&&ba(r,i,{get:()=>e[i],enumerable:!(n=Qk(e,i))||n.enumerable});return r};var Ta=(r,e,t)=>(t=r!=null?zk(Jk(r)):{},tg(e||!r||!r.__esModule?ba(t,"default",{value:r,enumerable:!0}):t,r)),tE=r=>tg(ba({},"__esModule",{value:!0}),r);var L=(r,e,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(l){i(l)}},a=u=>{try{o(t.throw(u))}catch(l){i(l)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(r,e)).next())});var xe=k(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.matchAnyPattern=Vn.extractTerms=Vn.repeatedTimeunitPattern=void 0;function sE(r,e){let t=e.replace(/\((?!\?)/g,"(?:");return`${r}${t}\\s{0,5}(?:,?\\s{0,5}${t}){0,10}`}Vn.repeatedTimeunitPattern=sE;function rg(r){let e;return r instanceof Array?e=[...r]:r instanceof Map?e=Array.from(r.keys()):e=Object.keys(r),e}Vn.extractTerms=rg;function aE(r){return`(?:${rg(r).sort((t,n)=>n.length-t.length).join("|").replace(/\./g,"\\.")})`}Vn.matchAnyPattern=aE});var _e=k((Nc,Ic)=>{(function(r,e){typeof Nc=="object"&&typeof Ic!="undefined"?Ic.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs=e()})(Nc,function(){"use strict";var r=1e3,e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",o="day",u="week",l="month",c="quarter",d="year",m="date",p="Invalid Date",T=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,E={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},R=function(G,N,O){var B=String(G);return!B||B.length>=N?G:""+Array(N+1-B.length).join(O)+G},x={s:R,z:function(G){var N=-G.utcOffset(),O=Math.abs(N),B=Math.floor(O/60),U=O%60;return(N<=0?"+":"-")+R(B,2,"0")+":"+R(U,2,"0")},m:function G(N,O){if(N.date()<O.date())return-G(O,N);var B=12*(O.year()-N.year())+(O.month()-N.month()),U=N.clone().add(B,l),Q=O-U<0,f=N.clone().add(B+(Q?-1:1),l);return+(-(B+(O-U)/(Q?U-f:f-U))||0)},a:function(G){return G<0?Math.ceil(G)||0:Math.floor(G)},p:function(G){return{M:l,y:d,w:u,d:o,D:m,h:a,m:s,s:i,ms:n,Q:c}[G]||String(G||"").toLowerCase().replace(/s$/,"")},u:function(G){return G===void 0}},v="en",V={};V[v]=E;var j=function(G){return G instanceof de},te=function(G,N,O){var B;if(!G)return v;if(typeof G=="string")V[G]&&(B=G),N&&(V[G]=N,B=G);else{var U=G.name;V[U]=G,B=U}return!O&&B&&(v=B),B||!O&&v},Y=function(G,N){if(j(G))return G.clone();var O=typeof N=="object"?N:{};return O.date=G,O.args=arguments,new de(O)},W=x;W.l=te,W.i=j,W.w=function(G,N){return Y(G,{locale:N.$L,utc:N.$u,x:N.$x,$offset:N.$offset})};var de=function(){function G(O){this.$L=te(O.locale,null,!0),this.parse(O)}var N=G.prototype;return N.parse=function(O){this.$d=function(B){var U=B.date,Q=B.utc;if(U===null)return new Date(NaN);if(W.u(U))return new Date;if(U instanceof Date)return new Date(U);if(typeof U=="string"&&!/Z$/i.test(U)){var f=U.match(T);if(f){var h=f[2]-1||0,g=(f[7]||"0").substring(0,3);return Q?new
`).map(NP).filter(function(t){return t!==null});return yt(yt({},e[0]),e[1])}function Oo(r){var e={},t=/DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(r);if(!t)return e;var n=t[1],i=t[2];return n&&(e.tzid=n),e.dtstart=wo(i),e}function NP(r){if(r=r.replace(/^\s+|\s+$/,""),!r.length)return null;var e=/^([A-Z]+?)[:;]/.exec(r.toUpperCase());if(!e)return H_(r);var t=e[1];switch(t.toUpperCase()){case"RRULE":case"EXRULE":return H_(r);case"DTSTART":return Oo(r);default:throw new Error("Unsupported RFC prop ".concat(t," in ").concat(r))}}function H_(r){var e=r.replace(/^RRULE:/i,""),t=Oo(e),n=r.replace(/^(?:RRULE|EXRULE):/i,"").split(";");return n.forEach(function(i){var s=i.split("="),a=s[0],o=s[1];switch(a.toUpperCase()){case"FREQ":t.freq=fe[o.toUpperCase()];break;case"WKST":t.wkst=br[o.toUpperCase()];break;case"COUNT":case"INTERVAL":case"BYSETPOS":case"BYMONTH":case"BYMONTHDAY":case"BYYEARDAY":case"BYWEEKNO":case"BYHOUR":case"BYMINUTE":case"BYSECOND":var u=IP(o),l=a.toLowerCase();t[l]=u;break;case"BYWEEKDAY":case"BYDAY":t.byweekday=FP(o);break;case"DTSTART":case"TZID":var c=Oo(r);t.tzid=c.tzid,t.dtstart=c.dtstart;break;case"UNTIL":t.until=wo(o);break;case"BYEASTER":t.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+a+"'")}}),t}function IP(r){if(r.indexOf(",")!==-1){var e=r.split(",");return e.map(V_)}return V_(r)}function V_(r){return/^[+-]?\d+$/.test(r)?Number(r):r}function FP(r){var e=r.split(",");return e.map(function(t){if(t.length===2)return br[t];var n=t.match(/^([+-]?\d{1,2})([A-Z]{2})$/);if(!n||n.length<3)throw new SyntaxError("Invalid weekday string: ".concat(t));var i=Number(n[1]),s=n[2],a=br[s].weekday;return new Ke(a,i)})}var Pi=function(){function r(e,t){if(isNaN(e.getTime()))throw new RangeError("Invalid date passed to DateWithZone");this.date=e,this.tzid=t}return Object.defineProperty(r.prototype,"isUTC",{get:function(){return!this.tzid||this.tzid.toUpperCase()==="UTC"},enumerable:!1,configurable:!0}),r.prototype.toString=function(){var e=ks(this.date.getTime(),this.isUTC);return this.isUTC?":".concat(e):";TZID=".concat(this.tzid,":").concat(e)},r.prototype.getTime=function(){return this.date.getTime()},r.prototype.rezonedDate=function(){return this.isUTC?this.date:L_(this.date,this.tzid)},r}();function xo(r){for(var e=[],t="",n=Object.keys(r),i=Object.keys(So),s=0;s<n.length;s++)if(n[s]!=="tzid"&&!!ge(i,n[s])){var a=n[s].toUpperCase(),o=r[n[s]],u="";if(!(!Pe(o)||gt(o)&&!o.length)){switch(a){case"FREQ":u=z.FREQUENCIES[r.freq];break;case"WKST":Xt(o)?u=new Ke(o).toString():u=o.toString();break;case"BYWEEKDAY":a="BYDAY",u=C_(o).map(function(p){return p instanceof Ke?p:gt(p)?new Ke(p[0],p[1]):new Ke(p)}).toString();break;case"DTSTART":t=LP(o,r.tzid);break;case"UNTIL":u=ks(o,!r.tzid);break;default:if(gt(o)){for(var l=[],c=0;c<o.length;c++)l[c]=String(o[c]);u=l.toString()}else u=String(o)}u&&e.push([a,u])}}var d=e.map(function(p){var T=p[0],y=p[1];return"".concat(T,"=").concat(y.toString())}).join(";"),m="";return d!==""&&(m="RRULE:".concat(d)),[t,m].filter(function(p){return!!p}).join(`
`)}function LP(r,e){return r?"DTSTART"+new Pi(new Date(r),e).toString():""}function UP(r,e){return Array.isArray(r)?!Array.isArray(e)||r.length!==e.length?!1:r.every(function(t,n){return t.getTime()===e[n].getTime()}):r instanceof Date?e instanceof Date&&r.getTime()===e.getTime():r===e}var z_=function(){function r(){this.all=!1,this.before=[],this.after=[],this.between=[]}return r.prototype._cacheAdd=function(e,t,n){t&&(t=t instanceof Date?al(t):Dm(t)),e==="all"?this.all=t:(n._value=t,this[e].push(n))},r.prototype._cacheGet=function(e,t){var n=!1,i=t?Object.keys(t):[],s=function(c){for(var d=0;d<i.length;d++){var m=i[d];if(!UP(t[m],c[m]))return!0}return!1},a=this[e];if(e==="all")n=this.all;else if(gt(a))for(var o=0;o<a.length;o++){var u=a[o];if(!(i.length&&s(u))){n=u._value;break}}if(!n&&this.all){for(var l=new Sn(e,t),o=0;o<this.all.length&&l.accept(this.all[o]);o++);n=l.getValue(),this._cacheAdd(e,n,t)}return gt(n)?Dm(n):n instanceof Date?al(n):n},r}();var K_=q(q(q(q(q(q(q(q(q(q(q(q(q([],he(1,31),!0),he(2,28),!0),he(3,31),!0),he(4,30),!0),he(5,31),!0),he(6,30),!0),he(7,31),!0),he(8,31),!0),he(9,30),!0),he(10,31),!0),he(11,30),!0),he(12,31),!0),he(1,7),!0),Q_=q(q(q(q(q(q(q(q(q(q(q(q(q([],he(1,31),!0),he(2,29),!0),he(3,31),!0),he(4,30),!0),he(5,31),!0),he(6,30),!0),he(7,31),!0),he(8,31),!0),he(9,30),!0),he(10,31),!0),he(11,30),!0),he(12,31),!0),he(1,7),!0),qP=yr(1,29),WP=yr(1,30),ei=yr(1,31),vt=yr(1,32),X_=q(q(q(q(q(q(q(q(q(q(q(q(q([],vt,!0),WP,!0),vt,!0),ei,!0),vt,!0),ei,!0),vt,!0),vt,!0),ei,!0),vt,!0),ei,!0),vt,!0),vt.slice(0,7),!0),Z_=q(q(q(q(q(q(q(q(q(q(q(q(q([],vt,!0),qP,!0),vt,!0),ei,!0),vt,!0),ei,!0),vt,!0),vt,!0),ei,!0),vt,!0),ei,!0),vt,!0),vt.slice(0,7),!0),$P=yr(-28,0),jP=yr(-29,0),ti=yr(-30,0),wt=yr(-31,0),J_=q(q(q(q(q(q(q(q(q(q(q(q(q([],wt,!0),jP,!0),wt,!0),ti,!0),wt,!0),ti,!0),wt,!0),wt,!0),ti,!0),wt,!0),ti,!0),wt,!0),wt.slice(0,7),!0),ev=q(q(q(q(q(q(q(q(q(q(q(q(q([],wt,!0),$P,!0),wt,!0),ti,!0),wt,!0),ti,!0),wt,!0),wt,!0),ti,!0),wt,!0),ti,!0),wt,!0),wt.slice(0,7),!0),tv=[0,31,60,91,121,152,182,213,244,274,305,335,366],rv=[0,31,59,90,120,151,181,212,243,273,304,334,365],Cm=function(){for(var r=[],e=0;e<55;e++)r=r.concat(yr(7));return r}();function nv(r,e){var t=Xr(r,1,1),n=ws(r)?366:365,i=ws(r+1)?366:365,s=vo(t),a=kn(t),o=yt(yt({yearlen:n,nextyearlen:i,yearordinal:s,yearweekday:a},GP(r)),{wnomask:null});if(Zt(e.byweekno))return o;o.wnomask=he(0,n+7);var u,l,c=u=_t(7-a+e.wkst,7);c>=4?(c=0,l=o.yearlen+_t(a-e.wkst,7)):l=n-c;for(var d=Math.floor(l/7),m=_t(l,7),p=Math.floor(d+m/4),T=0;T<e.byweekno.length;T++){var y=e.byweekno[T];if(y<0&&(y+=p+1),y>0&&y<=p){var E=void 0;y>1?(E=c+(y-1)*7,c!==u&&(E-=7-u)):E=c;for(var R=0;R<7&&(o.wnomask[E]=1,E++,o.wdaymask[E]!==e.wkst);R++);}}if(ge(e.byweekno,1)){var E=c+p*7;if(c!==u&&(E-=7-u),E<n)for(var T=0;T<7&&(o.wnomask[E]=1,E+=1,o.wdaymask[E]!==e.wkst);T++);}if(c){var x=void 0;if(ge(e.byweekno,-1))x=-1;else{var v=kn(Xr(r-1,1,1)),V=_t(7-v.valueOf()+e.wkst,7),j=ws(r-1)?366:365,te=void 0;V>=4?(V=0,te=j+_t(v-e.wkst,7)):te=n-c,x=Math.floor(52+_t(te,7)/4)}if(ge(e.byweekno,x))for(var E=0;E<c;E++)o.wnomask[E]=1}return o}function GP(r){var e=ws(r)?366:365,t=Xr(r,1,1),n=kn(t);return e===365?{mmask:K_,mdaymask:Z_,nmdaymask:ev,wdaymask:Cm.slice(n),mrange:rv}:{mmask:Q_,mdaymask:X_,nmdaymask:J_,wdaymask:Cm.slice(n),mrange:tv}}function iv(r,e,t,n,i,s){var a={lastyear:r,lastmonth:e,nwdaymask:[]},o=[];if(s.freq===z.YEARLY)if(Zt(s.bymonth))o=[[0,t]];else for(var u=0;u<s.bymonth.length;u++)e=s.bymonth[u],o.push(n.slice(e-1,e+1));else s.freq===z.MONTHLY&&(o=[n.slice(e-1,e+1)]);if(Zt(o))return a;a.nwdaymask=he(0,t);for(var u=0;u<o.length;u++)for(var l=o[u],c=l[0],d=l[1]-1,m=0;m<s.bynweekday.length;m++){var p=void 0,T=s.bynweekday[m],y=T[0],E=T[1];E<0?(p=d+(E+1)*7,p-=_t(i[p]-y,7)):(p=c+(E-1)*7,p+=_t(7-i[p]+y,7)),c<=p&&p<=d&&(a.nwdaymask[p]=1)}return a}function sv(r,e){e===void 0&&(e=0);var t=r%19,n=Math.floor(r/100),i=r%100,s=Math.floor(n/4),a=n%4,o=Math.floor((n+8)/25),u=Math.floor((n-o+1)/3),l=Math.floor(19*t+n-s-u+15)%30,c=Math.floor(i/4),d=i%4,m=Math.floor(32+2*a+2*c-l-d)%7,p=Math.floor((t+11*l
`),n=0;n<t.length;){var i=t[n]=t[n].replace(/\s+$/g,"");i?n>0&&i[0]===" "?(t[n-1]+=i.slice(1),t.splice(n,1)):n+=1:t.splice(n,1)}return t}function eN(r){r.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function dv(r,e){return eN(e),r.split(",").map(function(t){return wo(t)})}function fv(r){var e=this;return function(t){if(t!==void 0&&(e["_".concat(r)]=t),e["_".concat(r)]!==void 0)return e["_".concat(r)];for(var n=0;n<e._rrule.length;n++){var i=e._rrule[n].origOptions[r];if(i)return i}}}var Pm=function(r){Es(e,r);function e(t){t===void 0&&(t=!1);var n=r.call(this,{},t)||this;return n.dtstart=fv.apply(n,["dtstart"]),n.tzid=fv.apply(n,["tzid"]),n._rrule=[],n._rdate=[],n._exrule=[],n._exdate=[],n}return e.prototype._iter=function(t){return lv(t,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},e.prototype.rrule=function(t){pv(t,this._rrule)},e.prototype.exrule=function(t){pv(t,this._exrule)},e.prototype.rdate=function(t){mv(t,this._rdate)},e.prototype.exdate=function(t){mv(t,this._exdate)},e.prototype.rrules=function(){return this._rrule.map(function(t){return ul(t.toString())})},e.prototype.exrules=function(){return this._exrule.map(function(t){return ul(t.toString())})},e.prototype.rdates=function(){return this._rdate.map(function(t){return new Date(t.getTime())})},e.prototype.exdates=function(){return this._exdate.map(function(t){return new Date(t.getTime())})},e.prototype.valueOf=function(){var t=[];return!this._rrule.length&&this._dtstart&&(t=t.concat(xo({dtstart:this._dtstart}))),this._rrule.forEach(function(n){t=t.concat(n.toString().split(`
2022-06-15 22:20:02 +00:00
`))}),this._exrule.forEach(function(n){t=t.concat(n.toString().split(`
2024-05-04 11:47:19 +00:00
`).map(function(i){return i.replace(/^RRULE:/,"EXRULE:")}).filter(function(i){return!/^DTSTART/.test(i)}))}),this._rdate.length&&t.push(hv("RDATE",this._rdate,this.tzid())),this._exdate.length&&t.push(hv("EXDATE",this._exdate,this.tzid())),t},e.prototype.toString=function(){return this.valueOf().join(`
`)},e.prototype.clone=function(){var t=new e(!!this._cache);return this._rrule.forEach(function(n){return t.rrule(n.clone())}),this._exrule.forEach(function(n){return t.exrule(n.clone())}),this._rdate.forEach(function(n){return t.rdate(new Date(n.getTime()))}),this._exdate.forEach(function(n){return t.exdate(new Date(n.getTime()))}),t},e}(z);function pv(r,e){if(!(r instanceof z))throw new TypeError(String(r)+" is not RRule instance");ge(e.map(String),String(r))||e.push(r)}function mv(r,e){if(!(r instanceof Date))throw new TypeError(String(r)+" is not Date instance");ge(e.map(Number),Number(r))||(e.push(r),En(e))}function hv(r,e,t){var n=!t||t.toUpperCase()==="UTC",i=n?"".concat(r,":"):"".concat(r,";TZID=").concat(t,":"),s=e.map(function(a){return ks(a.valueOf(),n)}).join(",");return"".concat(i).concat(s)}var Nm=Ta(et());function Tr(r,e){return r!==null&&e===null?-1:r===null&&e!==null?1:r!==null&&e!==null?r.isValid()&&!e.isValid()?1:!r.isValid()&&e.isValid()?-1:r.isAfter(e)?1:r.isBefore(e)?-1:0:0}function tN(r,e,t=void 0){if(!e)return`<i>no ${r} date</i>`;let n=Nm.parseDate(e,t,{forwardDate:t!=null});return n!==null?window.moment(n).format("YYYY-MM-DD"):`<i>invalid ${r} date</i>`}function gv(r,e,t){return tN(r,e,t?new Date:void 0)}function Ni(r,e){let t=null,n=Nm.parseDate(r,new Date,{forwardDate:e});return n!==null&&(t=window.moment(n)),t}var dt=class{constructor({rrule:e,baseOnToday:t,referenceDate:n,startDate:i,scheduledDate:s,dueDate:a}){this.rrule=e,this.baseOnToday=t,this.referenceDate=n,this.startDate=i,this.scheduledDate=s,this.dueDate=a}static fromText({recurrenceRuleText:e,startDate:t,scheduledDate:n,dueDate:i}){try{let s=e.match(/^([a-zA-Z0-9, !]+?)( when done)?$/i);if(s==null)return null;let a=s[1].trim(),o=s[2]!==void 0,u=z.parseText(a);if(u!==null){let l=null;i?l=window.moment(i):n?l=window.moment(n):t&&(l=window.moment(t)),!o&&l!==null?u.dtstart=window.moment(l).startOf("day").utc(!0).toDate():u.dtstart=window.moment().startOf("day").utc(!0).toDate();let c=new z(u);return new dt({rrule:c,baseOnToday:o,referenceDate:l,startDate:t,scheduledDate:n,dueDate:i})}}catch(s){s instanceof Error&&console.log(s.message)}return null}toText(){let e=this.rrule.toText();return this.baseOnToday&&(e+=" when done"),e}next(e=window.moment()){let t=this.nextReferenceDate(e);if(t!==null){let n=null,i=null,s=null;if(this.referenceDate){if(this.startDate){let a=window.moment.duration(this.startDate.diff(this.referenceDate));n=window.moment(t),n.add(Math.round(a.asDays()),"days")}if(this.scheduledDate){let a=window.moment.duration(this.scheduledDate.diff(this.referenceDate));i=window.moment(t),i.add(Math.round(a.asDays()),"days")}if(this.dueDate){let a=window.moment.duration(this.dueDate.diff(this.referenceDate));s=window.moment(t),s.add(Math.round(a.asDays()),"days")}}return{startDate:n,scheduledDate:i,dueDate:s}}return null}identicalTo(e){return this.baseOnToday!==e.baseOnToday||Tr(this.startDate,e.startDate)!==0||Tr(this.scheduledDate,e.scheduledDate)!==0||Tr(this.dueDate,e.dueDate)!==0?!1:this.toText()===e.toText()}nextReferenceDate(e){return this.baseOnToday?this.nextReferenceDateFromToday(e).toDate():this.nextReferenceDateFromOriginalReferenceDate().toDate()}nextReferenceDateFromToday(e){let t=new z(be(X({},this.rrule.origOptions),{dtstart:e.startOf("day").utc(!0).toDate()}));return this.nextAfter(e.endOf("day"),t)}nextReferenceDateFromOriginalReferenceDate(){var t;let e=window.moment((t=this.referenceDate)!=null?t:void 0).endOf("day");return this.nextAfter(e,this.rrule)}nextAfter(e,t){e.utc(!0);let n=window.moment(t.after(e.toDate())),i=this.toText(),s=i.match(/every( \d+)? month(s)?(.*)?/);s!==null&&(i.includes(" on ")||(n=dt.nextAfterMonths(e,n,t,s[1])));let a=i.match(/every( \d+)? year(s)?(.*)?/);return a!==null&&(n=dt.nextAfterYears(e,n,t,a[1])),dt.addTimezone(n)}static nextAfterMonths(e,t,n,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));dt.isSkippingTooManyMonths(e,t,s);)t=dt.fromOneDayEarlier(e,n);return t}static isSkippingTooManyMonths(e,t,n){let i=t.month()-e.month();return i+=(t.year()-e.year())*12,i>n
`})),o=o.slice(0,a.autoSuggestMaxItems),o}}function Lm(r,e,t){let n=aN(e.substring(0,t),[["(",")"],["[","]"]])=="("?")":"]",i=r?n+" ":" ",s=r&&e.length>t&&e.charAt(t)===n?1:0;return{postfix:i,insertSkip:s}}function rN(r,e,t,n,i){let s=d=>Object.values(n.prioritySymbols).some(m=>m.length>0&&d.includes(m)),a=[],{postfix:o,insertSkip:u}=Lm(i,r,e);if(r.includes(n.dueDateSymbol)||a.push({displayText:`${n.dueDateSymbol} due date`,appendText:`${n.dueDateSymbol} `}),r.includes(n.startDateSymbol)||a.push({displayText:`${n.startDateSymbol} start date`,appendText:`${n.startDateSymbol} `}),r.includes(n.scheduledDateSymbol)||a.push({displayText:`${n.scheduledDateSymbol} scheduled date`,appendText:`${n.scheduledDateSymbol} `}),!s(r)){let d=n.prioritySymbols,m=["High","Medium","Low","Highest","Lowest"];for(let p=0;p<m.length;p++){let T=m[p],y=d[T];a.push({displayText:i?`${y} priority`:`${y} ${T.toLowerCase()} priority`,appendText:`${y}${o}`,insertSkip:i?u:void 0})}}if(r.includes(n.recurrenceSymbol)||a.push({displayText:`${n.recurrenceSymbol} recurring (repeat)`,appendText:`${n.recurrenceSymbol} `}),!r.includes(n.createdDateSymbol)){let m=Qt.parseDate("today",!0).format(J.dateFormat);a.push({textToMatch:`${n.createdDateSymbol} created`,displayText:`${n.createdDateSymbol} created today (${m})`,appendText:`${n.createdDateSymbol} ${m}`+o,insertSkip:i?u:void 0})}let l=Um(r,/([a-zA-Z'_-]*)/g,e),c=[];if(l&&l.length>0){let d=l[0];if(d.length>=Math.max(1,t.autoSuggestMinMatch)){let m=a.filter(p=>(p.textToMatch||p.displayText).toLowerCase().includes(d.toLowerCase()));for(let p of m){let T=i&&(p.displayText.includes("priority")||p.displayText.includes("created"))?d.length+u:d.length;c.push({suggestionType:"match",displayText:p.displayText,appendText:p.appendText,insertAt:l.index,insertSkip:T})}}}return c.length===0&&t.autoSuggestMinMatch===0?a:c}function nN(r,e,t,n,i,s){let a=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],{postfix:o,insertSkip:u}=Lm(s,r,e),l=[],c=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),d=Um(r,c,e);if(d&&d.length>=2){let m=d[1],p=d[2];if(p.length<t.autoSuggestMinMatch)return[];let T=p&&p.length>1?Qt.parseDate(el(p),!0):null;T&&T.isValid()&&l.push({displayText:`${T.format(J.dateFormat)}`,appendText:`${m} ${T.format(J.dateFormat)} `,insertAt:d.index,insertSkip:d[0].length});let y=1,E=a.filter(R=>p&&p.length>=y&&R.toLowerCase().includes(p.toLowerCase())).slice(0,i);E.length===0&&(E=a.slice(0,i));for(let R of E){let v=`${Qt.parseDate(R,!0).format(J.dateFormat)}`,V=s?d[0].length+u:d[0].length;l.push({suggestionType:"match",displayText:`${R} (${v})`,appendText:`${m} ${v}`+o,insertAt:d.index,insertSkip:V})}}return l}function iN(r,e,t,n,i){var d;let s=["every","every day","every week","every month","every month on the","every year","every week on Sunday","every week on Monday","every week on Tuesday","every week on Wednesday","every week on Thursday","every week on Friday","every week on Saturday"],{postfix:a,insertSkip:o}=Lm(i,r,e),u=[],l=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),c=Um(r,l,e);if(c&&c.length>=2){let m=c[1],p=c[2];if(p.length<t.autoSuggestMinMatch)return[];if(p.length>0){let R=(d=dt.fromText({recurrenceRuleText:p,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:d.toText();if(R){let x=`${m} ${R}`+a,v=i?c[0].length+o:c[0].length;if(u.push({suggestionType:"match",displayText:`\u2705 ${R}`,appendText:x,insertAt:c.index,insertSkip:v}),c[0]==x)return[]}}let T=1,y=t.autoSuggestMaxItems/2,E=s.filter(R=>p&&p.length>=T&&R.toLowerCase().includes(p.toLowerCase())).slice(0,y);E.length===0&&p.trim().length===0&&(E=s.slice(0,y));for(let R of E)u.push({suggestionType:"match",displayText:`${R}`,appendText:`${m} ${R} `,insertAt:c.index,insertSkip:c[0].length})}return u}function Um(r,e,t){let n=r.matchAll(e);for(let i of n)if((i==null?void 0:i.index)&&i.index<=t&&t<=i.index+i[0].length)return i}function sN(r,e){if(e.length===0)return!1;let t=Object.fromEntries(e.map(([i,s])=>[i,0])),n=Object.fromEntries(e.map(([i,s])=>[s,i]));for(let i of
2024-03-10 21:51:29 +00:00
\`\`\`${n}
flowchart LR
classDef TODO stroke:#f33,stroke-width:3px;
classDef DONE stroke:#0c0,stroke-width:3px;
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
classDef CANCELLED stroke:#ddd,stroke-width:3px;
classDef NON_TASK stroke:#99e,stroke-width:3px;
${i.join(`
`)}
2024-05-04 11:47:19 +00:00
${s.join(`
`)}
2024-03-10 21:51:29 +00:00
linkStyle default stroke:gray
\`\`\`
2024-05-04 11:47:19 +00:00
`}addEdgeIfNotToInternal(e,t,n,i,s){let a=e.findIndex(l=>l.symbol===t.symbol),o=a!==-1,u=t.type!=="EMPTY";if(o&&u){let l;s?l='-. "\u{1F501}" .-> ':l=" --> ";let c=`${i+1}${l}${a+1}`;n.push(c)}}getMermaidNodeLabel(e,t){let n=wv(e.name),i=e.type;if(t){let s=fl(e.symbol),a=fl(e.nextStatusSymbol),o=`[${s}] -> [${a}]`,u=`'${n}'`,l=`(${i})`;return`["${u}<br>${o}<br>${l}"]:::${i}`}else return`["${n}"]:::${i}`}};var kv=require("obsidian");var tn=class{constructor(e,t){this.name=e,this.sortOrder=t}get groupText(){return this.name!==""?`%%${this.sortOrder}%% ${this.name}`:""}};var Ye=class{constructor(e){this._date=null;this._date=e}get moment(){return this._date}formatAsDate(e=""){return this.format(J.dateFormat,e)}formatAsDateAndTime(e=""){return this.format(J.dateTimeFormat,e)}format(e,t=""){return this._date?this._date.format(e):t}toISOString(e){return this._date?this._date.toISOString(e):""}get category(){let e=window.moment(),t=this.moment;return t?t.isBefore(e,"day")?new tn("Overdue",1):t.isSame(e,"day")?new tn("Today",2):t.isValid()?new tn("Future",3):new tn("Invalid date",0):new tn("Undated",4)}get fromNow(){let e=this.moment;if(!e)return new tn("",0);let t=this.fromNowOrder(e);return new tn(e.fromNow(),t)}fromNowOrder(e){if(!e.isValid())return 0;let t=window.moment(),n=e.isSameOrBefore(t,"day"),i=this.fromNowStartDateOfGroup(e,n,t);return Number((n?1:3)+i.format("YYYYMMDD"))}fromNowStartDateOfGroup(e,t,n){let i=e.fromNow(!0).split(" "),s,a=Number(i[0]);isNaN(a)?s=1:s=a;let o=i[1];return t?n.subtract(s,o):n.add(s,o)}postpone(e="days",t=1){if(!this._date)throw new kv.Notice("Cannot postpone a null date");let n=window.moment().startOf("day");return this._date.isSameOrAfter(n,"day")?this._date.clone().add(t,e):n.add(t,e)}};var Mn=class{static priorityNameUsingNone(e){let t="ERROR";switch(e){case"1":t="High";break;case"0":t="Highest";break;case"2":t="Medium";break;case"3":t="None";break;case"4":t="Low";break;case"5":t="Lowest";break}return t}static priorityNameUsingNormal(e){return Mn.priorityNameUsingNone(e).replace("None","Normal")}};var lN=require("obsidian"),Dv=Ta(Ov());var Ym=class extends Dv.EventEmitter2{constructor(){super(...arguments);this.options={minLevels:{"":"info",tasks:"info"}};this.consoleLoggerRegistered=!1;this.arrAvg=t=>t.reduce((n,i)=>n+i,0)/t.length}configure(t){return this.options=Object.assign({},this.options,t),this}getLogger(t){let n="none",i="";for(let s in this.options.minLevels)t.startsWith(s)&&s.length>=i.length&&(n=this.options.minLevels[s],i=s);return new Bm(this,t,n)}onLogEntry(t){return this.on("log",t),this}registerConsoleLogger(){return this.consoleLoggerRegistered?this:(this.onLogEntry(t=>{let n=`[${window.moment().format("YYYY-MM-DD-HH:mm:ss.SSS")}][${t.level}][${t.module}]`;switch(t.traceId&&(n+=`[${t.traceId}]`),n+=` ${t.message}`,t.objects===void 0&&(t.objects=""),t.level){case"trace":console.trace(n,t.objects);break;case"debug":console.debug(n,t.objects);break;case"info":console.info(n,t.objects);break;case"warn":console.warn(n,t.objects);break;case"error":console.error(n,t.objects);break;default:console.log(`{${t.level}} ${n}`,t.objects)}}),this.consoleLoggerRegistered=!0,this)}},Nt=new Ym,Bm=class{constructor(e,t,n){this.levels={trace:1,debug:2,info:3,warn:4,error:5};this.logManager=e,this.module=t,this.minLevel=this.levelToInt(n)}levelToInt(e){return e.toLowerCase()in this.levels?this.levels[e.toLowerCase()]:99}log(e,t,n){if(this.levelToInt(e)<this.minLevel)return;let s={level:e,module:this.module,message:t,objects:n,traceId:void 0};this.logManager.emit("log",s)}trace(e,t){this.log("trace",e,t)}debug(e,t){this.log("debug",e,t)}info(e,t){this.log("info",e,t)}warn(e,t){this.log("warn",e,t)}error(e,t){this.log("error",e,t)}logWithId(e,t,n,i){if(this.levelToInt(e)<this.minLevel)return;let a={level:e,module:this.module,message:n,objects:i,traceId:t};this.logManager.emit("log",a)}traceWithId(e,t,n){this.logWithId("trace",e,t,n)}debugWithId(e,t,n){this.logWithId("debug",e,t,n)}infoWithId(e,t,n){this.logWithId("info",e,t,n)}warnWithId(e,t,n){this.logWithId("warn",e,t,n)}errorWithId(e,t,n)
`),u=o.length,l=new Co(()=>kt.fromPath(i.path)),c=null,d=0;for(let m of t)if(m.task!==void 0){let p=m.position.start.line;if(p>=u)return this.logger.debug(`${i.path} Obsidian gave us a line number ${p} past the end of the file. ${u}.`),a;if((c===null||c.position.end.line<p)&&(c=Ui.getSection(p,n.sections),d=0),c===null)continue;let T=o[p];if(T===void 0){this.logger.debug(`${i.path}: line ${p} - ignoring 'undefined' line.`);continue}let y;try{y=oe.fromLine({line:T,taskLocation:new bt(s,p,c.position.start.line,d,Ui.getPrecedingHeader(p,n.headings)),fallbackDate:l.value})}catch(E){this.reportTaskParsingErrorToUser(E,i,m,T);continue}y!==null&&(d++,a.push(y))}return a}reportTaskParsingErrorToUser(e,t,n,i){let s=`There was an error reading one of the tasks in this vault.
2023-03-29 16:30:35 +00:00
The following task has been ignored, to prevent Tasks queries getting stuck with 'Loading Tasks ...'
Error: ${e}
File: ${t.path}
Line number: ${n.position.start.line}
2024-05-04 11:47:19 +00:00
Task line: ${i}
2023-03-29 16:30:35 +00:00
Please create a bug report for this message at
https://github.com/obsidian-tasks-group/obsidian-tasks/issues/new/choose
to help us find and fix the underlying issue.
Include:
- either a screenshot of the error popup, or copy the text from the console, if on a desktop machine.
- the output from running the Obsidian command 'Show debug info'
The error popup will only be shown when Tasks is starting up, but if the error persists,
it will be shown in the console every time this file is edited during the Obsidian
session.
2024-05-04 11:47:19 +00:00
`;this.logger.error(s),e instanceof Error&&this.logger.error(e.stack?e.stack:"Cannot determine stack"),this.state==="Initializing"&&new Ms.Notice(s,1e4)}static getSection(e,t){if(t===void 0)return null;for(let n of t)if(n.position.start.line<=e&&n.position.end.line>=e)return n;return null}static getPrecedingHeader(e,t){if(t===void 0)return null;let n=null;for(let i of t){if(i.position.start.line>e)return n;n=i.heading}return n}};var hh=require("obsidian");var Sw=require("obsidian");function Et(){}function Qm(r){return r()}function xv(){return Object.create(null)}function _r(r){r.forEach(Qm)}function yl(r){return typeof r=="function"}function Is(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function Rv(r){return Object.keys(r).length===0}var Mv=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,Po=class{constructor(e){this.options=e,this._listeners="WeakMap"in Mv?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var n;for(let i of t)Po.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};Po.entries="WeakMap"in Mv?new WeakMap:void 0;var Cv=!1;function cN(){Cv=!0}function dN(){Cv=!1}function A(r,e){r.appendChild(e)}function Ie(r,e,t){r.insertBefore(e,t||null)}function Ce(r){r.parentNode&&r.parentNode.removeChild(r)}function Fs(r,e){for(let t=0;t<r.length;t+=1)r[t]&&r[t].d(e)}function K(r){return document.createElement(r)}function fN(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function Fe(r){return document.createTextNode(r)}function re(){return Fe(" ")}function Re(r,e,t,n){return r.addEventListener(e,t,n),()=>r.removeEventListener(e,t,n)}function Av(r){return function(e){return e.preventDefault(),r.call(this,e)}}function F(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function Pv(r){let e;return{p(...t){e=t,e.forEach(n=>r.push(n))},r(){e.forEach(t=>r.splice(r.indexOf(t),1))}}}function pN(r){return Array.from(r.childNodes)}function Nr(r,e){e=""+e,r.data!==e&&(r.data=e)}function Ir(r,e){r.value=e==null?"":e}function Xm(r,e,t){for(let n=0;n<r.options.length;n+=1){let i=r.options[n];if(i.__value===e){i.selected=!0;return}}(!t||e!==void 0)&&(r.selectedIndex=-1)}function Nv(r){let e=r.querySelector(":checked");return e&&e.__value}var hl;function mN(){if(hl===void 0){hl=!1;try{typeof window!="undefined"&&window.parent&&window.parent.document}catch(r){hl=!0}}return hl}function Iv(r,e){getComputedStyle(r).position==="static"&&(r.style.position="relative");let n=K("iframe");n.setAttribute("style","display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;"),n.setAttribute("aria-hidden","true"),n.tabIndex=-1;let i=mN(),s;return i?(n.src="data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}<\/script>",s=Re(window,"message",a=>{a.source===n.contentWindow&&e()})):(n.src="about:blank",n.onload=()=>{s=Re(n.contentWindow,"resize",e),e()}),A(r,n),()=>{(i||s&&n.contentWindow)&&s(),Ce(n)}}function Fr(r,e,t){r.classList[t?"add":"remove"](e)}var Ns=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,n=null){this.e||(this.is_svg?this.e=fN(t.nodeName):this.e=K(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(n)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t<this.n.length;t+=1)Ie(this.t,this.n[t],e)}p(e){this.d(),this.h(e),this.i(this.a)}d(){this.n.forEach(Ce)}};var No;function Ao(r){No=r}function hN(){if(!No)throw new Error("Function called outside component initialization");return No}function Zm(r){hN().$$.on_mount.push(r)}var As=[];var nt=[],Ps=[],zm=[],gN=Promise.resolve(),Km=!1;function yN(
2024-03-10 21:51:29 +00:00
The task line not updated is:
${r.originalMarkdown}
In this markdown file:
"${r.taskLocation.path}"
Note: further clicks on this checkbox will usually now be ignored until the file is opened (or certain, specific edits are made - it's complicated).
Recommendations:
1. Close all panes that have the above file open, and then re-open the file.
2. Check for exactly identical copies of the task line, in this file, and see if you can make them different.
2024-05-04 11:47:19 +00:00
`;bl(c);return}let l=Math.min(Math.pow(10,s),100);o.debug(`timeout = ${l}`),setTimeout(()=>L(void 0,null,function*(){yield Yv({originalTask:r,newTasks:e,vault:t,metadataCache:n,workspace:i,previousTries:s+1})}),l)});try{let[l,c,d]=yield Bv(r,t),m=[...d.slice(0,l),...e.map(p=>p.toFileLineString()),...d.slice(l+1)];yield t.modify(c,m.join(`
`))}catch(l){if(l instanceof ii){l.message&&Gv(l.message),yield u();return}else if(l instanceof Tl){yield u();return}else l instanceof Error&&bl(l.message)}});function Bv(r,e){return L(this,null,function*(){if(Io===void 0)throw new ii;let t=e.getAbstractFileByPath(r.path);if(!(t instanceof Fo.TFile))throw new ii(`Tasks: No file found for task ${r.description}. Retrying ...`);if(!kN.includes(t.extension))throw new Error(`Tasks: Does not support files with the ${t.extension} file extension.`);let n=Io.getFileCache(t);if(n==null||n===null)throw new ii(`Tasks: No file cache found for file ${t.path}. Retrying ...`);let i=n.listItems;if(i===void 0||i.length===0)throw new ii(`Tasks: No list items found in file cache of ${t.path}. Retrying ...`);let a=(yield e.read(t)).split(`
`),o=SN(r,a,i,EN);if(o===void 0)throw new Tl;return[o,t,a]})}function nh(r,e){return L(this,null,function*(){try{let[t,n,i]=yield Bv(r,e);return[t,n]}catch(t){t instanceof ii?t.message&&Gv(t.message):t instanceof Error&&bl(t.message)}})}function Hv(r,e){return r<e.length}function SN(r,e,t,n){let i=ON(r,e);return i!==void 0||(i=DN(r,e),i!==void 0)?i:xN(r,e,t,n)}function ON(r,e){let t=r.taskLocation.lineNumber;if(Hv(t,e)&&e[t]===r.originalMarkdown)return _l().debug(`Found original markdown at original line number ${t}`),t}function DN(r,e){let t=[];for(let n=0;n<e.length;n++)e[n]===r.originalMarkdown&&t.push(n);if(t.length===1)return t[0]}function xN(r,e,t,n){let i,s=0;for(let a of t){let o=a.position.start.line;if(!Hv(o,e))return;if(o<r.taskLocation.sectionStart||a.task===void 0)continue;let u=e[o];if(ye.getInstance().includedIn(u)){if(s===r.taskLocation.sectionIndex){if(u===r.originalMarkdown)i=o;else{n(`Tasks: Unable to find task in file ${r.taskLocation.path}.
2024-03-10 21:51:29 +00:00
Expected task:
${r.originalMarkdown}
Found task:
2024-05-04 11:47:19 +00:00
${u}`);return}break}s++}}return i}function RN(r){let e,t,n,i,s,a,o,u;return{c(){e=K("input"),t=re(),n=K("code"),i=Fe(r[3]),s=re(),a=new Ns(!1),F(e,"id",r[2]),F(e,"type","text"),F(e,"class","input"),F(e,"placeholder",MN),F(e,"accesskey",r[4]),Fr(e,"tasks-modal-error",!r[1]),a.a=null,F(n,"class","results")},m(l,c){Ie(l,e,c),Ir(e,r[0]),Ie(l,t,c),Ie(l,n,c),A(n,i),A(n,s),a.m(r[5],n),o||(u=Re(e,"input",r[7]),o=!0)},p(l,[c]){c&4&&F(e,"id",l[2]),c&16&&F(e,"accesskey",l[4]),c&1&&e.value!==l[0]&&Ir(e,l[0]),c&2&&Fr(e,"tasks-modal-error",!l[1]),c&8&&Nr(i,l[3]),c&32&&a.p(l[5])},i:Et,o:Et,d(l){l&&Ce(e),l&&Ce(t),l&&Ce(n),o=!1,u()}}}var MN="Try 'Mon' or 'tm' then space";function CN(r,e,t){let{id:n}=e,{dateSymbol:i}=e,{date:s}=e,{isDateValid:a}=e,{forwardOnly:o}=e,{accesskey:u}=e,l;function c(){s=this.value,t(0,s),t(2,n),t(6,o),t(5,l)}return r.$$set=d=>{"id"in d&&t(2,n=d.id),"dateSymbol"in d&&t(3,i=d.dateSymbol),"date"in d&&t(0,s=d.date),"isDateValid"in d&&t(1,a=d.isDateValid),"forwardOnly"in d&&t(6,o=d.forwardOnly),"accesskey"in d&&t(4,u=d.accesskey)},r.$$.update=()=>{if(r.$$.dirty&101){e:t(0,s=el(s)),t(5,l=gv(n,s,o)),t(1,a=!l.includes("invalid"))}},[s,a,n,i,u,l,o,c]}var ih=class extends ni{constructor(e){super(),Ls(this,e,CN,RN,Is,{id:2,dateSymbol:3,date:0,isDateValid:1,forwardOnly:6,accesskey:4})}},$i=ih;var ji=Math.min,$t=Math.max,Uo=Math.round;var Pn=r=>({x:r,y:r}),AN={left:"right",right:"left",bottom:"top",top:"bottom"},PN={start:"end",end:"start"};function sh(r,e,t){return $t(r,ji(e,t))}function Us(r,e){return typeof r=="function"?r(e):r}function Nn(r){return r.split("-")[0]}function qs(r){return r.split("-")[1]}function ah(r){return r==="x"?"y":"x"}function oh(r){return r==="y"?"height":"width"}function Ws(r){return["top","bottom"].includes(Nn(r))?"y":"x"}function uh(r){return ah(Ws(r))}function Vv(r,e,t){t===void 0&&(t=!1);let n=qs(r),i=uh(r),s=oh(i),a=i==="x"?n===(t?"end":"start")?"right":"left":n==="start"?"bottom":"top";return e.reference[s]>e.floating[s]&&(a=Lo(a)),[a,Lo(a)]}function zv(r){let e=Lo(r);return[vl(r),e,vl(e)]}function vl(r){return r.replace(/start|end/g,e=>PN[e])}function NN(r,e,t){let n=["left","right"],i=["right","left"],s=["top","bottom"],a=["bottom","top"];switch(r){case"top":case"bottom":return t?e?i:n:e?n:i;case"left":case"right":return e?s:a;default:return[]}}function Kv(r,e,t,n){let i=qs(r),s=NN(Nn(r),t==="start",n);return i&&(s=s.map(a=>a+"-"+i),e&&(s=s.concat(s.map(vl)))),s}function Lo(r){return r.replace(/left|right|bottom|top/g,e=>AN[e])}function IN(r){return X({top:0,right:0,bottom:0,left:0},r)}function Qv(r){return typeof r!="number"?IN(r):{top:r,right:r,bottom:r,left:r}}function Gi(r){return be(X({},r),{top:r.y,left:r.x,right:r.x+r.width,bottom:r.y+r.height})}function Xv(r,e,t){let{reference:n,floating:i}=r,s=Ws(e),a=uh(e),o=oh(a),u=Nn(e),l=s==="y",c=n.x+n.width/2-i.width/2,d=n.y+n.height/2-i.height/2,m=n[o]/2-i[o]/2,p;switch(u){case"top":p={x:c,y:n.y-i.height};break;case"bottom":p={x:c,y:n.y+n.height};break;case"right":p={x:n.x+n.width,y:d};break;case"left":p={x:n.x-i.width,y:d};break;default:p={x:n.x,y:n.y}}switch(qs(e)){case"start":p[a]-=m*(t&&l?-1:1);break;case"end":p[a]+=m*(t&&l?-1:1);break}return p}var Zv=(r,e,t)=>L(void 0,null,function*(){let{placement:n="bottom",strategy:i="absolute",middleware:s=[],platform:a}=t,o=s.filter(Boolean),u=yield a.isRTL==null?void 0:a.isRTL(e),l=yield a.getElementRects({reference:r,floating:e,strategy:i}),{x:c,y:d}=Xv(l,n,u),m=n,p={},T=0;for(let y=0;y<o.length;y++){let{name:E,fn:R}=o[y],{x,y:v,data:V,reset:j}=yield R({x:c,y:d,initialPlacement:n,placement:m,strategy:i,middlewareData:p,rects:l,platform:a,elements:{reference:r,floating:e}});if(c=x!=null?x:c,d=v!=null?v:d,p=be(X({},p),{[E]:X(X({},p[E]),V)}),j&&T<=50){T++,typeof j=="object"&&(j.placement&&(m=j.placement),j.rects&&(l=j.rects===!0?yield a.getElementRects({reference:r,floating:e,strategy:i}):j.rects),{x:c,y:d}=Xv(l,m,u)),y=-1;continue}}return{x:c,y:d,placement:m,strategy:i,middlewareData:p}});function wl(r,e){return L(this,null,function*(){var t;e===void 0&&(e={});let{x:n,y:i,platform:s,rects:a,eleme
<span class="accesskey-first">future</span> dates:`,jn=re(),Tt=K("input"),Gn=re(),Ft=K("hr"),Qe=re(),gi=K("div"),Bt.c(),Jo=re(),eu=K("hr"),tu=re(),$=K("div"),Xe=K("label"),Xe.innerHTML='Stat<span class="accesskey">u</span>s',Ze=re(),Ue=K("select");for(let C=0;C<Rt.length;C+=1)Rt[C].c();yi=re(),Be=K("div"),Yn=K("label"),Yn.textContent="Created",Br=re(),An(lr.$$.fragment),ca=re(),Bn=K("label"),Bn.innerHTML='Done (<span class="accesskey">x</span>)',ru=re(),An(Sr.$$.fragment),Bh=re(),nu=K("label"),nu.innerHTML='Cancelled (<span class="accesskey">-</span>)',Hh=re(),An(pn.$$.fragment),Vh=re(),ns=K("div"),bi=K("button"),zh=Fe("Apply"),Kh=re(),da=K("button"),da.textContent="Cancel",F(i,"for","description"),F(a,"id","description"),F(a,"class","tasks-modal-description"),F(a,"placeholder","Take out the trash"),F(a,"accesskey",o=r[17]("t")),F(n,"class","tasks-modal-section"),F(c,"for",m="priority-"+r[3].priority),F(l,"class","tasks-modal-section tasks-modal-priorities"),F(E,"for","recurrence"),F(E,"class","accesskey-first"),F(x,"id","recurrence"),F(x,"type","text"),F(x,"class","input"),F(x,"placeholder","Try 'every day when done'"),F(x,"accesskey",v=r[17]("r")),Fr(x,"tasks-modal-error",!r[10]),W.a=null,F(j,"class","results"),F(y,"class","tasks-modal-section tasks-modal-dates"),F(O,"for","due"),F(O,"class","accesskey-first"),F(g,"for","scheduled"),F(g,"class","accesskey-first"),F(_,"for","start"),F(qe,"for","forwardOnly"),F(Tt,"id","forwardOnly"),F(Tt,"type","checkbox"),F(Tt,"class","input task-list-item-checkbox tasks-modal-checkbox"),F(Tt,"accesskey",ur=r[17]("f")),F(Ee,"class","future-dates-only"),F(N,"class","tasks-modal-section tasks-modal-dates"),F(gi,"class","tasks-modal-section tasks-modal-dates"),F(Xe,"for","status"),F(Ue,"id","status-type"),F(Ue,"class","dropdown"),F(Ue,"accesskey",Yr=r[17]("u")),r[12]===void 0&&Wi(()=>r[47].call(Ue)),F($,"class","tasks-modal-section tasks-modal-dates"),F(Yn,"for","created"),F(Yn,"class","accesskey-first"),F(Bn,"for","done"),F(nu,"for","cancelled"),F(Be,"class","tasks-modal-section tasks-modal-dates"),bi.disabled=iu=!r[15],F(bi,"type","submit"),F(bi,"class","mod-cta"),F(da,"type","button"),F(ns,"class","tasks-modal-section tasks-modal-buttons"),Fr(t,"with-accesskeys",r[11]),F(e,"class","tasks-modal")},m(C,ee){Ie(C,e,ee),A(e,t),A(t,n),A(n,i),A(n,s),A(n,a),Ir(a,r[3].description),r[36](a),A(t,u),A(t,l),A(l,c),A(c,d),A(l,p);for(let Mt=0;Mt<xt.length;Mt+=1)xt[Mt]&&xt[Mt].m(l,null);A(t,T),A(t,y),A(y,E),A(y,R),A(y,x),Ir(x,r[3].recurrenceRule),A(y,V),A(y,j),A(j,te),A(j,Y),W.m(r[14],j),A(t,de),A(t,Te),A(t,G),A(t,N),A(N,O),A(N,B),rn(U,N,null),A(N,h),A(N,g),A(N,b),rn(w,N,null),A(N,P),A(N,_),A(N,D),rn(I,N,null),A(N,le),A(N,Ee),A(Ee,qe),A(Ee,jn),A(Ee,Tt),Tt.checked=r[3].forwardOnly,A(t,Gn),A(t,Ft),A(t,Qe),A(t,gi),Hn[Lt].m(gi,null),A(t,Jo),A(t,eu),A(t,tu),A(t,$),A($,Xe),A($,Ze),A($,Ue);for(let Mt=0;Mt<Rt.length;Mt+=1)Rt[Mt]&&Rt[Mt].m(Ue,null);Xm(Ue,r[12],!0),A(t,yi),A(t,Be),A(Be,Yn),A(Be,Br),rn(lr,Be,null),A(Be,ca),A(Be,Bn),A(Be,ru),rn(Sr,Be,null),A(Be,Bh),A(Be,nu),A(Be,Hh),rn(pn,Be,null),A(t,Vh),A(t,ns),A(ns,bi),A(bi,zh),A(ns,Kh),A(ns,da),Ht=!0,Ec||(Qh=[Re(a,"input",r[35]),Re(a,"keydown",r[29]),Re(a,"paste",r[30]),Re(a,"drop",r[30]),Re(l,"keyup",r[27]),Re(x,"input",r[39]),Re(Tt,"change",r[46]),Re(Ue,"change",r[47]),Re(Ue,"change",r[26]),Re(da,"click",r[28]),Re(t,"submit",Av(r[31]))],Ec=!0)},p(C,ee){if((!Ht||ee[0]&131072&&o!==(o=C[17]("t")))&&F(a,"accesskey",o),ee[0]&8&&Ir(a,C[3].description),(!Ht||ee[0]&8&&m!==(m="priority-"+C[3].priority))&&F(c,"for",m),ee[0]&33685512){is=C[25];let Ne;for(Ne=0;Ne<is.length;Ne+=1){let ya=vw(C,is,Ne);xt[Ne]?xt[Ne].p(ya,ee):(xt[Ne]=ww(ya),xt[Ne].c(),xt[Ne].m(l,null))}for(;Ne<xt.length;Ne+=1)xt[Ne].d(1);xt.length=is.length}(!Ht||ee[0]&131072&&v!==(v=C[17]("r")))&&F(x,"accesskey",v),ee[0]&8&&x.value!==C[3].recurrenceRule&&Ir(x,C[3].recurrenceRule),(!Ht||ee[0]&1024)&&Fr(x,"tasks-modal-error",!C[10]),(!Ht||ee[0]&16384)&&W.p(C[14]);let Mt={};ee[0]&8&&(Mt.forwardOnly=C[3].forwardOnly),ee[0]&131072&&(Mt.accesskey=C[17]("d")),!Q&&ee[0]&8&&(Q=!0,Mt.date=C[3].d
`);e.setLine(o,T)};new si({app:n,task:l,onSubmit:c,allTasks:i}).open()};var gh=require("obsidian");var Dw=(r,e,t)=>{var u;if(r)return t instanceof gh.MarkdownView;if(!(t instanceof gh.MarkdownView))return;let n=(u=t.file)==null?void 0:u.path;if(n===void 0)return;let i=e.getCursor(),s=i.line,a=e.getLine(s),o=uI(a,n);e.setLine(s,o.text),e.setCursor(lI(i,o))},uI=(r,e)=>{let t=oe.fromLine({line:r,taskLocation:bt.fromUnknownPosition(new Je(e)),fallbackDate:null});if(t!==null){let n=t.toggleWithRecurrenceInUsersOrder().map(i=>i.toFileLineString());return{text:n.join(`
`),moveTo:{line:n.length-1}}}else{let n=r.match(J.taskRegex);if(n!==null){let i=n[3],a=De.getInstance().bySymbol(i).nextStatusSymbol;return{text:r.replace(J.taskRegex,`$1- [${a}] $4`)}}else if(J.listItemRegex.test(r)){let i=r.replace(J.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=r.replace(J.indentationRegex,"$1- ");return{text:i,moveTo:{ch:i.length}}}}},lI=(r,e)=>{var s;let t={line:0,ch:r.ch},n=X(X({},t),(s=e.moveTo)!=null?s:{}),i=e.text.split(`
`)[n.line].length;return{line:r.line+n.line,ch:Math.min(n.ch,i)}};var Rl=class{get app(){return this.plugin.app}constructor({plugin:e}){this.plugin=e,e.addCommand({id:"edit-task",name:"Create or edit task",icon:"pencil",editorCheckCallback:(t,n,i)=>Ow(t,n,i,this.app,this.plugin.getTasks())}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:Dw})}};var ai=class{constructor(){this.hidePostponeButton=!1;this.hideTaskCount=!1;this.hideBacklinks=!1;this.hideEditButton=!1;this.hideUrgency=!0;this.shortMode=!1;this.explainQuery=!1}};function Hi(r,e){let t=`Error: ${r}.
2024-03-10 21:51:29 +00:00
The error message was:
2024-05-04 11:47:19 +00:00
`,n="";return e instanceof Error?n+=e:n+="Unknown error",`${t}"${n}"`}var cI=Object.prototype.toString,Ys=Array.isArray||function(e){return cI.call(e)==="[object Array]"};function bh(r){return typeof r=="function"}function dI(r){return Ys(r)?"array":typeof r}function yh(r){return r.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function xw(r,e){return r!=null&&typeof r=="object"&&e in r}function fI(r,e){return r!=null&&typeof r!="object"&&r.hasOwnProperty&&r.hasOwnProperty(e)}var pI=RegExp.prototype.test;function mI(r,e){return pI.call(r,e)}var hI=/\S/;function gI(r){return!mI(hI,r)}var yI={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function bI(r){return String(r).replace(/[&<>"'`=\/]/g,function(t){return yI[t]})}var TI=/\s*/,_I=/\s+/,Rw=/\s*=/,vI=/\s*\}/,wI=/#|\^|\/|>|\{|&|=|!/;function kI(r,e){if(!r)return[];var t=!1,n=[],i=[],s=[],a=!1,o=!1,u="",l=0;function c(){if(a&&!o)for(;s.length;)delete i[s.pop()];else s=[];a=!1,o=!1}var d,m,p;function T(W){if(typeof W=="string"&&(W=W.split(_I,2)),!Ys(W)||W.length!==2)throw new Error("Invalid tags: "+W);d=new RegExp(yh(W[0])+"\\s*"),m=new RegExp("\\s*"+yh(W[1])),p=new RegExp("\\s*"+yh("}"+W[1]))}T(e||wr.tags);for(var y=new Go(r),E,R,x,v,V,j;!y.eos();){if(E=y.pos,x=y.scanUntil(d),x)for(var te=0,Y=x.length;te<Y;++te)v=x.charAt(te),gI(v)?(s.push(i.length),u+=v):(o=!0,t=!0,u+=" "),i.push(["text",v,E,E+1]),E+=1,v===`
`&&(c(),u="",l=0,t=!1);if(!y.scan(d))break;if(a=!0,R=y.scan(wI)||"name",y.scan(TI),R==="="?(x=y.scanUntil(Rw),y.scan(Rw),y.scanUntil(m)):R==="{"?(x=y.scanUntil(p),y.scan(vI),y.scanUntil(m),R="&"):x=y.scanUntil(m),!y.scan(m))throw new Error("Unclosed tag at "+y.pos);if(R==">"?V=[R,x,E,y.pos,u,l,t]:V=[R,x,E,y.pos],l++,i.push(V),R==="#"||R==="^")n.push(V);else if(R==="/"){if(j=n.pop(),!j)throw new Error('Unopened section "'+x+'" at '+E);if(j[1]!==x)throw new Error('Unclosed section "'+j[1]+'" at '+E)}else R==="name"||R==="{"||R==="&"?o=!0:R==="="&&T(x)}if(c(),j=n.pop(),j)throw new Error('Unclosed section "'+j[1]+'" at '+y.pos);return SI(EI(i))}function EI(r){for(var e=[],t,n,i=0,s=r.length;i<s;++i)t=r[i],t&&(t[0]==="text"&&n&&n[0]==="text"?(n[1]+=t[1],n[3]=t[3]):(e.push(t),n=t));return e}function SI(r){for(var e=[],t=e,n=[],i,s,a=0,o=r.length;a<o;++a)switch(i=r[a],i[0]){case"#":case"^":t.push(i),n.push(i),t=i[4]=[];break;case"/":s=n.pop(),s[5]=i[2],t=n.length>0?n[n.length-1][4]:e;break;default:t.push(i)}return e}function Go(r){this.string=r,this.tail=r,this.pos=0}Go.prototype.eos=function(){return this.tail===""};Go.prototype.scan=function(e){var t=this.tail.match(e);if(!t||t.index!==0)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n};Go.prototype.scanUntil=function(e){var t=this.tail.search(e),n;switch(t){case-1:n=this.tail,this.tail="";break;case 0:n="";break;default:n=this.tail.substring(0,t),this.tail=this.tail.substring(t)}return this.pos+=n.length,n};function Gs(r,e){this.view=r,this.cache={".":this.view},this.parent=e}Gs.prototype.push=function(e){return new Gs(e,this)};Gs.prototype.lookup=function(e){var t=this.cache,n;if(t.hasOwnProperty(e))n=t[e];else{for(var i=this,s,a,o,u=!1;i;){if(e.indexOf(".")>0)for(s=i.view,a=e.split("."),o=0;s!=null&&o<a.length;)o===a.length-1&&(u=xw(s,a[o])||fI(s,a[o])),s=s[a[o++]];else s=i.view[e],u=xw(i.view,e);if(u){n=s;break}i=i.parent}t[e]=n}return bh(n)&&(n=n.call(this.view)),n};function It(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}It.prototype.clearCache=function(){typeof this.templateCache!="undefined"&&this.templateCache.clear()};It.prototype.parse=function(e,t){var n=this.templateCache,i=e+":"+(t||wr.tags).join(":"),s=typeof n!="undefined",a=s?n.get(i):void 0;return a==null&&(a=kI(e,t),s&&n.set(i,a)),a};It.prototype.render=function(e,t,n,i){var s=this.getConfigTags(i),a=this.parse(e,s),o=t instanceof Gs?t:new Gs(t,void 0);return this.renderTokens(a,o,n,e,i)};It.prototype.renderTokens=function(e,t,n,i,s){for(var a="",o,u,l,c=0,d=e.length;c<d;++c)l=void 0,o=e[c],u=o[0],u==="#"?l=this.renderSection(o,t,n,i,s):u==="^"?l=this.renderInverted(o,t,n,i,s):u===">"?l=this.renderPartial(o,t,n,s):u==="&"?l=this.unescapedValue(o,t):u==="name"?l=this.escapedValue(o,t,s):u==="text"&&(l=this.rawValue(o)),l!==void 0&&(a+=l);return a};It.prototype.renderSection=function(e,t,n,i,s){var a=this,o="",u=t.lookup(e[1]);function l(m){return a.render(m,t,n,s)}if(!!u){if(Ys(u))for(var c=0,d=u.length;c<d;++c)o+=this.renderTokens(e[4],t.push(u[c]),n,i,s);else if(typeof u=="object"||typeof u=="string"||typeof u=="number")o+=this.renderTokens(e[4],t.push(u),n,i,s);else if(bh(u)){if(typeof i!="string")throw new Error("Cannot use higher-order sections without the original template");u=u.call(t.view,i.slice(e[3],e[5]),l),u!=null&&(o+=u)}else o+=this.renderTokens(e[4],t,n,i,s);return o}};It.prototype.renderInverted=function(e,t,n,i,s){var a=t.lookup(e[1]);if(!a||Ys(a)&&a.length===0)return this.renderTokens(e[4],t,n,i,s)};It.prototype.indentPartial=function(e,t,n){for(var i=t.replace(/[^ \t]/g,""),s=e.split(`
`),a=0;a<s.length;a++)s[a].length&&(a>0||!n)&&(s[a]=i+s[a]);return s.join(`
`)};It.prototype.renderPartial=function(e,t,n,i){if(!!n){var s=this.getConfigTags(i),a=bh(n)?n(e[1]):n[e[1]];if(a!=null){var o=e[6],u=e[5],l=e[4],c=a;u==0&&l&&(c=this.indentPartial(a,l,o));var d=this.parse(c,s);return this.renderTokens(d,t,n,c,i)}}};It.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(n!=null)return n};It.prototype.escapedValue=function(e,t,n){var i=this.getConfigEscape(n)||wr.escape,s=t.lookup(e[1]);if(s!=null)return typeof s=="number"&&i===wr.escape?String(s):i(s)};It.prototype.rawValue=function(e){return e[1]};It.prototype.getConfigTags=function(e){return Ys(e)?e:e&&typeof e=="object"?e.tags:void 0};It.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!Ys(e))return e.escape};var wr={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(r){jo.templateCache=r},get templateCache(){return jo.templateCache}},jo=new It;wr.clearCache=function(){return jo.clearCache()};wr.parse=function(e,t){return jo.parse(e,t)};wr.render=function(e,t,n,i){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+dI(e)+'" was given as the first argument for mustache#render(template, view, partials)');return jo.render(e,t,n,i)};wr.escape=bI;wr.Scanner=Go;wr.Context=Gs;wr.Writer=It;var Th=wr;var Nw=Ta(Pw());function Iw(r,e){Th.escape=function(t){return t};try{return Th.render(r,(0,Nw.default)(e))}catch(t){let n="";throw t instanceof Error?n=`There was an error expanding one or more placeholders.
2023-09-25 22:44:52 +00:00
The error message was:
${t.message.replace(/ > /g,".").replace("Missing Mustache data property","Unknown property")}`:n="Unknown error expanding placeholders.",n+=`
The problem is in:
2024-05-04 11:47:19 +00:00
${r}`,Error(n)}}function Fw(r){return vh(r,[])}function vh(r,e){return{query:{file:new Je(r),allTasks:e}}}var Bs=class{constructor(e=""){this.indentation=e}explainQuery(e){if(e.error!==void 0)return this.explainError(e);let t=[];return t.push(this.explainFilters(e)),t.push(this.explainGroups(e)),t.push(this.explainSorters(e)),t.push(this.explainQueryLimits(e)),t.push(this.explainDebugSettings()),t.filter(n=>n!=="").join(`
2024-03-10 21:51:29 +00:00
`)}explainError(e){let t="";return t+=`Query has an error:
`,t+=e.error+`
`,t}explainFilters(e){return e.filters.length===0?this.indent(`No filters supplied. All tasks will match the query.
`):e.filters.map(n=>n.explainFilterIndented(this.indentation)).join(`
`)}explainGroups(e){let t=e.grouping.length;if(t===0)return this.indent(`No grouping instructions supplied.
2024-05-04 11:47:19 +00:00
`);let n="";for(let i=0;i<t;i++)n+=this.indentation+e.grouping[i].instruction+`
2024-03-10 21:51:29 +00:00
`;return n}explainSorters(e){let t=e.sorting.length;if(t===0)return this.indent(`No sorting instructions supplied.
2024-05-04 11:47:19 +00:00
`);let n="";for(let i=0;i<t;i++)n+=this.indentation+e.sorting[i].instruction+`
`;return n}explainQueryLimits(e){function t(i){let s=`At most ${i} task`;return i!==1&&(s+="s"),s}let n=[];if(e.limit!==void 0){let i=t(e.limit)+`.
`;n.push(this.indent(i))}if(e.taskGroupLimit!==void 0){let i=t(e.taskGroupLimit)+` per group (if any "group by" options are supplied).
`;n.push(this.indent(i))}return n.join(`
`)}explainDebugSettings(){let e="",{debugSettings:t}=Z();return t.ignoreSortInstructions&&(e+=this.indent(`NOTE: All sort instructions, including default sort order, are disabled, due to 'ignoreSortInstructions' setting.
`)),e}indent(e){return this.indentation+e}};var Se=class{constructor(e,t=[],n=""){this.description=e,this.symbol=n,this.children=t}static booleanAnd(e){return this.combineOrCreateExplanation("All of",e,"AND")}static booleanOr(e){return this.combineOrCreateExplanation("At least one of",e,"OR")}static booleanNot(e){return new Se("None of",e,"NOT")}static booleanXor(e){return new Se("Exactly one of",e,"XOR")}asString(e=""){if(this.children.length==0)return e+this.description;let t=e;this.symbol===""?t+=this.description:(t+=this.symbol,this.children.length>1&&(t+=` (${this.description})`),t+=":");let n=e+" ";for(let i=0;i<this.children.length;i++)t+=`
${this.children[i].asString(n)}`;return t}static combineOrCreateExplanation(e,t,n){if(t.length===2){let i=t[0],s=t[1];if(i.symbol===n&&s.symbol==="")return i.children.push(s),i}return new Se(e,t,n)}};var Hs=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var Vs=class extends Hs{constructor(t){super();this.stringToFind=t}matches(t){return Vs.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}explanation(t){return new Se(t)}};var oi=class extends Hs{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/^\/(.+)\/([^/]*)$/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new oi(s)}else return null}matches(t){return t.match(this.regex)!==null}static helpMessage(){return String.raw`See https://publish.obsidian.md/tasks/Queries/Regular+Expressions
2023-09-25 22:44:52 +00:00
Regular expressions must look like this:
/pattern/
or this:
/pattern/flags
Where:
- pattern: The 'regular expression' pattern to search for.
- flags: Optional characters that modify the search.
i => make the search case-insensitive
u => add Unicode support
Examples: /^Log/
/^Log/i
/File Name\.md/
/waiting|waits|waited/i
/\d\d:\d\d/
The following characters have special meaning in the pattern:
to find them literally, you must add a \ before them:
[\^$.|?*+()
CAUTION! Regular expression (or 'regex') searching is a powerful
but advanced feature that requires thorough knowledge in order to
use successfully, and not miss intended search results.
2024-05-04 11:47:19 +00:00
`}explanation(t){let i=OI(t,"using regex: ",this.regexAsString());return new Se(i)}regexAsString(){let t=`'${this.regex.source}' with `;switch(this.regex.flags.length){case 0:t+="no flags";break;case 1:t+=`flag '${this.regex.flags}'`;break;default:t+=`flags '${this.regex.flags}'`;break}return t}};function OI(r,e,t){var o;let n=r.match(/\//);if(!n)return"Error explaining instruction. Could not find a slash character";let i=2,s=((o=n.index)!=null?o:i)-i;return`${e.padEnd(s)}${t}`}var Wr=class{constructor(e,t,n,i){this.instruction=e,this.property=t,this.comparator=Wr.maybeReverse(i,n)}static maybeReverse(e,t){return e?Wr.makeReversedComparator(t):t}static makeReversedComparator(e){return(t,n,i)=>e(t,n,i)*-1}};var ui=class{constructor(e,t,n,i){this.instruction=e,this.property=t,this.grouper=n,this.reverse=i}};var we=class{canCreateFilterForLine(e){return we.lineMatchesFilter(this.filterRegExp(),e)}static lineMatchesFilter(e,t){return e?e.test(t):!1}static getMatch(e,t){return e?t.match(e):null}fieldNameSingular(){return this.fieldName()}fieldNameSingularEscaped(){return Ds(this.fieldNameSingular())}supportsSorting(){return!1}createSorterFromLine(e){if(!this.supportsSorting())return null;let t=we.getMatch(this.sorterRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createSorter(n)}sorterRegExp(){if(!this.supportsSorting())throw Error(`sorterRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)?`,"i")}sorterInstruction(e){let t=`sort by ${this.fieldNameSingular()}`;return e&&(t+=" reverse"),t}comparator(){throw Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(e){return new Wr(this.sorterInstruction(e),this.fieldNameSingular(),this.comparator(),e)}createNormalSorter(){return this.createSorter(!1)}createReverseSorter(){return this.createSorter(!0)}supportsGrouping(){return!1}createGrouperFromLine(e){if(!this.supportsGrouping())return null;let t=we.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createGrouper(n)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)?$`,"i")}grouperInstruction(e){let t=`group by ${this.fieldNameSingular()}`;return e&&(t+=" reverse"),t}grouper(){throw Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(e){return new ui(this.grouperInstruction(e),this.fieldNameSingular(),this.grouper(),e)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var Ln=class{constructor(e,t){this._rawInstruction=e,this._anyContinuationLinesRemoved=t.trim(),this._anyPlaceholdersExpanded=this._anyContinuationLinesRemoved}recordExpandedPlaceholders(e){this._anyPlaceholdersExpanded=e}get rawInstruction(){return this._rawInstruction}get anyContinuationLinesRemoved(){return this._anyContinuationLinesRemoved}get anyPlaceholdersExpanded(){return this._anyPlaceholdersExpanded}explainStatement(e){function t(a,o){o!==a&&(s+=` =>
${e}${o}`)}let n=this._rawInstruction.trim(),i=n.split(`
`).join(`
`+e),s=`${e}${i}`;return this._rawInstruction.includes(`
`)&&(s+=`
`+e),t(n,this._anyContinuationLinesRemoved),t(this._anyContinuationLinesRemoved,this._anyPlaceholdersExpanded),s}allLinesIdentical(){return this._rawInstruction===this._anyContinuationLinesRemoved&&this._rawInstruction===this._anyPlaceholdersExpanded}};var St=class{constructor(e,t,n){this._statement=new Ln(e,e),this.explanation=n,this.filterFunction=t}get statement(){return this._statement}setStatement(e){this._statement=e}get instruction(){return this._statement.anyPlaceholdersExpanded}explainFilterIndented(e){let t=this._statement.explainStatement(e);return this.onlyNeedsOneLineExplanation()?`${t}
`:`${t} =>
${this.explanation.asString(e+" ")}
`}simulateExplainFilter(){return this.onlyNeedsOneLineExplanation()?this.explanation:new Se(this.instruction+" =>",[this.explanation])}onlyNeedsOneLineExplanation(){return this.explanation.asString("")===this.instruction}};var an=class{constructor(e){this.instruction=e}get queryComponent(){return this._queryComponent}set queryComponent(e){this._queryComponent=e}get error(){return this._error}set error(e){this._error=e}isValid(){return this._queryComponent!==void 0}static fromObject(e,t){let n=new an(e);return n._queryComponent=t,n}static fromError(e,t){let n=new an(e);return n._error=t,n}};var ie=class{constructor(e){this.object=e}get instruction(){return this.object.instruction}get filter(){return this.object.queryComponent}isValid(){return this.object.isValid()}get error(){return this.object.error}get filterFunction(){if(this.filter)return this.filter.filterFunction}static fromFilter(e){return new ie(an.fromObject(e.instruction,e))}static fromError(e,t){return new ie(an.fromError(e,t))}};var Ae=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return ie.fromError(e,`do not understand query filter (${this.fieldName()})`);let n=t[1].toLowerCase(),i=t[2],s=null;if(n.includes("include"))s=new Vs(i);else if(n.includes("regex")){try{s=oi.validateAndConstruct(i)}catch(u){let l=Hi("Parsing regular expression",u)+`
2024-03-10 21:51:29 +00:00
2024-05-04 11:47:19 +00:00
${oi.helpMessage()}`;return ie.fromError(e,l)}if(s===null)return ie.fromError(e,`Invalid instruction: '${e}'
2024-03-10 21:51:29 +00:00
2024-05-04 11:47:19 +00:00
${oi.helpMessage()}`)}if(s===null)return ie.fromError(e,`do not understand query filter (${this.fieldName()})`);let a=n.match(/not/)!==null,o=new St(e,this.getFilter(s,a),s.explanation(e));return ie.fromFilter(o)}fieldPattern(){return this.fieldNameSingularEscaped()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`,"i")}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}comparator(){return(e,t)=>this.value(e).localeCompare(this.value(t),void 0,{numeric:!0})}grouper(){return e=>[this.value(e)]}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}};var Vi=class extends Ae{fieldName(){return"description"}value(e){return ye.getInstance().removeAsSubstringFrom(e.description)}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=Vi.cleanDescription(e.description),i=Vi.cleanDescription(t.description);return n.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(e){e=ye.getInstance().removeAsSubstringFrom(e);let t=/^\[\[?([^\]]*)]]?/,n=e.match(t);if(n!==null){let i=n[1];e=i.substring(i.indexOf("|")+1)+e.replace(t,"")}return e=this.replaceFormatting(e,/^\*\*([^*]+)\*\*/),e=this.replaceFormatting(e,/^\*([^*]+)\*/),e=this.replaceFormatting(e,/^==([^=]+)==/),e=this.replaceFormatting(e,/^__([^_]+)__/),e=this.replaceFormatting(e,/^_([^_]+)_/),e}static replaceFormatting(e,t){let n=e.match(t);return n!==null&&(e=n[1]+e.replace(t,"")),e}};var Ml=class{findUnexpandedDateText(e){let t=["<%","YYYY-MM-DD"];for(let n of t)if(e.includes(n))return this.unexpandedDateTextMessage(n);return null}unexpandedDateTextMessage(e){return`Instruction contains unexpanded template text: "${e}" - and cannot be interpreted.
2023-09-25 22:44:52 +00:00
2024-03-10 21:51:29 +00:00
Possible causes:
- The query is an a template file, and is not intended to be searched.
- A command such as "Replace templates in the active file" needs to be run.
- The core "Daily notes" plugin is in use, and the template contained
date calculations that it does not support.
- Some sample template text was accidentally pasted in to a tasks query,
instead of in to a template file.
2023-09-25 22:44:52 +00:00
2024-03-10 21:51:29 +00:00
See: https://publish.obsidian.md/tasks/Advanced/Instruction+contains+unexpanded+template+text
2024-05-04 11:47:19 +00:00
`}};var Cl=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e.toLocaleLowerCase()===this._instruction.toLocaleLowerCase()}createFilterOrErrorMessage(e){return this.canCreateFilterForLine(e)?ie.fromFilter(new St(e,this._filter,new Se(e))):ie.fromError(e,`do not understand filter: ${e}`)}};var Gt=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new Cl(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let t of this._filters){let n=t.createFilterOrErrorMessage(e);if(n.error===void 0)return n}return ie.fromError(e,`do not understand filter: ${e}`)}};var ft=class extends we{constructor(t=null){super();t!==null?this.filterInstructions=t:(this.filterInstructions=new Gt,this.filterInstructions.add(`has ${this.fieldName()} date`,n=>this.date(n)!==null),this.filterInstructions.add(`no ${this.fieldName()} date`,n=>this.date(n)===null),this.filterInstructions.add(`${this.fieldName()} date is invalid`,n=>{let i=this.date(n);return i!==null&&!i.isValid()}))}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){var m;let n=this.checkForUnexpandedTemplateText(t);if(n)return ie.fromError(t,n);let i=this.filterInstructions.createFilterOrErrorMessage(t);if(i.isValid())return i;let s=we.getMatch(this.filterRegExp(),t);if(s===null)return ie.fromError(t,"do not understand query filter ("+this.fieldName()+" date)");let a=s[1],o=(m=s[2])==null?void 0:m.toLowerCase(),u=s[3],l=Qt.parseDateRange(u);if(!l.isValid()){let p=Qt.parseDate(a);p.isValid()&&(l=new At(p,p))}if(!l.isValid())return ie.fromError(t,"do not understand "+this.fieldName()+" date");let c=this.buildFilterFunction(o,l),d=ft.buildExplanation(this.fieldNameForExplanation(),o,this.filterResultIfFieldMissing(),l);return ie.fromFilter(new St(t,c,d))}buildFilterFunction(t,n){let i;switch(t){case"before":i=s=>s?s.isBefore(n.start):this.filterResultIfFieldMissing();break;case"after":i=s=>s?s.isAfter(n.end):this.filterResultIfFieldMissing();break;case"on or before":case"in or before":i=s=>s?s.isSameOrBefore(n.end):this.filterResultIfFieldMissing();break;case"on or after":case"in or after":i=s=>s?s.isSameOrAfter(n.start):this.filterResultIfFieldMissing();break;default:i=s=>s?s.isSameOrAfter(n.start)&&s.isSameOrBefore(n.end):this.filterResultIfFieldMissing()}return this.getFilter(i)}getFilter(t){return n=>t(this.date(n))}filterRegExp(){return new RegExp(`^${this.fieldNameForFilterInstruction()} (((?:on|in) or before|before|(?:on|in) or after|after|on|in)? ?(.*))`,"i")}fieldNameForFilterInstruction(){return this.fieldName()}static buildExplanation(t,n,i,s){let a=n,o="YYYY-MM-DD (dddd Do MMMM YYYY)",u;switch(n){case"before":case"on or after":u=s.start.format(o);break;case"after":case"on or before":u=s.end.format(o);break;case"in or before":a="on or before",u=s.end.format(o);break;case"in or after":a="on or after",u=s.start.format(o);break;default:if(!s.start.isSame(s.end)){let c=`${t} date is between:`,d=[new Se(`${s.start.format(o)} and`),new Se(`${s.end.format(o)} inclusive`)];return i&&d.push(new Se(`OR no ${t} date`)),new Se(c,d)}a="on",u=s.start.format(o);break}let l=`${t} date is ${a} ${u}`;return i&&(l+=` OR no ${t} date`),new Se(l)}fieldNameForExplanation(){return this.fieldName()}supportsSorting(){return!0}comparator(){return(t,n)=>Tr(this.date(t),this.date(n))}supportsGrouping(){return!0}grouper(){return t=>{let n=this.date(t);return n===null?["No "+this.fieldName()+" date"]:n.isValid()?[n.format("YYYY-MM-DD dddd")]:["%%0%% Invalid "+this.fieldName()+" date"]}}checkForUnexpandedTemplateText(t){return new Ml().findUnexpandedDateText(t)}};var Al=class extends ft{fieldName(){return"created"}date(e){return e.createdDate}filterResultIfFieldMissing(){return!1}};var Pl=class extends ft{fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}};var zs=class extends ft{fieldName(){return"due"}date(e){return e.dueDate}filter
The instruction was converted to the following simplified line:
${i.simplifiedLine}
Where the sub-expressions in the simplified line are:
${a}
For help, see:
https://publish.obsidian.md/tasks/Queries/Combining+Filters
`;return ie.fromError(t,u)}stringifySubExpressionsForErrorMessage(t){return Object.entries(t).map(([n,i])=>` '${n}': '${i}'
=> ${this.stringifySubExpressionStatus(i)}`).join(`
`)}stringifySubExpressionStatus(t){let n=Vo(t);return n?n.error?`ERROR:
${n.error.split(`
`).map(s=>s.trim()).join(`
`)}`:"OK":`ERROR:
do not understand query`}helpMessageFromSimpleError(t,n){return`Could not interpret the following instruction as a Boolean combination:
${t}
The error message is:
${n}`}};var zl=class extends Ae{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;return t===null?["Unknown Location"]:["[["+t+"]]"]}}};var na=class extends we{canCreateFilterForLine(e){return!1}createFilterOrErrorMessage(e){return ie.fromError(e,"Filtering by urgency is not yet supported")}fieldName(){return"urgency"}filterRegExp(){throw Error(`filterRegExp() unimplemented for ${this.fieldName()}`)}supportsSorting(){return!0}comparator(){return(e,t)=>t.urgency-e.urgency}supportsGrouping(){return!0}grouper(){return e=>[`${e.urgency.toFixed(2)}`]}createGrouper(e){return super.createGrouper(!e)}grouperInstruction(e){return super.grouperInstruction(!e)}};var Kl=class extends Ae{constructor(){super()}fieldName(){return"status.name"}value(e){return e.status.name}supportsSorting(){return!0}supportsGrouping(){return!0}};var dn=class extends we{canCreateFilterForLine(e){let t=new RegExp(`^(?:${this.fieldNameSingularEscaped()})`,"i");return we.lineMatchesFilter(t,e)}createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return this.helpMessage(e);let n=t[1].toLowerCase(),i=t[2],s=er[i.toUpperCase()];if(!s)return this.helpMessage(e);let a;switch(n){case"is":a=o=>o.status.type===s;break;case"is not":a=o=>o.status.type!==s;break;default:return this.helpMessage(e)}return ie.fromFilter(new St(e,a,new Se(e)))}filterRegExp(){return new RegExp(`^(?:${this.fieldNameSingularEscaped()}) (is|is not) ([^ ]+)$`,"i")}helpMessage(e){let t=Object.values(er).filter(i=>i!=="EMPTY").join(" "),n=`Invalid ${this.fieldNameSingular()} instruction: '${e}'.
2024-03-10 21:51:29 +00:00
Allowed options: 'is' and 'is not' (without quotes).
Allowed values: ${t}
Note: values are case-insensitive,
so 'in_progress' works too, for example.
2024-05-04 11:47:19 +00:00
Example: ${this.fieldNameSingular()} is not NON_TASK`;return ie.fromError(e,n)}fieldName(){return"status.type"}value(e){return e.status.type}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=dn.groupName(e),i=dn.groupName(t);return n.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return e=>[dn.groupName(e)]}static groupName(e){return e.status.typeGroupText}};var Ql=class extends Ae{fieldName(){return"recurrence"}value(e){return e.recurrence!==null?e.recurrence.toText():""}supportsGrouping(){return!0}grouper(){return e=>e.recurrence!==null?[e.recurrence.toText()]:["None"]}};var Xl=class extends Ae{fieldName(){return"folder"}value(e){return e.file.folder}supportsGrouping(){return!0}grouper(){return e=>[Ae.escapeMarkdownCharacters(this.value(e))]}};var Zl=class extends Ae{fieldName(){return"root"}value(e){return e.file.root}supportsGrouping(){return!0}grouper(){return e=>[Ae.escapeMarkdownCharacters(this.value(e))]}};var Jl=class extends Ae{fieldName(){return"backlink"}value(e){let t=e.getLinkText({isFilenameUnique:!0});return t===null?"Unknown Location":t}createFilterOrErrorMessage(e){return ie.fromError(e,"backlink field does not support filtering")}canCreateFilterForLine(e){return!1}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;if(t===null)return["Unknown Location"];let n=e.precedingHeader;return n===null?["[["+t+"]]"]:[`[[${t}#${n}|${t} > ${n}]]`]}}};var ec=class extends ft{fieldName(){return"cancelled"}date(e){return e.cancelledDate}filterResultIfFieldMissing(){return!1}};var tc=class extends on{constructor(){super(),this._filters.add("is blocking",(e,t)=>e.isBlocking(t.allTasks)),this._filters.add("is not blocking",(e,t)=>!e.isBlocking(t.allTasks)),this._filters.add("is blocked",(e,t)=>e.isBlocked(t.allTasks)),this._filters.add("is not blocked",(e,t)=>!e.isBlocked(t.allTasks))}fieldName(){return"blocking"}};var rc=class extends Ae{constructor(){super();this.filterInstructions=new Gt;this.filterInstructions.add("has id",t=>t.id.length>0),this.filterInstructions.add("no id",t=>t.id.length===0)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.isValid()?n:super.createFilterOrErrorMessage(t)}fieldName(){return"id"}value(t){return t.id}supportsSorting(){return!0}supportsGrouping(){return!0}};var nc=class extends we{constructor(){super();this.filterInstructions=new Gt;this.filterInstructions.add("has depends on",t=>t.dependsOn.length>0),this.filterInstructions.add("no depends on",t=>t.dependsOn.length===0)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.isValid()?n:ie.fromError(t,"Unknown instruction")}fieldName(){return"blocked by"}filterRegExp(){return null}};var Lh=[()=>new Kl,()=>new dn,()=>new li,()=>new $l,()=>new zi,()=>new Wl,()=>new ec,()=>new Al,()=>new ql,()=>new Ul,()=>new zs,()=>new Pl,()=>new Ks,()=>new Xl,()=>new Zl,()=>new Jl,()=>new Vi,()=>new Ki,()=>new Ll,()=>new Nl,()=>new zl,()=>new na,()=>new Ql,()=>new Fl,()=>new rc,()=>new nc,()=>new tc,()=>new Vl];function Vo(r){for(let e of Lh){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}function Zw(r){let e=/^sort by /i;if(r.match(e)===null)return null;for(let t of Lh){let i=t().createSorterFromLine(r);if(i)return i}return null}function Jw(r){let e=/^group by /i;if(r.match(e)===null)return null;for(let t of Lh){let i=t().createGrouperFromLine(r);if(i)return i}return null}var ic=class{constructor(e,t,n){this.nestingLevel=e,this.displayName=t,this.property=n}};var sc=class{constructor(e,t){this.lastHeadingAtLevel=new Array;this.groupers=t;let i=e.keys().next().value.length;for(let s=0;s<i;s++)this.lastHeadingAtLevel.push("")}getHeadingsForTaskGroup(e){let t=new Array;for(let n=0;n<e.length;n++){let i=e[n];if(i!=this.la
2022-06-15 22:20:02 +00:00
`;return e}toString(){let e=`
`;e+=`Group names: [${this.groups}]
2023-06-29 22:00:30 +00:00
`;for(let t of this.groupHeadings)e+=`${"#".repeat(4+t.nestingLevel)} [${t.property}] ${t.displayName}
2024-05-04 11:47:19 +00:00
`;return e+=this.tasksAsStringOfLines(),e}};var ia=class{constructor(e,t,n){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length,this._groupers=e;let s=new uc(e,t,n).generateTaskTreeStorage();this.addTaskGroups(s),this.sortTaskGroups(),this.setGroupsHeadings(s)}get groupers(){return this._groupers}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";e+=`Groupers (if any):
`;for(let n of this._groupers){let i=n.reverse?" reverse":"";e+=`- ${n.property}${i}
2023-06-29 22:00:30 +00:00
`}for(let n of this.groups)e+=n.toString(),e+=`
2022-06-15 22:20:02 +00:00
---
`;return e+=`
${this.totalTasksCount()} tasks
2024-05-04 11:47:19 +00:00
`,e}addTaskGroups(e){for(let[t,n]of e){let i=new lc(t,n);this.addTaskGroup(i)}}addTaskGroup(e){this._groups.push(e)}sortTaskGroups(){let e=(t,n)=>{let i=t.groups,s=n.groups;for(let a=0;a<i.length;a++){let o=this._groupers[a],u=i[a].localeCompare(s[a],void 0,{numeric:!0});if(u!==0)return o.reverse?-u:u}return 0};this._groups.sort(e)}setGroupsHeadings(e){let t=new sc(e,this._groupers);for(let n of this._groups)n.setGroupHeadings(t.getHeadingsForTaskGroup(n.groups))}applyTaskLimit(e){this._groupers.length!==0&&(this._groups.forEach(t=>{t.applyTaskLimit(e)}),this.recalculateTotalTaskCount())}recalculateTotalTaskCount(){let e=[];this._groups.forEach(n=>{e=[...e,...n.tasks]});let t=[...new Set(e)];this._totalTaskCount=t.length}};var fi=class{constructor(e,t){this.queryPath=e,this.allTasks=[...t]}static fromAllTasks(e){return new fi(void 0,e)}queryContext(){return this.queryPath?vh(this.queryPath,this.allTasks):void 0}};function ek(r){return`task${r!==1?"s":""}`}var Zi=class{constructor(e,t){this.totalTasksCountBeforeLimit=0;this._searchErrorMessage=void 0;this.taskGroups=e,this.totalTasksCountBeforeLimit=t}get searchErrorMessage(){return this._searchErrorMessage}set searchErrorMessage(e){this._searchErrorMessage=e}get totalTasksCount(){return this.taskGroups.totalTasksCount()}totalTasksCountDisplayText(){let e=this.totalTasksCount,t=this.totalTasksCountBeforeLimit;return e===t?`${e} ${ek(e)}`:`${e} of ${t} ${ek(t)}`}get groups(){return this.taskGroups.groups}static fromError(e){let t=new Zi(new ia([],[],fi.fromAllTasks([])),0);return t._searchErrorMessage=e,t}};function tk(r){return r.endsWith("\\")}function rk(r){return r.endsWith("\\\\")}function nF(r){return r.replace(/^[ \t]*/,"")}function iF(r){return r.replace(/[ \t]*\\$/,"")}function sF(r,e){let t=r;return e&&(t=nF(r)),rk(t)?t=t.slice(0,-1):tk(r)&&(t=iF(t)),t}function nk(r){let e=[],t=!1,n="",i="";for(let s of r.split(`
`)){let a=sF(s,t);t?(n+=`
`+s,i+=" "+a):(n=s,i=a),rk(s)?t=!1:t=tk(s),t||(i.trim()!==""&&e.push(new Ln(n,i)),n="",i="")}return e}var sa=class{static by(e,t,n){let i=this.defaultSorters().map(a=>a.comparator),s=[];for(let a of e)s.push(a.comparator);return t.sort(sa.makeCompositeComparator([...s,...i],n))}static defaultSorters(){return[new dn().createNormalSorter(),new na().createNormalSorter(),new zs().createNormalSorter(),new zi().createNormalSorter(),new Ks().createNormalSorter()]}static makeCompositeComparator(e,t){return(n,i)=>{for(let s of e){let a=s(n,i,t);if(a!==0)return a}return 0}}};var Wn=class{constructor(e,t=void 0){this._limit=void 0;this._taskGroupLimit=void 0;this._taskLayoutOptions=new Jr;this._queryLayoutOptions=new ai;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this._ignoreGlobalQuery=!1;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|cancelled date|created date|start date|scheduled date|done date|due date|recurrence rule|edit button|postpone button|urgency|tags|depends on|id)/i;this.shortModeRegexp=/^short/i;this.fullModeRegexp=/^full/i;this.explainQueryRegexp=/^explain/i;this.ignoreGlobalQueryRegexp=/^ignore global query/i;this.logger=Nt.getLogger("tasks.Query");this._queryId="";this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/i;this.commentRegexp=/^#.*/;this._queryId=this.generateQueryId(10),this.source=e,this.filePath=t,this.debug(`Creating query: ${this.formatQueryForLogging()}`),nk(e).forEach(n=>{let i=this.expandPlaceholders(n,t);if(this.error===void 0)try{this.parseLine(i,n)}catch(s){let a;s instanceof Error?a=s.message:a="Unknown error",this.setError(a,n);return}})}get queryId(){return this._queryId}parseLine(e,t){switch(!0){case this.shortModeRegexp.test(e):this._queryLayoutOptions.shortMode=!0;break;case this.fullModeRegexp.test(e):this._queryLayoutOptions.shortMode=!1;break;case this.explainQueryRegexp.test(e):this._queryLayoutOptions.explainQuery=!0;break;case this.ignoreGlobalQueryRegexp.test(e):this._ignoreGlobalQuery=!0;break;case this.limitRegexp.test(e):this.parseLimit(e);break;case this.parseSortBy(e):break;case this.parseGroupBy(e):break;case this.hideOptionsRegexp.test(e):this.parseHideOptions(e);break;case this.commentRegexp.test(e):break;case this.parseFilter(e,t):break;default:this.setError("do not understand query",t)}}formatQueryForLogging(){return`[${this.source.split(`
`).join(" ; ")}]`}expandPlaceholders(e,t){let n=e.anyContinuationLinesRemoved;if(n.includes("{{")&&n.includes("}}")&&this.filePath===void 0)return this._error=`The query looks like it contains a placeholder, with "{{" and "}}"
2023-09-25 22:44:52 +00:00
but no file path has been supplied, so cannot expand placeholder values.
The query is:
2024-05-04 11:47:19 +00:00
${n}`,n;let i=n;if(t){let s=Fw(t);try{i=Iw(n,s)}catch(a){return a instanceof Error?this._error=a.message:this._error="Internal error. expandPlaceholders() threw something other than Error.",n}}return e.recordExpandedPlaceholders(i),i}append(e){return this.source===""?e:e.source===""?this:new Wn(`${this.source}
${e.source}`,this.filePath)}explainQuery(){return new Bs().explainQuery(this)}get limit(){return this._limit}get taskGroupLimit(){return this._taskGroupLimit}get taskLayoutOptions(){return this._taskLayoutOptions}get queryLayoutOptions(){return this._queryLayoutOptions}get filters(){return this._filters}addFilter(e){this._filters.push(e)}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}setError(e,t){t.allLinesIdentical()?this._error=`${e}
Problem line: "${t.rawInstruction}"`:this._error=`${e}
Problem statement:
${t.explainStatement(" ")}
`}get ignoreGlobalQuery(){return this._ignoreGlobalQuery}applyQueryToTasks(e){this.debug(`Executing query: ${this.formatQueryForLogging()}`);let t=new fi(this.filePath,e);try{this.filters.forEach(o=>{e=e.filter(u=>o.filterFunction(u,t))});let{debugSettings:n}=Z(),i=n.ignoreSortInstructions?e:sa.by(this.sorting,e,t),s=i.slice(0,this.limit),a=new ia(this.grouping,s,t);return this._taskGroupLimit!==void 0&&a.applyTaskLimit(this._taskGroupLimit),new Zi(a,i.length)}catch(n){let i="Search failed";return Zi.fromError(Hi(i,n))}}parseHideOptions(e){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1].toLowerCase()==="hide";switch(t[2].toLowerCase()){case"task count":this._queryLayoutOptions.hideTaskCount=n;break;case"backlink":this._queryLayoutOptions.hideBacklinks=n;break;case"postpone button":this._queryLayoutOptions.hidePostponeButton=n;break;case"priority":this._taskLayoutOptions.setVisibility("priority",!n);break;case"cancelled date":this._taskLayoutOptions.setVisibility("cancelledDate",!n);break;case"created date":this._taskLayoutOptions.setVisibility("createdDate",!n);break;case"start date":this._taskLayoutOptions.setVisibility("startDate",!n);break;case"scheduled date":this._taskLayoutOptions.setVisibility("scheduledDate",!n);break;case"due date":this._taskLayoutOptions.setVisibility("dueDate",!n);break;case"done date":this._taskLayoutOptions.setVisibility("doneDate",!n);break;case"recurrence rule":this._taskLayoutOptions.setVisibility("recurrenceRule",!n);break;case"edit button":this._queryLayoutOptions.hideEditButton=n;break;case"urgency":this._queryLayoutOptions.hideUrgency=n;break;case"tags":this._taskLayoutOptions.setTagsVisibility(!n);break;case"id":this._taskLayoutOptions.setVisibility("id",!n);break;case"depends on":this._taskLayoutOptions.setVisibility("dependsOn",!n);break;default:this.setError("do not understand hide/show option",new Ln(e,e))}}}parseFilter(e,t){var i;let n=Vo(e);return n!=null?(n.filter?(n.filter.setStatement(t),this._filters.push(n.filter)):this.setError((i=n.error)!=null?i:"Unknown error",t),!0):!1}parseLimit(e){let t=e.match(this.limitRegexp);if(t===null){this.setError("do not understand query limit",new Ln(e,e));return}let n=Number.parseInt(t[3],10);t[1]!==void 0?this._taskGroupLimit=n:this._limit=n}parseSortBy(e){let t=Zw(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy(e){let t=Jw(e);return t?(this._grouping.push(t),!0):!1}generateQueryId(e){let t="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890";return Array.from({length:e},()=>t[Math.floor(Math.random()*t.length)]).join("")}debug(e,t){this.logger.debugWithId(this._queryId,`"${this.filePath}": ${e}`,t)}};var pi=class{constructor(e=pi.empty){this._source=e}static getInstance(){return pi.instance||(pi.instance=new pi),pi.instance}set(e){this._source=e}query(e=void 0){return new Wn(this._source,e)}hasInstructions(){return this._source.trim()!==pi.empty}},Er=pi;Er.empty="";var cc=class{constructor({obsidianEvents:e}){this.logger=Nt.getLogger("tasks.Events");this.obsidianEvents=e}onCacheUpdate(e){return this.logger.debug("TasksEvents.onCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.logger.debug("TasksEvents.triggerCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.logger.debug("TasksEvents.onRequestCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.logger.debug("TasksEvents.triggerRequestCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.logger.debug("TasksEvents.off()"),this.obsidianEvents.offref(e)}};var ok=require("obsidian");var ak=require("obsidian");var Uh=class{constructor(e){this.newStatus=e}apply(e){return this.isCheckedForTask(e)?[e]:e.handleNewStatusWithRecurrenceInUsersOrder(this.newStatus)}instructionDisplayName(){return`Change status to: [${this.newStatus.symbol}] ${this.newStatus.name}`}isCheckedForTask(e){return this.newStatus.symbol===e.status.symbo
`);if(p===void 0)return!1;let T=null;for(let E=0;E<p.length;E=E+1)if(p[E]!==""){T=p[E];break}return T===null?!1:ye.getInstance().includedIn(T)});if(i.length===0)return;let s=t.sourcePath,a=t.getSectionInfo(e);if(a===null)return;let o=a.text.split(`
`),u=0,l=[];for(let m=a.lineStart;m<=a.lineEnd;m++){let p=o[m];if(p===void 0)continue;let T=null,y=oe.fromLine({line:p,taskLocation:new bt(new Je(s),m,a.lineStart,u,T),fallbackDate:null});y!==null&&(l.push(y),u++)}let c=new mi({obsidianComponent:n,parentUlElement:e,taskLayoutOptions:new Jr,queryLayoutOptions:new ai});for(let m=0;m<i.length;m++){let p=l[m],T=i[m];if(p===void 0||T===void 0)continue;let y=(d=T.getAttr("data-line"))!=null?d:"0",E=Number.parseInt(y,10),R=yield c.renderTaskLine(p,E),x=T.childNodes;for(let j=0;j<x.length;j=j+1){let te=x[j];te.nodeName.toLowerCase()==="div"?R.prepend(te):te.nodeName.toLowerCase()==="ul"&&R.append(te)}let v=T.querySelectorAll("[data-footnote-id]"),V=R.querySelectorAll("[data-footnote-id]");if(v.length===V.length)for(let j=0;j<v.length;j++)V[j].replaceWith(v[j]);T.replaceWith(R)}})}};var uk=require("@codemirror/view"),lk=require("obsidian");var ck=()=>uk.ViewPlugin.fromClass(Wh),Wh=class{constructor(e){this.view=e,this.handleClickEvent=this.handleClickEvent.bind(this),this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}handleClickEvent(e){let{target:t}=e;if(!t||!(t instanceof HTMLInputElement)||t.type!=="checkbox")return!1;let n=t.closest("ul.plugin-tasks-query-result, div.callout-content");if(n){if(n.matches("div.callout-content")){let m=`obsidian-tasks-plugin warning: Tasks cannot add or remove completion dates or make the next copy of a recurring task for tasks written inside a callout when you click their checkboxes in Live Preview.
If you wanted Tasks to do these things, please undo your change, then either click the line of the task and use the "Toggle Task Done" command, or switch to Reading View to click the checkbox.`;console.warn(m),new lk.Notice(m,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=oe.fromLine({line:a.text,taskLocation:bt.fromUnknownPosition(new Je("")),fallbackDate:null});if(o===null)return!1;e.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder().map(m=>m.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let d=t.checked;return setTimeout(()=>{t.checked=d},1),!0}};var ua=require("obsidian");function Qo(r,e,t){e&&r.push(oF(t))}function oF(r){return`tasks-layout-hide-${r}`}var mc=class{constructor(e){e?this.queryLayoutOptions=e:this.queryLayoutOptions=new ai}getHiddenClasses(){let e=[],t=[[this.queryLayoutOptions.hideUrgency,"urgency"],[this.queryLayoutOptions.hideBacklinks,"backlinks"],[this.queryLayoutOptions.hideEditButton,"edit-button"],[this.queryLayoutOptions.hidePostponeButton,"postpone-button"]];for(let[n,i]of t)Qo(e,n,i);return this.queryLayoutOptions.shortMode&&e.push("tasks-layout-short-mode"),e}};function dk(r,e,t,n=void 0){let i="";e.isEmpty()||(i+=`Only tasks containing the global filter '${e.get()}'.
`);let s=new Bs(" "),a=new Wn(r,n);if(!a.ignoreGlobalQuery&&t.hasInstructions()){let o=t.query(n);i+=`Explanation of the global query:
${s.explainQuery(o)}
`}return i+=`Explanation of this Tasks code block query:
${s.explainQuery(a)}`,i}function hc(r,e,t){let n=new Wn(r,t);return n.ignoreGlobalQuery?n:e.query(t).append(n)}function fk(r){for(let t of oe.allDateFields()){let n=r[t];if(n&&!n.isValid())return!1}let e=r.happensDates.some(t=>!!(t!=null&&t.isValid()));return!r.isDone&&e}function gc(r){return r.dueDate?"dueDate":r.scheduledDate?"scheduledDate":r.startDate?"startDate":null}function $h(r,e,t,n){let i=r[e];return mk(i,r,e,t,n)}function pk(r,e,t,n){let i=window.moment();return mk(i,r,e,t,n)}function mk(r,e,t,n,i){let s=new Ye(r).postpone(n,i),a=kt.removeInferredStatusIfNeeded(e,[new oe(be(X({},e),{[t]:s}))])[0];return{postponedDate:s,postponedTask:a}}function hk(r,e){let t=r==null?void 0:r.format("DD MMM YYYY");return`Task's ${e} changed to ${t}`}function gk(r,e,t){return`\u2139\uFE0F ${jh(r,e,t)} (right-click for more options)`}function uF(r){return r.charAt(0).toUpperCase()+r.slice(1)}function jh(r,e,t){let n=gc(r),i=r[n];return bk(n,i,e,t)}function yk(r,e,t){let n=gc(r),i=window.moment().startOf("day");return bk(n,i,e,t)}function bk(r,e,t,n){let s=new Ye(e).postpone(n,t).format("ddd Do MMM"),a=t!=1?t:"a";return e.isSameOrBefore(window.moment(),"day")?`${uF(r.replace("Date",""))} in ${a} ${n}, on ${s}`.replace(" in 0 days"," today").replace("in a day","tomorrow"):`Postpone ${r.replace("Date"," date")} by ${a} ${n}, to ${s}`}var yc=class{constructor(e){e?this.taskLayoutOptions=e:this.taskLayoutOptions=new Jr}generateHiddenClasses(){let e=[];return this.taskLayoutOptions.toggleableComponents.forEach(t=>{Qo(e,!this.taskLayoutOptions.isShown(t),t)}),Qo(e,!this.taskLayoutOptions.areTagsShown(),"tags"),e}};var Gh=require("obsidian");var hi=class extends aa{constructor(e,t,n=zo){super(n);let i=(l,c,d,m,p,T)=>{let y=p(t,m,d);c.setTitle(y).onClick(()=>hi.postponeOnClickCallback(l,t,m,d,T,n))},s=yk,a=pk;this.addItem(l=>i(e,l,"days",0,s,a)),this.addItem(l=>i(e,l,"day",1,s,a)),this.addSeparator();let o=jh,u=$h;this.addItem(l=>i(e,l,"days",2,o,u)),this.addItem(l=>i(e,l,"days",3,o,u)),this.addItem(l=>i(e,l,"days",4,o,u)),this.addItem(l=>i(e,l,"days",5,o,u)),this.addItem(l=>i(e,l,"days",6,o,u)),this.addSeparator(),this.addItem(l=>i(e,l,"week",1,o,u)),this.addItem(l=>i(e,l,"weeks",2,o,u)),this.addItem(l=>i(e,l,"weeks",3,o,u)),this.addItem(l=>i(e,l,"month",1,o,u))}static postponeOnClickCallback(o,u,l,c){return L(this,arguments,function*(e,t,n,i,s=$h,a=zo){let d=gc(t);if(d===null){let T="\u26A0\uFE0F Postponement requires a date: due, scheduled or start.";return new Gh.Notice(T,1e4)}let{postponedDate:m,postponedTask:p}=s(t,d,i,n);yield a(t,p),hi.postponeSuccessCallback(e,d,m)})}static postponeSuccessCallback(e,t,n){e.style.pointerEvents="none";let i=hk(n,t);new Gh.Notice(i,2e3)}};var Xo=class{constructor(e){this.label=e,this.start()}start(){!this.recordTimings()||performance.mark(this.labelForStart())}finish(){!this.recordTimings()||(performance.mark(this.labelForEnd()),performance.measure(this.label,this.labelForStart(),this.labelForEnd()),this.printDuration())}printDuration(){let e=performance.getEntriesByName(this.label),t=e[e.length-1];t?console.log(this.label+":",t.duration,"milliseconds"):console.log(`Measurement for ${this.label} not found`)}labelForStart(){return`${this.label} - start`}labelForEnd(){return`${this.label} - end`}recordTimings(){let{debugSettings:e}=Z();return e.recordTimings}};var bc=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.plugin=e,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return L(this,null,function*(){n.addChild(new Yh({app:this.app,plugin:this.plugin,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},Yh=class extends ua.MarkdownRenderChild{constructor({app:t,plugin:n,events:i,container:s,source:a,filePath:o}){super(s);switch(this.app=t,this.plugin=n,this.events=i,this.source=a,this.filePath=o,this.containerEl.className){case"block-language-tasks":this.query=hc(this.source,Er.getInstance(),this.filePath),this.queryType="tasks";break;def
2024-03-10 21:51:29 +00:00
`,this._markdown+=`${t}
`}addRow(e){let t=this.makeRowText(e);this._markdown+=`${t}
`}addRowIfNew(e){let t=this.makeRowText(e);this._markdown.includes(t)||(this._markdown+=`${t}
2024-05-04 11:47:19 +00:00
`)}makeRowText(e){let t="|";return e.forEach(n=>{t+=` ${n} |`}),t}};function Tk(r,e){return r.findIndex(t=>t.symbol===e)}function $n(r){return r===""?r:"`"+(r!==" "?r:"space")+"`"}function lF(r,e){let t=ne.getTypeForUnknownSymbol(r.symbol);r.type!==t&&(t==="TODO"&&r.symbol!==" "||e.push(`For information, the conventional type for status symbol ${$n(r.symbol)} is ${$n(t)}: you may wish to review this type.`))}function cF(r,e,t){let n=Tk(r,e.nextStatusSymbol);if(n===-1){t.push(`Next symbol ${$n(e.nextStatusSymbol)} is unknown: create a status with symbol ${$n(e.nextStatusSymbol)}.`);return}if(e.type!=="DONE")return;let i=r[n];if(i){if(i.type!=="TODO"&&i.type!=="IN_PROGRESS"){let s="https://publish.obsidian.md/tasks/Getting+Started/Statuses/Recurring+Tasks+and+Custom+Statuses",a=[`This \`DONE\` status is followed by ${$n(i.type)}, not \`TODO\` or \`IN_PROGRESS\`.`,"If used to complete a recurring task, it will instead be followed by `TODO` or `IN_PROGRESS`, to ensure the next task matches the `not done` filter.",`See [Recurring Tasks and Custom Statuses](${s}).`].join("<br>");t.push(a)}}else t.push("Unexpected failure to find the next status.")}function dF(r,e,t){let n=[];return e.symbol===ne.EMPTY.symbol?(n.push("Empty symbol: this status will be ignored."),n):Tk(r,e.symbol)!=t?(n.push(`Duplicate symbol '${$n(e.symbol)}': this status will be ignored.`),n):(lF(e,n),cF(r,e,n),n)}function _k(r){let e=new Tc(["Status Symbol","Next Status Symbol","Status Name","Status Type","Problems (if any)"]),t=Le.allStatuses(r);return t.forEach((n,i)=>{e.addRow([$n(n.symbol),$n(n.nextStatusSymbol),n.name,$n(n.type),dF(t,n,i).join("<br>")])}),e.markdown}function vk(r,e,t,n){let s=_k(r),a=e.mermaidDiagram(!0);return`# ${t}
2023-10-14 08:34:17 +00:00
2024-03-10 21:51:29 +00:00
## About this file
2023-10-14 08:34:17 +00:00
2024-03-10 21:51:29 +00:00
This file was created by the Obsidian Tasks plugin (version ${n}) to help visualise the task statuses in this vault.
2023-10-14 08:34:17 +00:00
2024-03-10 21:51:29 +00:00
If you change the Tasks status settings, you can get an updated report by:
2023-10-14 08:34:17 +00:00
2024-03-10 21:51:29 +00:00
- Going to \`Settings\` -> \`Tasks\`.
- Clicking on \`Review and check your Statuses\`.
2023-10-14 08:34:17 +00:00
2024-03-10 21:51:29 +00:00
You can delete this file any time.
## Status Settings
<!--
Switch to Live Preview or Reading Mode to see the table.
If there are any Markdown formatting characters in status names, such as '*' or '_',
Obsidian may only render the table correctly in Reading Mode.
-->
These are the status values in the Core and Custom statuses sections.
2023-03-29 16:30:35 +00:00
2024-05-04 11:47:19 +00:00
${s}
2024-03-10 21:51:29 +00:00
## Loaded Settings
2023-03-29 16:30:35 +00:00
2024-03-10 21:51:29 +00:00
<!-- Switch to Live Preview or Reading Mode to see the diagram. -->
2023-06-29 22:00:30 +00:00
2024-03-10 21:51:29 +00:00
These are the settings actually used by Tasks.
2024-05-04 11:47:19 +00:00
${a}`}function wk(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],['"',"Quote","x","TODO"],["0","Speech bubble 0","0","NON_TASK"],["1","Speech bubble 1","1","NON_TASK"],["2","Speech bubble 2","2","NON_TASK"],["3","Speech bubble 3","3","NON_TASK"],["4","Speech bubble 4","4","NON_TASK"],["5","Speech bubble 5","5","NON_TASK"],["6","Speech bubble 6","6","NON_TASK"],["7","Speech bubble 7","7","NON_TASK"],["8","Speech bubble 8","8","NON_TASK"],["9","Speech bubble 9","9","NON_TASK"]]}function kk(){return[[" ","incomplete","x","TODO"],["x","complete / done"," ","DONE"],["-","cancelled"," ","CANCELLED"],[">","deferred","x","TODO"],["/","in progress, or half-done","x","IN_PROGRESS"],["!","Important","x","TODO"],["?","question","x","TODO"],["R","review","x","TODO"],["+","Inbox / task that should be processed later","x","TODO"],["b","bookmark","x","TODO"],["B","brainstorm","x","TODO"],["D","deferred or scheduled","x","TODO"],["I","Info","x","TODO"],["i","idea","x","TODO"],["N","note","x","TODO"],["Q","quote","x","TODO"],["W","win / success / reward","x","TODO"],["P","pro","x","TODO"],["C","con","x","TODO"]]}function Ek(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],[">","Deferred","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["r","Review","x","TODO"]]}function Sk(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["D","Date","x","TODO"],["?","Question","x","TODO"],["/","Half Done","x","IN_PROGRESS"],["+","Add","x","TODO"],["R","Research","x","TODO"],["!","Important","x","TODO"],["i","Idea","x","TODO"],["B","Brainstorm","x","TODO"],["P","Pro","x","TODO"],["C","Con","x","TODO"],["Q","Quote","x","TODO"],["N","Note","x","TODO"],["b","Bookmark","x","TODO"],["I","Information","x","TODO"],["p","Paraphrase","x","TODO"],["L","Location","x","TODO"],["E","Example","x","TODO"],["A","Answer","x","TODO"],["r","Reward","x","TODO"],["c","Choice","x","TODO"],["d","Doing","x","IN_PROGRESS"],["T","Time","x","TODO"],["@","Character / Person","x","TODO"],["t","Talk","x","TODO"],["O","Outline / Plot","x","TODO"],["~","Conflict","x","TODO"],["W","World","x","TODO"],["f","Clue / Find","x","TODO"],["F","Foreshadow","x","TODO"],["H","Favorite / Health","x","TODO"],["&","Symbolism","x","TODO"],["s","Secret","x","TODO"]]}function Ok(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],["f","Fire","x","TODO"],["k","Key","x","TODO"],["w","Win","x","TODO"],["u","Up","x","TODO"],["d","Down","x","TODO"]]}function Dk(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}f
2023-03-29 16:30:35 +00:00
`)+`
2024-05-04 11:47:19 +00:00
Fix errors before saving.`;new Gr.Notice(d);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?or.removeValidationError(t):or.setValidationError(t)}};var Yt=class extends ke.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.customFunctions={insertTaskCoreStatusSettings:this.insertTaskCoreStatusSettings.bind(this),insertCustomTaskStatusSettings:this.insertCustomTaskStatusSettings.bind(this)};this.plugin=t}saveSettings(t){return L(this,null,function*(){yield this.plugin.saveSettings(),t&&this.display()})}display(){let{containerEl:t}=this;t.empty(),this.containerEl.addClass("tasks-settings"),t.createEl("h3",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),t.createEl("h4",{text:"Task Format Settings"}),new ke.Setting(t).setName("Task Format").setDesc(Yt.createFragmentWithHTML('<p>The format that Tasks uses to read and write tasks.</p><p><b>Important:</b> Tasks currently only supports one format at a time. Selecting Dataview will currently <b>stop Tasks reading its own emoji signifiers</b>.</p><p>See the <a href="https://publish.obsidian.md/tasks/Reference/Task+Formats/About+Task+Formats">documentation</a>.</p>')).addDropdown(i=>{for(let s of Object.keys(Rn))i.addOption(s,Rn[s].displayName);i.setValue(Z().taskFormat).onChange(s=>L(this,null,function*(){rt({taskFormat:s}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new ke.Setting(t).setName("Global task filter").setDesc(Yt.createFragmentWithHTML('<p><b>Recommended: Leave empty if you want all checklist items in your vault to be tasks managed by this plugin.</b></p><p>Use a global filter if you want Tasks to only act on a subset of your "<code>- [ ]</code>" checklist items, so that a checklist item must include the specified string in its description in order to be considered a task.<p><p>For example, if you set the global filter to <code>#task</code>, the Tasks plugin will only handle checklist items tagged with <code>#task</code>.</br>Other checklist items will remain normal checklist items and not appear in queries or get a done date set.</p><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Global+Filter">documentation</a>.</p>')).addText(i=>{i.setPlaceholder("e.g. #task or TODO").setValue(ye.getInstance().get()).onChange(s=>L(this,null,function*(){rt({globalFilter:s}),ye.getInstance().set(s),yield this.plugin.saveSettings()}))}),new ke.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(i=>{let s=Z();i.setValue(s.removeGlobalFilter).onChange(a=>L(this,null,function*(){rt({removeGlobalFilter:a}),ye.getInstance().setRemoveGlobalFilter(a),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),hF(new ke.Setting(t).setDesc(Yt.createFragmentWithHTML('<p>A query that is automatically included at the start of every Tasks block in the vault. Useful for adding default filters, or layout options.</p><p>See the <a href="https://publish.obsidian.md/tasks/Queries/Global+Query">documentation</a>.</p>')).addTextArea(i=>{let s=Z();i.inputEl.rows=4,i.setPlaceholder(`# For example...
2023-06-29 22:00:30 +00:00
path does not include _templates/
limit 300
2024-05-04 11:47:19 +00:00
show urgency`).setValue(s.globalQuery).onChange(a=>L(this,null,function*(){rt({globalQuery:a}),Er.getInstance().set(a),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=Z();Rk.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new ke.Setting(t).setName("Set created date on every added task").setDesc(Yt.createFragmentWithHTML(`Enabling this will add a timestamp \u2795 YYYY-MM-DD before other date values, when a task is created with 'Create or edit task', or by completing a recurring task.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Dates#Created+date">documentation</a>.</p>`)).addToggle(i=>{let s=Z();i.setValue(s.setCreatedDate).onChange(a=>L(this,null,function*(){rt({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new ke.Setting(t).setName("Set done date on every completed task").setDesc(Yt.createFragmentWithHTML('Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Dates#Done+date">documentation</a>.</p>')).addToggle(i=>{let s=Z();i.setValue(s.setDoneDate).onChange(a=>L(this,null,function*(){rt({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new ke.Setting(t).setName("Set cancelled date on every cancelled task").setDesc(Yt.createFragmentWithHTML('Enabling this will add a timestamp \u274C YYYY-MM-DD at the end when a task is toggled to cancelled.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Dates#Cancelled+date">documentation</a>.</p>')).addToggle(i=>{let s=Z();i.setValue(s.setCancelledDate).onChange(a=>L(this,null,function*(){rt({setCancelledDate:a}),yield this.plugin.saveSettings()}))}),new ke.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(Yt.createFragmentWithHTML('Save time entering Scheduled (\u23F3) dates.</br>If this option is enabled, any undated tasks will be given a default Scheduled date extracted from their file name.</br>The date in the file name must be in one of <code>YYYY-MM-DD</code> or <code>YYYYMMDD</code> formats.</br>Undated tasks have none of Due (\u{1F4C5} ), Scheduled (\u23F3) and Start (\u{1F6EB}) dates.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Use+Filename+as+Default+Date">documentation</a>.</p>')).addToggle(i=>{let s=Z();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>L(this,null,function*(){rt({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new ke.Setting(t).setName("Folders with default Scheduled dates").setDesc("Leave empty if you want to use default Scheduled dates everywhere, or enter a comma-separated list of folders.").addText(i=>L(this,null,function*(){let s=Z();yield this.plugin.saveSettings(),i.setValue(Yt.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>L(this,null,function*(){let o=Yt.parseCommaSeparatedFolders(a);rt({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new ke.Setting(t).setName("Next recurrence appears on the line below").setDesc(Yt.createFragmentWithHTML('Enabling this will make the next recurrence of a task appear on the line below the completed task. Otherwise the next recurrence will appear before the completed one.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Recurring+Tasks">documentation</a>.</p>')).addToggle(i=>{let{recurrenceOnNextLine:s}=Z();i.setValue(s).onChange(a=>L(this,null,function*(){rt({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new ke.Setting(t).setName("Auto-suggest task content").setDesc(Yt.createFragmentWithHTML('Enabling this will open an intelligent suggest menu while typing inside a recognized task line.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Auto-Suggest">documentation</a>.</p>')).addToggle(i=>{let s=Z();i.setValue(s.autoSuggestInEditor).onChange(a=>L(this,null,function*(){rt({au
`);t(o)}).open(),n};var Pk=(r,e)=>{let t=xl({line:"",path:""});return new si({app:r,task:t,onSubmit:e,allTasks:[]})};var Nk=r=>({createTaskLineModal:()=>Ak(r,Pk)});var vc=class extends Ik.Plugin{get apiV1(){return Nk(app)}onload(){return L(this,null,function*(){Nt.registerConsoleLogger(),Hm("info",`loading plugin "${this.manifest.name}" v${this.manifest.version}`),yield this.loadSettings();let{loggingOptions:t}=Z();Nt.configure(t),this.addSettingTab(new Zo({plugin:this})),jv({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let n=new cc({obsidianEvents:this.app.workspace});this.cache=new Ui({metadataCache:this.app.metadataCache,vault:this.app.vault,events:n}),this.inlineRenderer=new pc({plugin:this}),this.queryRenderer=new bc({plugin:this,events:n}),this.registerEditorExtension(ck()),this.registerEditorSuggest(new _c(this.app,Z())),new Rl({plugin:this})})}loadTaskStatuses(){return L(this,null,function*(){let{statusSettings:t}=Z();Le.applyToStatusRegistry(t,De.getInstance())})}onunload(){var t;Hm("info",`unloading plugin "${this.manifest.name}" v${this.manifest.version}`),(t=this.cache)==null||t.unload()}loadSettings(){return L(this,null,function*(){let t=yield this.loadData();rt(t),t=Z(),ye.getInstance().set(t.globalFilter),ye.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),Er.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return L(this,null,function*(){yield this.saveData(Z())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}};
2023-03-29 16:30:35 +00:00
/*!
* EventEmitter2
* https://github.com/hij1nx/EventEmitter2
*
* Copyright (c) 2013 hij1nx
* Licensed under the MIT license.
*/
2023-09-25 22:44:52 +00:00
/*!
* mustache.js - Logic-less {{mustache}} templates with JavaScript
* http://github.com/janl/mustache.js
*/