"use strict";varB_=Object.create;varys=Object.defineProperty;varD_=Object.getOwnPropertyDescriptor;varN_=Object.getOwnPropertyNames;varW_=Object.getPrototypeOf,Z_=Object.prototype.hasOwnProperty;varrm=r=>{throwTypeError(r)};varM_=(r,e,t)=>einr?ys(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;varY_=(r,e)=>()=>{try{returne||r((e={exports:{}}).exports,e),e.exports}catch(t){throwe=0,t}},X_=(r,e)=>{for(vartine)ys(r,t,{get:e[t],enumerable:!0})},nm=(r,e,t,n)=>{if(e&&typeofe=="object"||typeofe=="function")for(letoofN_(e))!Z_.call(r,o)&&o!==t&&ys(r,o,{get:()=>e[o],enumerable:!(n=D_(e,o))||n.enumerable});returnr};varWr=(r,e,t)=>(t=r!=null?B_(W_(r)):{},nm(e||!r||!r.__esModule?ys(t,"default",{value:r,enumerable:!0}):t,r)),U_=r=>nm(ys({},"__esModule",{value:!0}),r);varm=(r,e,t)=>M_(r,typeofe!="symbol"?e+"":e,t),ec=(r,e,t)=>e.has(r)||rm("Cannot "+t);varC=(r,e,t)=>(ec(r,e,"read from private field"),t?t.call(r):e.get(r)),ee=(r,e,t)=>e.has(r)?rm("Cannot add the same private member more than once"):einstanceofWeakSet?e.add(r):e.set(r,t),z=(r,e,t,n)=>(ec(r,e,"write to private field"),n?n.call(r,t):e.set(r,t),t),ae=(r,e,t)=>(ec(r,e,"access private method"),t);varwr=Y_((ac,no)=>{(function(r,e){typeofac=="object"&&typeofno!="undefined"?no.exports=e():typeofdefine=="function"&&define.amd?define(e):r.moment=e()})(ac,(function(){"use strict";varr;functione(){returnr.apply(null,arguments)}functiont(i){r=i}functionn(i){returniinstanceofArray||Object.prototype.toString.call(i)==="[object Array]"}functiono(i){returni!=null&&Object.prototype.toString.call(i)==="[object Object]"}functiona(i,s){returnObject.prototype.hasOwnProperty.call(i,s)}functionu(i){if(Object.getOwnPropertyNames)returnObject.getOwnPropertyNames(i).length===0;vars;for(sini)if(a(i,s))return!1;return!0}functionc(i){returni===void0}functionf(i){returntypeofi=="number"||Object.prototype.toString.call(i)==="[object Number]"}functionh(i){returniinstanceofDate||Object.prototype.toString.call(i)==="[object Date]"}functionb(i,s){varl=[],d,p=i.length;for(d=0;d<p;++d)l.push(s(i[d],d));returnl}functionI(i,s){for(varlins)a(s,l)&&(i[l]=s[l]);returna(s,"toString")&&(i.toString=s.toString),a(s,"valueOf")&&(i.valueOf=s.valueOf),i}functiong(i,s,l,d){returnBf(i,s,l,d,!0).utc()}functionv(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}functiony(i){returni._pf==null&&(i._pf=v()),i._pf}varw;Array.prototype.some?w=Array.prototype.some:w=function(i){vars=Object(this),l=s.length>>>0,d;for(d=0;d<l;d++)if(dins&&i.call(this,s[d],d,s))return!0;return!1};functionx(i){vars=null,l=!1,d=i._d&&!isNaN(i._d.getTime());if(d&&(s=y(i),l=w.call(s.parsedDateParts,function(p){returnp!=null}),d=s.overflow<0&&!s.empty&&!s.invalidEra&&!s.invalidMonth&&!s.invalidWeekday&&!s.weekdayMismatch&&!s.nullInput&&!s.invalidFormat&&!s.userInvalidated&&(!s.meridiem||s.meridiem&&l),i._strict&&(d=d&&s.charsLeftOver===0&&s.unusedTokens.length===0&&s.bigHour===void0)),Object.isFrozen==null||!Object.isFrozen(i))i._isValid=d;elsereturnd;returni._isValid}functionk(i){vars=g(NaN);returni!=null?I(y(s),i):y(s).userInvalidated=!0,s}varB=e.momentProperties=[],F=!1;functionP(i,s){varl,d,p,_=B.length;if(c(s._isAMomentObject)||(i._isAMomentObject=s._isAMomentObject),c(s._i)||(i._i=s._i),c(s._f)||(i._f=s._f),c(s._l)||(i._l=s._l),c(s._strict)||(i._strict=s._strict),c(s._tzm)||(i._tzm=s._tzm),c(s._isUTC)||(i._isUTC=s._isUTC),c(s._offset)||(i._offset=s._offset),c(s._pf)||(i._pf=y(s)),c(s._locale)||(i._locale=s._locale),_>0)for(l=0;l<_;l++)d=B[l],p=s[d],c(p)||(i[d]=p);returni}functionie(i){P(this,i),this._d=newDate(i._d!=null?i._d.getTime():NaN),this.isValid()||(this._d=newDate(NaN)),F===!1&&(F=!0,e.updateOffset(this),F=!1)}functionY(i){returniinstanceofie||i!=null&&i._isAMomentObject!=null}functionpe(i){e.suppressDeprecationWarnings===!1&&typeofconsole
[`+_+"] ";for(S in arguments[0])a(arguments[0],S)&&(p+=S+": "+arguments[0][S]+", ");p=p.slice(0,-2)}else p=arguments[_];d.push(p)}pe(i+`
`;functionom(r,e){return`${r}${O_}${e}`}functionsm(r,e,t){letn=om(r,e),o=im(n,V_).toString(36),a=im(n,L_).toString(36),u=`${nc}${o}${a}`;returnt===0?u:`${u}-${t}`}functionic(r){varo;lete=[...r].sort((a,u)=>a.file!==u.file?a.file<u.file?-1:1:a.rowNumber-u.rowNumber),t=newMap,n=newMap;for(letaofe){letu=om(a.file,a.title),c=(o=t.get(u))!=null?o:0;t.set(u,c+1),n.set(a,sm(a.file,a.title,c))}returnn}var$_=10,P_=1440*60;functionoc(r){let{reminders:e,serverPending:t,serverDelivered:n=[],now:o,defaultTime:a,minLeadSeconds:u=$_,horizonSeconds:c=P_}=r,f=o.getTimeInMillis(a),h=f+u*1e3,b=f+c*1e3,I=ic(e),g=newMap;for(letFofe){letP=F.time.getTimeInMillis(a),ie=I.get(F);g.set(ie,Math.floor(P/1e3))}letv=newMap;for(letFofe){letP=F.time.getTimeInMillis(a);if(P<=h||P>b)continue;letie=I.get(F);v.set(ie,{sequenceId:ie,atSeconds:Math.floor(P/1e3),reminder:F})}lety=newMap;for(letFoft)y.set(F.sequenceId,F);letw=[];for(letFofv.values()){letP=y.get(F.sequenceId);(P===void0||P.atSeconds!==F.atSeconds)&&w.push(F)}letx=[],k=newSet;functionB(F){k.has(F)||(k.add(F),x.push({sequenceId:F}))}for(letFoft)Is(F.sequenceId)&&(v.has(F.sequenceId)||am(F,g)&&B(F.sequenceId));for(letFofn)am(F,g)&&B(F.sequenceId);return{publish:w,delete:x}}functionam(r,e){if(!Is(r.sequenceId))return!1;lett=e.get(r.sequenceId);returnt===void0||t!==r.atSeconds}functionsc(r){returnr.map(e=>e.sequenceId).filter(Is)}varro=class{constructor(e){m(this,"_value",e)}getvalue(){returnthis._value}},oi=class{constructor(e){m(this,"_value",e);m(this,"onChangeFunctions",[])}onChanged(e){this.onChangeFunctions.push(e)}getvalue(){returnthis._value}setvalue(e){lett=this._value;this._value=e,this.onChangeFunctions.forEach(n=>{n(t,e)})}};varsr=Wr(wr(),1);var$=classr{constructor(e,t){m(this,"time",e);m(this,"_hasTimePart",t)}staticnow(){returnnewr((0,sr.default)(),!0)}staticparse(e){returne.length>10?newr((0,sr.default)(e,"YYYY-MM-DD HH:mm"),!0):newr((0,sr.default)(e,"YYYY-MM-DD"),!1)}staticofEpochMillis(e){returnnewr((0,sr.default)(e),!0)}staticduration(e,t,n,o){returnt.fixedTime(o).diff(e.fixedTime(o),n)}getTimeInMillis(e){returnthis.fixedTime(e).valueOf()}format(e,t){returnthis.fixedTime(t).format(e)}toYYYYMMMM(e){returnthis.fixedTime(e).format("YYYY, MMMM")}toYYYYMMDD(e){returnthis.fixedTime(e).format("YYYY-MM-DD")}add(e,t,n){returnnewr(this.fixedTime(n).clone().add(e,t),this._hasTimePart)}fixedTime(e){returnthis._hasTimePart?this.time:e===void0?this.time:this.time.clone().add(e.minutes,"minutes")}gethasTimePart(){returnthis._hasTimePart}moment(){returnthis.time}isValid(){returnthis.time.isValid()}clone(e){lett=e==null?this._hasTimePart:e,n=this.time.clone();returnnewr(n,t)}toString(){returnthis._hasTimePart?this.format("YYYY-MM-DD HH:mm"):this.format("YYYY-MM-DD")}equals(e){returnthis._hasTimePart===e._hasTimePart&&this.time.isSame(e.time)}},Na=classr{constructor(e,t){m(this,"hour",e);m(this,"minute",t)}staticparse(e){if(!e.match(/^\d{1,2}:\d{1,2}$/))throw`Unexpected format time(${e}). Time must be HH:mm.`;lett=e.split(":");if(t.length!==2)throw`Unexpected format time(${e}). time must be HH:mm.`;letn=parseInt(t[0]),o=parseInt(t[1]);if(n>23||n<0)throw"hour must be 0~23";if(o>59||o<0)throw"minute must be 0~59";returnnewr(n,o)}getminutes(){returnthis.hour*60+this.minute}toString(){lete=t=>t<10?"0"+t:""+t;return`${e(this.hour)}:${e(this.minute)}`}};functionio(r,e){return()=>new$((0,sr.default)(),!0).add(r,e)}functionlm(r){returnio(r,"minutes")}functionlc(r){returnio(r,"hours")}functionH_(r){returnio(r,"days")}functionJ_(r){returnio(r,"weeks")}functionj_(r){returnio(r,"months")}functionz_(r){returnio(r,"years")}functionki(r){return()=>{lete=(0,sr.default)();returne.isoWeekday()<=r?new$(e.isoWeekday(r),!1):new$(e.add(1,"weeks").isoWeekday(r),!1)}}functionuc(){return()=>new$((0,sr.default)().add(1,"days"),!1)}functionum(){return()=>new$((0,sr.default)().add(1,"weeks"),!1)}functionK_(){return()=>new$((0,sr.default)().add(1,"months"),!1)}functionq_(){return()=>new$((0,sr.defau
`).map(e=>eI(e.trim()))}function eI(r){if(r=r.toLowerCase(),r.startsWith("in")){let e=r.split(" ");if(e.length!==3)throw"Unsupported format. Should be 'In N (minutes|hours)'";let t=e[1]==="a"||e[1]==="an"?1:parseInt(e[1]);switch(e[2]){case"minute":case"minutes":{let n=t==1?"minute":"minutes";return new Xe(`In${t}${n}`,lm(t))}case"hour":case"hours":{let n=t==1?"hour":"hours";return new Xe(`In${t}${n}`,lc(t))}case"day":case"days":{let n=t==1?"day":"days";return new Xe(`In${t}${n}`,H_(t))}case"week":case"weeks":{let n=t==1?"week":"weeks";return new Xe(`In${t}${n}`,J_(t))}case"month":case"months":{let n=t==1?"month":"months";return new Xe(`In${t}${n}`,j_(t))}case"year":case"years":{let n=t==1?"year":"years";return new Xe(`In${t}${n}`,z_(t))}}}else if(r.startsWith("next")){let e=r.substring(5);switch(e){case"sunday":return new Xe("Next Sunday",ki(0));case"monday":return new Xe("Next Monday",ki(1));case"tuesday":return new Xe("Next Tuesday",ki(2));case"wednesday":return new Xe("Next Wednesday",ki(3));case"thursday":return new Xe("Next Thursday",ki(4));case"friday":return new Xe("Next Friday",ki(5));case"saturday":return new Xe("Next Saturday",ki(6));case"day":return new Xe("Tomorrow",uc());case"week":return new Xe("Next week",um());case"month":return new Xe("Next month",K_());case"year":return new Xe("Next year",q_());default:throw`Unsupportedweekday:${e}`}}else if(r==="tomorrow")return new Xe("Tomorrow",uc());throw`Unsupportedformat:${r}`}var dc=[new Xe("In 30 minutes",lm(30)),new Xe("In 1 hours",lc(1)),new Xe("In 3 hours",lc(3)),new Xe("Tomorrow",uc()),new Xe("Next week",um())],cc=class{constructor(){m(this,"dateFormat",new ro("YYYY-MM-DD"));m(this,"dateTimeFormat",new ro("YYYY-MM-DD HH:mm"));m(this,"strict",new ro(!1))}setTimeFormat(e,t,n){this.dateFormat=e,this.dateTimeFormat=t,this.strict=n}parse(e){let t=this.doParse(e,!0);return t!=null?t:this.strict.value?null:this.doParse(e,!1)}doParse(e,t){let n=(0,sr.default)(e,this.dateTimeFormat.value,t);if(n.isValid())return new $(n,!0);let o=(0,sr.default)(e,this.dateFormat.value,t);return o.isValid()?new $(o,!1):null}toString(e){return e.hasTimePart?e.format(this.dateTimeFormat.value):e.format(this.dateFormat.value)}},jr=new cc;var Wa=require("obsidian");var tI=1800*1e3,rI=10*1e3,ws=class{constructor(e){m(this,"deps",e);m(this,"debounceTimer");m(this,"syncing",!1);m(this,"syncQueued",!1);m(this,"stopped",!1);m(this,"previousEnabled")}start(){this.previousEnabled=this.deps.isEnabled(),this.sync(),this.deps.registerInterval(window.setInterval(()=>{this.sync()},tI))}stop(){this.stopped=!0,this.debounceTimer!==void 0&&(window.clearTimeout(this.debounceTimer),this.debounceTimer=void 0)}notifyRemindersChanged(){this.stopped||(this.debounceTimer!==void 0&&window.clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout(()=>{this.debounceTimer=void 0,this.sync()},rI))}notifySettingsChanged(){this.stopped||(this.checkEnabledTransition(),this.notifyRemindersChanged())}checkEnabledTransition(){let e=this.deps.isEnabled(),t=this.previousEnabled;this.previousEnabled=e,t===!0&&!e&&this.cleanupAfterDisable()}async cleanupAfterDisable(){let e=this.resolveServerAndTopic();if(e===void 0)return;let{serverUrl:t,topic:n}=e;try{let{pending:o}=await this.fetchServerState(t,n),a=sc(o);for(let u of a)await this.deleteScheduled(t,n,u)}catch(o){console.error("[ntfy] Failed to clean up scheduled notifications after disabling: %o",o)}}async sync(){if(this.syncing){this.syncQueued=!0;return}this.syncing=!0;try{await this.doSync()}finally{this.syncing=!1,this.syncQueued&&(this.syncQueued=!1,this.sync())}}async doSync(){if(!this.deps.isEnabled())return;let e=this.resolveServerAndTopic();if(e===void 0)return;let{serverUrl:t,topic:n}=e;try{let{pending:o,delivered:a}=await this.fetchServerState(t,n),u=oc({reminders:this.deps.reminders(),serverPending:o,serverDelivered:a,now:$.now(),defaultTime:this.deps.defaultTime()});for(let c of u.delete)await this.deleteScheduled(t,n,c.sequenceId);for(let c of u.publish)await this.publish(t,n,c)}catch(o){console.error("[ntfy] Failed to sync sche
`)){letc=u.trim();if(c.length===0)continue;letf;try{f=JSON.parse(c)}catch(h){console.error("[ntfy] Failed to parse a poll response line: %o",h);continue}f.event!=="message"&&f.event!=="message_delete"||f.sequence_id===void0||f.time===void0||o.push({event:f.event,sequenceId:f.sequence_id,atSeconds:f.time})}leta=Math.floor(Date.now()/1e3);returnrc(o,a)}asyncpublish(e,t,n){leto=await(0,Wa.requestUrl)({url:`${e}/`,method:"POST",headers:{"Content-Type":"application/json","X-Sequence-ID":n.sequenceId},body:JSON.stringify({topic:t,title:n.reminder.title,message:tc(n.reminder.file),click:this.buildClickUrl(n.reminder),delay:String(n.atSeconds)}),throw:!1});o.status>=400&&console.error("[ntfy] Failed to publish a scheduled notification: status=%d",o.status)}asyncdeleteScheduled(e,t,n){leto=await(0,Wa.requestUrl)({url:`${e}/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,method:"DELETE",throw:!1});o.status>=400&&console.error("[ntfy] Failed to delete a scheduled notification: status=%d",o.status)}buildClickUrl(e){lett=e.file.replace(/\.md$/i,""),n=encodeURIComponent(this.deps.vaultName()),o=encodeURIComponent(t);return`obsidian://open?vault=${n}&file=${o}`}};varvn=require("obsidian");varkp=require("obsidian");vardm=require("obsidian");functionfm(r,e){if(!e.reminders.getExpiredReminders(e.settings.reminderTime.value).some(o=>!o.muteNotification))return!1;if(r)return!0;letn=e.reminders.muteExpiredReminders(e.settings.reminderTime.value);returne.ui.reload(!0),e.data.save(!0),newdm.Notice(`Muted ${n} reminder${n===1?"":"s"}`),!0}varfc=require("obsidian");varmm=require("obsidian");varZa=classextendsmm.SuggestModal{constructor(t,n,o,a){super(t);m(this,"laters",n);m(this,"onSelect",o);m(this,"onCloseCallback",a);this.setPlaceholder("Pause reminder notifications for...")}getSuggestions(t){returnthis.laters.filter(n=>n.label.toLowerCase().includes(t.toLowerCase()))}renderSuggestion(t,n){n.createEl("div",{text:t.label})}onChooseSuggestion(t){this.onSelect(t)}onClose(){vart;(t=this.onCloseCallback)==null||t.call(this)}};functionnI(r,e){lett=e.later();r.data.dndUntil.value=t,r.data.save(!0),r.ui.refreshDndStatusBar(),newfc.Notice(`Reminder notifications paused until ${t.format("YYYY-MM-DD HH:mm")}`)}functionMa(r){r.data.dndUntil.value=null,r.data.save(!0),r.ui.refreshDndStatusBar(),newfc.Notice("Reminder notifications resumed")}functionYa(r,e){newZa(r.app,r.settings.laters.value,t=>{nI(r,t)},e).open()}functionpm(r,e){returnr||Ya(e),!0}functionoo(r,e){returnr==null?!1:e.getTimeInMillis()<r.getTimeInMillis()}functionhm(r,e){returnoo(e.data.dndUntil.value,$.now())?(r||Ma(e),!0):!1}functiongm(r,e){returnr||e.fileSystem.reloadRemindersInAllFiles(),!0}functionbm(r,e){returnr||e.showReminderList(),!0}varsi=classsi{constructor(e,t,n,o,a){m(this,"lineIndex",e);m(this,"prefix",t);m(this,"check",n);m(this,"suffix",o);m(this,"body",a)}staticparse(e,t){letn=si.regexp.exec(t);returnn?newsi(e,n.groups.prefix,n.groups.check,n.groups.suffix,n.groups.body):null}toMarkdown(){return`${this.prefix}${this.check}${this.suffix}${this.body}`}isChecked(){returnsi.checkedStatuses.some(e=>e===this.check)}setChecked(e){this.check=e?"x":" "}getHeaderLength(){returnthis.prefix.length+this.check.length+this.suffix.length}clone(){returnsi.parse(this.lineIndex,this.toMarkdown())}};m(si,"regexp",/^(?<prefix>((> ?)*)?\s*[-*+][ ]+\[)(?<check>.)(?<suffix>\]\s+)(?<body>.*)$/),m(si,"checkedStatuses",["x","-"]);varso=si;functionvm(r){if(so.parse(0,r)!==null)returnr;lete=/^(?<lead>(?:> ?)*\s*)(?<rest>.*)$/.exec(r),t=e.groups.lead,n=e.groups.rest;if(/^#{1,6}[ ]/.test(n)||/^\d+[.)][ ]/.test(n)||n.startsWith("|")||n.startsWith("```"))returnnull;leto=/^(?<marker>[-*+])[ ]+(?<content>.*)$/.exec(n);if(o){leta=o.groups.marker,u=o.groups.content;return`${t}${a} [ ] ${u}`}return`${t}- [ ] ${n}`}varXa=classXa{constructor(e,t){m(this,"file",e);m(this,"lines",[]);m(this,"todos",[]);this.parse(t)}parse(e){this.lines=e.split(`
`)},e.prototype.clone=function(){vart=newe(!!this._cache);returnthis._rrule.forEach(function(n){returnt.rrule(n.clone())}),this._exrule.forEach(function(n){returnt.exrule(n.clone())}),this._rdate.forEach(function(n){returnt.rdate(newDate(n.getTime()))}),this._exdate.forEach(function(n){returnt.exdate(newDate(n.getTime()))}),t},e})(U);functioncp(r,e){if(!(rinstanceofU))thrownewTypeError(String(r)+" is not RRule instance");be(e.map(String),String(r))||e.push(r)}functiondp(r,e){if(!(rinstanceofDate))thrownewTypeError(String(r)+" is not Date instance");be(e.map(Number),Number(r))||(e.push(r),En(e))}functionfp(r,e,t){varn=!t||t.toUpperCase()==="UTC",o=n?"".concat(r,":"):"".concat(r,";TZID=").concat(t,":"),a=e.map(function(u){returnuo(u.valueOf(),n)}).join(",");return"".concat(o).concat(a)}functionpo(r,e,t){letn;try{n=U.parseText(r)}catch(h){console.warn("Failed to parse recurrence text: recurrence=%s, error=%o",r,h);return}if(!n)return;e=e.clone();leto=t.moment().clone();o.set("hour",e.get("hour")),o.set("minute",e.get("minute")),o.set("second",e.get("second")),o.set("millisecond",e.get("millisecond")),o.isAfter(e)&&(e=o);leta=e.clone();n.dtstart=e.utc(!0).toDate();letc=newU(n).after(e.toDate(),!1);if(c==null)return;letf=c.getTime()-n.dtstart.getTime();returna.add(f,"millisecond"),a.toDate()}functionqa(r){returnr.replace(/#[\p{L}\p{N}\p{M}_/-]+/gu,"").trim()}varho=classextendsli{modifyReminder(e,t,n,o){if(!super.modifyReminder(e,t,n,o))return!1;if(o.checked!==void0)if(o.checked){leta=n.getRecurrence();if(a!==null){letu=t.clone(),c=n.clone(),f=n.getDueDate(),h=this.config.getParameter(Qe.now);if(this.usesSeparateReminderDate(n)){letb=n.getTime();if(b==null)return!1;letI=po(a,b.moment(),h);if(I==null)return!1;if(c.setTime(new$((0,Ka.default)(I),b.hasTimePart)),f!=null){letg=po(a,f.moment(),h);if(g==null)return!1;c.setDueDate(new$((0,Ka.default)(g),f.hasTimePart))}}else{if(f==null)return!1;letb=po(a,f.moment(),h);if(b==null)return!1;letI=new$((0,Ka.default)(b),f.hasTimePart);c.setTime(I)}u.body=c.toMarkdown(),u.setChecked(!1),e.insertTodo(t.lineIndex,u)}n.setDoneDate(this.config.getParameter(Qe.now))}elsen.setDoneDate(void0);return!0}};varZI=["YYYY-MM-DDTHH:mm","YYYY-MM-DD HH:mm"],kc="YYYY-MM-DD";functionxc(r){for(lettofZI){letn=(0,Ac.default)(r,t,!0);if(n.isValid())returnnew$(n,!0)}lete=(0,Ac.default)(r,kc,!0);returne.isValid()?new$(e,!1):null}functionmp(r){returnr.hasTimePart?r.format("YYYY-MM-DDTHH:mm"):r.format(kc)}varEi="due",el="completion",pp="repeat",MI="scheduled",YI="start",XI=[Ei,el,pp,MI,YI],tl=classr{constructor(e,t,n){m(this,"text",e);m(this,"reminderFieldName",t);m(this,"removeTags",n)}staticparse(e,t,n){returnnewr(e,t.toLowerCase(),n!=null?n:!1)}fields(){returnkm(this.text)}fieldsByKey(e){returnthis.fields().filter(t=>t.key.toLowerCase()===e)}firstField(e){vart;return(t=this.fieldsByKey(e)[0])!=null?t:null}hasReminderField(){returnthis.firstField(this.reminderFieldName)!=null}hasAnySourceField(){returnthis.hasReminderField()||this.firstField(Ei)!=null}reminderSourceField(){vare;return(e=this.firstField(this.reminderFieldName))!=null?e:this.firstField(Ei)}getTitle(){lete=newSet([...XI,this.reminderFieldName]),t=this.fields().filter(o=>e.has(o.key.toLowerCase())).sort((o,a)=>a.start-o.start),n=this.text;for(letooft)n=mc(n,o);returnn=n.trim(),this.removeTags&&(n=qa(n)),n}getTime(){lete=this.reminderSourceField();returne==null?null:xc(e.value)}setTime(e){varo;lett=this.reminderSourceField(),n=(o=t==null?void0:t.key)!=null?o:Ei;this.setFieldValue(n,mp(e))}setRawTime(e){varo;lett=this.reminderSourceField(),n=(o=t==null?void0:t.key)!=null?o:Ei;returnthis.setFieldValue(n,e),!0}getDueDate(){lete=this.firstField(Ei);returne==null?null:xc(e.value)}setDueDate(e){this.setFieldValue(Ei,mp(e))}getRecurrence(){vart;lete=this.firstField(pp);return(t=e==null?void0:e.value)!=null?t:null}getDoneDate(){lete=this.firstField(el);returne==null?null:xc(e.value)}setDoneDate(e){if(e==null){this.removeFieldByKey(el);return}lett=einstanceof$?e.f
[${o}]`);for(let u of a)t.push(String(u));r.app.vault.adapter.write(e,t.join(" "))};console.debug=n("debug"),console.error=n("error"),console.info=n("info"),console.log=n("log"),console.warn=n("warn")}var en="reminder-list";var LI=10*1e3,vl=class{constructor(e){m(this,"plugin",e);m(this,"el")}onload(){this.el=this.plugin.addStatusBarItem(),this.el.addClass("reminder-dnd-status-bar"),this.el.style.display="none",this.el.style.cursor="pointer",this.el.setAttribute("aria-label","Click to resume reminder notifications"),this.plugin.registerDomEvent(this.el,"click",()=>{Ma(this.plugin)}),this.plugin.registerInterval(window.setInterval(()=>this.refresh(),LI)),this.refresh()}refresh(){if(!this.el)return;let e=this.plugin.data.dndUntil.value;if(!oo(e,$.now())){this.el.style.display="none";return}this.el.setText(`\u{1F515}Until${this.formatUntil(e)}`),this.el.style.display=""}formatUntil(e){let t=this.plugin.settings.timeDisplayFormat.value,n=e.format(t);if(e.toYYYYMMDD()===$.now().toYYYYMMDD())return n;let o=this.plugin.settings.monthDayDisplayFormat.value;return`${e.format(o)}${n}`}};var yl=class{constructor(e){m(this,"plugin",e);m(this,"el")}onload(){this.el=this.plugin.addStatusBarItem(),this.el.addClass("reminder-overdue-status-bar"),this.el.style.display="none",this.el.style.cursor="pointer",this.el.setAttribute("aria-label","Overdue reminders \u2014 click to open the reminder list"),this.plugin.registerDomEvent(this.el,"click",()=>{this.plugin.ui.showReminderList()}),this.plugin.settings.showOverdueCountInStatusBar.rawValue.onChanged(()=>this.refresh()),this.plugin.registerInterval(window.setInterval(()=>this.refresh(),1e4)),this.refresh()}refresh(){if(!this.el)return;if(!this.plugin.settings.showOverdueCountInStatusBar.value){this.el.style.display="none";return}let e=this.plugin.reminders.getExpiredReminders(this.plugin.settings.reminderTime.value).length;if(e===0){this.el.style.display="none";return}this.el.setText(`\u23F0${e}`),this.el.style.display=""}};var lu=require("obsidian");var dt=Symbol("$state"),Ns=Symbol("legacy props"),Ep=Symbol(""),_l=Symbol("proxy path"),Il=Symbol("attributes"),Ws=Symbol("class"),Bc=Symbol("style"),Zs=Symbol("text"),di=Symbol("form reset"),Dc=Symbol("hmr anchor"),Nn=new class extends Error{constructor(){super(...arguments);m(this,"name","StaleReactionError");m(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}},Tp,Nc=!!((Tp=globalThis.document)!=null&&Tp.contentType)&&globalThis.document.contentType.includes("xml");var Io=3,Ar=8;var Bp,Dp,Gp=(Dp=(Bp=globalThis.process)==null?void 0:Bp.env)==null?void 0:Dp.NODE_ENV,R=Gp&&!Gp.toLowerCase().startsWith("prod");var kr=Array.isArray,Np=Array.prototype.indexOf,fi=Array.prototype.includes,wo=Array.from,Wc=Object.keys,Rt=Object.defineProperty,$t=Object.getOwnPropertyDescriptor,wl=Object.getOwnPropertyDescriptors,Zc=Object.prototype,Wp=Array.prototype,Gi=Object.getPrototypeOf,Mc=Object.isExtensible;var tn=()=>{};function Zp(r){return r()}function Co(r){for(var e=0;e<r.length;e++)r[e]()}function Cl(){var r,e,t=new Promise((n,o)=>{r=n,e=o});return{promise:t,resolve:r,reject:e}}function xl(r){return r===this.v}function Yc(r,e){return r!=r?e==e:r!==e||r!==null&&typeof r=="object"||typeof r=="function"}function Al(r){return!Yc(r,this.v)}function Mp(r){if(R){let e=new Error(`invariant_violation
Aninvariantviolationoccurred,meaningSvelte's internal assumptions were flawed. This is a bug in Svelte, not your app \u2014 please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${r}"
https://svelte.dev/e/lifecycle_outside_component`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Xp(){if(R){let r=new Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/async_derived_orphan")}function Xc(){if(R){let r=new Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function Up(){if(R){let r=new Error(`derived_references_self
Keyed each block has key that is not idempotent \u2014 the key for item at index ${r} was \`${e}\` but is now \`${t}\`. Keys must be the same each time for a given item
https://svelte.dev/e/effect_in_teardown`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_in_teardown")}function Lp(){if(R){let r=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Op(r){if(R){let e=new Error(`effect_orphan
https://svelte.dev/e/rune_outside_svelte`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/rune_outside_svelte")}function zp(){if(R){let r=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Kp(){if(R){let r=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/state_prototype_fixed")}function qp(){if(R){let r=new Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function eh(){if(R){let r=new Error("svelte_boundary_reset_onerror\nA `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw r.name="Svelte error",r}else throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}var it=!1,rn=!1,Mr=!1;function th(){rn=!0}var Wn={};var Be=Symbol("uninitialized"),Sr=Symbol("filename");var kl="http://www.w3.org/1999/xhtml";var Ms=null;function Yt(r,e){return r.label=e,Rl(r.v,e),r}function Rl(r,e){var t;return(t=r==null?void 0:r[_l])==null||t.call(r,e),r}function Yr(r){let e=new Error,t=$I();return t.length===0?null:(t.unshift(`
%cAn async derived, \`${r}\` (${e}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app
%cThe \`${r}\` attribute on \`${e}\` changed its value between server and client renders. The client value, \`${t}\`, will be ignored in favour of the server value
%c${r?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${r}`:"Hydration failed because the initial UI does not match what was rendered on the server"}
https://svelte.dev/e/lifecycle_double_unmount`,sn,an):console.warn("https://svelte.dev/e/lifecycle_double_unmount")}function dh(){R?console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",sn,an):console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Tl(r){R?console.warn(`%c[svelte] state_proxy_equality_mismatch
%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${r}\` will produce unexpected results
`)}},Su=class{unmarshal(e){lett=_o.find(n=>n.name===e);returnt!==void0?t:(console.warn(`Unknown reminder format: ${e}. Falling back to the default format.`),_o[0])}marshal(e){returne.name}};varyr="re-scan",Ru=class{constructor(){m(this,"settings",newCu);m(this,"reminderTime");m(this,"reminderTimeStep");m(this,"enableNotification");m(this,"reNotifyMutedOnStartup");m(this,"notificationPopupStyle");m(this,"openNoteOnReminderClick");m(this,"useSystemNotification");m(this,"showPopupWithSystemNotification");m(this,"keepSystemNotificationOnScreen");m(this,"focusDoneButtonOnPopup");m(this,"laters");m(this,"weekStart");m(this,"dateFormat");m(this,"dateTimeFormat");m(this,"strictDateFormat");m(this,"autoCompleteTrigger");m(this,"convertNonTaskLines");m(this,"editorReminderDisplay");m(this,"primaryFormat");m(this,"excludedPaths");m(this,"useCustomEmojiForTasksPlugin");m(this,"useReminderTimeFallbackForTasksPlugin");m(this,"removeTagsForTasksPlugin");m(this,"dataviewReminderFieldName");m(this,"linkDatesToDailyNotes");m(this,"yearMonthDisplayFormat");m(this,"monthDayDisplayFormat");m(this,"timeDisplayFormat");m(this,"shortDateWithWeekdayDisplayFormat");m(this,"editDetectionSec");m(this,"reminderCheckIntervalSec");m(this,"showOverdueCountInStatusBar");m(this,"ntfyEnabled");m(this,"ntfyServerUrl");m(this,"ntfyTopic");lete=newdf(this.settings);this.reminderTime=this.settings.newSettingBuilder().key("reminderTime").name("Reminder time").desc("Time when a reminder with no time part will show").tag(yr).text("09:00").placeHolder("Time (hh:mm)").build(newxu),this.reminderTimeStep=this.settings.newSettingBuilder().key("reminderTimeStep").name("Reminder time step (minutes)").desc("Step of time for reminder time (minutes)").number(15).build(newye),this.enableNotification=this.settings.newSettingBuilder().key("enableNotification").name("Enable reminder notifications").desc("If disabled, reminder popups and system notifications are not shown. The reminder list view keeps working.").toggle(!0).build(newye),this.reNotifyMutedOnStartup=this.settings.newSettingBuilder().key("reNotifyMutedOnStartup").name("Re-notify muted reminders on startup").desc('When enabled, reminders you previously muted are notified again the next time Obsidian starts. Useful if you rely on startup notifications to review overdue reminders. If many reminders are overdue, they are shown one after another \u2014 use the "Mute all current reminders" command to silence them again.').toggle(!1).build(newye),this.notificationPopupStyle=this.settings.newSettingBuilder().key("notificationPopupStyle").name("Reminder popup style").desc("Toast: a card in the corner of the window that does not interrupt your work. Modal: a dialog in the center of the window that takes focus.").dropdown("toast").addOption("Toast (corner card)","toast").addOption("Modal (center dialog)","modal").build(newye),this.openNoteOnReminderClick=this.settings.newSettingBuilder().key("openNoteOnReminderClick").name("Open note on reminder click").desc("When clicking a reminder in the reminder list or a system notification, open the note directly instead of showing the reminder popup.").toggle(!1).build(newye),this.useSystemNotification=this.settings.newSettingBuilder().key("useSystemNotification").name("Use system notification").desc("Use system notification for reminder notifications").toggle(!1).build(newye),this.showPopupWithSystemNotification=this.settings.newSettingBuilder().key("showPopupWithSystemNotification").name("Show popup together with system notification").desc("When using system notification, also show the built-in reminder popup at the same time. The popup handles the reminder actions; the system notification acts as an alert only.").toggle(!1).onAnyValueChanged(a=>{a.setEnabled(this.useSystemNotification.value)}).build(newye),this.keepSystemNotificationOnScreen=this.settings.newSettingBuilder().key("keepSystemNotificationOnScreen").name("Keep system notification on screen").desc("Keep the system notification on screen until you interact with it, instead of it disappearing after a few
Next week`).build(new Au);let t=this.settings.newSettingBuilder().key("weekStart").name("Weekstart").desc("Selectthefirstdayoftheweek").dropdown("0");Array.from({length:7},(a,u)=>{let c=(0,Lg.default)().day(u).format("dddd");t.addOption(c,u.toString())}),this.weekStart=t.build(new ye),this.dateFormat=this.settings.newSettingBuilder().key("dateFormat").name("Dateformat").desc("momentstyledateformat:https://momentjs.com/docs/#/displaying/format/").tag(yr).text("YYYY-MM-DD").placeHolder("YYYY-MM-DD").onAnyValueChanged(a=>{a.setEnabled(e.enableReminderPluginReminderFormat.value)}).build(new ye),this.strictDateFormat=this.settings.newSettingBuilder().key("strictDateFormat").name("Strict date format").desc("Strictly parse the date and time").tag(yr).toggle(!1).onAnyValueChanged(a=>{a.setEnabled(e.enableReminderPluginReminderFormat.value)}).build(new ye),this.dateTimeFormat=this.settings.newSettingBuilder().key("dateTimeFormat").name("Date and time format").desc("moment() style date time format: https://momentjs.com/docs/#/displaying/format/").tag(yr).text("YYYY-MM-DD HH:mm").placeHolder("YYYY-MM-DD HH:mm").onAnyValueChanged(a=>{a.setEnabled(e.enableReminderPluginReminderFormat.value)}).build(new ye),this.linkDatesToDailyNotes=this.settings.newSettingBuilder().key("linkDatesToDailyNotes").name("Link dates to daily notes").desc("When toggled, Dates link to daily notes.").tag(yr).toggle(!1).onAnyValueChanged(a=>{a.setEnabled(e.enableReminderPluginReminderFormat.value)}).build(new ye),this.autoCompleteTrigger=this.settings.newSettingBuilder().key("autoCompleteTrigger").name("Calendar popup trigger").desc("Trigger text to show calendar popup").text("(@").placeHolder("(@").onAnyValueChanged(a=>{let u=this.autoCompleteTrigger.value;a.setInfo(`Popup is ${u.length===0?"disabled":"enabled"}`)}).build(new ye),this.convertNonTaskLines=this.settings.newSettingBuilder().key("convertNonTaskLines").name("Convert non-task lines when inserting a reminder").desc('When inserting a reminder from the calendar popup on a line that is not a task, convert the line into a task list item ("- [ ] ") automatically. When disabled, a notice is shown instead.').toggle(!0).build(new ye),this.editorReminderDisplay=this.settings.newSettingBuilder().key("editorReminderDisplay").name("Show reminder pills in editor").desc("Render each reminder's time as a clickable pill (\u23F0) in Live Preview. Clicking a pill opens the date/time chooser to change it. Disable to show the raw reminder text instead.").toggle(!0).build(new ye);let n=this.settings.newSettingBuilder().key("primaryReminderFormat").name("Primary reminder format").desc("Reminder format for generated reminder by calendar popup").dropdown(_o[0].name);_o.forEach(a=>n.addOption(`${a.description} - ${a.example}`,a.name)),this.primaryFormat=n.build(new Su),this.excludedPaths=this.settings.newSettingBuilder().key("excludedPaths").name("Excluded files/folders").desc("Reminders in these files/folders are ignored. One vault-relative path per line (e.g. Templates or Archive/2020).").tag(yr).textArea("").placeHolder(`Templates
Archive/2020`).build(new ku),this.useCustomEmojiForTasksPlugin=this.settings.newSettingBuilder().key("useCustomEmojiForTasksPlugin").name("Distinguish between reminder date and due date").desc("Use custom emoji \u23F0 instead of \u{1F4C5} and distinguish between reminder date/time and Tasks Plugin's due date.").tag(yr).toggle(!1).onAnyValueChanged(a=>{a.setEnabled(e.enableTasksPluginReminderFormat.value)}).build(new ye),this.useReminderTimeFallbackForTasksPlugin=this.settings.newSettingBuilder().key("useReminderTimeFallbackForTasksPlugin").name("Fall back to due, scheduled, or start date").desc("When the reminder date (\u23F0) is missing, use the due date (\u{1F4C5}), then the scheduled date (\u23F3), then the start date (\u{1F6EB}), in that order.").tag(yr).toggle(!1).onAnyValueChanged(a=>{a.setEnabled(e.enableTasksPluginReminderFormat.value&&this.useCustomEmojiForTasksPlugin.value)}).build(new ye),this.removeTagsForTasksPlugin=this.settings.newSettingBuilder().key("removeTagsForTasksPlugin").name("Remove tags from reminder title").desc("If checked, tags(#xxx) are removed from the reminder list view and notification.").tag(yr).toggle(!1).onAnyValueChanged(a=>{a.setEnabled(e.enableTasksPluginReminderFormat.value)}).build(new ye),this.dataviewReminderFieldName=this.settings.newSettingBuilder().key("dataviewReminderFieldName").name("Reminder field name").desc("The inline field (e.g. [reminder:: 2021-09-08]) read as the reminder date. On a line that also has a due field, this field takes precedence.").tag(yr).text("reminder").placeHolder("reminder").onAnyValueChanged(a=>{a.setEnabled(e.enableDataviewReminderFormat.value)}).build(new ye),this.yearMonthDisplayFormat=this.settings.newSettingBuilder().key("yearMonthDisplayFormat").name("Year & month format").desc(`Momentstyleyearandmonthformat:
https://momentjs.com/docs/#/displaying/format/`).text("YYYY, MMMM").placeHolder("YYYY, MMMM").build(new ye),this.monthDayDisplayFormat=this.settings.newSettingBuilder().key("monthDayDisplayFormat").name("Month & day format").desc(`Moment style month and day format:
https://momentjs.com/docs/#/displaying/format/`).text("MM/DD").placeHolder("MM/DD").build(new ye),this.shortDateWithWeekdayDisplayFormat=this.settings.newSettingBuilder().key("shortDateWithWeekdayDisplayFormat").name("Short date with weekday format").desc(`Moment style short date with weekday format:
https://momentjs.com/docs/#/displaying/format/`).text("M/DD (ddd)").placeHolder("M/DD (ddd)").build(new ye),this.timeDisplayFormat=this.settings.newSettingBuilder().key("timeDisplayFormat").name("Time format").desc(`Moment style time format:
https://momentjs.com/docs/#/displaying/format/`).text("HH:mm").placeHolder("HH:mm").build(new ye),this.editDetectionSec=this.settings.newSettingBuilder().key("editDetectionSec").name("Edit detection time").desc("The minimum amount of time (in seconds) after a key is typed that it will be identified as notifiable. Only applies to the Modal popup style; Toast reminders are shown immediately even while typing.").number(10).build(new ye),this.reminderCheckIntervalSec=this.settings.newSettingBuilder().key("reminderCheckIntervalSec").name("Reminder check interval").desc("Interval(in seconds) to periodically check whether or not you should be notified of reminders. You will need to restart Obsidian for this setting to take effect.").number(5).build(new ye),this.showOverdueCountInStatusBar=this.settings.newSettingBuilder().key("showOverdueCountInStatusBar").name("Show overdue count in status bar").desc("Show the number of overdue reminders in the status bar. Click it to open the reminder list.").toggle(!0).build(new ye),this.ntfyEnabled=this.settings.newSettingBuilder().key("ntfyEnabled").name("Enable ntfy scheduled notifications (experimental)").desc("Publish upcoming reminders to the ntfy server below as scheduled push notifications, so you're notified even when Obsidian isn't running (useful on mobile, where plugins can't run in the background). This sends reminder titles to that server, so only enable this if you trust it. Requires an ntfy server running v2.16.0 or later (needed for sequence-ID based scheduled message replacement/deletion). Only reminders due within the next 24 hours are registered \u2014 ntfy itself allows scheduling at most 3 days ahead, and this plugin periodically re-registers reminders to roll that 24-hour window forward.").toggle(!1).build(new ye),this.ntfyServerUrl=this.settings.newSettingBuilder().key("ntfyServerUrl").name("ntfy server URL").desc("The ntfy server to publish scheduled notifications to.").text("https://ntfy.sh").placeHolder("https://ntfy.sh").build(new ye),this.ntfyTopic=this.settings.newSettingBuilder().key("ntfyTopic").name("ntfy topic").desc("Topic to publish reminders to. Anyone who knows this topic name can subscribe to it and read your reminder titles, so use a long, hard-to-guess name rather than something predictable.").text("").placeHolder("a-long-random-topic-name").build(new ye),this.settings.newPage("Notifications").newGroup().addSettings(this.reminderTime,this.reminderTimeStep,this.laters,this.enableNotification,this.reNotifyMutedOnStartup,this.notificationPopupStyle,this.openNoteOnReminderClick,this.useSystemNotification,this.showPopupWithSystemNotification,this.keepSystemNotificationOnScreen,this.focusDoneButtonOnPopup,this.showOverdueCountInStatusBar),this.settings.newPage("Editor").newGroup().addSettings(this.autoCompleteTrigger,this.convertNonTaskLines,this.primaryFormat,this.editorReminderDisplay);let o=this.settings.newPage("Reminder formats");o.newGroup("Reminder plugin format").addSettings(e.enableReminderPluginReminderFormat,this.dateFormat,this.dateTimeFormat,this.strictDateFormat,this.linkDatesToDailyNotes),o.newGroup("Tasks plugin format").addSettings(e.enableTasksPluginReminderFormat,this.useCustomEmojiForTasksPlugin,this.useReminderTimeFallbackForTasksPlugin,this.removeTagsForTasksPlugin),o.newGroup("Dataview format").addSettings(e.enableDataviewReminderFormat,this.dataviewReminderFieldName),o.newGroup("Kanban plugin format").addSettings(e.enableKanbanPluginReminderFormat),this.settings.newPage("Display").newGroup().addSettings(this.yearMonthDisplayFormat,this.monthDayDisplayFormat,this.shortDateWithWeekdayDisplayFormat,this.timeDisplayFormat,this.weekStart),this.settings.newPage("Advanced").newGroup().addSettings(this.excludedPaths,this.editDetectionSec,this.reminderCheckIntervalSec),this.settings.newPage("ntfy").newGroup().addSettings(this.ntfyEnabled,this.ntfyServerUrl,this.ntfyTopic)}wireReminderFormatConfig(){let e=new xs;e.setParameterFunc(Qe.now,()=>$.now()),e.setParameter(Qe.useCustomEmojiForTasksPlugin,this.useCustomEmojiForTasksPlugin),e.setParam