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.

383 lines
460 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.
*/
5 months ago
"use strict";var zk=Object.create;var na=Object.defineProperty,Kk=Object.defineProperties,Qk=Object.getOwnPropertyDescriptor,Xk=Object.getOwnPropertyDescriptors,Zk=Object.getOwnPropertyNames,Go=Object.getOwnPropertySymbols,Jk=Object.getPrototypeOf,Tc=Object.prototype.hasOwnProperty,Yh=Object.prototype.propertyIsEnumerable;var Gh=(r,e,t)=>e in r?na(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,K=(r,e)=>{for(var t in e||(e={}))Tc.call(e,t)&&Gh(r,t,e[t]);if(Go)for(var t of Go(e))Yh.call(e,t)&&Gh(r,t,e[t]);return r},he=(r,e)=>Kk(r,Xk(e));var Yo=(r,e)=>{var t={};for(var n in r)Tc.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Go)for(var n of Go(r))e.indexOf(n)<0&&Yh.call(r,n)&&(t[n]=r[n]);return t};var E=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),eE=(r,e)=>{for(var t in e)na(r,t,{get:e[t],enumerable:!0})},Bh=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Zk(e))!Tc.call(r,i)&&i!==t&&na(r,i,{get:()=>e[i],enumerable:!(n=Qk(e,i))||n.enumerable});return r};var ia=(r,e,t)=>(t=r!=null?zk(Jk(r)):{},Bh(e||!r||!r.__esModule?na(t,"default",{value:r,enumerable:!0}):t,r)),tE=r=>Bh(na({},"__esModule",{value:!0}),r);var P=(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 Re=E(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});Fn.matchAnyPattern=Fn.extractTerms=Fn.repeatedTimeunitPattern=void 0;function sE(r,e){let t=e.replace(/\((?!\?)/g,"(?:");return`${r}${t}\\s{0,5}(?:,?\\s{0,5}${t}){0,10}`}Fn.repeatedTimeunitPattern=sE;function Hh(r){let e;return r instanceof Array?e=[...r]:r instanceof Map?e=Array.from(r.keys()):e=Object.keys(r),e}Fn.extractTerms=Hh;function aE(r){return`(?:${Hh(r).sort((t,n)=>n.length-t.length).join("|").replace(/\./g,"\\.")})`}Fn.matchAnyPattern=aE});var ve=E((vc,wc)=>{(function(r,e){typeof vc=="object"&&typeof wc!="undefined"?wc.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs=e()})(vc,function(){"use strict";var r=1e3,e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",o="day",u="week",l="month",c="quarter",d="year",f="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={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("_")},k=function(j,$,D){var V=String(j);return!V||V.length>=$?j:""+Array($+1-V.length).join(D)+j},S={s:k,z:function(j){var $=-j.utcOffset(),D=Math.abs($),V=Math.floor(D/60),W=D%60;return($<=0?"+":"-")+k(V,2,"0")+":"+k(W,2,"0")},m:function j($,D){if($.date()<D.date())return-j(D,$);var V=12*(D.year()-$.year())+(D.month()-$.month()),W=$.clone().add(V,l),X=D-W<0,p=$.clone().add(V+(X?-1:1),l);return+(-(V+(D-W)/(X?W-p:p-W))||0)},a:function(j){return j<0?Math.ceil(j)||0:Math.floor(j)},p:function(j){return{M:l,y:d,w:u,d:o,D:f,h:a,m:s,s:i,ms:n,Q:c}[j]||String(j||"").toLowerCase().replace(/s$/,"")},u:function(j){return j===void 0}},x="en",U={};U[x]=T;var q=function(j){return j instanceof be},re=function(j,$,D){var V;if(!j)return x;if(typeof j=="string")U[j]&&(V=j),$&&(U[j]=$,V=j);else{var W=j.name;U[W]=j,V=W}return!D&&V&&(x=V),V||!D&&x},H=function(j,$){if(q(j))return j.clone();var D=typeof $=="object"?$:{};return D.date=j,D.args=arguments,new be(D)},Y=S;Y.l=re,Y.i=q,Y.w=function(j,$){return H(j,{locale:$.$L,utc:$.$u,x:$.$x,$offset:$.$offset})};var be=function(){function j(D){this.$L=re(D.locale,null,!0),this.parse(D)}var $=j.prototype;return $.parse=function(D){this.$d=function(V){var W=V.date,X=V.utc;if(W===null)return new Date(NaN);if(Y.u(W))return new Date;if(W instanceof Date)return new Date(W);if(typeof W=="string"&&!/Z$/i.test(W)){var p=W.match(g);if(p){var h=p[2]-1||0,b=(p[7]||"0").substring(0,3);return X?new
`).map(NP).filter(function(t){return t!==null});return dt(dt({},e[0]),e[1])}function co(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=ao(i),e}function NP(r){if(r=r.replace(/^\s+|\s+$/,""),!r.length)return null;var e=/^([A-Z]+?)[:;]/.exec(r.toUpperCase());if(!e)return F_(r);var t=e[1];switch(t.toUpperCase()){case"RRULE":case"EXRULE":return F_(r);case"DTSTART":return co(r);default:throw new Error("Unsupported RFC prop ".concat(t," in ").concat(r))}}function F_(r){var e=r.replace(/^RRULE:/i,""),t=co(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=me[o.toUpperCase()];break;case"WKST":t.wkst=dr[o.toUpperCase()];break;case"COUNT":case"INTERVAL":case"BYSETPOS":case"BYMONTH":case"BYMONTHDAY":case"BYYEARDAY":case"BYWEEKNO":case"BYHOUR":case"BYMINUTE":case"BYSECOND":var u=IP(o),l=a.toLowerCase();t[l]=u;break;case"BYWEEKDAY":case"BYDAY":t.byweekday=FP(o);break;case"DTSTART":case"TZID":var c=co(r);t.tzid=c.tzid,t.dtstart=c.dtstart;break;case"UNTIL":t.until=ao(o);break;case"BYEASTER":t.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+a+"'")}}),t}function IP(r){if(r.indexOf(",")!==-1){var e=r.split(",");return e.map(L_)}return L_(r)}function L_(r){return/^[+-]?\d+$/.test(r)?Number(r):r}function FP(r){var e=r.split(",");return e.map(function(t){if(t.length===2)return dr[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=dr[s].weekday;return new He(a,i)})}var vi=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=ls(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:D_(this.date,this.tzid)},r}();function po(r){for(var e=[],t="",n=Object.keys(r),i=Object.keys(lo),s=0;s<n.length;s++)if(n[s]!=="tzid"&&!!Te(i,n[s])){var a=n[s].toUpperCase(),o=r[n[s]],u="";if(!(!Fe(o)||ct(o)&&!o.length)){switch(a){case"FREQ":u=z.FREQUENCIES[r.freq];break;case"WKST":Bt(o)?u=new He(o).toString():u=o.toString();break;case"BYWEEKDAY":a="BYDAY",u=v_(o).map(function(m){return m instanceof He?m:ct(m)?new He(m[0],m[1]):new He(m)}).toString();break;case"DTSTART":t=LP(o,r.tzid);break;case"UNTIL":u=ls(o,!r.tzid);break;default:if(ct(o)){for(var l=[],c=0;c<o.length;c++)l[c]=String(o[c]);u=l.toString()}else u=String(o)}u&&e.push([a,u])}}var d=e.map(function(m){var g=m[0],y=m[1];return"".concat(g,"=").concat(y.toString())}).join(";"),f="";return d!==""&&(f="RRULE:".concat(d)),[t,f].filter(function(m){return!!m}).join(`
`)}function LP(r,e){return r?"DTSTART"+new vi(new Date(r),e).toString():""}function UP(r,e){return Array.isArray(r)?!Array.isArray(e)||r.length!==e.length?!1:r.every(function(t,n){return t.getTime()===e[n].getTime()}):r instanceof Date?e instanceof Date&&r.getTime()===e.getTime():r===e}var U_=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?Yu(t):mm(t)),e==="all"?this.all=t:(n._value=t,this[e].push(n))},r.prototype._cacheGet=function(e,t){var n=!1,i=t?Object.keys(t):[],s=function(c){for(var d=0;d<i.length;d++){var f=i[d];if(!UP(t[f],c[f]))return!0}return!1},a=this[e];if(e==="all")n=this.all;else if(ct(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 Tn(e,t),o=0;o<this.all.length&&l.accept(this.all[o]);o++);n=l.getValue(),this._cacheAdd(e,n,t)}return ct(n)?mm(n):n instanceof Date?Yu(n):n},r}();var W_=I(I(I(I(I(I(I(I(I(I(I(I(I([],ye(1,31),!0),ye(2,28),!0),ye(3,31),!0),ye(4,30),!0),ye(5,31),!0),ye(6,30),!0),ye(7,31),!0),ye(8,31),!0),ye(9,30),!0),ye(10,31),!0),ye(11,30),!0),ye(12,31),!0),ye(1,7),!0),q_=I(I(I(I(I(I(I(I(I(I(I(I(I([],ye(1,31),!0),ye(2,29),!0),ye(3,31),!0),ye(4,30),!0),ye(5,31),!0),ye(6,30),!0),ye(7,31),!0),ye(8,31),!0),ye(9,30),!0),ye(10,31),!0),ye(11,30),!0),ye(12,31),!0),ye(1,7),!0),WP=cr(1,29),qP=cr(1,30),Gn=cr(1,31),ht=cr(1,32),$_=I(I(I(I(I(I(I(I(I(I(I(I(I([],ht,!0),qP,!0),ht,!0),Gn,!0),ht,!0),Gn,!0),ht,!0),ht,!0),Gn,!0),ht,!0),Gn,!0),ht,!0),ht.slice(0,7),!0),j_=I(I(I(I(I(I(I(I(I(I(I(I(I([],ht,!0),WP,!0),ht,!0),Gn,!0),ht,!0),Gn,!0),ht,!0),ht,!0),Gn,!0),ht,!0),Gn,!0),ht,!0),ht.slice(0,7),!0),$P=cr(-28,0),jP=cr(-29,0),Yn=cr(-30,0),gt=cr(-31,0),G_=I(I(I(I(I(I(I(I(I(I(I(I(I([],gt,!0),jP,!0),gt,!0),Yn,!0),gt,!0),Yn,!0),gt,!0),gt,!0),Yn,!0),gt,!0),Yn,!0),gt,!0),gt.slice(0,7),!0),Y_=I(I(I(I(I(I(I(I(I(I(I(I(I([],gt,!0),$P,!0),gt,!0),Yn,!0),gt,!0),Yn,!0),gt,!0),gt,!0),Yn,!0),gt,!0),Yn,!0),gt,!0),gt.slice(0,7),!0),B_=[0,31,60,91,121,152,182,213,244,274,305,335,366],H_=[0,31,59,90,120,151,181,212,243,273,304,334,365],bm=function(){for(var r=[],e=0;e<55;e++)r=r.concat(cr(7));return r}();function V_(r,e){var t=Gr(r,1,1),n=us(r)?366:365,i=us(r+1)?366:365,s=so(t),a=yn(t),o=dt(dt({yearlen:n,nextyearlen:i,yearordinal:s,yearweekday:a},GP(r)),{wnomask:null});if(Ht(e.byweekno))return o;o.wnomask=ye(0,n+7);var u,l,c=u=mt(7-a+e.wkst,7);c>=4?(c=0,l=o.yearlen+mt(a-e.wkst,7)):l=n-c;for(var d=Math.floor(l/7),f=mt(l,7),m=Math.floor(d+f/4),g=0;g<e.byweekno.length;g++){var y=e.byweekno[g];if(y<0&&(y+=m+1),y>0&&y<=m){var T=void 0;y>1?(T=c+(y-1)*7,c!==u&&(T-=7-u)):T=c;for(var k=0;k<7&&(o.wnomask[T]=1,T++,o.wdaymask[T]!==e.wkst);k++);}}if(Te(e.byweekno,1)){var T=c+m*7;if(c!==u&&(T-=7-u),T<n)for(var g=0;g<7&&(o.wnomask[T]=1,T+=1,o.wdaymask[T]!==e.wkst);g++);}if(c){var S=void 0;if(Te(e.byweekno,-1))S=-1;else{var x=yn(Gr(r-1,1,1)),U=mt(7-x.valueOf()+e.wkst,7),q=us(r-1)?366:365,re=void 0;U>=4?(U=0,re=q+mt(x-e.wkst,7)):re=n-c,S=Math.floor(52+mt(re,7)/4)}if(Te(e.byweekno,S))for(var T=0;T<c;T++)o.wnomask[T]=1}return o}function GP(r){var e=us(r)?366:365,t=Gr(r,1,1),n=yn(t);return e===365?{mmask:W_,mdaymask:j_,nmdaymask:Y_,wdaymask:bm.slice(n),mrange:H_}:{mmask:q_,mdaymask:$_,nmdaymask:G_,wdaymask:bm.slice(n),mrange:B_}}function z_(r,e,t,n,i,s){var a={lastyear:r,lastmonth:e,nwdaymask:[]},o=[];if(s.freq===z.YEARLY)if(Ht(s.bymonth))o=[[0,t]];else for(var u=0;u<s.bymonth.length;u++)e=s.bymonth[u],o.push(n.slice(e-1,e+1));else s.freq===z.MONTHLY&&(o=[n.slice(e-1,e+1)]);if(Ht(o))return a;a.nwdaymask=ye(0,t);for(var u=0;u<o.length;u++)for(var l=o[u],c=l[0],d=l[1]-1,f=0;f<s.bynweekday.length;f++){var m=void 0,g=s.bynweekday[f],y=g[0],T=g[1];T<0?(m=d+(T+1)*7,m-=mt(i[m]-y,7)):(m=c+(T-1)*7,m+=mt(7-i[m]+y,7)),c<=m&&m<=d&&(a.nwdaymask[m]=1)}return a}function K_(r,e){e===void 0&&(e=0);var t=r%19,n=Math.floor(r/100),i=r%100,s=Math.floor(n/4),a=n%4,o=Math.floor((n+8)/25),u=Math.floor((n-o+1)/3),l=Math.floor(19*t+n-s-u+15)%30,c=Math.floor(i/4),d=i%4,f=Math.floor(32+2*a+2*c-l-d)%7,m=Math.floor((t+11*l
`),n=0;n<t.length;){var i=t[n]=t[n].replace(/\s+$/g,"");i?n>0&&i[0]===" "?(t[n-1]+=i.slice(1),t.splice(n,1)):n+=1:t.splice(n,1)}return t}function eN(r){r.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function tv(r,e){return eN(e),r.split(",").map(function(t){return ao(t)})}function rv(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 _m=function(r){cs(e,r);function e(t){t===void 0&&(t=!1);var n=r.call(this,{},t)||this;return n.dtstart=rv.apply(n,["dtstart"]),n.tzid=rv.apply(n,["tzid"]),n._rrule=[],n._rdate=[],n._exrule=[],n._exdate=[],n}return e.prototype._iter=function(t){return J_(t,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},e.prototype.rrule=function(t){nv(t,this._rrule)},e.prototype.exrule=function(t){nv(t,this._exrule)},e.prototype.rdate=function(t){iv(t,this._rdate)},e.prototype.exdate=function(t){iv(t,this._exdate)},e.prototype.rrules=function(){return this._rrule.map(function(t){return Hu(t.toString())})},e.prototype.exrules=function(){return this._exrule.map(function(t){return Hu(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(po({dtstart:this._dtstart}))),this._rrule.forEach(function(n){t=t.concat(n.toString().split(`
2 years ago
`))}),this._exrule.forEach(function(n){t=t.concat(n.toString().split(`
5 months ago
`).map(function(i){return i.replace(/^RRULE:/,"EXRULE:")}).filter(function(i){return!/^DTSTART/.test(i)}))}),this._rdate.length&&t.push(sv("RDATE",this._rdate,this.tzid())),this._exdate.length&&t.push(sv("EXDATE",this._exdate,this.tzid())),t},e.prototype.toString=function(){return this.valueOf().join(`
5 months ago
`)},e.prototype.clone=function(){var t=new e(!!this._cache);return this._rrule.forEach(function(n){return t.rrule(n.clone())}),this._exrule.forEach(function(n){return t.exrule(n.clone())}),this._rdate.forEach(function(n){return t.rdate(new Date(n.getTime()))}),this._exdate.forEach(function(n){return t.exdate(new Date(n.getTime()))}),t},e}(z);function nv(r,e){if(!(r instanceof z))throw new TypeError(String(r)+" is not RRule instance");Te(e.map(String),String(r))||e.push(r)}function iv(r,e){if(!(r instanceof Date))throw new TypeError(String(r)+" is not Date instance");Te(e.map(Number),Number(r))||(e.push(r),bn(e))}function sv(r,e,t){var n=!t||t.toUpperCase()==="UTC",i=n?"".concat(r,":"):"".concat(r,";TZID=").concat(t,":"),s=e.map(function(a){return ls(a.valueOf(),n)}).join(",");return"".concat(i).concat(s)}var vm=ia(ze());function fr(r,e){return r!==null&&e===null?-1:r===null&&e!==null?1:r!==null&&e!==null?r.isValid()&&!e.isValid()?1:!r.isValid()&&e.isValid()?-1:r.isAfter(e)?1:r.isBefore(e)?-1:0:0}function tN(r,e,t=void 0){if(!e)return`<i>no ${r} date</i>`;let n=vm.parseDate(e,t,{forwardDate:t!=null});return n!==null?window.moment(n).format("YYYY-MM-DD"):`<i>invalid ${r} date</i>`}function av(r,e,t){return tN(r,e,t?new Date:void 0)}function wi(r,e){let t=null,n=vm.parseDate(r,new Date,{forwardDate:e});return n!==null&&(t=window.moment(n)),t}var st=class{constructor({rrule:e,baseOnToday:t,referenceDate:n,startDate:i,scheduledDate:s,dueDate:a}){this.rrule=e,this.baseOnToday=t,this.referenceDate=n,this.startDate=i,this.scheduledDate=s,this.dueDate=a}static fromText({recurrenceRuleText:e,startDate:t,scheduledDate:n,dueDate:i}){try{let s=e.match(/^([a-zA-Z0-9, !]+?)( when done)?$/i);if(s==null)return null;let a=s[1].trim(),o=s[2]!==void 0,u=z.parseText(a);if(u!==null){let l=null;i?l=window.moment(i):n?l=window.moment(n):t&&(l=window.moment(t)),!o&&l!==null?u.dtstart=window.moment(l).startOf("day").utc(!0).toDate():u.dtstart=window.moment().startOf("day").utc(!0).toDate();let c=new z(u);return new st({rrule:c,baseOnToday:o,referenceDate:l,startDate:t,scheduledDate:n,dueDate:i})}}catch(s){s instanceof Error&&console.log(s.message)}return null}toText(){let e=this.rrule.toText();return this.baseOnToday&&(e+=" when done"),e}next(e=window.moment()){let t=this.nextReferenceDate(e);if(t!==null){let n=null,i=null,s=null;if(this.referenceDate){if(this.startDate){let a=window.moment.duration(this.startDate.diff(this.referenceDate));n=window.moment(t),n.add(Math.round(a.asDays()),"days")}if(this.scheduledDate){let a=window.moment.duration(this.scheduledDate.diff(this.referenceDate));i=window.moment(t),i.add(Math.round(a.asDays()),"days")}if(this.dueDate){let a=window.moment.duration(this.dueDate.diff(this.referenceDate));s=window.moment(t),s.add(Math.round(a.asDays()),"days")}}return{startDate:n,scheduledDate:i,dueDate:s}}return null}identicalTo(e){return this.baseOnToday!==e.baseOnToday||fr(this.startDate,e.startDate)!==0||fr(this.scheduledDate,e.scheduledDate)!==0||fr(this.dueDate,e.dueDate)!==0?!1:this.toText()===e.toText()}nextReferenceDate(e){return this.baseOnToday?this.nextReferenceDateFromToday(e).toDate():this.nextReferenceDateFromOriginalReferenceDate().toDate()}nextReferenceDateFromToday(e){let t=new z(he(K({},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=st.nextAfterMonths(e,n,t,s[1])));let a=i.match(/every( \d+)? year(s)?(.*)?/);return a!==null&&(n=st.nextAfterYears(e,n,t,a[1])),st.addTimezone(n)}static nextAfterMonths(e,t,n,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));st.isSkippingTooManyMonths(e,t,s);)t=st.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
`})),c=c.slice(0,a.autoSuggestMaxItems),c}}function Om(r,e,t){let n=dN(e.substring(0,t),[["(",")"],["[","]"]])=="("?")":"]",i=r?n+" ":" ",s=r&&e.length>t&&e.charAt(t)===n?1:0;return{postfix:i,insertSkip:s}}function sN(r,e,t,n,i,s){let a=f=>Object.values(n.prioritySymbols).some(m=>m.length>0&&f.includes(m)),o=[],{postfix:u,insertSkip:l}=Om(i,r,e);if(r.includes(n.dueDateSymbol)||o.push({displayText:`${n.dueDateSymbol} due date`,appendText:`${n.dueDateSymbol} `}),r.includes(n.startDateSymbol)||o.push({displayText:`${n.startDateSymbol} start date`,appendText:`${n.startDateSymbol} `}),r.includes(n.scheduledDateSymbol)||o.push({displayText:`${n.scheduledDateSymbol} scheduled date`,appendText:`${n.scheduledDateSymbol} `}),!a(r)){let f=n.prioritySymbols,m=["High","Medium","Low","Highest","Lowest"];for(let g=0;g<m.length;g++){let y=m[g],T=f[y];o.push({displayText:i?`${T} priority`:`${T} ${y.toLowerCase()} priority`,appendText:`${T}${u}`,insertSkip:i?l:void 0})}}if(r.includes(n.recurrenceSymbol)||o.push({displayText:`${n.recurrenceSymbol} recurring (repeat)`,appendText:`${n.recurrenceSymbol} `}),!r.includes(n.createdDateSymbol)){let m=Yt.parseDate("today",!0).format(J.dateFormat);o.push({textToMatch:`${n.createdDateSymbol} created`,displayText:`${n.createdDateSymbol} created today (${m})`,appendText:`${n.createdDateSymbol} ${m}`+u,insertSkip:i?l:void 0})}fv(s)&&(r.includes(n.idSymbol)||o.push({displayText:`${n.idSymbol} id`,appendText:`${n.idSymbol}`}),r.includes(n.dependsOnSymbol)||o.push({displayText:`${n.dependsOnSymbol} depends on id`,appendText:`${n.dependsOnSymbol}`}));let c=yo(r,/([a-zA-Z'_-]*)/g,e),d=[];if(c&&c.length>0){let f=c[0];if(f.length>=Math.max(1,t.autoSuggestMinMatch)){let m=o.filter(g=>(g.textToMatch||g.displayText).toLowerCase().includes(f.toLowerCase()));for(let g of m){let y=i&&(g.displayText.includes("priority")||g.displayText.includes("created"))?f.length+l:f.length;d.push({suggestionType:"match",displayText:g.displayText,appendText:g.appendText,insertAt:c.index,insertSkip:y})}}}return d.length===0&&t.autoSuggestMinMatch===0?o:d}function aN(r,e,t,n,i,s){let a=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],{postfix:o,insertSkip:u}=Om(s,r,e),l=[],c=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),d=yo(r,c,e);if(d&&d.length>=2){let f=d[1],m=d[2];if(m.length<t.autoSuggestMinMatch)return[];let g=m&&m.length>1?Yt.parseDate(Uu(m),!0):null;g&&g.isValid()&&l.push({displayText:`${g.format(J.dateFormat)}`,appendText:`${f} ${g.format(J.dateFormat)} `,insertAt:d.index,insertSkip:d[0].length});let y=1,T=a.filter(k=>m&&m.length>=y&&k.toLowerCase().includes(m.toLowerCase())).slice(0,i);T.length===0&&(T=a.slice(0,i));for(let k of T){let x=`${Yt.parseDate(k,!0).format(J.dateFormat)}`,U=s?d[0].length+u:d[0].length;l.push({suggestionType:"match",displayText:`${k} (${x})`,appendText:`${f} ${x}`+o,insertAt:d.index,insertSkip:U})}}return l}function oN(r,e,t,n,i){var d;let s=["every","every day","every week","every month","every month on the","every year","every week on Sunday","every week on Monday","every week on Tuesday","every week on Wednesday","every week on Thursday","every week on Friday","every week on Saturday"],{postfix:a,insertSkip:o}=Om(i,r,e),u=[],l=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),c=yo(r,l,e);if(c&&c.length>=2){let f=c[1],m=c[2];if(m.length<t.autoSuggestMinMatch)return[];if(m.length>0){let k=(d=st.fromText({recurrenceRuleText:m,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:d.toText();if(k){let S=`${f} ${k}`+a,x=i?c[0].length+o:c[0].length;if(u.push({suggestionType:"match",displayText:`\u2705 ${k}`,appendText:S,insertAt:c.index,insertSkip:x}),c[0]==S)return[]}}let g=1,y=t.autoSuggestMaxItems/2,T=s.filter(k=>m&&m.length>=g&&k.toLowerCase().includes(m.toLowerCase())).slice(0,y);T.length===0&&m.trim().length===0&&(T=s.slice(0,y));for(let k of T)u.push({suggestionType:"match",displayText:`${k}`,appendText:`${f} ${k} `,insertAt:c.index,insertSkip:c[0].length})}return u}function uN(r,e,t,n){let i=[],s=new RegExp(`(${
\`\`\`${n}
flowchart LR
1 year ago
classDef TODO stroke:#f33,stroke-width:3px;
classDef DONE stroke:#0c0,stroke-width:3px;
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
classDef CANCELLED stroke:#ddd,stroke-width:3px;
classDef NON_TASK stroke:#99e,stroke-width:3px;
11 months ago
${i.join(`
`)}
8 months ago
${s.join(`
`)}
1 year ago
linkStyle default stroke:gray
\`\`\`
5 months ago
`}addEdgeIfNotToInternal(e,t,n,i,s){let a=e.findIndex(l=>l.symbol===t.symbol),o=a!==-1,u=t.type!=="EMPTY";if(o&&u){let l;s?l='-. "\u{1F501}" .-> ':l=" --> ";let c=`${i+1}${l}${a+1}`;n.push(c)}}getMermaidNodeLabel(e,t){let n=yv(e.name),i=e.type;if(t){let s=Zu(e.symbol),a=Zu(e.nextStatusSymbol),o=`[${s}] -> [${a}]`,u=`'${n}'`,l=`(${i})`;return`["${u}<br>${o}<br>${l}"]:::${i}`}else return`["${n}"]:::${i}`}};var bv=require("obsidian");var Vr=class{constructor(e,t){this.name=e,this.sortOrder=t}get groupText(){return this.name!==""?`%%${this.sortOrder}%% ${this.name}`:""}};var Pt=class{constructor(e){this._date=null;this._date=e}get moment(){return this._date}formatAsDate(e=""){return this.format(J.dateFormat,e)}formatAsDateAndTime(e=""){return this.format(J.dateTimeFormat,e)}format(e,t=""){return this._date?this._date.format(e):t}toISOString(e){return this._date?this._date.toISOString(e):""}get category(){let e=window.moment(),t=this.moment;return t?t.isBefore(e,"day")?new Vr("Overdue",1):t.isSame(e,"day")?new Vr("Today",2):t.isValid()?new Vr("Future",3):new Vr("Invalid date",0):new Vr("Undated",4)}get fromNow(){let e=this.moment;if(!e)return new Vr("",0);let t=this.fromNowOrder(e);return new Vr(e.fromNow(),t)}fromNowOrder(e){if(!e.isValid())return 0;let t=window.moment(),n=e.isSameOrBefore(t,"day"),i=this.fromNowStartDateOfGroup(e,n,t);return Number((n?1:3)+i.format("YYYYMMDD"))}fromNowStartDateOfGroup(e,t,n){let i=e.fromNow(!0).split(" "),s,a=Number(i[0]);isNaN(a)?s=1:s=a;let o=i[1];return t?n.subtract(s,o):n.add(s,o)}postpone(e="days",t=1){if(!this._date)throw new bv.Notice("Cannot postpone a null date");let n=window.moment().startOf("day");return this._date.isSameOrAfter(n,"day")?this._date.clone().add(t,e):n.add(t,e)}};var kn=class{static priorityNameUsingNone(e){let t="ERROR";switch(e){case"1":t="High";break;case"0":t="Highest";break;case"2":t="Medium";break;case"3":t="None";break;case"4":t="Low";break;case"5":t="Lowest";break}return t}static priorityNameUsingNormal(e){return kn.priorityNameUsingNone(e).replace("None","Normal")}};var hN=require("obsidian"),wv=ia(vv());var Mm=class extends wv.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 Cm(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)}},St=new Mm,Cm=class{constructor(e,t,n){this.levels={trace:1,debug:2,info:3,warn:4,error:5};this.logManager=e,this.module=t,this.minLevel=this.levelToInt(n)}levelToInt(e){return e.toLowerCase()in this.levels?this.levels[e.toLowerCase()]:99}log(e,t,n){if(this.levelToInt(e)<this.minLevel)return;let s={level:e,module:this.module,message:t,objects:n,traceId:void 0};this.logManager.emit("log",s)}trace(e,t){this.log("trace",e,t)}debug(e,t){this.log("debug",e,t)}info(e,t){this.log("info",e,t)}warn(e,t){this.log("warn",e,t)}error(e,t){this.log("error",e,t)}logWithId(e,t,n,i){if(this.levelToInt(e)<this.minLevel)return;let a={level:e,module:this.module,message:n,objects:i,traceId:t};this.logManager.emit("log",a)}traceWithId(e,t,n){this.logWithId("trace",e,t,n)}debugWithId(e,t,n){this.logWithId("debug",e,t,n)}infoWithId(e,t,n){this.logWithId("info",e,t,n)}warnWithId(e,t,n){this.logWithId("warn",e,t,n)}errorWithId(e,t,n)
`),l=u.length,c=new To(()=>yt.fromPath(r)),d=null,f=0,m=new Map;for(let T of t)if(T.task!==void 0){let k=T.position.start.line;if(k>=l)return n.debug(`${r} Obsidian gave us a line number ${k} past the end of the file. ${l}.`),o;if((d===null||d.position.end.line<k)&&(d=gs.getSection(k,i.sections),f=0),d===null)continue;let S=u[k];if(S===void 0){n.debug(`${r}: line ${k} - ignoring 'undefined' line.`);continue}let x;try{if(x=ae.fromLine({line:S,taskLocation:new ft(a,k,d.position.start.line,f,gs.getPrecedingHeader(k,i.headings)),fallbackDate:c.value}),x!==null){let U=(g=m.get(T.parent))!=null?g:null;U!==null&&(x=new ae(he(K({},x),{parent:U}))),m.set(k,x)}}catch(U){s(U,r,T,S);continue}x!==null&&(f++,o.push(x))}else{if(T.parent<0)continue;let k=T.position.start.line,S=(y=m.get(T.parent))!=null?y:null;m.set(k,new Bi(u[k],S))}return o}var gs=class{constructor({metadataCache:e,vault:t,events:n}){this.logger=St.getLogger("tasks.Cache");this.logger.debug("Creating Cache object"),this.metadataCache=e,this.metadataCacheEventReferences=[],this.vault=t,this.vaultEventReferences=[],this.events=n,this.eventsEventReferences=[],this.tasksMutex=new Bo,this.state="Cold",this.logger.debug("Cache.constructor(): state = Cold"),this.tasks=[],this.loadedAfterFirstResolve=!1,this.subscribeToCache(),this.subscribeToVault(),this.subscribeToEvents(),this.loadVault()}unload(){this.logger.info("Unloading Cache");for(let e of this.metadataCacheEventReferences)this.metadataCache.offref(e);for(let e of this.vaultEventReferences)this.vault.offref(e);for(let e of this.eventsEventReferences)this.events.off(e)}getTasks(){return this.tasks}getState(){return this.state}notifySubscribers(){this.logger.debug("Cache.notifySubscribers()"),this.events.triggerCacheUpdate({tasks:this.tasks,state:this.state})}subscribeToCache(){this.logger.debug("Cache.subscribeToCache()");let e=this.metadataCache.on("resolved",()=>P(this,null,function*(){this.loadedAfterFirstResolve||(this.loadedAfterFirstResolve=!0,this.loadVault())}));this.metadataCacheEventReferences.push(e);let t=this.metadataCache.on("changed",n=>{this.tasksMutex.runExclusive(()=>{this.indexFile(n)})});this.metadataCacheEventReferences.push(t)}subscribeToVault(){this.logger.debug("Cache.subscribeToVault()");let{useFilenameAsScheduledDate:e}=Z(),t=this.vault.on("create",s=>{s instanceof hs.TFile&&(this.logger.debug(`Cache.subscribeToVault.createdEventReference() ${s.path}`),this.tasksMutex.runExclusive(()=>{this.indexFile(s)}))});this.vaultEventReferences.push(t);let n=this.vault.on("delete",s=>{s instanceof hs.TFile&&(this.logger.debug(`Cache.subscribeToVault.deletedEventReference() ${s.path}`),this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.filter(a=>a.path!==s.path),this.notifySubscribers()}))});this.vaultEventReferences.push(n);let i=this.vault.on("rename",(s,a)=>{s instanceof hs.TFile&&(this.logger.debug(`Cache.subscribeToVault.renamedEventReference() ${s.path}`),this.tasksMutex.runExclusive(()=>{let o=new Ve(s.path),u=new To(()=>yt.fromPath(s.path));this.tasks=this.tasks.map(l=>l.path===a?e?yt.updateTaskPath(l,s.path,u.value):new ae(he(K({},l),{taskLocation:l.taskLocation.fromRenamedFile(o)})):l),this.notifySubscribers()}))});this.vaultEventReferences.push(i)}subscribeToEvents(){this.logger.debug("Cache.subscribeToEvents()");let e=this.events.onRequestCacheUpdate(t=>{t({tasks:this.tasks,state:this.state})});this.eventsEventReferences.push(e)}loadVault(){return this.logger.debug("Cache.loadVault()"),this.tasksMutex.runExclusive(()=>P(this,null,function*(){this.state="Initializing",this.logger.debug("Cache.loadVault(): state = Initializing"),yield Promise.all(this.vault.getMarkdownFiles().map(e=>this.indexFile(e))),this.state="Warm",this.logger.debug("Cache.loadVault(): state = Warm"),this.notifySubscribers()}))}indexFile(e){return P(this,null,function*(){let t=this.metadataCache.getFileCache(e);if(t==null)return;if(!e.path.endsWith(".md")){this.logger.debug("indexFile: skipping non-markdown file: "+e.path);return}this.logger.debug("Cache.indexFile: "+e.path);let n=this.tasks.filter(a=>a.path===e.path
The following task has been ignored, to prevent Tasks queries getting stuck with 'Loading Tasks ...'
Error: ${e}
6 months ago
File: ${t}
Line number: ${n.position.start.line}
8 months 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.
5 months ago
`;this.logger.error(s),e instanceof Error&&this.logger.error(e.stack?e.stack:"Cannot determine stack"),this.state==="Initializing"&&new hs.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 th=require("obsidian");var _w=require("obsidian");function Ue(){}function Fm(r){return r()}function kv(){return Object.create(null)}function Nt(r){r.forEach(Fm)}function nl(r){return typeof r=="function"}function zr(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function Ev(r){return Object.keys(r).length===0}var Sv=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,vo=class{constructor(e){this.options=e,this._listeners="WeakMap"in Sv?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)vo.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};vo.entries="WeakMap"in Sv?new WeakMap:void 0;var Ov=!1;function yN(){Ov=!0}function bN(){Ov=!1}function F(r,e){r.appendChild(e)}function de(r,e,t){r.insertBefore(e,t||null)}function oe(r){r.parentNode&&r.parentNode.removeChild(r)}function Ri(r,e){for(let t=0;t<r.length;t+=1)r[t]&&r[t].d(e)}function Q(r){return document.createElement(r)}function TN(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function Me(r){return document.createTextNode(r)}function ue(){return Me(" ")}function Dv(){return Me("")}function xe(r,e,t,n){return r.addEventListener(e,t,n),()=>r.removeEventListener(e,t,n)}function xv(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 Rv(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 _N(r){return Array.from(r.childNodes)}function Rr(r,e){e=""+e,r.data!==e&&(r.data=e)}function mr(r,e){r.value=e==null?"":e}function Lm(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 Mv(r){let e=r.querySelector(":checked");return e&&e.__value}var tl;function vN(){if(tl===void 0){tl=!1;try{typeof window!="undefined"&&window.parent&&window.parent.document}catch(r){tl=!0}}return tl}function Cv(r,e){getComputedStyle(r).position==="static"&&(r.style.position="relative");let n=Q("iframe");n.setAttribute("style","display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;"),n.setAttribute("aria-hidden","true"),n.tabIndex=-1;let i=vN(),s;return i?(n.src="data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}<\/script>",s=xe(window,"message",a=>{a.source===n.contentWindow&&e()})):(n.src="about:blank",n.onload=()=>{s=xe(n.contentWindow,"resize",e),e()}),F(r,n),()=>{(i||s&&n.contentWindow)&&s(),oe(n)}}function Sn(r,e,t){r.classList[t?"add":"remove"](e)}var _s=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=TN(t.nodeName):this.e=Q(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)de(this.t,this.n[t],e)}p(e){this.d(),this.h(e),this.i(this.a)}d(){this.n.forEach(oe)}};var wo;function _o(r){wo=r}function wN(){if(!wo)throw new Error("Function called outside component initialization");return wo}function Um(r){wN().$$.on_mount.push(r)}var bs=[];var je=[],Ts=[],Nm=[],kN=Promise.
9 months ago
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.
5 months ago
`;dl(c);return}let l=Math.min(Math.pow(10,s),100);o.debug(`timeout = ${l}`),setTimeout(()=>P(void 0,null,function*(){yield cw({originalTask:r,newTasks:e,vault:t,metadataCache:n,workspace:i,previousTries:s+1})}),l)});try{let[l,c,d]=yield dw(r,t),f=[...d.slice(0,l),...e.map(m=>m.toFileLineString()),...d.slice(l+1)];yield t.modify(c,f.join(`
`))}catch(l){if(l instanceof Vn){l.message&&lw(l.message),yield u();return}else if(l instanceof fl){yield u();return}else l instanceof Error&&dl(l.message)}});function dw(r,e){return P(this,null,function*(){if(xo===void 0)throw new Vn;let t=e.getAbstractFileByPath(r.path);if(!(t instanceof Ro.TFile))throw new Vn(`Tasks: No file found for task ${r.description}. Retrying ...`);if(!eI.includes(t.extension))throw new Error(`Tasks: Does not support files with the ${t.extension} file extension.`);let n=xo.getFileCache(t);if(n==null||n===null)throw new Vn(`Tasks: No file cache found for file ${t.path}. Retrying ...`);let i=n.listItems;if(i===void 0||i.length===0)throw new Vn(`Tasks: No list items found in file cache of ${t.path}. Retrying ...`);let a=(yield e.read(t)).split(`
`),o=rI(r,a,i,tI);if(o===void 0)throw new fl;return[o,t,a]})}function Xm(r,e){return P(this,null,function*(){try{let[t,n,i]=yield dw(r,e);return[t,n]}catch(t){t instanceof Vn?t.message&&lw(t.message):t instanceof Error&&dl(t.message)}})}function fw(r,e){return r<e.length}function rI(r,e,t,n){let i=nI(r,e);return i!==void 0||(i=iI(r,e),i!==void 0)?i:sI(r,e,t,n)}function nI(r,e){let t=r.taskLocation.lineNumber;if(fw(t,e)&&e[t]===r.originalMarkdown)return pl().debug(`Found original markdown at original line number ${t}`),t}function iI(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 sI(r,e,t,n){let i,s=0;for(let a of t){let o=a.position.start.line;if(!fw(o,e))return;if(o<r.taskLocation.sectionStart||a.task===void 0)continue;let u=e[o];if(_e.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}.
9 months ago
Expected task:
${r.originalMarkdown}
Found task:
5 months ago
${u}`);return}break}s++}}return i}var Ds=class{constructor(e){this.addGlobalFilterOnSave=e.addGlobalFilterOnSave,this.originalBlocking=e.originalBlocking,this.description=e.description,this.status=e.status,this.priority=e.priority,this.recurrenceRule=e.recurrenceRule,this.createdDate=e.createdDate,this.startDate=e.startDate,this.scheduledDate=e.scheduledDate,this.dueDate=e.dueDate,this.doneDate=e.doneDate,this.cancelledDate=e.cancelledDate,this.forwardOnly=e.forwardOnly,this.blockedBy=e.blockedBy,this.blocking=e.blocking}static fromTask(e,t){let n=_e.getInstance().removeAsWordFrom(e.description),i=n!=e.description||!_e.getInstance().includedIn(e.description),s="none";e.priority==="5"?s="lowest":e.priority==="4"?s="low":e.priority==="2"?s="medium":e.priority==="1"?s="high":e.priority==="0"&&(s="highest");let a=[];for(let u of e.dependsOn){let l=t.find(c=>c.id===u);!l||a.push(l)}let o=t.filter(u=>u.dependsOn.includes(e.id));return new Ds({addGlobalFilterOnSave:i,originalBlocking:o,description:n,status:e.status,priority:s,recurrenceRule:e.recurrence?e.recurrence.toText():"",createdDate:e.created.formatAsDate(),startDate:e.start.formatAsDate(),scheduledDate:e.scheduled.formatAsDate(),dueDate:e.due.formatAsDate(),doneDate:e.done.formatAsDate(),cancelledDate:e.cancelled.formatAsDate(),forwardOnly:!0,blockedBy:a,blocking:o})}applyEdits(e,t){return P(this,null,function*(){let n=this.description.trim();this.addGlobalFilterOnSave&&(n=_e.getInstance().prependTo(n));let i=wi(this.startDate,this.forwardOnly),s=wi(this.scheduledDate,this.forwardOnly),a=wi(this.dueDate,this.forwardOnly),o=wi(this.cancelledDate,this.forwardOnly),u=wi(this.createdDate,this.forwardOnly),l=wi(this.doneDate,this.forwardOnly),c=null;this.recurrenceRule&&(c=st.fromText({recurrenceRuleText:this.recurrenceRule,startDate:i,scheduledDate:s,dueDate:a}));let d;switch(this.priority){case"lowest":d="5";break;case"low":d="4";break;case"medium":d="2";break;case"high":d="1";break;case"highest":d="0";break;default:d="3"}let f=[];for(let S of this.blockedBy){let x=yield aI(S,t);f.push(x)}let m=e.id,g=[],y=[];(this.blocking.toString()!==this.originalBlocking.toString()||this.blocking.length!==0)&&(e.id===""&&(m=go(t.filter(S=>S.id!=="").map(S=>S.id))),g=this.originalBlocking.filter(S=>!this.blocking.includes(S)),y=this.blocking.filter(S=>!this.originalBlocking.includes(S)));let T=new ae(he(K({},e),{description:n,status:e.status,priority:d,recurrence:c,startDate:i,scheduledDate:s,dueDate:a,doneDate:l,createdDate:u,cancelledDate:o,dependsOn:f.map(S=>S.id),id:m}));for(let S of g){let x=lv(S,T);yield gr({originalTask:S,newTasks:x})}for(let S of y){let x=uv(S,T);yield gr({originalTask:S,newTasks:x})}let k=l||window.moment();return T.handleNewStatusWithRecurrenceInUsersOrder(this.status,k)})}parseAndValidateRecurrence(){var t;if(!this.recurrenceRule)return{parsedRecurrence:"<i>not recurring</>",isRecurrenceValid:!0};let e=(t=st.fromText({recurrenceRuleText:this.recurrenceRule,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:t.toText();return e?this.startDate||this.scheduledDate||this.dueDate?{parsedRecurrence:e,isRecurrenceValid:!0}:{parsedRecurrence:"<i>due, scheduled or start date required</i>",isRecurrenceValid:!1}:{parsedRecurrence:"<i>invalid recurrence rule</i>",isRecurrenceValid:!1}}};function aI(r,e){return P(this,null,function*(){if(r.id!=="")return r;let t=e.filter(i=>i.id!==""),n=zu(r,t.map(i=>i.id));return yield gr({originalTask:r,newTasks:n}),n})}function oI(r){let e,t=pt("Recurs",r[2])+"",n,i,s,a,o,u,l,c,d;return{c(){e=Q("label"),n=ue(),i=Q("input"),s=ue(),a=Q("code"),o=Me(r[4]),u=ue(),l=new _s(!1),L(e,"for","recurrence"),L(i,"id","recurrence"),L(i,"type","text"),L(i,"class","tasks-modal-date-input"),L(i,"placeholder","Try 'every day when done'"),L(i,"accesskey",r[2]),Sn(i,"tasks-modal-error",!r[1]),l.a=null,L(a,"class","tasks-modal-parsed-date")},m(f,m){de(f,e,m),e.innerHTML=t,de(f,n,m),de(f,i,m),mr(i,r[0].recurrenceRule),de(f,s,m),de(f,a,m),F(a,o),F(a,u),l.m(r[3],a),c||(d=xe(i,"input",r[5]),c=!0)},p(f,[m]){m&4&&t!==(t=pt("Recurs",f[2])+"")&&(e.inne
`);e.setLine(o,g)};new zn({app:n,task:l,onSubmit:c,allTasks:i}).open()};var rh=require("obsidian");var ww=(r,e,t)=>{var u;if(r)return t instanceof rh.MarkdownView;if(!(t instanceof rh.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=nh(a,n);e.setLine(s,o.text),e.setCursor(_I(i,o))},nh=(r,e)=>{let t=ae.fromLine({line:r,taskLocation:ft.fromUnknownPosition(new Ve(e)),fallbackDate:null});if(t!==null){let n=t.toggleWithRecurrenceInUsersOrder().map(i=>i.toFileLineString());return{text:n.join(`
5 months ago
`),moveTo:{line:n.length-1}}}else{let n=r.match(J.taskRegex);if(n!==null){let i=n[3],a=De.getInstance().bySymbol(i).nextStatusSymbol;return{text:r.replace(J.taskRegex,`$1- [${a}] $4`)}}else if(J.listItemRegex.test(r)){let i=r.replace(J.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=r.replace(J.indentationRegex,"$1- ");return{text:i,moveTo:{ch:i.length}}}}},_I=(r,e)=>{var s;let t={line:0,ch:r.ch},n=K(K({},t),(s=e.moveTo)!=null?s:{}),i=e.text.split(`
5 months ago
`)[n.line].length;return{line:r.line+n.line,ch:Math.min(n.ch,i)}};var hl=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)=>vw(t,n,i,this.app,this.plugin.getTasks())}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:ww})}};var Kn=class{constructor(){this.hidePostponeButton=!1;this.hideTaskCount=!1;this.hideBacklinks=!1;this.hideEditButton=!1;this.hideUrgency=!0;this.shortMode=!1;this.explainQuery=!1}};function Ni(r,e){let t=`Error: ${r}.
9 months ago
The error message was:
5 months ago
`,n="";return e instanceof Error?n+=e:n+="Unknown error",`${t}"${n}"`}var vI=Object.prototype.toString,Rs=Array.isArray||function(e){return vI.call(e)==="[object Array]"};function sh(r){return typeof r=="function"}function wI(r){return Rs(r)?"array":typeof r}function ih(r){return r.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function kw(r,e){return r!=null&&typeof r=="object"&&e in r}function kI(r,e){return r!=null&&typeof r!="object"&&r.hasOwnProperty&&r.hasOwnProperty(e)}var EI=RegExp.prototype.test;function SI(r,e){return EI.call(r,e)}var OI=/\S/;function DI(r){return!SI(OI,r)}var xI={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function RI(r){return String(r).replace(/[&<>"'`=\/]/g,function(t){return xI[t]})}var MI=/\s*/,CI=/\s+/,Ew=/\s*=/,AI=/\s*\}/,PI=/#|\^|\/|>|\{|&|=|!/;function NI(r,e){if(!r)return[];var t=!1,n=[],i=[],s=[],a=!1,o=!1,u="",l=0;function c(){if(a&&!o)for(;s.length;)delete i[s.pop()];else s=[];a=!1,o=!1}var d,f,m;function g(Y){if(typeof Y=="string"&&(Y=Y.split(CI,2)),!Rs(Y)||Y.length!==2)throw new Error("Invalid tags: "+Y);d=new RegExp(ih(Y[0])+"\\s*"),f=new RegExp("\\s*"+ih(Y[1])),m=new RegExp("\\s*"+ih("}"+Y[1]))}g(e||yr.tags);for(var y=new Co(r),T,k,S,x,U,q;!y.eos();){if(T=y.pos,S=y.scanUntil(d),S)for(var re=0,H=S.length;re<H;++re)x=S.charAt(re),DI(x)?(s.push(i.length),u+=x):(o=!0,t=!0,u+=" "),i.push(["text",x,T,T+1]),T+=1,x===`
`&&(c(),u="",l=0,t=!1);if(!y.scan(d))break;if(a=!0,k=y.scan(PI)||"name",y.scan(MI),k==="="?(S=y.scanUntil(Ew),y.scan(Ew),y.scanUntil(f)):k==="{"?(S=y.scanUntil(m),y.scan(AI),y.scanUntil(f),k="&"):S=y.scanUntil(f),!y.scan(f))throw new Error("Unclosed tag at "+y.pos);if(k==">"?U=[k,S,T,y.pos,u,l,t]:U=[k,S,T,y.pos],l++,i.push(U),k==="#"||k==="^")n.push(U);else if(k==="/"){if(q=n.pop(),!q)throw new Error('Unopened section "'+S+'" at '+T);if(q[1]!==S)throw new Error('Unclosed section "'+q[1]+'" at '+T)}else k==="name"||k==="{"||k==="&"?o=!0:k==="="&&g(S)}if(c(),q=n.pop(),q)throw new Error('Unclosed section "'+q[1]+'" at '+y.pos);return FI(II(i))}function II(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 FI(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 Co(r){this.string=r,this.tail=r,this.pos=0}Co.prototype.eos=function(){return this.tail===""};Co.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};Co.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 xs(r,e){this.view=r,this.cache={".":this.view},this.parent=e}xs.prototype.push=function(e){return new xs(e,this)};xs.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=kw(s,a[o])||kI(s,a[o])),s=s[a[o++]];else s=i.view[e],u=kw(i.view,e);if(u){n=s;break}i=i.parent}t[e]=n}return sh(n)&&(n=n.call(this.view)),n};function xt(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}xt.prototype.clearCache=function(){typeof this.templateCache!="undefined"&&this.templateCache.clear()};xt.prototype.parse=function(e,t){var n=this.templateCache,i=e+":"+(t||yr.tags).join(":"),s=typeof n!="undefined",a=s?n.get(i):void 0;return a==null&&(a=NI(e,t),s&&n.set(i,a)),a};xt.prototype.render=function(e,t,n,i){var s=this.getConfigTags(i),a=this.parse(e,s),o=t instanceof xs?t:new xs(t,void 0);return this.renderTokens(a,o,n,e,i)};xt.prototype.renderTokens=function(e,t,n,i,s){for(var a="",o,u,l,c=0,d=e.length;c<d;++c)l=void 0,o=e[c],u=o[0],u==="#"?l=this.renderSection(o,t,n,i,s):u==="^"?l=this.renderInverted(o,t,n,i,s):u===">"?l=this.renderPartial(o,t,n,s):u==="&"?l=this.unescapedValue(o,t):u==="name"?l=this.escapedValue(o,t,s):u==="text"&&(l=this.rawValue(o)),l!==void 0&&(a+=l);return a};xt.prototype.renderSection=function(e,t,n,i,s){var a=this,o="",u=t.lookup(e[1]);function l(f){return a.render(f,t,n,s)}if(!!u){if(Rs(u))for(var c=0,d=u.length;c<d;++c)o+=this.renderTokens(e[4],t.push(u[c]),n,i,s);else if(typeof u=="object"||typeof u=="string"||typeof u=="number")o+=this.renderTokens(e[4],t.push(u),n,i,s);else if(sh(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}};xt.prototype.renderInverted=function(e,t,n,i,s){var a=t.lookup(e[1]);if(!a||Rs(a)&&a.length===0)return this.renderTokens(e[4],t,n,i,s)};xt.prototype.indentPartial=function(e,t,n){for(var i=t.replace(/[^ \t]/g,""),s=e.split(`
8 months ago
`),a=0;a<s.length;a++)s[a].length&&(a>0||!n)&&(s[a]=i+s[a]);return s.join(`
5 months ago
`)};xt.prototype.renderPartial=function(e,t,n,i){if(!!n){var s=this.getConfigTags(i),a=sh(n)?n(e[1]):n[e[1]];if(a!=null){var o=e[6],u=e[5],l=e[4],c=a;u==0&&l&&(c=this.indentPartial(a,l,o));var d=this.parse(c,s);return this.renderTokens(d,t,n,c,i)}}};xt.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(n!=null)return n};xt.prototype.escapedValue=function(e,t,n){var i=this.getConfigEscape(n)||yr.escape,s=t.lookup(e[1]);if(s!=null)return typeof s=="number"&&i===yr.escape?String(s):i(s)};xt.prototype.rawValue=function(e){return e[1]};xt.prototype.getConfigTags=function(e){return Rs(e)?e:e&&typeof e=="object"?e.tags:void 0};xt.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!Rs(e))return e.escape};var yr={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){Mo.templateCache=r},get templateCache(){return Mo.templateCache}},Mo=new xt;yr.clearCache=function(){return Mo.clearCache()};yr.parse=function(e,t){return Mo.parse(e,t)};yr.render=function(e,t,n,i){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+wI(e)+'" was given as the first argument for mustache#render(template, view, partials)');return Mo.render(e,t,n,i)};yr.escape=RI;yr.Scanner=Co;yr.Context=xs;yr.Writer=xt;var ah=yr;var Rw=ia(xw());function Mw(r,e){ah.escape=function(t){return t};try{return ah.render(r,(0,Rw.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:
5 months ago
${r}`,Error(n)}}function Cw(r){return uh(r,[])}function uh(r,e){return{query:{file:new Ve(r),allTasks:e}}}var Ms=class{constructor(e=""){this.indentation=e}explainQuery(e){if(e.error!==void 0)return this.explainError(e);let t=[];return t.push(this.explainFilters(e)),t.push(this.explainGroups(e)),t.push(this.explainSorters(e)),t.push(this.explainQueryLimits(e)),t.push(this.explainDebugSettings()),t.filter(n=>n!=="").join(`
9 months ago
`)}explainError(e){let t="";return t+=`Query has an error:
`,t+=e.error+`
`,t}explainFilters(e){return e.filters.length===0?this.indent(`No filters supplied. All tasks will match the query.
`):e.filters.map(n=>n.explainFilterIndented(this.indentation)).join(`
`)}explainGroups(e){let t=e.grouping.length;if(t===0)return this.indent(`No grouping instructions supplied.
8 months ago
`);let n="";for(let i=0;i<t;i++)n+=this.indentation+e.grouping[i].instruction+`
9 months ago
`;return n}explainSorters(e){let t=e.sorting.length;if(t===0)return this.indent(`No sorting instructions supplied.
8 months ago
`);let n="";for(let i=0;i<t;i++)n+=this.indentation+e.sorting[i].instruction+`
`;return n}explainQueryLimits(e){function t(i){let s=`At most ${i} task`;return i!==1&&(s+="s"),s}let n=[];if(e.limit!==void 0){let i=t(e.limit)+`.
`;n.push(this.indent(i))}if(e.taskGroupLimit!==void 0){let i=t(e.taskGroupLimit)+` per group (if any "group by" options are supplied).
`;n.push(this.indent(i))}return n.join(`
5 months ago
`)}explainDebugSettings(){let e="",{debugSettings:t}=Z();return t.ignoreSortInstructions&&(e+=this.indent(`NOTE: All sort instructions, including default sort order, are disabled, due to 'ignoreSortInstructions' setting.
6 months ago
`)),e}indent(e){return this.indentation+e}};var Se=class{constructor(e,t=[],n=""){this.description=e,this.symbol=n,this.children=t}static booleanAnd(e){return this.combineOrCreateExplanation("All of",e,"AND")}static booleanOr(e){return this.combineOrCreateExplanation("At least one of",e,"OR")}static booleanNot(e){return new Se("None of",e,"NOT")}static booleanXor(e){return new Se("Exactly one of",e,"XOR")}asString(e=""){if(this.children.length==0)return e+this.description;let t=e;this.symbol===""?t+=this.description:(t+=this.symbol,this.children.length>1&&(t+=` (${this.description})`),t+=":");let n=e+" ";for(let i=0;i<this.children.length;i++)t+=`
5 months ago
${this.children[i].asString(n)}`;return t}static combineOrCreateExplanation(e,t,n){if(t.length===2){let i=t[0],s=t[1];if(i.symbol===n&&s.symbol==="")return i.children.push(s),i}return new Se(e,t,n)}};var Cs=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var As=class extends Cs{constructor(t){super();this.stringToFind=t}matches(t){return As.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}explanation(t){return new Se(t)}};var Qn=class extends Cs{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/^\/(.+)\/([^/]*)$/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new Qn(s)}else return null}matches(t){return t.match(this.regex)!==null}static helpMessage(){return String.raw`See https://publish.obsidian.md/tasks/Queries/Regular+Expressions
1 year 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.
5 months ago
`}explanation(t){let i=LI(t,"using regex: ",this.regexAsString());return new Se(i)}regexAsString(){let t=`'${this.regex.source}' with `;switch(this.regex.flags.length){case 0:t+="no flags";break;case 1:t+=`flag '${this.regex.flags}'`;break;default:t+=`flags '${this.regex.flags}'`;break}return t}};function LI(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 Ar=class{constructor(e,t,n,i){this.instruction=e,this.property=t,this.comparator=Ar.maybeReverse(i,n)}static maybeReverse(e,t){return e?Ar.makeReversedComparator(t):t}static makeReversedComparator(e){return(t,n,i)=>e(t,n,i)*-1}};var Xn=class{constructor(e,t,n,i){this.instruction=e,this.property=t,this.grouper=n,this.reverse=i}};var ke=class{canCreateFilterForLine(e){return ke.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 Bn(this.fieldNameSingular())}supportsSorting(){return!1}createSorterFromLine(e){if(!this.supportsSorting())return null;let t=ke.getMatch(this.sorterRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createSorter(n)}sorterRegExp(){if(!this.supportsSorting())throw Error(`sorterRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)?`,"i")}sorterInstruction(e){let t=`sort by ${this.fieldNameSingular()}`;return e&&(t+=" reverse"),t}comparator(){throw Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(e){return new Ar(this.sorterInstruction(e),this.fieldNameSingular(),this.comparator(),e)}createNormalSorter(){return this.createSorter(!1)}createReverseSorter(){return this.createSorter(!0)}supportsGrouping(){return!1}createGrouperFromLine(e){if(!this.supportsGrouping())return null;let t=ke.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createGrouper(n)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)?$`,"i")}grouperInstruction(e){let t=`group by ${this.fieldNameSingular()}`;return e&&(t+=" reverse"),t}grouper(){throw Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(e){return new Xn(this.grouperInstruction(e),this.fieldNameSingular(),this.grouper(),e)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var Mn=class{constructor(e,t){this._rawInstruction=e,this._anyContinuationLinesRemoved=t.trim(),this._anyPlaceholdersExpanded=this._anyContinuationLinesRemoved}recordExpandedPlaceholders(e){this._anyPlaceholdersExpanded=e}get rawInstruction(){return this._rawInstruction}get anyContinuationLinesRemoved(){return this._anyContinuationLinesRemoved}get anyPlaceholdersExpanded(){return this._anyPlaceholdersExpanded}explainStatement(e){function t(a,o){o!==a&&(s+=` =>
8 months ago
${e}${o}`)}let n=this._rawInstruction.trim(),i=n.split(`
`).join(`
`+e),s=`${e}${i}`;return this._rawInstruction.includes(`
`)&&(s+=`
5 months ago
`+e),t(n,this._anyContinuationLinesRemoved),t(this._anyContinuationLinesRemoved,this._anyPlaceholdersExpanded),s}allLinesIdentical(){return this._rawInstruction===this._anyContinuationLinesRemoved&&this._rawInstruction===this._anyPlaceholdersExpanded}};var bt=class{constructor(e,t,n){this._statement=new Mn(e,e),this.explanation=n,this.filterFunction=t}get statement(){return this._statement}setStatement(e){this._statement=e}get instruction(){return this._statement.anyPlaceholdersExpanded}explainFilterIndented(e){let t=this._statement.explainStatement(e);return this.onlyNeedsOneLineExplanation()?`${t}
7 months ago
`:`${t} =>
${this.explanation.asString(e+" ")}
5 months ago
`}simulateExplainFilter(){return this.onlyNeedsOneLineExplanation()?this.explanation:new Se(this.instruction+" =>",[this.explanation])}onlyNeedsOneLineExplanation(){return this.explanation.asString("")===this.instruction}};var Xr=class{constructor(e){this.instruction=e}get queryComponent(){return this._queryComponent}set queryComponent(e){this._queryComponent=e}get error(){return this._error}set error(e){this._error=e}isValid(){return this._queryComponent!==void 0}static fromObject(e,t){let n=new Xr(e);return n._queryComponent=t,n}static fromError(e,t){let n=new Xr(e);return n._error=t,n}};var ie=class{constructor(e){this.object=e}get instruction(){return this.object.instruction}get filter(){return this.object.queryComponent}isValid(){return this.object.isValid()}get error(){return this.object.error}get filterFunction(){if(this.filter)return this.filter.filterFunction}static fromFilter(e){return new ie(Xr.fromObject(e.instruction,e))}static fromError(e,t){return new ie(Xr.fromError(e,t))}};var Ie=class extends ke{createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t===null)return ie.fromError(e,`do not understand query filter (${this.fieldName()})`);let n=t[1].toLowerCase(),i=t[2],s=null;if(n.includes("include"))s=new As(i);else if(n.includes("regex")){try{s=Qn.validateAndConstruct(i)}catch(u){let l=Ni("Parsing regular expression",u)+`
1 year ago
5 months ago
${Qn.helpMessage()}`;return ie.fromError(e,l)}if(s===null)return ie.fromError(e,`Invalid instruction: '${e}'
9 months ago
5 months ago
${Qn.helpMessage()}`)}if(s===null)return ie.fromError(e,`do not understand query filter (${this.fieldName()})`);let a=n.match(/not/)!==null,o=new bt(e,this.getFilter(s,a),s.explanation(e));return ie.fromFilter(o)}fieldPattern(){return this.fieldNameSingularEscaped()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`,"i")}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}comparator(){return(e,t)=>this.value(e).localeCompare(this.value(t),void 0,{numeric:!0})}grouper(){return e=>[this.value(e)]}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}};var Ii=class extends Ie{fieldName(){return"description"}value(e){return _e.getInstance().removeAsSubstringFrom(e.description)}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=Ii.cleanDescription(e.description),i=Ii.cleanDescription(t.description);return n.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(e){e=_e.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 gl=class{findUnexpandedDateText(e){let t=["<%","YYYY-MM-DD"];for(let n of t)if(e.includes(n))return this.unexpandedDateTextMessage(n);return null}unexpandedDateTextMessage(e){return`Instruction contains unexpanded template text: "${e}" - and cannot be interpreted.
9 months ago
Possible causes:
- The query is an a template file, and is not intended to be searched.
- A command such as "Replace templates in the active file" needs to be run.
- The core "Daily notes" plugin is in use, and the template contained
date calculations that it does not support.
- Some sample template text was accidentally pasted in to a tasks query,
instead of in to a template file.
1 year ago
9 months ago
See: https://publish.obsidian.md/tasks/Advanced/Instruction+contains+unexpanded+template+text
5 months ago
`}};var yl=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e.toLocaleLowerCase()===this._instruction.toLocaleLowerCase()}createFilterOrErrorMessage(e){return this.canCreateFilterForLine(e)?ie.fromFilter(new bt(e,this._filter,new Se(e))):ie.fromError(e,`do not understand filter: ${e}`)}};var Ut=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new yl(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let t of this._filters){let n=t.createFilterOrErrorMessage(e);if(n.error===void 0)return n}return ie.fromError(e,`do not understand filter: ${e}`)}};var at=class extends ke{constructor(t=null){super();t!==null?this.filterInstructions=t:(this.filterInstructions=new Ut,this.filterInstructions.add(`has ${this.fieldName()} date`,n=>this.date(n)!==null),this.filterInstructions.add(`no ${this.fieldName()} date`,n=>this.date(n)===null),this.filterInstructions.add(`${this.fieldName()} date is invalid`,n=>{let i=this.date(n);return i!==null&&!i.isValid()}))}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){var f;let n=this.checkForUnexpandedTemplateText(t);if(n)return ie.fromError(t,n);let i=this.filterInstructions.createFilterOrErrorMessage(t);if(i.isValid())return i;let s=ke.getMatch(this.filterRegExp(),t);if(s===null)return ie.fromError(t,"do not understand query filter ("+this.fieldName()+" date)");let a=s[1],o=(f=s[2])==null?void 0:f.toLowerCase(),u=s[3],l=Yt.parseDateRange(u);if(!l.isValid()){let m=Yt.parseDate(a);m.isValid()&&(l=new kt(m,m))}if(!l.isValid())return ie.fromError(t,"do not understand "+this.fieldName()+" date");let c=this.buildFilterFunction(o,l),d=at.buildExplanation(this.fieldNameForExplanation(),o,this.filterResultIfFieldMissing(),l);return ie.fromFilter(new bt(t,c,d))}buildFilterFunction(t,n){let i;switch(t){case"before":i=s=>s?s.isBefore(n.start):this.filterResultIfFieldMissing();break;case"after":i=s=>s?s.isAfter(n.end):this.filterResultIfFieldMissing();break;case"on or before":case"in or before":i=s=>s?s.isSameOrBefore(n.end):this.filterResultIfFieldMissing();break;case"on or after":case"in or after":i=s=>s?s.isSameOrAfter(n.start):this.filterResultIfFieldMissing();break;default:i=s=>s?s.isSameOrAfter(n.start)&&s.isSameOrBefore(n.end):this.filterResultIfFieldMissing()}return this.getFilter(i)}getFilter(t){return n=>t(this.date(n))}filterRegExp(){return new RegExp(`^${this.fieldNameForFilterInstruction()} (((?:on|in) or before|before|(?:on|in) or after|after|on|in)? ?(.*))`,"i")}fieldNameForFilterInstruction(){return this.fieldName()}static buildExplanation(t,n,i,s){let a=n,o="YYYY-MM-DD (dddd Do MMMM YYYY)",u;switch(n){case"before":case"on or after":u=s.start.format(o);break;case"after":case"on or before":u=s.end.format(o);break;case"in or before":a="on or before",u=s.end.format(o);break;case"in or after":a="on or after",u=s.start.format(o);break;default:if(!s.start.isSame(s.end)){let c=`${t} date is between:`,d=[new Se(`${s.start.format(o)} and`),new Se(`${s.end.format(o)} inclusive`)];return i&&d.push(new Se(`OR no ${t} date`)),new Se(c,d)}a="on",u=s.start.format(o);break}let l=`${t} date is ${a} ${u}`;return i&&(l+=` OR no ${t} date`),new Se(l)}fieldNameForExplanation(){return this.fieldName()}supportsSorting(){return!0}comparator(){return(t,n)=>fr(this.date(t),this.date(n))}supportsGrouping(){return!0}grouper(){return t=>{let n=this.date(t);return n===null?["No "+this.fieldName()+" date"]:n.isValid()?[n.format("YYYY-MM-DD dddd")]:["%%0%% Invalid "+this.fieldName()+" date"]}}checkForUnexpandedTemplateText(t){return new gl().findUnexpandedDateText(t)}};var bl=class extends at{fieldName(){return"created"}date(e){return e.createdDate}filterResultIfFieldMissing(){return!1}};var Tl=class extends at{fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}};var Ps=class extends at{fieldName(){return"due"}date(e){return e.dueDate}filter
7 months ago
The instruction was converted to the following simplified line:
${i.simplifiedLine}
Where the sub-expressions in the simplified line are:
${a}
For help, see:
https://publish.obsidian.md/tasks/Queries/Combining+Filters
`;return ie.fromError(t,u)}stringifySubExpressionsForErrorMessage(t){return Object.entries(t).map(([n,i])=>` '${n}': '${i}'
=> ${this.stringifySubExpressionStatus(i)}`).join(`
5 months ago
`)}stringifySubExpressionStatus(t){let n=Io(t);return n?n.error?`ERROR:
7 months ago
${n.error.split(`
`).map(s=>s.trim()).join(`
`)}`:"OK":`ERROR:
do not understand query`}helpMessageFromSimpleError(t,n){return`Could not interpret the following instruction as a Boolean combination:
${t}
The error message is:
5 months ago
${n}`}};var Nl=class extends Ie{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;return t===null?["Unknown Location"]:["[["+t+"]]"]}}};var js=class extends ke{canCreateFilterForLine(e){return!1}createFilterOrErrorMessage(e){return ie.fromError(e,"Filtering by urgency is not yet supported")}fieldName(){return"urgency"}filterRegExp(){throw Error(`filterRegExp() unimplemented for ${this.fieldName()}`)}supportsSorting(){return!0}comparator(){return(e,t)=>t.urgency-e.urgency}supportsGrouping(){return!0}grouper(){return e=>[`${e.urgency.toFixed(2)}`]}createGrouper(e){return super.createGrouper(!e)}grouperInstruction(e){return super.grouperInstruction(!e)}};var Il=class extends Ie{constructor(){super()}fieldName(){return"status.name"}value(e){return e.status.name}supportsSorting(){return!0}supportsGrouping(){return!0}};var rn=class extends ke{canCreateFilterForLine(e){let t=new RegExp(`^(?:${this.fieldNameSingularEscaped()})`,"i");return ke.lineMatchesFilter(t,e)}createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t===null)return this.helpMessage(e);let n=t[1].toLowerCase(),i=t[2],s=zt[i.toUpperCase()];if(!s)return this.helpMessage(e);let a;switch(n){case"is":a=o=>o.status.type===s;break;case"is not":a=o=>o.status.type!==s;break;default:return this.helpMessage(e)}return ie.fromFilter(new bt(e,a,new Se(e)))}filterRegExp(){return new RegExp(`^(?:${this.fieldNameSingularEscaped()}) (is|is not) ([^ ]+)$`,"i")}helpMessage(e){let t=Object.values(zt).filter(i=>i!=="EMPTY").join(" "),n=`Invalid ${this.fieldNameSingular()} instruction: '${e}'.
9 months ago
Allowed options: 'is' and 'is not' (without quotes).
Allowed values: ${t}
Note: values are case-insensitive,
so 'in_progress' works too, for example.
5 months ago
Example: ${this.fieldNameSingular()} is not NON_TASK`;return ie.fromError(e,n)}fieldName(){return"status.type"}value(e){return e.status.type}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=rn.groupName(e),i=rn.groupName(t);return n.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return e=>[rn.groupName(e)]}static groupName(e){return e.status.typeGroupText}};var Fl=class extends Ie{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 Ll=class extends Ie{fieldName(){return"folder"}value(e){return e.file.folder}supportsGrouping(){return!0}grouper(){return e=>[Ie.escapeMarkdownCharacters(this.value(e))]}};var Ul=class extends Ie{fieldName(){return"root"}value(e){return e.file.root}supportsGrouping(){return!0}grouper(){return e=>[Ie.escapeMarkdownCharacters(this.value(e))]}};var Wl=class extends Ie{fieldName(){return"backlink"}value(e){let t=e.getLinkText({isFilenameUnique:!0});return t===null?"Unknown Location":t}createFilterOrErrorMessage(e){return ie.fromError(e,"backlink field does not support filtering")}canCreateFilterForLine(e){return!1}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;if(t===null)return["Unknown Location"];let n=e.precedingHeader;return n===null?["[["+t+"]]"]:[`[[${t}#${n}|${t} > ${n}]]`]}}};var ql=class extends at{fieldName(){return"cancelled"}date(e){return e.cancelledDate}filterResultIfFieldMissing(){return!1}};var $l=class extends Zr{constructor(){super(),this._filters.add("is blocking",(e,t)=>e.isBlocking(t.allTasks)),this._filters.add("is not blocking",(e,t)=>!e.isBlocking(t.allTasks)),this._filters.add("is blocked",(e,t)=>e.isBlocked(t.allTasks)),this._filters.add("is not blocked",(e,t)=>!e.isBlocked(t.allTasks))}fieldName(){return"blocking"}};var jl=class extends Ie{constructor(){super();this.filterInstructions=new Ut;this.filterInstructions.add("has id",t=>t.id.length>0),this.filterInstructions.add("no id",t=>t.id.length===0)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.isValid()?n:super.createFilterOrErrorMessage(t)}fieldName(){return"id"}value(t){return t.id}supportsSorting(){return!0}supportsGrouping(){return!0}};var Gl=class extends ke{constructor(){super();this.filterInstructions=new Ut;this.filterInstructions.add("has depends on",t=>t.dependsOn.length>0),this.filterInstructions.add("no depends on",t=>t.dependsOn.length===0)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.isValid()?n:ie.fromError(t,"Unknown instruction")}fieldName(){return"blocked by"}filterRegExp(){return null}};var Eh=[()=>new Il,()=>new rn,()=>new Zn,()=>new Dl,()=>new Fi,()=>new Ol,()=>new ql,()=>new bl,()=>new Sl,()=>new El,()=>new Ps,()=>new Tl,()=>new Ns,()=>new Ll,()=>new Ul,()=>new Wl,()=>new Ii,()=>new Li,()=>new kl,()=>new _l,()=>new Nl,()=>new js,()=>new Fl,()=>new wl,()=>new jl,()=>new Gl,()=>new $l,()=>new Pl];function Io(r){for(let e of Eh){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}function Vw(r){let e=/^sort by /i;if(r.match(e)===null)return null;for(let t of Eh){let i=t().createSorterFromLine(r);if(i)return i}return null}function zw(r){let e=/^group by /i;if(r.match(e)===null)return null;for(let t of Eh){let i=t().createGrouperFromLine(r);if(i)return i}return null}var Yl=class{constructor(e,t,n){this.nestingLevel=e,this.displayName=t,this.property=n}};var Bl=class{constructor(e,t){this.lastHeadingAtLevel=new Array;this.groupers=t;let i=e.keys().next().value.length;for(let s=0;s<i;s++)this.lastHeadingAtLevel.push("")}getHeadingsForTaskGroup(e){let t=new Array;for(let n=0;n<e.length;n++){let i=e[n];if(i!=this.la
2 years ago
`;return e}toString(){let e=`
`;e+=`Group names: [${this.groups}]
1 year ago
`;for(let t of this.groupHeadings)e+=`${"#".repeat(4+t.nestingLevel)} [${t.property}] ${t.displayName}
5 months ago
`;return e+=this.tasksAsStringOfLines(),e}};var Gs=class{constructor(e,t,n){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length,this._groupers=e;let s=new zl(e,t,n).generateTaskTreeStorage();this.addTaskGroups(s),this.sortTaskGroups(),this.setGroupsHeadings(s)}get groupers(){return this._groupers}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";e+=`Groupers (if any):
8 months ago
`;for(let n of this._groupers){let i=n.reverse?" reverse":"";e+=`- ${n.property}${i}
1 year ago
`}for(let n of this.groups)e+=n.toString(),e+=`
2 years ago
---
`;return e+=`
${this.totalTasksCount()} tasks
5 months ago
`,e}addTaskGroups(e){for(let[t,n]of e){let i=new Kl(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 Bl(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 ti=class{constructor(e,t){this.queryPath=e,this.allTasks=[...t]}static fromAllTasks(e){return new ti(void 0,e)}queryContext(){return this.queryPath?uh(this.queryPath,this.allTasks):void 0}};function Kw(r){return`task${r!==1?"s":""}`}var qi=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} ${Kw(e)}`:`${e} of ${t} ${Kw(t)}`}get groups(){return this.taskGroups.groups}static fromError(e){let t=new qi(new Gs([],[],ti.fromAllTasks([])),0);return t._searchErrorMessage=e,t}};function Qw(r){return r.endsWith("\\")}function Xw(r){return r.endsWith("\\\\")}function mF(r){return r.replace(/^[ \t]*/,"")}function hF(r){return r.replace(/[ \t]*\\$/,"")}function gF(r,e){let t=r;return e&&(t=mF(r)),Xw(t)?t=t.slice(0,-1):Qw(r)&&(t=hF(t)),t}function Zw(r){let e=[],t=!1,n="",i="";for(let s of r.split(`
5 months ago
`)){let a=gF(s,t);t?(n+=`
5 months ago
`+s,i+=" "+a):(n=s,i=a),Xw(s)?t=!1:t=Qw(s),t||(i.trim()!==""&&e.push(new Mn(n,i)),n="",i="")}return e}var Ys=class{static by(e,t,n){let i=this.defaultSorters().map(a=>a.comparator),s=[];for(let a of e)s.push(a.comparator);return t.sort(Ys.makeCompositeComparator([...s,...i],n))}static defaultSorters(){return[new rn().createNormalSorter(),new js().createNormalSorter(),new Ps().createNormalSorter(),new Fi().createNormalSorter(),new Ns().createNormalSorter()]}static makeCompositeComparator(e,t){return(n,i)=>{for(let s of e){let a=s(n,i,t);if(a!==0)return a}return 0}}};var Pn=class{constructor(e,t=void 0){this._limit=void 0;this._taskGroupLimit=void 0;this._taskLayoutOptions=new Br;this._queryLayoutOptions=new Kn;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this._ignoreGlobalQuery=!1;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|cancelled date|created date|start date|scheduled date|done date|due date|recurrence rule|edit button|postpone button|urgency|tags|depends on|id)/i;this.shortModeRegexp=/^short/i;this.fullModeRegexp=/^full/i;this.explainQueryRegexp=/^explain/i;this.ignoreGlobalQueryRegexp=/^ignore global query/i;this.logger=St.getLogger("tasks.Query");this._queryId="";this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/i;this.commentRegexp=/^#.*/;this._queryId=this.generateQueryId(10),this.source=e,this.filePath=t,this.debug(`Creating query: ${this.formatQueryForLogging()}`),Zw(e).forEach(n=>{let i=this.expandPlaceholders(n,t);if(this.error===void 0)try{this.parseLine(i,n)}catch(s){let a;s instanceof Error?a=s.message:a="Unknown error",this.setError(a,n);return}})}get queryId(){return this._queryId}parseLine(e,t){switch(!0){case this.shortModeRegexp.test(e):this._queryLayoutOptions.shortMode=!0;break;case this.fullModeRegexp.test(e):this._queryLayoutOptions.shortMode=!1;break;case this.explainQueryRegexp.test(e):this._queryLayoutOptions.explainQuery=!0;break;case this.ignoreGlobalQueryRegexp.test(e):this._ignoreGlobalQuery=!0;break;case this.limitRegexp.test(e):this.parseLimit(e);break;case this.parseSortBy(e):break;case this.parseGroupBy(e):break;case this.hideOptionsRegexp.test(e):this.parseHideOptions(e);break;case this.commentRegexp.test(e):break;case this.parseFilter(e,t):break;default:this.setError("do not understand query",t)}}formatQueryForLogging(){return`[${this.source.split(`
8 months ago
`).join(" ; ")}]`}expandPlaceholders(e,t){let n=e.anyContinuationLinesRemoved;if(n.includes("{{")&&n.includes("}}")&&this.filePath===void 0)return this._error=`The query looks like it contains a placeholder, with "{{" and "}}"
1 year ago
but no file path has been supplied, so cannot expand placeholder values.
The query is:
5 months ago
${n}`,n;let i=n;if(t){let s=Cw(t);try{i=Mw(n,s)}catch(a){return a instanceof Error?this._error=a.message:this._error="Internal error. expandPlaceholders() threw something other than Error.",n}}return e.recordExpandedPlaceholders(i),i}append(e){return this.source===""?e:e.source===""?this:new Pn(`${this.source}
${e.source}`,this.filePath)}explainQuery(){return new Ms().explainQuery(this)}get limit(){return this._limit}get taskGroupLimit(){return this._taskGroupLimit}get taskLayoutOptions(){return this._taskLayoutOptions}get queryLayoutOptions(){return this._queryLayoutOptions}get filters(){return this._filters}addFilter(e){this._filters.push(e)}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}setError(e,t){t.allLinesIdentical()?this._error=`${e}
7 months ago
Problem line: "${t.rawInstruction}"`:this._error=`${e}
Problem statement:
${t.explainStatement(" ")}
5 months ago
`}get ignoreGlobalQuery(){return this._ignoreGlobalQuery}applyQueryToTasks(e){this.debug(`Executing query: ${this.formatQueryForLogging()}`);let t=new ti(this.filePath,e);try{this.filters.forEach(o=>{e=e.filter(u=>o.filterFunction(u,t))});let{debugSettings:n}=Z(),i=n.ignoreSortInstructions?e:Ys.by(this.sorting,e,t),s=i.slice(0,this.limit),a=new Gs(this.grouping,s,t);return this._taskGroupLimit!==void 0&&a.applyTaskLimit(this._taskGroupLimit),new qi(a,i.length)}catch(n){let i="Search failed";return qi.fromError(Ni(i,n))}}parseHideOptions(e){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1].toLowerCase()==="hide";switch(t[2].toLowerCase()){case"task count":this._queryLayoutOptions.hideTaskCount=n;break;case"backlink":this._queryLayoutOptions.hideBacklinks=n;break;case"postpone button":this._queryLayoutOptions.hidePostponeButton=n;break;case"priority":this._taskLayoutOptions.setVisibility("priority",!n);break;case"cancelled date":this._taskLayoutOptions.setVisibility("cancelledDate",!n);break;case"created date":this._taskLayoutOptions.setVisibility("createdDate",!n);break;case"start date":this._taskLayoutOptions.setVisibility("startDate",!n);break;case"scheduled date":this._taskLayoutOptions.setVisibility("scheduledDate",!n);break;case"due date":this._taskLayoutOptions.setVisibility("dueDate",!n);break;case"done date":this._taskLayoutOptions.setVisibility("doneDate",!n);break;case"recurrence rule":this._taskLayoutOptions.setVisibility("recurrenceRule",!n);break;case"edit button":this._queryLayoutOptions.hideEditButton=n;break;case"urgency":this._queryLayoutOptions.hideUrgency=n;break;case"tags":this._taskLayoutOptions.setTagsVisibility(!n);break;case"id":this._taskLayoutOptions.setVisibility("id",!n);break;case"depends on":this._taskLayoutOptions.setVisibility("dependsOn",!n);break;default:this.setError("do not understand hide/show option",new Mn(e,e))}}}parseFilter(e,t){var i;let n=Io(e);return n!=null?(n.filter?(n.filter.setStatement(t),this._filters.push(n.filter)):this.setError((i=n.error)!=null?i:"Unknown error",t),!0):!1}parseLimit(e){let t=e.match(this.limitRegexp);if(t===null){this.setError("do not understand query limit",new Mn(e,e));return}let n=Number.parseInt(t[3],10);t[1]!==void 0?this._taskGroupLimit=n:this._limit=n}parseSortBy(e){let t=Vw(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy(e){let t=zw(e);return t?(this._grouping.push(t),!0):!1}generateQueryId(e){let t="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890";return Array.from({length:e},()=>t[Math.floor(Math.random()*t.length)]).join("")}debug(e,t){this.logger.debugWithId(this._queryId,`"${this.filePath}": ${e}`,t)}};var ri=class{constructor(e=ri.empty){this._source=e}static getInstance(){return ri.instance||(ri.instance=new ri),ri.instance}set(e){this._source=e}query(e=void 0){return new Pn(this._source,e)}hasInstructions(){return this._source.trim()!==ri.empty}},Tr=ri;Tr.empty="";var Ql=class{constructor({obsidianEvents:e}){this.logger=St.getLogger("tasks.Events");this.obsidianEvents=e}onCacheUpdate(e){return this.logger.debug("TasksEvents.onCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.logger.debug("TasksEvents.triggerCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.logger.debug("TasksEvents.onRequestCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.logger.debug("TasksEvents.triggerRequestCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.logger.debug("TasksEvents.off()"),this.obsidianEvents.offref(e)}};var rk=require("obsidian");var tk=require("obsidian");var Sh=class{constructor(e){this.newStatus=e}apply(e){return this.isCheckedForTask(e)?[e]:e.handleNewStatusWithRecurrenceInUsersOrder(this.newStatus)}instructionDisplayName(){return`Change status to: [${this.newStatus.symbol}] ${this.newStatus.name}`}isCheckedForTask(e){return this.newStatus.symbol===e.status.symbo
`);if(m===void 0)return!1;let g=null;for(let T=0;T<m.length;T=T+1)if(m[T]!==""){g=m[T];break}return g===null?!1:_e.getInstance().includedIn(g)});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 f=a.lineStart;f<=a.lineEnd;f++){let m=o[f];if(m===void 0)continue;let g=null,y=ae.fromLine({line:m,taskLocation:new ft(new Ve(s),f,a.lineStart,u,g),fallbackDate:null});y!==null&&(l.push(y),u++)}let c=new ni({obsidianComponent:n,parentUlElement:e,taskLayoutOptions:new Br,queryLayoutOptions:new Kn});for(let f=0;f<i.length;f++){let m=l[f],g=i[f];if(m===void 0||g===void 0)continue;let y=(d=g.getAttr("data-line"))!=null?d:"0",T=Number.parseInt(y,10),k=yield c.renderTaskLine(m,T),S=g.childNodes;for(let q=0;q<S.length;q=q+1){let re=S[q];re.nodeName.toLowerCase()==="div"?k.prepend(re):re.nodeName.toLowerCase()==="ul"&&k.append(re)}let x=g.querySelectorAll("[data-footnote-id]"),U=k.querySelectorAll("[data-footnote-id]");if(x.length===U.length)for(let q=0;q<x.length;q++)U[q].replaceWith(x[q]);g.replaceWith(k)}})}};var nk=require("@codemirror/view"),ik=require("obsidian");var sk=()=>nk.ViewPlugin.fromClass(Dh),Dh=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 f=`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(f),new ik.Notice(f,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=ae.fromLine({line:a.text,taskLocation:ft.fromUnknownPosition(new Ve("")),fallbackDate:null});if(o===null)return!1;e.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder().map(f=>f.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let d=t.checked;return setTimeout(()=>{t.checked=d},1),!0}};var Vs=require("obsidian");function Uo(r,e,t){e&&r.push(bF(t))}function bF(r){return`tasks-layout-hide-${r}`}var ec=class{constructor(e){e?this.queryLayoutOptions=e:this.queryLayoutOptions=new Kn}getHiddenClasses(){let e=[],t=[[this.queryLayoutOptions.hideUrgency,"urgency"],[this.queryLayoutOptions.hideBacklinks,"backlinks"],[this.queryLayoutOptions.hideEditButton,"edit-button"],[this.queryLayoutOptions.hidePostponeButton,"postpone-button"]];for(let[n,i]of t)Uo(e,n,i);return this.queryLayoutOptions.shortMode&&e.push("tasks-layout-short-mode"),e}};function ak(r,e,t,n=void 0){let i="";e.isEmpty()||(i+=`Only tasks containing the global filter '${e.get()}'.
7 months ago
5 months ago
`);let s=new Ms(" "),a=new Pn(r,n);if(!a.ignoreGlobalQuery&&t.hasInstructions()){let o=t.query(n);i+=`Explanation of the global query:
2 years ago
8 months ago
${s.explainQuery(o)}
`}return i+=`Explanation of this Tasks code block query:
2 years ago
5 months ago
${s.explainQuery(a)}`,i}function tc(r,e,t){let n=new Pn(r,t);return n.ignoreGlobalQuery?n:e.query(t).append(n)}function ok(r){for(let t of ae.allDateFields()){let n=r[t];if(n&&!n.isValid())return!1}let e=r.happensDates.some(t=>!!(t!=null&&t.isValid()));return!r.isDone&&e}function Wo(r){return r.dueDate?"dueDate":r.scheduledDate?"scheduledDate":r.startDate?"startDate":null}function xh(r,e,t,n){let i=r[e];return ck(i,r,e,t,n)}function uk(r,e,t,n){let i=window.moment();return ck(i,r,e,t,n)}function lk(r,e,t,n){return dk(r,e,null)}function ck(r,e,t,n,i){let s=new Pt(r).postpone(n,i);return dk(e,t,s)}function dk(r,e,t){let n=yt.removeInferredStatusIfNeeded(r,[new ae(he(K({},r),{[e]:t}))])[0];return{postponedDate:t,postponedTask:n}}function fk(r,e){if(r){let t=r==null?void 0:r.format("DD MMM YYYY");return`Task's ${e} changed to ${t}`}else return`Task's ${e} removed`}function pk(r,e,t){return`\u2139\uFE0F ${Rh(r,e,t)} (right-click for more options)`}function Rh(r,e,t){let n=Wo(r),i=r[n];return yk(n,i,e,t)}function mk(r,e,t){let n=Wo(r),i=window.moment().startOf("day");return yk(n,i,e,t)}function hk(r,e,t){let n=Wo(r);return n==="scheduledDate"&&r.scheduledDateIsInferred?"Cannot remove inferred scheduled date":`Remove ${gk(n)}`}function TF(r){return vs(r.replace("Date",""))}function gk(r){return r.replace("Date"," date")}function yk(r,e,t,n){let s=new Pt(e).postpone(n,t).format("ddd Do MMM"),a=t!=1?t:"a";return e.isSameOrBefore(window.moment(),"day")?`${TF(r)} in ${a} ${n}, on ${s}`.replace(" in 0 days"," today").replace("in a day","tomorrow"):`Postpone ${gk(r)} by ${a} ${n}, to ${s}`}var rc=class{constructor(e){e?this.taskLayoutOptions=e:this.taskLayoutOptions=new Br}generateHiddenClasses(){let e=[];return this.taskLayoutOptions.toggleableComponents.forEach(t=>{Uo(e,!this.taskLayoutOptions.isShown(t),t)}),Uo(e,!this.taskLayoutOptions.areTagsShown(),"tags"),e}};var Mh=require("obsidian");var ii=class extends Bs{constructor(e,t,n=Fo){super(n);let i=(l,c,d,f,m,g)=>{let y=m(t,f,d);c.setTitle(y).onClick(()=>ii.postponeOnClickCallback(l,t,f,d,g,n))},s=mk,a=uk;this.addItem(l=>i(e,l,"days",0,s,a)),this.addItem(l=>i(e,l,"day",1,s,a)),this.addSeparator();let o=Rh,u=xh;this.addItem(l=>i(e,l,"days",2,o,u)),this.addItem(l=>i(e,l,"days",3,o,u)),this.addItem(l=>i(e,l,"days",4,o,u)),this.addItem(l=>i(e,l,"days",5,o,u)),this.addItem(l=>i(e,l,"days",6,o,u)),this.addSeparator(),this.addItem(l=>i(e,l,"week",1,o,u)),this.addItem(l=>i(e,l,"weeks",2,o,u)),this.addItem(l=>i(e,l,"weeks",3,o,u)),this.addItem(l=>i(e,l,"month",1,o,u)),this.addSeparator(),this.addItem(l=>i(e,l,"days",2,hk,lk))}static postponeOnClickCallback(o,u,l,c){return P(this,arguments,function*(e,t,n,i,s=xh,a=Fo){let d=Wo(t);if(d===null){let g="\u26A0\uFE0F Postponement requires a date: due, scheduled or start.";return new Mh.Notice(g,1e4)}let{postponedDate:f,postponedTask:m}=s(t,d,i,n);yield a(t,m),ii.postponeSuccessCallback(e,d,f)})}static postponeSuccessCallback(e,t,n){e.style.pointerEvents="none";let i=fk(n,t);new Mh.Notice(i,2e3)}};var qo=class{constructor(e){this.label=e,this.start()}start(){!this.recordTimings()||performance.mark(this.labelForStart())}finish(){!this.recordTimings()||(performance.mark(this.labelForEnd()),performance.measure(this.label,this.labelForStart(),this.labelForEnd()),this.printDuration())}printDuration(){let e=performance.getEntriesByName(this.label),t=e[e.length-1];t?console.log(this.label+":",t.duration,"milliseconds"):console.log(`Measurement for ${this.label} not found`)}labelForStart(){return`${this.label} - start`}labelForEnd(){return`${this.label} - end`}recordTimings(){let{debugSettings:e}=Z();return e.recordTimings}};var nc=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.plugin=e,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return P(this,null,function*(){n.addChild(new Ch({app:this.app,plugin:this.plugin,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},Ch=class extends Vs.Ma
1 year ago
`,this._markdown+=`${t}
`}addRow(e){let t=this.makeRowText(e);this._markdown+=`${t}
`}addRowIfNew(e){let t=this.makeRowText(e);this._markdown.includes(t)||(this._markdown+=`${t}
5 months ago
`)}makeRowText(e){let t="|";return e.forEach(n=>{t+=` ${n} |`}),t}};function bk(r,e){return r.findIndex(t=>t.symbol===e)}function Nn(r){return r===""?r:"`"+(r!==" "?r:"space")+"`"}function _F(r,e){let t=ne.getTypeForUnknownSymbol(r.symbol);r.type!==t&&(t==="TODO"&&r.symbol!==" "||e.push(`For information, the conventional type for status symbol ${Nn(r.symbol)} is ${Nn(t)}: you may wish to review this type.`))}function vF(r,e,t){let n=bk(r,e.nextStatusSymbol);if(n===-1){t.push(`Next symbol ${Nn(e.nextStatusSymbol)} is unknown: create a status with symbol ${Nn(e.nextStatusSymbol)}.`);return}if(e.type!=="DONE")return;let i=r[n];if(i){if(i.type!=="TODO"&&i.type!=="IN_PROGRESS"){let s="https://publish.obsidian.md/tasks/Getting+Started/Statuses/Recurring+Tasks+and+Custom+Statuses",a=[`This \`DONE\` status is followed by ${Nn(i.type)}, not \`TODO\` or \`IN_PROGRESS\`.`,"If used to complete a recurring task, it will instead be followed by `TODO` or `IN_PROGRESS`, to ensure the next task matches the `not done` filter.",`See [Recurring Tasks and Custom Statuses](${s}).`].join("<br>");t.push(a)}}else t.push("Unexpected failure to find the next status.")}function wF(r,e,t){let n=[];return e.symbol===ne.EMPTY.symbol?(n.push("Empty symbol: this status will be ignored."),n):bk(r,e.symbol)!=t?(n.push(`Duplicate symbol '${Nn(e.symbol)}': this status will be ignored.`),n):(_F(e,n),vF(r,e,n),n)}function Tk(r){let e=new ic(["Status Symbol","Next Status Symbol","Status Name","Status Type","Problems (if any)"]),t=Le.allStatuses(r);return t.forEach((n,i)=>{e.addRow([Nn(n.symbol),Nn(n.nextStatusSymbol),n.name,Nn(n.type),wF(t,n,i).join("<br>")])}),e.markdown}function _k(r,e,t,n){let s=Tk(r),a=e.mermaidDiagram(!0);return`# ${t}
1 year ago
## About this file
This file was created by the Obsidian Tasks plugin (version ${n}) to help visualise the task statuses in this vault.
If you change the Tasks status settings, you can get an updated report by:
- Going to \`Settings\` -> \`Tasks\`.
- Clicking on \`Review and check your Statuses\`.
You can delete this file any time.
## Status Settings
<!--
Switch to Live Preview or Reading Mode to see the table.
If there are any Markdown formatting characters in status names, such as '*' or '_',
Obsidian may only render the table correctly in Reading Mode.
-->
These are the status values in the Core and Custom statuses sections.
8 months ago
${s}
1 year ago
## Loaded Settings
<!-- Switch to Live Preview or Reading Mode to see the diagram. -->
These are the settings actually used by Tasks.
5 months ago
${a}`}function vk(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],['"',"Quote","x","TODO"],["0","Speech bubble 0","0","NON_TASK"],["1","Speech bubble 1","1","NON_TASK"],["2","Speech bubble 2","2","NON_TASK"],["3","Speech bubble 3","3","NON_TASK"],["4","Speech bubble 4","4","NON_TASK"],["5","Speech bubble 5","5","NON_TASK"],["6","Speech bubble 6","6","NON_TASK"],["7","Speech bubble 7","7","NON_TASK"],["8","Speech bubble 8","8","NON_TASK"],["9","Speech bubble 9","9","NON_TASK"]]}function wk(){return[[" ","incomplete","x","TODO"],["x","complete / done"," ","DONE"],["-","cancelled"," ","CANCELLED"],[">","deferred","x","TODO"],["/","in progress, or half-done","x","IN_PROGRESS"],["!","Important","x","TODO"],["?","question","x","TODO"],["R","review","x","TODO"],["+","Inbox / task that should be processed later","x","TODO"],["b","bookmark","x","TODO"],["B","brainstorm","x","TODO"],["D","deferred or scheduled","x","TODO"],["I","Info","x","TODO"],["i","idea","x","TODO"],["N","note","x","TODO"],["Q","quote","x","TODO"],["W","win / success / reward","x","TODO"],["P","pro","x","TODO"],["C","con","x","TODO"]]}function kk(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],[">","Deferred","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["r","Review","x","TODO"]]}function Ek(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["D","Date","x","TODO"],["?","Question","x","TODO"],["/","Half Done","x","IN_PROGRESS"],["+","Add","x","TODO"],["R","Research","x","TODO"],["!","Important","x","TODO"],["i","Idea","x","TODO"],["B","Brainstorm","x","TODO"],["P","Pro","x","TODO"],["C","Con","x","TODO"],["Q","Quote","x","TODO"],["N","Note","x","TODO"],["b","Bookmark","x","TODO"],["I","Information","x","TODO"],["p","Paraphrase","x","TODO"],["L","Location","x","TODO"],["E","Example","x","TODO"],["A","Answer","x","TODO"],["r","Reward","x","TODO"],["c","Choice","x","TODO"],["d","Doing","x","IN_PROGRESS"],["T","Time","x","TODO"],["@","Character / Person","x","TODO"],["t","Talk","x","TODO"],["O","Outline / Plot","x","TODO"],["~","Conflict","x","TODO"],["W","World","x","TODO"],["f","Clue / Find","x","TODO"],["F","Foreshadow","x","TODO"],["H","Favorite / Health","x","TODO"],["&","Symbolism","x","TODO"],["s","Secret","x","TODO"]]}function Sk(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],["f","Fire","x","TODO"],["k","Key","x","TODO"],["w","Win","x","TODO"],["u","Up","x","TODO"],["d","Down","x","TODO"]]}function Ok(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}f
`)+`
5 months ago
Fix errors before saving.`;new Ir.Notice(d);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?tr.removeValidationError(t):tr.setValidationError(t)}};var Wt=class extends Ee.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 P(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 Ee.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(Dr))i.addOption(s,Dr[s].displayName);i.setValue(Z().taskFormat).onChange(s=>P(this,null,function*(){Qe({taskFormat:s}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new Ee.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(_e.getInstance().get()).onChange(s=>P(this,null,function*(){Qe({globalFilter:s}),_e.getInstance().set(s),yield this.plugin.saveSettings()}))}),new Ee.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(i=>{let s=Z();i.setValue(s.removeGlobalFilter).onChange(a=>P(this,null,function*(){Qe({removeGlobalFilter:a}),_e.getInstance().setRemoveGlobalFilter(a),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),OF(new Ee.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=Z();i.inputEl.rows=4,i.setPlaceholder(`# For example...
2 years ago
path does not include _templates/
limit 300
5 months ago
show urgency`).setValue(s.globalQuery).onChange(a=>P(this,null,function*(){Qe({globalQuery:a}),Tr.getInstance().set(a),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=Z();xk.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new Ee.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=Z();i.setValue(s.setCreatedDate).onChange(a=>P(this,null,function*(){Qe({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new Ee.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=Z();i.setValue(s.setDoneDate).onChange(a=>P(this,null,function*(){Qe({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new Ee.Setting(t).setName("Set cancelled date on every cancelled task").setDesc(Wt.createFragmentWithHTML('Enabling this will add a timestamp \u274C YYYY-MM-DD at the end when a task is toggled to cancelled.</br><p>See the <a href="https://publish.obsidian.md/tasks/Getting+Started/Dates#Cancelled+date">documentation</a>.</p>')).addToggle(i=>{let s=Z();i.setValue(s.setCancelledDate).onChange(a=>P(this,null,function*(){Qe({setCancelledDate:a}),yield this.plugin.saveSettings()}))}),new Ee.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=Z();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>P(this,null,function*(){Qe({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new Ee.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=>P(this,null,function*(){let s=Z();yield this.plugin.saveSettings(),i.setValue(Wt.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>P(this,null,function*(){let o=Wt.parseCommaSeparatedFolders(a);Qe({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new Ee.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}=Z();i.setValue(s).onChange(a=>P(this,null,function*(){Qe({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new Ee.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=Z();i.setValue(s.autoSuggestInEditor).onChange(a=>P(this,null,function*(){Qe({au
5 months ago
This message has been written to the console.
5 months ago
`,1e4)}var sc=class extends si.EditorSuggest{constructor(t,n,i){super(t);this.settings=n,this.plugin=i,t.scope.register([],"Tab",()=>{var a;let s=(a=this.context)==null?void 0:a.editor;return s?(s.exec("indentMore"),!1):!0})}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return mv(s,t,n)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){var c,d,f;let n=t.query,i=t.editor.getCursor(),s=this.plugin.getTasks(),a=s.find(m=>m.taskLocation.path==t.file.path&&m.taskLocation.lineNumber==i.line),o=this.getMarkdownFileInfo(t),u=this.canSaveEdits(o);return((f=(d=(c=bo()).buildSuggestions)==null?void 0:d.call(c,n,i.ch,this.settings,s,u,a))!=null?f:[]).map(m=>he(K({},m),{context:t}))}getMarkdownFileInfo(t){return t.editor.cm.state.field(si.editorInfoField)}canSaveEdits(t){return t instanceof si.MarkdownView}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){return P(this,null,function*(){var l,c,d;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let f=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(c=(l=i==null?void 0:i.cm)==null?void 0:l.contentDOM)==null||c.dispatchEvent(f);return}if(t.taskItDependsOn!=null){let f=zu(t.taskItDependsOn,this.plugin.getTasks().map(m=>m.id));if(t.appendText+=` ${f.id}`,t.taskItDependsOn!==f)if(t.context.file.path==f.path){let m=t.taskItDependsOn.originalMarkdown,g={line:t.taskItDependsOn.lineNumber,ch:0},y={line:t.taskItDependsOn.lineNumber,ch:m.length},T=t.context.editor.getRange(g,y);if(T!==m){let k=`Error adding new ID, due to mismatched data in Tasks memory and the editor:
5 months ago
task line in memory: '${t.taskItDependsOn.originalMarkdown}'
task line in editor: '${T}'
file: '${f.path}'
5 months ago
`;DF(k);return}t.context.editor.replaceRange(f.toFileLineString(),g,y)}else gr({originalTask:t.taskItDependsOn,newTasks:f})}let s=t.context.editor.getCursor(),a={line:s.line,ch:(d=t.insertAt)!=null?d:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length});let u=this.getMarkdownFileInfo(t.context);this.canSaveEdits(u)&&(yield u.save())})}};var Mk=(r,e)=>{let t,n=new Promise((a,o)=>{t=a});return e(r,a=>{let o=a.map(u=>u.toFileLineString()).join(`
`);t(o)}).open(),n};var Ck=(r,e)=>{let t=ml({line:"",path:""});return new zn({app:r,task:t,onSubmit:e,allTasks:[]})};var Ak=r=>({createTaskLineModal:()=>Mk(r,Ck),executeToggleTaskDoneCommand:(e,t)=>nh(e,t).text});var ac=class extends Pk.Plugin{get apiV1(){return Ak(app)}onload(){return P(this,null,function*(){St.registerConsoleLogger(),Am("info",`loading plugin "${this.manifest.name}" v${this.manifest.version}`),yield this.loadSettings();let{loggingOptions:t}=Z();St.configure(t),this.addSettingTab(new $o({plugin:this})),uw({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let n=new Ql({obsidianEvents:this.app.workspace});this.cache=new gs({metadataCache:this.app.metadataCache,vault:this.app.vault,events:n}),this.inlineRenderer=new Jl({plugin:this}),this.queryRenderer=new nc({plugin:this,events:n}),this.registerEditorExtension(sk()),this.registerEditorSuggest(new sc(this.app,Z(),this)),new hl({plugin:this})})}loadTaskStatuses(){return P(this,null,function*(){let{statusSettings:t}=Z();Le.applyToStatusRegistry(t,De.getInstance())})}onunload(){var t;Am("info",`unloading plugin "${this.manifest.name}" v${this.manifest.version}`),(t=this.cache)==null||t.unload()}loadSettings(){return P(this,null,function*(){let t=yield this.loadData();Qe(t),t=Z(),_e.getInstance().set(t.globalFilter),_e.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),Tr.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return P(this,null,function*(){yield this.saveData(Z())})}getTasks(){return this.cache===void 0?[]:this.cache.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
*/