You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

280 lines
392 KiB

2 years ago
/*
3 years ago
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3 years ago
if you want to view the source visit the plugins github repository
*/
/*
License obsidian-tasks:
MIT License
Copyright (c) 2021 Martin Schenck and Clare Macrae
3 years ago
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.
*/
1 year ago
"use strict";var M_=Object.create;var Xi=Object.defineProperty,x_=Object.defineProperties,A_=Object.getOwnPropertyDescriptor,C_=Object.getOwnPropertyDescriptors,P_=Object.getOwnPropertyNames,Up=Object.getOwnPropertySymbols,N_=Object.getPrototypeOf,qp=Object.prototype.hasOwnProperty,I_=Object.prototype.propertyIsEnumerable;var Wp=(r,e,t)=>e in r?Xi(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,pe=(r,e)=>{for(var t in e||(e={}))qp.call(e,t)&&Wp(r,t,e[t]);if(Up)for(var t of Up(e))I_.call(e,t)&&Wp(r,t,e[t]);return r},Tt=(r,e)=>x_(r,C_(e));var b=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),F_=(r,e)=>{for(var t in e)Xi(r,t,{get:e[t],enumerable:!0})},$p=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of P_(e))!qp.call(r,i)&&i!==t&&Xi(r,i,{get:()=>e[i],enumerable:!(n=A_(e,i))||n.enumerable});return r};var Zi=(r,e,t)=>(t=r!=null?M_(N_(r)):{},$p(e||!r||!r.__esModule?Xi(t,"default",{value:r,enumerable:!0}):t,r)),L_=r=>$p(Xi({},"__esModule",{value:!0}),r);var q=(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 Ee=b(Xr=>{"use strict";Object.defineProperty(Xr,"__esModule",{value:!0});Xr.matchAnyPattern=Xr.extractTerms=Xr.repeatedTimeunitPattern=void 0;function $_(r,e){let t=e.replace(/\((?!\?)/g,"(?:");return`${r}${t}\\s{0,5}(?:,?\\s{0,5}${t}){0,10}`}Xr.repeatedTimeunitPattern=$_;function Yp(r){let e;return r instanceof Array?e=[...r]:r instanceof Map?e=Array.from(r.keys()):e=Object.keys(r),e}Xr.extractTerms=Yp;function Y_(r){return`(?:${Yp(r).sort((t,n)=>n.length-t.length).join("|").replace(/\./g,"\\.")})`}Xr.matchAnyPattern=Y_});var Te=b((Iu,Fu)=>{(function(r,e){typeof Iu=="object"&&typeof Fu!="undefined"?Fu.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs=e()})(Iu,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",p="year",h="date",_="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,w=/\[([^\]]+)]|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,M={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("_")},P=function(B,A,E){var H=String(B);return!H||H.length>=A?B:""+Array(A+1-H.length).join(E)+B},N={s:P,z:function(B){var A=-B.utcOffset(),E=Math.abs(A),H=Math.floor(E/60),C=E%60;return(A<=0?"+":"-")+P(H,2,"0")+":"+P(C,2,"0")},m:function B(A,E){if(A.date()<E.date())return-B(E,A);var H=12*(E.year()-A.year())+(E.month()-A.month()),C=A.clone().add(H,l),Z=E-C<0,d=A.clone().add(H+(Z?-1:1),l);return+(-(H+(E-C)/(Z?C-d:d-C))||0)},a:function(B){return B<0?Math.ceil(B)||0:Math.floor(B)},p:function(B){return{M:l,y:p,w:u,d:o,D:h,h:a,m:s,s:i,ms:n,Q:c}[B]||String(B||"").toLowerCase().replace(/s$/,"")},u:function(B){return B===void 0}},F="en",X={};X[F]=M;var V=function(B){return B instanceof Ce},he=function(B,A,E){var H;if(!B)return F;if(typeof B=="string")X[B]&&(H=B),A&&(X[B]=A,H=B);else{var C=B.name;X[C]=B,H=C}return!E&&H&&(F=H),H||!E&&F},j=function(B,A){if(V(B))return B.clone();var E=typeof A=="object"?A:{};return E.date=B,E.args=arguments,new Ce(E)},G=N;G.l=he,G.i=V,G.w=function(B,A){return j(B,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var Ce=function(){function B(E){this.$L=he(E.locale,null,!0),this.parse(E)}var A=B.prototype;return A.parse=function(E){this.$d=function(H){var C=H.date,Z=H.utc;if(C===null)return new Date(NaN);if(G.u(C))return new Date;if(C instanceof Date)return new Date(C);if(typeof C=="string"&&!/Z$/i.test(C)){var d=C.match(y);if(d){var f=d[2]-1||0,m=(d[7]||"0").substring(0,3);return Z?new Date(Date.UTC(d[1],f,d[3]||1,d[4]||0,d[5]||0,d[6]||0,m)):new Date(d[1],f,d[3]||1,d[4]||0,d[5]||0,d[6]||0,m)}}return new Date(C)}(E),this.$x=E.x||{},this.init()},A.in
`).map(gx).filter(function(t){return t!==null});return at(at({},e[0]),e[1])}function ia(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=ea(i),e}function gx(r){if(r=r.replace(/^\s+|\s+$/,""),!r.length)return null;var e=/^([A-Z]+?)[:;]/.exec(r.toUpperCase());if(!e)return CT(r);var t=e[1];switch(t.toUpperCase()){case"RRULE":case"EXRULE":return CT(r);case"DTSTART":return ia(r);default:throw new Error("Unsupported RFC prop ".concat(t," in ").concat(r))}}function CT(r){var e=r.replace(/^RRULE:/i,""),t=ia(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=ae[o.toUpperCase()];break;case"WKST":t.wkst=Vt[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=yx(o),l=a.toLowerCase();t[l]=u;break;case"BYWEEKDAY":case"BYDAY":t.byweekday=Tx(o);break;case"DTSTART":case"TZID":var c=ia(r);t.tzid=c.tzid,t.dtstart=c.dtstart;break;case"UNTIL":t.until=ea(o);break;case"BYEASTER":t.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+a+"'")}}),t}function yx(r){if(r.indexOf(",")!==-1){var e=r.split(",");return e.map(PT)}return PT(r)}function PT(r){return/^[+-]?\d+$/.test(r)?Number(r):r}function Tx(r){var e=r.split(",");return e.map(function(t){if(t.length===2)return Vt[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=Vt[s].weekday;return new Ye(a,i)})}var Cn=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=yi(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:wT(this.date,this.tzid)},r}();function aa(r){for(var e=[],t="",n=Object.keys(r),i=Object.keys(na),s=0;s<n.length;s++)if(n[s]!=="tzid"&&!!ce(i,n[s])){var a=n[s].toUpperCase(),o=r[n[s]],u="";if(!(!Re(o)||st(o)&&!o.length)){switch(a){case"FREQ":u=$.FREQUENCIES[r.freq];break;case"WKST":Pt(o)?u=new Ye(o).toString():u=o.toString();break;case"BYWEEKDAY":a="BYDAY",u=yT(o).map(function(_){return _ instanceof Ye?_:st(_)?new Ye(_[0],_[1]):new Ye(_)}).toString();break;case"DTSTART":t=bx(o,r.tzid);break;case"UNTIL":u=yi(o,!r.tzid);break;default:if(st(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 p=e.map(function(_){var y=_[0],w=_[1];return"".concat(y,"=").concat(w.toString())}).join(";"),h="";return p!==""&&(h="RRULE:".concat(p)),[t,h].filter(function(_){return!!_}).join(`
`)}function bx(r,e){return r?"DTSTART"+new Cn(new Date(r),e).toString():""}function _x(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 NT=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?Po(t):Rf(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 p=0;p<i.length;p++){var h=i[p];if(!_x(t[h],c[h]))return!0}return!1},a=this[e];if(e==="all")n=this.all;else if(st(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 qr(e,t),o=0;o<this.all.length&&l.accept(this.all[o]);o++);n=l.getValue(),this._cacheAdd(e,n,t)}return st(n)?Rf(n):n instanceof Date?Po(n):n},r}();var IT=x(x(x(x(x(x(x(x(x(x(x(x(x([],ue(1,31),!0),ue(2,28),!0),ue(3,31),!0),ue(4,30),!0),ue(5,31),!0),ue(6,30),!0),ue(7,31),!0),ue(8,31),!0),ue(9,30),!0),ue(10,31),!0),ue(11,30),!0),ue(12,31),!0),ue(1,7),!0),FT=x(x(x(x(x(x(x(x(x(x(x(x(x([],ue(1,31),!0),ue(2,29),!0),ue(3,31),!0),ue(4,30),!0),ue(5,31),!0),ue(6,30),!0),ue(7,31),!0),ue(8,31),!0),ue(9,30),!0),ue(10,31),!0),ue(11,30),!0),ue(12,31),!0),ue(1,7),!0),vx=Kt(1,29),Ex=Kt(1,30),sn=Kt(1,31),lt=Kt(1,32),LT=x(x(x(x(x(x(x(x(x(x(x(x(x([],lt,!0),Ex,!0),lt,!0),sn,!0),lt,!0),sn,!0),lt,!0),lt,!0),sn,!0),lt,!0),sn,!0),lt,!0),lt.slice(0,7),!0),UT=x(x(x(x(x(x(x(x(x(x(x(x(x([],lt,!0),vx,!0),lt,!0),sn,!0),lt,!0),sn,!0),lt,!0),lt,!0),sn,!0),lt,!0),sn,!0),lt,!0),lt.slice(0,7),!0),wx=Kt(-28,0),kx=Kt(-29,0),an=Kt(-30,0),ct=Kt(-31,0),WT=x(x(x(x(x(x(x(x(x(x(x(x(x([],ct,!0),kx,!0),ct,!0),an,!0),ct,!0),an,!0),ct,!0),ct,!0),an,!0),ct,!0),an,!0),ct,!0),ct.slice(0,7),!0),qT=x(x(x(x(x(x(x(x(x(x(x(x(x([],ct,!0),wx,!0),ct,!0),an,!0),ct,!0),an,!0),ct,!0),ct,!0),an,!0),ct,!0),an,!0),ct,!0),ct.slice(0,7),!0),$T=[0,31,60,91,121,152,182,213,244,274,305,335,366],YT=[0,31,59,90,120,151,181,212,243,273,304,334,365],Cf=function(){for(var r=[],e=0;e<55;e++)r=r.concat(Kt(7));return r}();function jT(r,e){var t=Tr(r,1,1),n=gi(r)?366:365,i=gi(r+1)?366:365,s=Js(t),a=Ur(t),o=at(at({yearlen:n,nextyearlen:i,yearordinal:s,yearweekday:a},Ox(r)),{wnomask:null});if(Nt(e.byweekno))return o;o.wnomask=ue(0,n+7);var u,l,c=u=ut(7-a+e.wkst,7);c>=4?(c=0,l=o.yearlen+ut(a-e.wkst,7)):l=n-c;for(var p=Math.floor(l/7),h=ut(l,7),_=Math.floor(p+h/4),y=0;y<e.byweekno.length;y++){var w=e.byweekno[y];if(w<0&&(w+=_+1),w>0&&w<=_){var M=void 0;w>1?(M=c+(w-1)*7,c!==u&&(M-=7-u)):M=c;for(var P=0;P<7&&(o.wnomask[M]=1,M++,o.wdaymask[M]!==e.wkst);P++);}}if(ce(e.byweekno,1)){var M=c+_*7;if(c!==u&&(M-=7-u),M<n)for(var y=0;y<7&&(o.wnomask[M]=1,M+=1,o.wdaymask[M]!==e.wkst);y++);}if(c){var N=void 0;if(ce(e.byweekno,-1))N=-1;else{var F=Ur(Tr(r-1,1,1)),X=ut(7-F.valueOf()+e.wkst,7),V=gi(r-1)?366:365,he=void 0;X>=4?(X=0,he=V+ut(F-e.wkst,7)):he=n-c,N=Math.floor(52+ut(he,7)/4)}if(ce(e.byweekno,N))for(var M=0;M<c;M++)o.wnomask[M]=1}return o}function Ox(r){var e=gi(r)?366:365,t=Tr(r,1,1),n=Ur(t);return e===365?{mmask:IT,mdaymask:UT,nmdaymask:qT,wdaymask:Cf.slice(n),mrange:YT}:{mmask:FT,mdaymask:LT,nmdaymask:WT,wdaymask:Cf.slice(n),mrange:$T}}function GT(r,e,t,n,i,s){var a={lastyear:r,lastmonth:e,nwdaymask:[]},o=[];if(s.freq===$.YEARLY)if(Nt(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===$.MONTHLY&&(o=[n.slice(e-1,e+1)]);if(Nt(o))return a;a.nwdaymask=ue(0,t);for(var u=0;u<o.length;u++)for(var l=o[u],c=l[0],p=l[1]-1,h=0;h<s.bynweekday.length;h++){var _=void 0,y=s.bynweekday[h],w=y[0],M=y[1];M<0?(_=p+(M+1)*7,_-=ut(i[_]-w,7)):(_=c+(M-1)*7,_+=ut(7-i[_]+w,7)),c<=_&&_<=p&&(a.nwdaymask[_]=1)}return a}function BT(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),p=i%4,h=Math.floor(32+2*a+2*c-l-p)%7,_=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 Fx(r){r.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function XT(r,e){return Fx(e),r.split(",").map(function(t){return ea(t)})}function ZT(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 Nf=function(r){Ti(e,r);function e(t){t===void 0&&(t=!1);var n=r.call(this,{},t)||this;return n.dtstart=ZT.apply(n,["dtstart"]),n.tzid=ZT.apply(n,["tzid"]),n._rrule=[],n._rdate=[],n._exrule=[],n._exdate=[],n}return e.prototype._iter=function(t){return VT(t,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},e.prototype.rrule=function(t){JT(t,this._rrule)},e.prototype.exrule=function(t){JT(t,this._exrule)},e.prototype.rdate=function(t){eb(t,this._rdate)},e.prototype.exdate=function(t){eb(t,this._exdate)},e.prototype.rrules=function(){return this._rrule.map(function(t){return Io(t.toString())})},e.prototype.exrules=function(){return this._exrule.map(function(t){return Io(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(aa({dtstart:this._dtstart}))),this._rrule.forEach(function(n){t=t.concat(n.toString().split(`
3 years ago
`))}),this._exrule.forEach(function(n){t=t.concat(n.toString().split(`
1 year ago
`).map(function(i){return i.replace(/^RRULE:/,"EXRULE:")}).filter(function(i){return!/^DTSTART/.test(i)}))}),this._rdate.length&&t.push(tb("RDATE",this._rdate,this.tzid())),this._exdate.length&&t.push(tb("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}($);function JT(r,e){if(!(r instanceof $))throw new TypeError(String(r)+" is not RRule instance");ce(e.map(String),String(r))||e.push(r)}function eb(r,e){if(!(r instanceof Date))throw new TypeError(String(r)+" is not Date instance");ce(e.map(Number),Number(r))||(e.push(r),Wr(e))}function tb(r,e,t){var n=!t||t.toUpperCase()==="UTC",i=n?"".concat(r,":"):"".concat(r,";TZID=").concat(t,":"),s=e.map(function(a){return yi(a.valueOf(),n)}).join(",");return"".concat(i).concat(s)}function Yr(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()||r.isAfter(e)?1:r.isBefore(e)?-1:0:0}var Ze=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=$.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 $(u);return new Ze({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(){let e=this.nextReferenceDate();if(e!==null){let t=null,n=null,i=null;if(this.referenceDate){if(this.startDate){let s=window.moment.duration(this.startDate.diff(this.referenceDate));t=window.moment(e),t.add(Math.round(s.asDays()),"days")}if(this.scheduledDate){let s=window.moment.duration(this.scheduledDate.diff(this.referenceDate));n=window.moment(e),n.add(Math.round(s.asDays()),"days")}if(this.dueDate){let s=window.moment.duration(this.dueDate.diff(this.referenceDate));i=window.moment(e),i.add(Math.round(s.asDays()),"days")}}return{startDate:t,scheduledDate:n,dueDate:i}}return null}identicalTo(e){return this.baseOnToday!==e.baseOnToday||Yr(this.startDate,e.startDate)!==0||Yr(this.scheduledDate,e.scheduledDate)!==0||Yr(this.dueDate,e.dueDate)!==0?!1:this.toText()===e.toText()}nextReferenceDate(){if(this.baseOnToday){let e=window.moment();return this.nextReferenceDateFromToday(e).toDate()}else return this.nextReferenceDateFromOriginalReferenceDate().toDate()}nextReferenceDateFromToday(e){let t=new $(Tt(pe({},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=Ze.nextAfterMonths(e,n,t,s[1])));let a=i.match(/every( \d+)? year(s)?(.*)?/);return a!==null&&(n=Ze.nextAfterYears(e,n,t,a[1])),Ze.addTimezone(n)}static nextAfterMonths(e,t,n,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));Ze.isSkippingTooManyMonths(e,t,s);)t=Ze.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}static nextAfterYears(e,t,n,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));Ze.isSkippingTooManyYears(e,t,s);)t=Ze.fromOneDayEarlier(e,n);return t}static isSkippingTooManyYears(e,t,n){return t.year()-e.year()>n}static fromOneDayEarlier(e,t){e.subtract(1,"days").endOf("day");let n=t.origOptions;return n.dtstart=e.startOf("day").toDat
`}),a=a.slice(0,s.autoSuggestMaxItems),a}}function Lx(r,e,t,n){let i=u=>Object.values(n.prioritySymbols).some(l=>l.length>0&&u.includes(l)),s=[];if(r.includes(n.dueDateSymbol)||s.push({displayText:`${n.dueDateSymbol} due date`,appendText:`${n.dueDateSymbol} `}),r.includes(n.startDateSymbol)||s.push({displayText:`${n.startDateSymbol} start date`,appendText:`${n.startDateSymbol} `}),r.includes(n.scheduledDateSymbol)||s.push({displayText:`${n.scheduledDateSymbol} scheduled date`,appendText:`${n.scheduledDateSymbol} `}),i(r)||(s.push({displayText:`${n.prioritySymbols.High} high priority`,appendText:`${n.prioritySymbols.High} `}),s.push({displayText:`${n.prioritySymbols.Medium} medium priority`,appendText:`${n.prioritySymbols.Medium} `}),s.push({displayText:`${n.prioritySymbols.Low} low priority`,appendText:`${n.prioritySymbols.Low} `}),s.push({displayText:`${n.prioritySymbols.Highest} highest priority`,appendText:`${n.prioritySymbols.Highest} `}),s.push({displayText:`${n.prioritySymbols.Lowest} lowest priority`,appendText:`${n.prioritySymbols.Lowest} `})),r.includes(n.recurrenceSymbol)||s.push({displayText:`${n.recurrenceSymbol} recurring (repeat)`,appendText:`${n.recurrenceSymbol} `}),!r.includes(n.createdDateSymbol)){let l=Ct.parseDate("today",!0).format(z.dateFormat);s.push({textToMatch:`${n.createdDateSymbol} created`,displayText:`${n.createdDateSymbol} created today (${l})`,appendText:`${n.createdDateSymbol} ${l} `})}let a=Lf(r,/([a-zA-Z'_-]*)/g,e),o=[];if(a&&a.length>0){let u=a[0];if(u.length>=Math.max(1,t.autoSuggestMinMatch)){let l=s.filter(c=>(c.textToMatch||c.displayText).toLowerCase().includes(u.toLowerCase()));for(let c of l)o.push({suggestionType:"match",displayText:c.displayText,appendText:c.appendText,insertAt:a.index,insertSkip:u.length})}}return o.length===0&&t.autoSuggestMinMatch===0?s:o}function Ux(r,e,t,n,i){let s=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],a=[],o=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),u=Lf(r,o,e);if(u&&u.length>=2){let l=u[1],c=u[2];if(c.length<t.autoSuggestMinMatch)return[];let p=c&&c.length>1?Ct.parseDate(mi(c),!0):null;p&&p.isValid()&&a.push({displayText:`${p.format(z.dateFormat)}`,appendText:`${l} ${p.format(z.dateFormat)} `,insertAt:u.index,insertSkip:u[0].length});let h=1,_=s.filter(y=>c&&c.length>=h&&y.toLowerCase().includes(c.toLowerCase())).slice(0,i);_.length===0&&(_=s.slice(0,i));for(let y of _){let M=`${Ct.parseDate(y,!0).format(z.dateFormat)}`;a.push({suggestionType:"match",displayText:`${y} (${M})`,appendText:`${l} ${M} `,insertAt:u.index,insertSkip:u[0].length})}}return a}function Wx(r,e,t,n){var u;let i=["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"],s=[],a=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),o=Lf(r,a,e);if(o&&o.length>=2){let l=o[1],c=o[2];if(c.length<t.autoSuggestMinMatch)return[];if(c.length>0){let y=(u=Ze.fromText({recurrenceRuleText:c,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:u.toText();if(y){let w=`${l} ${y} `;if(s.push({suggestionType:"match",displayText:`\u2705 ${y}`,appendText:w,insertAt:o.index,insertSkip:o[0].length}),o[0]==w)return[]}}let p=1,h=t.autoSuggestMaxItems/2,_=i.filter(y=>c&&c.length>=p&&y.toLowerCase().includes(c.toLowerCase())).slice(0,h);_.length===0&&c.trim().length===0&&(_=i.slice(0,h));for(let y of _)s.push({suggestionType:"match",displayText:`${y}`,appendText:`${l} ${y} `,insertAt:o.index,insertSkip:o[0].length})}return s}function Lf(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 qx(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 r)i in t?t[i]++:i in n&&(t[n[i]]=Math.max(0,t[n[i]]-1));return Object.values(t).some(i=>i>0)}function nb(r,e){return(t,n,i)=>qx(t.slice
`),o=a.length,u=new ca(()=>Rt.fromPath(i.path)),l=null,c=0;for(let p of t)if(p.task!==void 0){let h=p.position.start.line;if(h>=o)return console.log(`${i.path} Obsidian gave us a line number ${h} past the end of the file. ${o}.`),s;if((l===null||l.position.end.line<h)&&(l=Fn.getSection(h,n.sections),c=0),l===null)continue;let _=a[h];if(_===void 0){console.log(`${i.path}: line ${h} - ignoring 'undefined' line.`);continue}let y;try{y=ye.fromLine({line:_,taskLocation:new ot(i.path,h,l.position.start.line,c,Fn.getPrecedingHeader(h,n.headings)),fallbackDate:u.value})}catch(w){this.reportTaskParsingErrorToUser(w,i,p,_);continue}y!==null&&(c++,s.push(y))}return s}reportTaskParsingErrorToUser(e,t,n,i){let s=`There was an error reading one of the tasks in this vault.
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}
2 years ago
Task line: ${i}
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.
1 year ago
`;console.error(s),e instanceof Error&&console.error(e.stack),this.state==="Initializing"&&new Ei.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 Qf=require("obsidian");var kb=require("obsidian");function Br(){}function Yf(r){return r()}function ob(){return Object.create(null)}function Un(r){r.forEach(Yf)}function Wo(r){return typeof r=="function"}function lb(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function cb(r){return Object.keys(r).length===0}var db=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,fa=class{constructor(e){this.options=e,this._listeners="WeakMap"in db?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)fa.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};fa.entries="WeakMap"in db?new WeakMap:void 0;var fb=!1;function Bx(){fb=!0}function Hx(){fb=!1}function R(r,e){r.appendChild(e)}function Si(r,e,t){r.insertBefore(e,t||null)}function Wn(r){r.parentNode&&r.parentNode.removeChild(r)}function jf(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 zx(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function dt(r){return document.createTextNode(r)}function de(){return dt(" ")}function Et(r,e,t,n){return r.addEventListener(e,t,n),()=>r.removeEventListener(e,t,n)}function pb(r){return function(e){return e.preventDefault(),r.call(this,e)}}function L(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function hb(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 Kx(r){return Array.from(r.childNodes)}function Gf(r,e){e=""+e,r.data!==e&&(r.data=e)}function ur(r,e){r.value=e==null?"":e}function Bf(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 mb(r){let e=r.querySelector(":checked");return e&&e.__value}function lr(r,e,t){r.classList[t?"add":"remove"](e)}var Ln=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=zx(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)Si(this.t,this.n[t],e)}p(e){this.d(),this.h(e),this.i(this.a)}d(){this.n.forEach(Wn)}};var pa;function da(r){pa=r}function Vx(){if(!pa)throw new Error("Function called outside component initialization");return pa}function Hf(r){Vx().$$.on_mount.push(r)}var ki=[];var qo=[],Oi=[],ub=[],Qx=Promise.resolve(),$f=!1;function Xx(){$f||($f=!0,Qx.then(gb))}function ha(r){Oi.push(r)}var qf=new Set,wi=0;function gb(){if(wi!==0)return;let r=pa;do{try{for(;wi<ki.length;){let e=ki[wi];wi++,da(e),Zx(e.$$)}}catch(e){throw ki.length=0,wi=0,e}for(da(null),ki.length=0,wi=0;qo.length;)qo.pop()();for(let e=0;e<Oi.length;e+=1){let t=Oi[e];qf.has(t)||(qf.add(t),t())}Oi.length=0}while(ki.length);for(;ub.length;)ub.pop()();$f=!1,qf.clear(),da(r)}function Zx(r){if(r.fragment!==null){r.update(),Un(r.before_update);let e=r.dirty;r.dirty=[-1],r.fragment&&r.fragment.p(r.ctx,e),r.after_update.forEach(ha)}}function Jx(r){let e=[],t=[];Oi.forEach(n=>r.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),Oi=e}var eA=new Set;function tA(r,e){r&&r.i&&(eA.delete(r),r.i(e))}var rA=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","ch
<span class="accesskey-first">future</span> dates:`,Op=de(),fr=K("input"),Sp=de(),Vn=K("div"),Da=K("label"),Da.innerHTML='Stat<span class="accesskey">u</span>s',Dp=de(),qt=K("select");for(let Y=0;Y<yt.length;Y+=1)yt[Y].c();Rp=de(),Vr=K("div"),Hi=K("div"),Ma=K("label"),Ma.textContent="Completed:",Mp=de(),Qr=K("input"),xp=de(),zi=K("div"),Au=K("span"),Au.textContent="Created on:",Ap=de(),Aa=K("code"),Cp=de(),Ki=K("div"),Cu=K("span"),Cu.textContent="Done on:",Pp=de(),Ca=K("code"),Np=de(),Qn=K("div"),yn=K("button"),Ip=dt("Apply"),Fp=de(),Vi=K("button"),Vi.textContent="Cancel",L(i,"for","description"),L(a,"id","description"),L(a,"class","tasks-modal-description"),L(a,"placeholder","Take out the trash"),L(a,"accesskey",o=r[15]("t")),L(n,"class","tasks-modal-section"),L(c,"for",h="priority-"+r[1].priority),L(l,"class","tasks-modal-section tasks-modal-priorities"),L(M,"for","recurrence"),L(M,"class","accesskey-first"),L(N,"id","recurrence"),L(N,"type","text"),L(N,"placeholder","Try 'every 2 weeks on Thursday'."),L(N,"accesskey",F=r[15]("r")),lr(N,"tasks-modal-error",!r[8]),G.a=null,L(Ie,"for","due"),L(Ie,"class","accesskey-first"),L(A,"id","due"),L(A,"type","text"),L(A,"placeholder",zf),L(A,"accesskey",E=r[15]("d")),lr(A,"tasks-modal-error",!r[7]),f.a=null,L(g,"for","scheduled"),L(g,"class","accesskey-first"),L(v,"id","scheduled"),L(v,"type","text"),L(v,"placeholder",zf),L(v,"accesskey",k=r[15]("s")),lr(v,"tasks-modal-error",!r[5]),me.a=null,L(re,"for","start"),L(U,"id","start"),L(U,"type","text"),L(U,"placeholder",zf),L(U,"accesskey",Me=r[15]("a")),lr(U,"tasks-modal-error",!r[3]),Fe.a=null,L(Oa,"for","forwardOnly"),L(fr,"id","forwardOnly"),L(fr,"type","checkbox"),L(fr,"class","task-list-item-checkbox tasks-modal-checkbox"),L(fr,"accesskey",Sa=r[15]("f")),L(w,"class","tasks-modal-section tasks-modal-dates"),L(Da,"for","status"),L(qt,"id","status-type"),L(qt,"class","dropdown"),L(qt,"accesskey",Ra=r[15]("u")),r[1].status===void 0&&ha(()=>r[39].call(qt)),L(Vn,"class","tasks-modal-section"),L(Ma,"for","status"),L(Qr,"id","status"),L(Qr,"type","checkbox"),L(Qr,"class","task-list-item-checkbox tasks-modal-checkbox"),Qr.checked=xa=r[1].status.isCompleted(),Qr.disabled=!0,L(Vr,"class","tasks-modal-section tasks-modal-status"),yn.disabled=Pa=!r[14],L(yn,"type","submit"),L(yn,"class","mod-cta"),L(Vi,"type","button"),L(Qn,"class","tasks-modal-section tasks-modal-buttons"),lr(t,"with-accesskeys",r[9]),L(e,"class","tasks-modal")},m(Y,fe){Si(Y,e,fe),R(e,t),R(t,n),R(n,i),R(n,s),R(n,a),ur(a,r[1].description),r[31](a),R(t,u),R(t,l),R(l,c),R(c,p),R(l,_);for(let le=0;le<gt.length;le+=1)gt[le]&&gt[le].m(l,null);R(t,y),R(t,w),R(w,M),R(w,P),R(w,N),ur(N,r[1].recurrenceRule),R(w,X),R(w,V),R(V,he),R(V,j),G.m(r[12],V),R(w,Ce),R(w,Ie),R(w,B),R(w,A),ur(A,r[1].dueDate),R(w,H),R(w,C),R(C,Z),R(C,d),f.m(r[6],C),R(w,m),R(w,g),R(w,T),R(w,v),ur(v,r[1].scheduledDate),R(w,D),R(w,O),R(O,S),R(O,I),me.m(r[4],O),R(w,se),R(w,re),R(w,Se),R(w,U),ur(U,r[1].startDate),R(w,Ae),R(w,tt),R(tt,Rr),R(tt,Ue),Fe.m(r[2],tt),R(w,kp),R(w,Bi),R(Bi,Oa),R(Bi,Op),R(Bi,fr),fr.checked=r[1].forwardOnly,R(t,Sp),R(t,Vn),R(Vn,Da),R(Vn,Dp),R(Vn,qt);for(let le=0;le<yt.length;le+=1)yt[le]&&yt[le].m(qt,null);Bf(qt,r[1].status,!0),R(t,Rp),R(t,Vr),R(Vr,Hi),R(Hi,Ma),R(Hi,Mp),R(Hi,Qr),R(Vr,xp),R(Vr,zi),R(zi,Au),R(zi,Ap),R(zi,Aa),Aa.innerHTML=r[11],R(Vr,Cp),R(Vr,Ki),R(Ki,Cu),R(Ki,Pp),R(Ki,Ca),Ca.innerHTML=r[13],R(t,Np),R(t,Qn),R(Qn,yn),R(yn,Ip),R(Qn,Fp),R(Qn,Vi),Pu||(Lp=[Et(a,"input",r[30]),Et(a,"keydown",r[23]),Et(a,"paste",r[24]),Et(a,"drop",r[24]),Et(l,"keyup",r[21]),Et(N,"input",r[34]),Et(A,"input",r[35]),Et(v,"input",r[36]),Et(U,"input",r[37]),Et(fr,"change",r[38]),Et(qt,"change",r[39]),Et(Vi,"click",r[22]),Et(t,"submit",pb(r[25]))],Pu=!0)},p(Y,fe){if(fe[0]&32768&&o!==(o=Y[15]("t"))&&L(a,"accesskey",o),fe[0]&3&&ur(a,Y[1].description),fe[0]&3&&h!==(h="priority-"+Y[1].priority)&&L(c,"for",h),fe[0]&1081346){Xn=Y[20];let le;for(le=0;le<Xn.length;le+=1){let Qi=_b(Y,Xn,le);gt[le]?gt[le].p(Qi,fe):(gt[le]=vb(Qi),gt[le].c(),gt[le].m(l,null))}for(;le<gt.length;le+=1)gt[le].d(1);gt.lengt
`);e.setLine(a,_)};new cn({app:n,task:u,onSubmit:l}).open()};var Xf=require("obsidian");var Sb=(r,e,t)=>{var u;if(r)return t instanceof Xf.MarkdownView;if(!(t instanceof Xf.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=dA(a,n);e.setLine(s,o.text),e.setCursor(fA(i,o))},dA=(r,e)=>{let t=ye.fromLine({line:r,taskLocation:ot.fromUnknownPosition(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(z.taskRegex);if(n!==null){let i=n[3],a=De.getInstance().bySymbol(i).nextStatusSymbol;return{text:r.replace(z.taskRegex,`$1- [${a}] $4`)}}else if(z.listItemRegex.test(r)){let i=r.replace(z.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=r.replace(z.indentationRegex,"$1- ");return{text:i,moveTo:{ch:i.length}}}}},fA=(r,e)=>{var s;let t={line:0,ch:r.ch},n=pe(pe({},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 jo=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)=>Ob(t,n,i,this.app)}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:Sb})}};var pA=Object.prototype.toString,Ri=Array.isArray||function(e){return pA.call(e)==="[object Array]"};function Jf(r){return typeof r=="function"}function hA(r){return Ri(r)?"array":typeof r}function Zf(r){return r.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Db(r,e){return r!=null&&typeof r=="object"&&e in r}function mA(r,e){return r!=null&&typeof r!="object"&&r.hasOwnProperty&&r.hasOwnProperty(e)}var gA=RegExp.prototype.test;function yA(r,e){return gA.call(r,e)}var TA=/\S/;function bA(r){return!yA(TA,r)}var _A={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function vA(r){return String(r).replace(/[&<>"'`=\/]/g,function(t){return _A[t]})}var EA=/\s*/,wA=/\s+/,Rb=/\s*=/,kA=/\s*\}/,OA=/#|\^|\/|>|\{|&|=|!/;function SA(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 p,h,_;function y(G){if(typeof G=="string"&&(G=G.split(wA,2)),!Ri(G)||G.length!==2)throw new Error("Invalid tags: "+G);p=new RegExp(Zf(G[0])+"\\s*"),h=new RegExp("\\s*"+Zf(G[1])),_=new RegExp("\\s*"+Zf("}"+G[1]))}y(e||Xt.tags);for(var w=new ga(r),M,P,N,F,X,V;!w.eos();){if(M=w.pos,N=w.scanUntil(p),N)for(var he=0,j=N.length;he<j;++he)F=N.charAt(he),bA(F)?(s.push(i.length),u+=F):(o=!0,t=!0,u+=" "),i.push(["text",F,M,M+1]),M+=1,F===`
`&&(c(),u="",l=0,t=!1);if(!w.scan(p))break;if(a=!0,P=w.scan(OA)||"name",w.scan(EA),P==="="?(N=w.scanUntil(Rb),w.scan(Rb),w.scanUntil(h)):P==="{"?(N=w.scanUntil(_),w.scan(kA),w.scanUntil(h),P="&"):N=w.scanUntil(h),!w.scan(h))throw new Error("Unclosed tag at "+w.pos);if(P==">"?X=[P,N,M,w.pos,u,l,t]:X=[P,N,M,w.pos],l++,i.push(X),P==="#"||P==="^")n.push(X);else if(P==="/"){if(V=n.pop(),!V)throw new Error('Unopened section "'+N+'" at '+M);if(V[1]!==N)throw new Error('Unclosed section "'+V[1]+'" at '+M)}else P==="name"||P==="{"||P==="&"?o=!0:P==="="&&y(N)}if(c(),V=n.pop(),V)throw new Error('Unclosed section "'+V[1]+'" at '+w.pos);return RA(DA(i))}function DA(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 RA(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 ga(r){this.string=r,this.tail=r,this.pos=0}ga.prototype.eos=function(){return this.tail===""};ga.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};ga.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 Di(r,e){this.view=r,this.cache={".":this.view},this.parent=e}Di.prototype.push=function(e){return new Di(e,this)};Di.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=Db(s,a[o])||mA(s,a[o])),s=s[a[o++]];else s=i.view[e],u=Db(i.view,e);if(u){n=s;break}i=i.parent}t[e]=n}return Jf(n)&&(n=n.call(this.view)),n};function wt(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}wt.prototype.clearCache=function(){typeof this.templateCache!="undefined"&&this.templateCache.clear()};wt.prototype.parse=function(e,t){var n=this.templateCache,i=e+":"+(t||Xt.tags).join(":"),s=typeof n!="undefined",a=s?n.get(i):void 0;return a==null&&(a=SA(e,t),s&&n.set(i,a)),a};wt.prototype.render=function(e,t,n,i){var s=this.getConfigTags(i),a=this.parse(e,s),o=t instanceof Di?t:new Di(t,void 0);return this.renderTokens(a,o,n,e,i)};wt.prototype.renderTokens=function(e,t,n,i,s){for(var a="",o,u,l,c=0,p=e.length;c<p;++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};wt.prototype.renderSection=function(e,t,n,i,s){var a=this,o="",u=t.lookup(e[1]);function l(h){return a.render(h,t,n,s)}if(!!u){if(Ri(u))for(var c=0,p=u.length;c<p;++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(Jf(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}};wt.prototype.renderInverted=function(e,t,n,i,s){var a=t.lookup(e[1]);if(!a||Ri(a)&&a.length===0)return this.renderTokens(e[4],t,n,i,s)};wt.prototype.indentPartial=function(e,t,n){for(var i=t.replace(/[^ \t]/g,""),s=e.split(`
1 year ago
`),a=0;a<s.length;a++)s[a].length&&(a>0||!n)&&(s[a]=i+s[a]);return s.join(`
1 year ago
`)};wt.prototype.renderPartial=function(e,t,n,i){if(!!n){var s=this.getConfigTags(i),a=Jf(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 p=this.parse(c,s);return this.renderTokens(p,t,n,c,i)}}};wt.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(n!=null)return n};wt.prototype.escapedValue=function(e,t,n){var i=this.getConfigEscape(n)||Xt.escape,s=t.lookup(e[1]);if(s!=null)return typeof s=="number"&&i===Xt.escape?String(s):i(s)};wt.prototype.rawValue=function(e){return e[1]};wt.prototype.getConfigTags=function(e){return Ri(e)?e:e&&typeof e=="object"?e.tags:void 0};wt.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!Ri(e))return e.escape};var Xt={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){ma.templateCache=r},get templateCache(){return ma.templateCache}},ma=new wt;Xt.clearCache=function(){return ma.clearCache()};Xt.parse=function(e,t){return ma.parse(e,t)};Xt.render=function(e,t,n,i){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+hA(e)+'" was given as the first argument for mustache#render(template, view, partials)');return ma.render(e,t,n,i)};Xt.escape=vA;Xt.Scanner=ga;Xt.Context=Di;Xt.Writer=wt;var ep=Xt;var Pb=Zi(Cb());function Nb(r,e){ep.escape=function(t){return t};try{return ep.render(r,(0,Pb.default)(e))}catch(t){let n="";throw t instanceof Error?n=`There was an error expanding one or more placeholders.
1 year ago
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:
1 year ago
${r}`,Error(n)}}function Ib(r){return{query:{file:new vi(r)}}}function qn(r,e){let t=`Error: ${r}.
2 years ago
The error message was:
1 year ago
`,n="";return e instanceof Error?n+=e:n+="Unknown error",`${t}"${n}"`}var Hr=class{constructor(e,t,n){this.property=e,this.comparator=Hr.maybeReverse(n,t)}static maybeReverse(e,t){return e?Hr.makeReversedComparator(t):t}static makeReversedComparator(e){return(t,n)=>e(t,n)*-1}};var dn=class{constructor(e,t,n){this.property=e,this.grouper=t,this.reverse=n}};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 Fo(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)?`)}comparator(){throw Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(e){return new Hr(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)?$`)}grouper(){throw Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(e){return new dn(this.fieldNameSingular(),this.grouper(),e)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var ke=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 ke("None of",e,"NOT")}static booleanXor(e){return new ke("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 ke(e,t,n)}};var ft=class{constructor(e,t,n){this.instruction=e,this.explanation=n,this.filterFunction=t}explainFilterIndented(e){let t=this.explanation;return t.asString()===this.instruction?`${e}${this.instruction}
2 years ago
`:`${e}${this.instruction} =>
${t.asString(" ")}
1 year ago
`}};var Er=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}static fromObject(e,t){let n=new Er(e);return n._queryComponent=t,n}static fromError(e,t){let n=new Er(e);return n._error=t,n}};var J=class{constructor(e){this.object=e}get instruction(){return this.object.instruction}get filter(){return this.object.queryComponent}get error(){return this.object.error}get filterFunction(){if(this.filter)return this.filter.filterFunction}static fromFilter(e){return new J(Er.fromObject(e.instruction,e))}static fromError(e,t){return new J(Er.fromError(e,t))}};var Go=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e==this._instruction}createFilterOrErrorMessage(e){return e===this._instruction?J.fromFilter(new ft(e,this._filter,new ke(e))):J.fromError(e,`do not understand filter: ${e}`)}};var wr=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new Go(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 J.fromError(e,`do not understand filter: ${e}`)}};var fn=class extends we{constructor(){super(...arguments);this._filters=new wr}canCreateFilterForLine(t){return this._filters.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){return this._filters.createFilterOrErrorMessage(t)}filterRegExp(){return null}};var kr=class extends fn{constructor(){super(),this._filters.add("done",e=>e.isDone),this._filters.add("not done",e=>!e.isDone)}fieldName(){return"status"}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=kr.oldStatusName(e),i=kr.oldStatusName(t);return n<i?1:n>i?-1:0}}static oldStatusName(e){return e.status.symbol===" "?"Todo":"Done"}supportsGrouping(){return!0}grouper(){return e=>[kr.oldStatusName(e)]}};var pt=class extends we{constructor(t=null){super();t!==null?this.filterInstructions=t:(this.filterInstructions=new wr,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){let n=this.filterInstructions.createFilterOrErrorMessage(t);if(n.filter!==void 0)return n;let i=we.getMatch(this.filterRegExp(),t);if(i===null)return J.fromError(t,"do not understand query filter ("+this.fieldName()+" date)");let s=i[1],a=i[2],o=i[3],u=Ct.parseDateRange(o);if(!u.isValid()){let p=Ct.parseDate(s);p.isValid()&&(u=new _t(p,p))}if(!u.isValid())return J.fromError(t,"do not understand "+this.fieldName()+" date");let l=this.buildFilterFunction(a,u),c=pt.buildExplanation(this.fieldNameForExplanation(),a,this.filterResultIfFieldMissing(),u);return J.fromFilter(new ft(t,l,c))}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)? ?(.*))`)}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"af
2 years ago
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.
1 year ago
`}explanation(t){let i=MA(t,"using regex: ",this.regexAsString());return new ke(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 MA(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 xe=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return J.fromError(e,`do not understand query filter (${this.fieldName()})`);let[n,i,s]=t,a=null;if(i.includes("include"))a=new Ai(s);else if(i.includes("regex")){try{a=pn.validateAndConstruct(s)}catch(l){let c=qn("Parsing regular expression",l)+`
2 years ago
1 year ago
${pn.helpMessage()}`;return J.fromError(e,c)}if(a===null)return J.fromError(e,`Invalid instruction: '${e}'
2 years ago
1 year ago
${pn.helpMessage()}`)}if(a===null)return J.fromError(e,`do not understand query filter (${this.fieldName()})`);let o=i.match(/not/)!==null,u=new ft(e,this.getFilter(a,o),a.explanation(e));return J.fromFilter(u)}fieldPattern(){return this.fieldNameSingularEscaped()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`)}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 Ci=class extends xe{fieldName(){return"path"}value(e){return e.path}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(e.path.replace(".md",""))]}};var Pi=class extends we{canCreateFilterForLine(e){return!1}createFilterOrErrorMessage(e){return J.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)}};var Ni=class{static by(e,t){let n=[new Pi().comparator(),new kr().comparator(),new Mi().comparator(),new $n().comparator(),new Ci().comparator()],i=[];for(let s of e)i.push(s.comparator);return t.sort(Ni.makeCompositeComparator([...i,...n]))}static makeCompositeComparator(e){return(t,n)=>{for(let i of e){let s=i(t,n);if(s!==0)return s}return 0}}};var Bo=class{constructor(e,t,n){this.nestingLevel=e,this.displayName=t,this.property=n}};var Ho=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.lastHeadingAtLevel[n]){t.push(new Bo(n,i,this.groupers[n].property));for(let s=n;s<e.length;s++)this.lastHeadingAtLevel[s]="";this.lastHeadingAtLevel[n]=i}}return t}};var zo=class{constructor(e){this.children=new Map;this.values=[];this.values=e}generateAllPaths(e=[]){let t=new Map;if(this.children.size==0)return t.set([...e],this.values),t;for(let[n,i]of this.children)e.push(n),i.generateAllPaths(e).forEach((a,o)=>t.set(o,a)),e.pop();return t}};var Ko=class extends zo{},Vo=class{constructor(e,t){this.root=new Ko(t),this.buildGroupingTree(e)}buildGroupingTree(e){let t=[this.root];for(let n of e){let i=[];for(let s of t)for(let a of s.values){let o=n.grouper(a);o.length===0&&o.push("");for(let u of o){let l=s.children.get(u);l===void 0&&(l=new Ko([]),s.children.set(u,l),i.push(l)),l.values.push(a)}}t=i}}generateTaskTreeStorage(){return this.root.generateAllPaths()}};var Qo=class{constructor(e,t){this.groups=e,this.groupHeadings=[],this.tasks=t}setGroupHeadings(e){for(let t of e)this.groupHeadings.push(t)}applyTaskLimit(e){this.tasks=this.tasks.slice(0,e)}tasksAsStringOfLines(){let e="";for(let t of this.tasks)e+=t.toFileLineString()+`
3 years ago
`;return e}toString(){let e=`
`;e+=`Group names: [${this.groups}]
2 years ago
`;for(let t of this.groupHeadings)e+=`${"#".repeat(4+t.nestingLevel)} [${t.property}] ${t.displayName}
1 year ago
`;return e+=this.tasksAsStringOfLines(),e}};var Ii=class{constructor(e,t){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length,this._groupers=e;let i=new Vo(e,t).generateTaskTreeStorage();this.addTaskGroups(i),this.sortTaskGroups(),this.setGroupsHeadings(i)}get groupers(){return this._groupers}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";e+=`Groupers (if any):
2 years ago
`;for(let n of this._groupers){let i=n.reverse?" reverse":"";e+=`- ${n.property}${i}
2 years ago
`}for(let n of this.groups)e+=n.toString(),e+=`
3 years ago
---
`;return e+=`
${this.totalTasksCount()} tasks
1 year ago
`,e}addTaskGroups(e){for(let[t,n]of e){let i=new Qo(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 Ho(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 Yn=class extends xe{fieldName(){return"description"}value(e){return ge.getInstance().removeAsSubstringFrom(e.description)}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=Yn.cleanDescription(e.description),i=Yn.cleanDescription(t.description);return n.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(e){e=ge.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 Xo=class extends pt{fieldName(){return"created"}date(e){return e.createdDate}filterResultIfFieldMissing(){return!1}};var Zo=class extends pt{fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}};var Jo=class extends fn{constructor(){super(),this._filters.add("exclude sub-items",e=>{if(e.indentation==="")return!0;let t=e.indentation.lastIndexOf(">");return t===-1?!1:/^ ?$/.test(e.indentation.slice(t+1))})}fieldName(){return"exclude"}};var ya=class extends Er{};function Ta(r){return[["task",r]]}function np(r,e){let t=r.map(([n])=>n);try{let n=e.includes("return")?e:`return ${e}`,i=e&&new Function(...t,n);return i instanceof Function?ya.fromObject(e,i):ya.fromError(e,"Error parsing group function")}catch(n){return ya.fromError(e,qn(`Failed parsing expression "${e}"`,n))}}function ip(r,e){let t=e.map(([n,i])=>i);return r(...t)}function sp(r,e,t){try{return ip(r,e)}catch(n){return qn(`Failed calculating expression "${t}"`,n)}}function Fb(r,e){let t=Ta(r),n=np(t,e);return n.error?n.error:sp(n.queryComponent,t,e)}var eu=class{constructor(e){this.line=e,this.functionOrError=np(Ta(null),e)}isValid(){return this.functionOrError.error===void 0}get parseError(){return this.functionOrError.error}evaluate(e){if(!this.isValid())throw Error(`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`);return ip(this.functionOrError.queryComponent,Ta(e))}evaluateOrCatch(e){return this.isValid()?sp(this.functionOrError.queryComponent,Ta(e),this.line):`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`}};var tu=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return J.fromError(e,"Unable to parse line");let n=t[1],i=new eu(n);return i.isValid()?J.fromFilter(new ft(e,xA(i),new ke(e))):J.fromError(e,i.parseError)}fieldName(){return"function"}filterRegExp(){return new RegExp(`^filter by ${this.fieldNameSingularEscaped()} (.*)`)}supportsGrouping(){return!0}createGrouperFromLine(e){let t=we.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1],i=t[2];return new dn("function",CA(i),n)}grouperRegExp(){return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)? (.*)`)}grouper(){throw Error("grouper() function not valid for FunctionField. Use createGrouperFromLine() instead.")}};function xA(r){return e=>AA(r,e)}function AA(r,e){let t=r.evaluate(e);if(typeof t=="boolean")return t;throw Error(`filtering function must ret
2 years ago
Allowed options: 'is' and 'is not' (without quotes).
Allowed values: ${t}
Note: values are case-insensitive,
so 'in_progress' works too, for example.
1 year ago
Example: ${this.fieldNameSingular()} is not NON_TASK`;return J.fromError(e,n)}fieldName(){return"status.type"}value(e){return e.status.type}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=hn.groupName(e),i=hn.groupName(t);return n.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return e=>[hn.groupName(e)]}static groupName(e){let t;switch(e.status.type){case"IN_PROGRESS":t="1";break;case"TODO":t="2";break;case"DONE":t="3";break;case"CANCELLED":t="4";break;case"NON_TASK":t="5";break;case"EMPTY":t="6";break}return`%%${t}%%${e.status.type}`}};var gu=class extends xe{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 yu=class extends xe{fieldName(){return"folder"}value(e){return e.file.folder}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(this.value(e))]}};var Tu=class extends xe{fieldName(){return"root"}value(e){return e.file.root}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(this.value(e))]}};var bu=class extends xe{fieldName(){return"backlink"}value(e){let t=e.getLinkText({isFilenameUnique:!0});return t===null?"Unknown Location":t}createFilterOrErrorMessage(e){return J.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 mp=[()=>new mu,()=>new hn,()=>new kr,()=>new au,()=>new $n,()=>new su,()=>new Xo,()=>new iu,()=>new nu,()=>new Mi,()=>new Zo,()=>new Ci,()=>new yu,()=>new Tu,()=>new bu,()=>new Yn,()=>new jn,()=>new ru,()=>new Jo,()=>new hu,()=>new Pi,()=>new gu,()=>new tu,()=>new fu];function pu(r){for(let e of mp){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}function Xb(r){let e=/^sort by /;if(r.match(e)===null)return null;for(let t of mp){let i=t().createSorterFromLine(r);if(i)return i}return null}function Zb(r){let e=/^group by /;if(r.match(e)===null)return null;for(let t of mp){let i=t().createGrouperFromLine(r);if(i)return i}return null}function Jb(r){return`task${r!==1?"s":""}`}var Hn=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} ${Jb(e)}`:`${e} of ${t} ${Jb(t)}`}get groups(){return this.taskGroups.groups}static fromError(e){let t=new Hn(new Ii([],[]),0);return t._searchErrorMessage=e,t}};var Kr=class{constructor(e,t=void 0){this._limit=void 0;this._taskGroupLimit=void 0;this._layoutOptions=new oa;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this._ignoreGlobalQuery=!1;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|created date|start date|scheduled date|done date|due date|recurrence rule|edit button|urgency|tags)/;this.shortModeRegexp=/^short/;this.explainQueryRegexp=/^explain/;this.ignoreGlobalQueryRegexp=/^ignore global query/;this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/;this.commentRegexp=/^#.*/;this.source=e,this.filePath=t,e.split(`
`).map(n=>n.trim()).forEach(n=>{let i=this.expandPlaceholders(n,t);if(this.error===void 0)switch(!0){case i==="":break;case this.shortModeRegexp.test(i):this._layoutOptions.shortMode=!0;break;case this.explainQueryRegexp.test(i):this._layoutOptions.explainQuery=!0;break;case this.ignoreGlobalQueryRegexp.test(i):this._ignoreGlobalQuery=!0;break;case this.limitRegexp.test(i):this.parseLimit(i);break;case this.parseSortBy(i):break;case this.parseGroupBy(i):break;case this.hideOptionsRegexp.test(i):this.parseHideOptions(i);break;case this.commentRegexp.test(i):break;case this.parseFilter(i):break;default:this.setError("do not understand query",i)}})}expandPlaceholders(e,t){if(e.includes("{{")&&e.includes("}}")&&this.filePath===void 0)return this._error=`The query looks like it contains a placeholder, with "{{" and "}}"
1 year ago
but no file path has been supplied, so cannot expand placeholder values.
The query is:
1 year ago
${e}`,e;let n=e;if(t){let i=Ib(t);try{n=Nb(e,i)}catch(s){return s instanceof Error?this._error=s.message:this._error="Internal error. expandPlaceholders() threw something other than Error.",e}}return n}append(e){return this.source===""?e:e.source===""?this:new Kr(`${this.source}
${e.source}`,this.filePath)}explainQuery(){let e="";if(this.error!==void 0)return e+=`Query has an error:
1 year ago
`,e+=this.error+`
`,e;let t=this.filters.length;if(t===0)e+="No filters supplied. All tasks will match the query.";else for(let i=0;i<t;i++)i>0&&(e+=`
1 year ago
`),e+=this.filters[i].explainFilterIndented("");e+=this.explainQueryLimits();let{debugSettings:n}=Q();return n.ignoreSortInstructions&&(e+=`
2 years ago
2 years ago
NOTE: All sort instructions, including default sort order, are disabled, due to 'ignoreSortInstructions' setting.`),e}explainQueryLimits(){let e="";function t(n){let i=`
2 years ago
2 years ago
At most ${n} task`;return n!==1&&(i+="s"),i}return this._limit!==void 0&&(e+=t(this._limit),e+=`.
2 years ago
`),this._taskGroupLimit!==void 0&&(e+=t(this._taskGroupLimit),e+=` per group (if any "group by" options are supplied).
2 years ago
`),e}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}setError(e,t){this._error=`${e}
1 year ago
Problem line: "${t}"`}get ignoreGlobalQuery(){return this._ignoreGlobalQuery}applyQueryToTasks(e){try{this.filters.forEach(a=>{e=e.filter(a.filterFunction)});let{debugSettings:t}=Q(),n=t.ignoreSortInstructions?e:Ni.by(this.sorting,e),i=n.slice(0,this.limit),s=new Ii(this.grouping,i);return this._taskGroupLimit!==void 0&&s.applyTaskLimit(this._taskGroupLimit),new Hn(s,n.length)}catch(t){let n="Search failed";return Hn.fromError(qn(n,t))}}parseHideOptions(e){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"created date":this._layoutOptions.hideCreatedDate=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;case"tags":this._layoutOptions.hideTags=n;break;default:this.setError("do not understand hide/show option",e)}}}parseFilter(e){var n;let t=pu(e);return t!=null?(t.filter?this._filters.push(t.filter):this.setError((n=t.error)!=null?n:"Unknown error",e),!0):!1}parseLimit(e){let t=e.match(this.limitRegexp);if(t===null){this.setError("do not understand query limit",e);return}let n=Number.parseInt(t[3],10);t[1]!==void 0?this._taskGroupLimit=n:this._limit=n}parseSortBy(e){let t=Xb(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy(e){let t=Zb(e);return t?(this._grouping.push(t),!0):!1}};var mn=class{constructor(e=mn.empty){this._source=e}static getInstance(){return mn.instance||(mn.instance=new mn),mn.instance}set(e){this._source=e}query(e=void 0){return new Kr(this._source,e)}hasInstructions(){return this._source.trim()!==mn.empty}},Jt=mn;Jt.empty="";var _u=class{constructor({obsidianEvents:e}){this.obsidianEvents=e}onCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.obsidianEvents.offref(e)}};var Ea=require("obsidian");var aC=require("obsidian"),n_=Zi(r_());var gp=class extends n_.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 yp(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)}},vu=new gp,yp=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){thi
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.
`;Eu(l);return}let u=Math.min(Math.pow(10,s),100);va.debug(`timeout = ${u}`),setTimeout(()=>{a_({originalTask:r,newTasks:e,vault:t,metadataCache:n,workspace:i,previousTries:s+1})},u)};try{let[u,l,c]=yield o_(r,t),p=[...c.slice(0,u),...e.map(h=>h.toFileLineString()),...c.slice(u+1)];yield t.modify(l,p.join(`
`))}catch(u){if(u instanceof gn)return u.message&&s_(u.message),o();if(u instanceof wu)return o();u instanceof Error&&Eu(u.message)}});function o_(r,e){return q(this,null,function*(){if(_a===void 0)throw new gn;let t=e.getAbstractFileByPath(r.path);if(!(t instanceof Ea.TFile))throw new gn(`Tasks: No file found for task ${r.description}. Retrying ...`);if(!oC.includes(t.extension))throw new Error(`Tasks: Does not support files with the ${t.extension} file extension.`);let n=_a.getFileCache(t);if(n==null||n===null)throw new gn(`Tasks: No file cache found for file ${t.path}. Retrying ...`);let i=n.listItems;if(i===void 0||i.length===0)throw new gn(`Tasks: No list items found in file cache of ${t.path}. Retrying ...`);let a=(yield e.read(t)).split(`
`),o=lC(r,a,i,uC);if(o===void 0)throw new wu;return[o,t,a]})}function _p(r,e){return q(this,null,function*(){try{let[t,n,i]=yield o_(r,e);return[t,n]}catch(t){t instanceof gn?t.message&&s_(t.message):t instanceof Error&&Eu(t.message)}})}function u_(r,e){return r<e.length}function lC(r,e,t,n){let i=cC(r,e);return i!==void 0||(i=dC(r,e),i!==void 0)?i:fC(r,e,t,n)}function cC(r,e){let t=r.taskLocation.lineNumber;if(u_(t,e)&&e[t]===r.originalMarkdown)return va.debug(`Found original markdown at original line number ${t}`),t}function dC(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 fC(r,e,t,n){let i,s=0;for(let a of t){let o=a.position.start.line;if(!u_(o,e))return;if(o<r.taskLocation.sectionStart||a.task===void 0)continue;let u=e[o];if(ge.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}.
Expected task:
${r.originalMarkdown}
Found task:
${u}`);return}break}s++}}return i}var c_=require("obsidian");var l_=require("obsidian");var pC={description:"task-description",priority:"task-priority",dueDate:"task-due",startDate:"task-start",createdDate:"task-created",scheduledDate:"task-scheduled",doneDate:"task-done",recurrenceRule:"task-recurring",blockLink:""},hC=7,mC="far";function gC(r,e,t){return q(this,null,function*(){var o;let n=document.createElement("li");e.parentUlElement.appendChild(n),n.classList.add("task-list-item","plugin-tasks-list-item");let i=document.createElement("span");n.appendChild(i),i.classList.add("tasks-list-text");let s=yield yC(r,e,i,t);for(let u in s)n.dataset[u]=s[u];let a=document.createElement("input");return n.appendChild(a),a.classList.add("task-list-item-checkbox"),a.type="checkbox",r.status.symbol!==" "&&(a.checked=!0,n.classList.add("is-checked")),a.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),a.disabled=!0;let l=r.toggleWithRecurrenceInUsersOrder();ku({originalTask:r,newTasks:l})}),n.prepend(a),n.setAttribute("data-task",r.status.symbol.trim()),n.setAttribute("data-line",e.listIndex.toString()),n.setAttribute("data-task-status-name",r.status.name),n.setAttribute("data-task-status-type",r.status.type),a.setAttribute("data-line",e.listIndex.toString()),(o=e.layoutOptions)!=null&&o.shortMode&&wC({task:r,element:i,isFilenameUnique:e.isFilenameUnique}),n})}function yC(r,e,t,n){return q(this,null,function*(){let i={},s=new un(e.layoutOptions),a=jr.tasksPluginEmoji.taskSerializer;for(let o of s.shownTaskLayoutComponents){let u=a.componentToString(r,s,o);if(u){o==="description"&&(u=ge.getInstance().removeAsWordFromDependingOnSettings(u));let l=document.createElement("span");if(t.appendChild(l),l){let c=document.createElement("span");l.appendChild(c),yield TC(c,u,o,r,n,e.obsidianComponent),_C(o,c);let p=bC(o,r);l.classList.add(...p);let h=vp(o,r);for(let _ in h)l.dataset[_]=h[_];i=pe(pe({},i),h)}}}for(let o of s.hiddenTaskLayoutComponents){let u=vp(o,r);i=pe(pe({},i),u)}if(i.taskPriority===void 0){let o=vp("priority",r);i=pe(pe({},i),o)}return i})}function TC(r,e,t,n,i,s){return q(this,null,function*(){if(t==="description"){let{debugSettings:a}=Q();a.showTaskHiddenData&&(e+=`<br>\u{1F41B} <b>${n.lineNumber}</b> . ${n.sectionStart} . ${n.sectionIndex} . '<code>${n.originalMarkdown}</code>'<br>'<code>${n.path}</code>' > '<code>${n.precedingHeader}</code>'<br>`),yield i(e,r,n.path,s);let o=r.querySelector("blockquote"),u=o!=null?o:r,l=u.querySelector("p");if(l!==null){for(;l.firstChild;)u.insertBefore(l.firstChild,l);l.remove()}r.querySelectorAll("p").forEach(c=>{c.hasChildNodes()||c.remove()}),r.querySelectorAll(".footnotes").forEach(c=>{c.remove()})}else r.innerHTML=e})}function bC(r,e){let t=[],n=pC[r];switch(r){case"blockLink":break;case"description":case"priority":case"recurrenceRule":t.push(n);break;case"createdDate":case"dueDate":case"startDate":case"scheduledDate":case"doneDate":{e[r]&&t.push(n);break}}return t}function vp(r,e){let t={},n={createdDate:"taskCreated",dueDate:"taskDue",startDate:"taskStart",scheduledDate:"taskScheduled",doneDate:"taskDone",priority:"taskPriority",description:"",recurrenceRule:"",blockLink:""};switch(r){case"description":case"recurrenceRule":case"blockLink":break;case"priority":{let i=n[r];t[i]=vr.priorityNameUsingNormal(e.priority).toLocaleLowerCase();break}case"createdDate":case"dueDate":case"startDate":case"scheduledDate":case"doneDate":{let i=e[r];if(i){let s=vC(i);if(s){let a=n[r];t[a]=s}}break}}return t}function _C(r,e){if(r==="description"){let t=e.getElementsByClassName("tag");for(let n=0;n<t.length;n++){let i=t[n].textContent;if(i){let s=EC(i),a=t[n];s&&(a.dataset.tagName=s)}}}}function vC(r){let e=window.moment().startOf("day"),t="",n=e.diff(r,"days");return isNaN(n)?null:n===0?"today":(n>0?t+="past-":n<0&&(t+="future-"),Math.abs(n)<=hC?t+=Math.abs(n).toString()+"d":t+=mC,t)}function EC(r){let e=/["&\x00\r\n]/g,t=r.replace(e,"-");return t=t.replace(/^[-_]+/,""),t.length>0?t:null}function wC({task:r,element:e,isFilenameUnique:t}){let{recurrenceSymbol:n,startDateSymbol:
`);if(h===void 0)return!1;let _=null;for(let w=0;w<h.length;w=w+1)if(h[w]!==""){_=h[w];break}return _===null?!1:ge.getInstance().includedIn(_)});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 p=a.lineStart;p<=a.lineEnd;p++){let h=o[p];if(h===void 0)continue;let _=null,y=ye.fromLine({line:h,taskLocation:new ot(s,p,a.lineStart,u,_),fallbackDate:null});y!==null&&(l.push(y),u++)}for(let p=0;p<i.length;p++){let h=l[p],_=i[p];if(h===void 0||_===void 0)continue;let y=(c=_.getAttr("data-line"))!=null?c:"0",w=Number.parseInt(y,10),M=yield Ou(h,{parentUlElement:e,listIndex:w,obsidianComponent:n}),P=_.childNodes;for(let X=0;X<P.length;X=X+1){let V=P[X];V.nodeName.toLowerCase()==="div"?M.prepend(V):V.nodeName.toLowerCase()==="ul"&&M.append(V)}let N=_.querySelectorAll("[data-footnote-id]"),F=M.querySelectorAll("[data-footnote-id]");if(N.length===F.length)for(let X=0;X<N.length;X++)F[X].replaceWith(N[X]);_.replaceWith(M)}})}};var d_=require("@codemirror/view"),f_=require("obsidian");var p_=()=>d_.ViewPlugin.fromClass(Ep),Ep=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 h=`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(h),new f_.Notice(h,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=ye.fromLine({line:a.text,taskLocation:ot.fromUnknownPosition(""),fallbackDate:null});if(o===null)return!1;e.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder().map(h=>h.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let p=t.checked;return setTimeout(()=>{t.checked=p},1),!0}};var ji=require("obsidian");function h_(r,e,t,n=void 0){let i="";e.isEmpty()||(i+=`Only tasks containing the global filter '${e.get()}'.
2 years ago
1 year ago
`);let s=new Kr(r,n);return s.ignoreGlobalQuery||t.hasInstructions()&&(i+=`Explanation of the global query:
2 years ago
1 year ago
${t.query(n).explainQuery()}
`),i+=`Explanation of this Tasks code block query:
2 years ago
1 year ago
${s.explainQuery()}`,i}function Du(r,e,t){let n=new Kr(r,t);return n.ignoreGlobalQuery?n:e.query(t).append(n)}var Ru=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return q(this,null,function*(){n.addChild(new wp({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},wp=class extends ji.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=Du(this.source,Jt.getInstance(),this.filePath),this.queryType="tasks";break;default:this.query=Du(this.source,Jt.getInstance(),this.filePath),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=Du(this.source,Jt.getInstance(),this.filePath),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return q(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");n==="Warm"&&this.query.error===void 0?yield this.renderQuerySearchResults(t,n,s):this.query.error!==void 0?this.renderErrorMessage(s,this.query.error):this.renderLoadingMessage(s),(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}renderQuerySearchResults(t,n,i){return q(this,null,function*(){this.query.layoutOptions.explainQuery&&this.createExplanation(i);let a=this.query.applyQueryToTasks(t);if(a.searchErrorMessage!==void 0){this.renderErrorMessage(i,a.searchErrorMessage);return}yield this.addAllTaskGroups(a.taskGroups,i);let o=a.totalTasksCount;this.addTaskCount(i,a)})}renderErrorMessage(t,n){t.createDiv().innerHTML=`<pre>Tasks query: ${n.replace(/\n/g,"<br>")}</pre>`}renderLoadingMessage(t){t.setText("Loading Tasks ...")}createExplanation(t){let n=h_(this.source,ge.getInstance(),Jt.getInstance(),this.filePath),i=t.createEl("pre");i.addClasses(["plugin-tasks-query-explanation"]),i.setText(n),t.appendChild(i)}createTaskList(t,n){return q(this,null,function*(){let i=new un(this.query.layoutOptions),s=n.createEl("ul");s.addClasses(["contains-task-list","plugin-tasks-query-result"]),s.addClasses(i.taskListHiddenClasses);let a=this.getGroupingAttribute();a&&a.length>0&&(s.dataset.taskGroupBy=a);for(let[o,u]of t.entries()){let l=this.isFilenameUnique({task:u}),c=yield Ou(u,{parentUlElement:s,listIndex:o,layoutOptions:this.query.layoutOptions,isFilenameUnique:l,taskLayout:i,obsidianComponent:this});c.querySelectorAll("[data-footnote-id]").forEach(_=>_.remove());let h=c.createSpan("task-extras");if(this.query.layoutOptions.hideUrgency||this.addUrgency(h,u),!this.query.layoutOptions.hideBacklinks){let _=this.query.layoutOptions.shortMode;this.addBacklinks(h,u,_,l)}this.query.layoutOptions.hideEditButton||this.addEditButton(h,u),s.appendChild(c)}n.appendChild(s)})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{ku({originalTask:n,newTasks:Rt.removeInferredStatusIfNeeded(n,u)})};new cn({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addAllTaskGroups(t,n){return q(this,null,function*(){for(let i of t.groups)this.addGroupHeadings(n,i.groupHeadings),yield this.createTaskList(i.tasks,n)})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return q(this,null,function*(){let i="h6";n.nestingLevel===0?i="h4":n.nestingLevel===1&&(i="h5");let s=t.crea
`)+`
1 year ago
Fix errors before saving.`;new dr.Notice(p);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?Ut.removeValidationError(t):Ut.setValidationError(t)}};var Wt=class extends ve.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 q(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 ve.Setting(t).setName("Task Format").setDesc(Wt.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(jr))i.addOption(s,jr[s].displayName);i.setValue(Q().taskFormat).onChange(s=>q(this,null,function*(){et({taskFormat:s}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new ve.Setting(t).setName("Global task filter").setDesc(Wt.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(ge.getInstance().get()).onChange(s=>q(this,null,function*(){et({globalFilter:s}),ge.getInstance().set(s),yield this.plugin.saveSettings()}))}),new ve.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=Q();i.setValue(s.removeGlobalFilter).onChange(a=>q(this,null,function*(){et({removeGlobalFilter:a}),ge.getInstance().setRemoveGlobalFilter(a),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),RC(new ve.Setting(t).setDesc(Wt.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=Q();i.inputEl.rows=4,i.setPlaceholder(`# For example...
2 years ago
path does not include _templates/
limit 300
1 year ago
show urgency`).setValue(s.globalQuery).onChange(a=>q(this,null,function*(){et({globalQuery:a}),Jt.getInstance().set(a),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=Q();E_.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new ve.Setting(t).setName("Set created date on every added task").setDesc(Wt.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=Q();i.setValue(s.setCreatedDate).onChange(a=>q(this,null,function*(){et({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Set done date on every completed task").setDesc(Wt.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=Q();i.setValue(s.setDoneDate).onChange(a=>q(this,null,function*(){et({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(Wt.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=Q();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>q(this,null,function*(){et({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new ve.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=>q(this,null,function*(){let s=Q();yield this.plugin.saveSettings(),i.setValue(Wt.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>q(this,null,function*(){let o=Wt.parseCommaSeparatedFolders(a);et({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new ve.Setting(t).setName("Next recurrence appears on the line below").setDesc(Wt.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}=Q();i.setValue(s).onChange(a=>q(this,null,function*(){et({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new ve.Setting(t).setName("Auto-suggest task content").setDesc(Wt.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=Q();i.setValue(s.autoSuggestInEditor).onChange(a=>q(this,null,function*(){et({autoSuggestInEditor:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(i=>{let s=Q();i.setLimits(0,3,1).setValue(s.autoSuggestMinMatch).setDynamicTooltip().onChange(a=>q(this,null,function*(){et({autoSuggestMinMatch:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Maximum
`);t(o)}).open(),n};var S_=(r,e)=>{let t=Yo({line:"",path:""});return new cn({app:r,task:t,onSubmit:e})};var D_=r=>({createTaskLineModal:()=>O_(r,S_)});var xu=class extends R_.Plugin{get apiV1(){return D_(app)}onload(){return q(this,null,function*(){vu.registerConsoleLogger(),console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new ka({plugin:this})),i_({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let t=new _u({obsidianEvents:this.app.workspace});this.cache=new Fn({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new Su({plugin:this}),this.queryRenderer=new Ru({plugin:this,events:t}),this.registerEditorExtension(p_()),this.registerEditorSuggest(new Mu(this.app,Q())),new jo({plugin:this})})}loadTaskStatuses(){return q(this,null,function*(){let{statusSettings:t}=Q();Ge.applyToStatusRegistry(t,De.getInstance())})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return q(this,null,function*(){let t=yield this.loadData();et(t),t=Q(),ge.getInstance().set(t.globalFilter),ge.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),Jt.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return q(this,null,function*(){yield this.saveData(Q())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}};
2 years ago
/*!
* EventEmitter2
* https://github.com/hij1nx/EventEmitter2
*
* Copyright (c) 2013 hij1nx
* Licensed under the MIT license.
*/
1 year ago
/*!
* mustache.js - Logic-less {{mustache}} templates with JavaScript
* http://github.com/janl/mustache.js
*/