Files
my-vault/.obsidian/plugins/obsidian-tasks-plugin/main.js
T

566 lines
914 KiB
JavaScript
Raw Normal View History

2026-01-05 13:03:55 +08:00
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source visit the plugins github repository
*/
/*
License obsidian-tasks:
MIT License
Copyright (c) 2021 Clare Macrae, Ilyas Landikov and Martin Schenck
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
*/
/*
License flatpickr (included library):
The MIT License (MIT)
Copyright (c) 2017 Gregory Petrosyan
*/
/*
License @floating-ui/dom (included library):
MIT License
Copyright (c) 2021 Floating UI contributors
*/
/*
License boon-js (included library):
The MIT License (MIT)
Copyright (c) 2020-present Jake Chorley
*/
/*
License eventemitter2 (included library):
The MIT License (MIT)
Copyright (c) 2016 Paolo Fragomeni <http://www.github.com/0x00a> and Contributors
*/
/*
License i18next (included library):
The MIT License (MIT)
Copyright (c) 2025 i18next
*/
/*
License mustache (included library):
The MIT License
Copyright (c) 2009 Chris Wanstrath (Ruby)
Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)
Copyright (c) 2010-2015 The mustache.js community
*/
/*
License mustache-validator (included library):
MIT License
Copyright (c) 2022 Elias Mangoro
*/
/*
License safe-regex2 (included library):
MIT License
Copyright (c) 2019-present The Fastify team <https://github.com/fastify/fastify#team>
*/
"use strict";var SR=Object.create;var Oo=Object.defineProperty,_R=Object.defineProperties,DR=Object.getOwnPropertyDescriptor,ER=Object.getOwnPropertyDescriptors,xR=Object.getOwnPropertyNames,ku=Object.getOwnPropertySymbols,OR=Object.getPrototypeOf,ip=Object.prototype.hasOwnProperty,TT=Object.prototype.propertyIsEnumerable;var bT=(n,t,e)=>t in n?Oo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,L=(n,t)=>{for(var e in t||(t={}))ip.call(t,e)&&bT(n,e,t[e]);if(ku)for(var e of ku(t))TT.call(t,e)&&bT(n,e,t[e]);return n},me=(n,t)=>_R(n,ER(t));var ta=(n,t)=>{var e={};for(var r in n)ip.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(n!=null&&ku)for(var r of ku(n))t.indexOf(r)<0&&TT.call(n,r)&&(e[r]=n[r]);return e};var z=(n,t,e)=>()=>{if(e)throw e[0];try{return n&&(t=n(n=0)),t}catch(r){throw e=[r],r}};var O=(n,t)=>()=>{try{return t||n((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}},vT=(n,t)=>{for(var e in t)Oo(n,e,{get:t[e],enumerable:!0})},kT=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of xR(t))!ip.call(n,i)&&i!==e&&Oo(n,i,{get:()=>t[i],enumerable:!(r=DR(t,i))||r.enumerable});return n};var ds=(n,t,e)=>(e=n!=null?SR(OR(n)):{},kT(t||!n||!n.__esModule?Oo(e,"default",{value:n,enumerable:!0}):e,n)),wT=n=>kT(Oo({},"__esModule",{value:!0}),n);var M=(n,t,e)=>new Promise((r,i)=>{var s=l=>{try{o(e.next(l))}catch(u){i(u)}},a=l=>{try{o(e.throw(l))}catch(u){i(u)}},o=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,a);o((e=e.apply(n,t)).next())});var we,Ro,ST,RR,CR,_T,DT,Co,ET,MR,Su,AR,PT,na,PR,IR,ap,NR,FR,LR,op,_u,qR,lp,Ir,ia,Du,IT,xT,Eu,xu,OT,RT,up,CT,sp,cp,YR,ra,dp,UR,fp,MT,AT,wu,jR,Ou,Et,KW,ZW,XW,JW,eH,tH,nH,rH,iH,sH,aH,oH,lH,uH,NT=z(()=>{we=n=>typeof n=="string",Ro=()=>{let n,t,e=new Promise((r,i)=>{n=r,t=i});return e.resolve=n,e.reject=t,e},ST=n=>n==null?"":""+n,RR=(n,t,e)=>{n.forEach(r=>{t[r]&&(e[r]=t[r])})},CR=/###/g,_T=n=>n&&n.indexOf("###")>-1?n.replace(CR,"."):n,DT=n=>!n||we(n),Co=(n,t,e)=>{let r=we(t)?t.split("."):t,i=0;for(;i<r.length-1;){if(DT(n))return{};let s=_T(r[i]);!n[s]&&e&&(n[s]=new e),Object.prototype.hasOwnProperty.call(n,s)?n=n[s]:n={},++i}return DT(n)?{}:{obj:n,k:_T(r[i])}},ET=(n,t,e)=>{let{obj:r,k:i}=Co(n,t,Object);if(r!==void 0||t.length===1){r[i]=e;return}let s=t[t.length-1],a=t.slice(0,t.length-1),o=Co(n,a,Object);for(;o.obj===void 0&&a.length;)s=`${a[a.length-1]}.${s}`,a=a.slice(0,a.length-1),o=Co(n,a,Object),o!=null&&o.obj&&typeof o.obj[`${o.k}.${s}`]!="undefined"&&(o.obj=void 0);o.obj[`${o.k}.${s}`]=e},MR=(n,t,e,r)=>{let{obj:i,k:s}=Co(n,t,Object);i[s]=i[s]||[],i[s].push(e)},Su=(n,t)=>{let{obj:e,k:r}=Co(n,t);if(e&&Object.prototype.hasOwnProperty.call(e,r))return e[r]},AR=(n,t,e)=>{let r=Su(n,e);return r!==void 0?r:Su(t,e)},PT=(n,t,e)=>{for(let r in t)r!=="__proto__"&&r!=="constructor"&&(r in n?we(n[r])||n[r]instanceof String||we(t[r])||t[r]instanceof String?e&&(n[r]=t[r]):PT(n[r],t[r],e):n[r]=t[r]);return n},na=n=>n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),PR={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"},IR=n=>we(n)?n.replace(/[&<>"'\/]/g,t=>PR[t]):n,ap=class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){let e=this.regExpMap.get(t);if(e!==void 0)return e;let r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}},NR=[" ",",","?","!",";"],FR=new ap(20),LR=(n,t,e)=>{t=t||"",e=e||"";let r=NR.filter(a=>t.indexOf(a)<0&&e.indexOf(a)<0);if(r.length===0)return!0;let i=FR.getRegExp(`(${r.map(a=>a==="?"?"\\?":a).join("|")})`),s=!i.test(n);if(!s){let a=n.indexOf(e);a>0&&!i.test(n.substring(0,a))&&(s=!0)}return s},op=function(n,t){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!n)return;if(n[t])return Object.prototype.hasOwnProperty.call(n,t)?n[t]:void 0;let r=t.split(e),i=n;for(let s=0;s<r.length;){if(!i||typeof i!="object")return;let a,o="";for(let l=s;l<r.length;++l)if(l!==s&&(o+=e),o+=r[l],a=i[o],a!==void 0){if(["string","number","boolean"].indexOf(typeof a)>-1
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:""},line1:"",line2:"",name:""},recurringTasks:{heading:"\u041F\u0435\u0440\u044B\u044F\u0434\u044B\u0447\u043D\u044B\u044F \u0437\u0430\u0434\u0430\u0447\u044B",nextLine:{description:"\u0423\u043A\u043B\u044E\u0447\u044D\u043D\u043D\u0435 \u0433\u044D\u0442\u0430\u0433\u0430 \u0437\u0440\u043E\u0431\u0456\u0446\u044C \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0430\u0435 \u043F\u0430\u045E\u0442\u0430\u0440\u044D\u043D\u043D\u0435 \u0437\u0430\u0434\u0430\u0447\u044B \u043D\u0430 \u0440\u0430\u0434\u043A\u0443 \u043D\u0456\u0436\u044D\u0439 \u0437\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043D\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443. \u0423 \u0430\u0434\u0432\u0430\u0440\u043E\u0442\u043D\u044B\u043C \u0432\u044B\u043F\u0430\u0434\u043A\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0430\u0435 \u043F\u0430\u045E\u0442\u0430\u0440\u044D\u043D\u043D\u0435 \u0437'\u044F\u0432\u0456\u0446\u0446\u0430 \u043F\u0435\u0440\u0430\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043D\u0430\u0439 \u0437\u0430\u0434\u0430\u0447\u0430\u0439.",name:"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0430\u0435 \u043F\u0430\u045E\u0442\u0430\u0440\u044D\u043D\u043D\u0435 \u0437'\u044F\u045E\u043B\u044F\u0435\u0446\u0446\u0430 \u043D\u0430 \u0440\u0430\u0434\u043A\u0443 \u043D\u0456\u0436\u044D\u0439"},removeScheduledDate:{description:{line1:"",line2:""},name:""}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"\u0413\u043B\u044F\u0434\u0437\u0456\u0446\u0435 \u0434\u0430\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u044B\u044E",statuses:{collections:{anuppuccinTheme:"\u0422\u044D\u043C\u0430 AnuPpuccin",auraTheme:"\u0422\u044D\u043C\u0430 Aura",borderTheme:"\u0422\u044D\u043C\u0430 Border",buttons:{addCollection:{name:"{{themeName}}: \u0414\u0430\u0434\u0430\u0446\u044C {{numberOfStatuses}} \u043F\u0430\u0434\u0442\u0440\u044B\u043C\u043E\u045E\u0432\u0430\u043D\u044B\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u044B"}},ebullientworksTheme:"\u0422\u044D\u043C\u0430 Ebullientworks",itsThemeAndSlrvbCheckboxes:"\u0422\u044D\u043C\u0430 ITS \u0456 \u0441\u0446\u044F\u0436\u043A\u0456 SlRvb",lytModeTheme:"\u0422\u044D\u043C\u0430 LYT Mode (\u0442\u043E\u043B\u044C\u043A\u0456 \u0446\u0451\u043C\u043D\u044B \u0440\u044D\u0436\u044B\u043C)",minimalTheme:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0442\u044D\u043C\u0430",thingsTheme:"\u0422\u044D\u043C\u0430 Things"},coreStatuses:{buttons:{checkStatuses:{name:"\u041F\u0440\u0430\u0433\u043B\u044F\u0434\u0437\u0435\u0446\u044C \u0456 \u043F\u0440\u0430\u0432\u0435\u0440\u044B\u0446\u044C \u0432\u0430\u0448\u044B \u0441\u0442\u0430\u0442\u0443\u0441\u044B",tooltip:"\u0421\u0442\u0432\u0430\u0440\u044B\u0446\u044C \u043D\u043E\u0432\u044B \u0444\u0430\u0439\u043B \u0443 \u043A\u0430\u0440\u0430\u043D\u0451\u0432\u0430\u0439 \u0442\u044D\u0447\u0446\u044B \u0441\u0445\u043E\u0432\u0456\u0448\u0447\u0430, \u044F\u043A\u0456 \u0437\u043C\u044F\u0448\u0447\u0430\u0435 \u0434\u044B\u044F\u0433\u0440\u0430\u043C\u0443 Mermaid \u0437 \u0431\u044F\u0433\u0443\u0447\u044B\u043C\u0456 \u043D\u0430\u043B\u0430\u0434\u0430\u043C\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0443."}},description:{line1:"\u0413\u044D\u0442\u0430 \u0430\u0441\u043D\u043E\u045E\u043D\u044B\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u044B, \u044F\u043A\u0456\u044F Tasks \u043F\u0430\u0434\u0442\u0440\u044B\u043C\u043B\u0456\u0432\u0430\u0435 \u045E\u043B\u0430\u0441\u043D\u0430, \u0431\u0435\u0437 \u043F\u0430\u0442\u0440\u044D\u0431\u044B \u045E \u043A\u0430\u0440\u044B\u0441\u0442\u0430\u043B\u044C\u043D\u0456\u0446\u043A\u0456\u043C CSS-\u0441\u0442\u044B\u043B\u0456 \u0430\u0431\u043E \u0442\u044D\u043C\u0430\u0442\u044B\u0437\u0430\u0446\u044B\u0456.",line2:"\u0412\u044B \u043C\u043E\u0436\u0430\u0446\u0435 \u0440\u044D\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044C \
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:""},line1:"",line2:"",name:""},recurringTasks:{heading:"Wiederkehrende Aufgaben",nextLine:{description:"Aktivieren Sie dies, damit das n\xE4chste Auftreten einer Aufgabe in der Zeile unterhalb der abgeschlossenen Aufgabe erscheint. Ansonsten erscheint es vor der abgeschlossenen Aufgabe.",name:"N\xE4chste Wiederholung erscheint in Zeile darunter"},removeScheduledDate:{description:{line1:"Aktiviert, damit das n\xE4chste Auftreten einer Aufgabe keinen geplanten (\u23F3) Termin hat, wenn mindestens Start-(\u{1F6EB}) oder F\xE4lligkeitsdaten (\u{1F4C5}) vorhanden sind.",line2:"Dies gilt, wenn Sie m\xF6chten, dass Start- und F\xE4lligkeitsdaten beim n\xE4chsten Auftreten beibehalten werden, aber das geplante Datum sp\xE4ter festgelegt wird, sobald Sie planen, daran zu arbeiten."},name:"Geplantes Datum bei Wiederholung entfernen"}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"Vgl. die Dokumentation",statuses:{collections:{anuppuccinTheme:"AnuPpuccin Theme",auraTheme:"Aura Theme",borderTheme:"Border Theme",buttons:{addCollection:{name:"{{themeName}}: F\xFCge {{numberOfStatuses}} unterst\xFCtzte Status hinzu"}},ebullientworksTheme:"Ebullientworks Theme",itsThemeAndSlrvbCheckboxes:"ITS Theme & SlRvb Kontrollk\xE4stchen",lytModeTheme:"LYT Mode Theme (nur Dunkelmodus)",minimalTheme:"Minimal Theme",thingsTheme:"Things Theme"},coreStatuses:{buttons:{checkStatuses:{name:"\xDCberpr\xFCfen und einsehen Sie Ihre Status-Eintr\xE4ge",tooltip:"Erstellen Sie eine neue Datei im Hauptverzeichnis des Tresors, die ein Mermaid-Diagramm der aktuellen Statuseinstellungen enth\xE4lt."}},description:{line1:"Diese Kern-Status unterst\xFCtzt Tasks nativ ohne benutzerdefiniertes CSS-Styling oder Themes.",line2:"Hinzuf\xFCgen und Bearbeiten Ihrer eigenen benutzerdefinierten Status k\xF6nnen Sie im unteren Abschnitt."},heading:"Kern-Status"},customStatuses:{buttons:{addAllUnknown:{name:"Alle unbekannten Statustypen hinzuf\xFCgen"},addNewStatus:{name:"Neuen Aufgabenstatus hinzuf\xFCgen"},resetCustomStatuses:{name:"Benutzerdefinierte Statustypen auf Standard zur\xFCcksetzen"}},description:{line1:"Zuerst w\xE4hlen und installieren Sie ein CSS-Snippet oder Theme, um benutzerdefinierte Kontrollk\xE4stchen zu formatieren.",line2:"Verwenden Sie dann die untenstehenden Schaltfl\xE4chen, um Ihre benutzerdefinierten Status zu erstellen, sodass sie mit Ihren ausgew\xE4hlten CSS-Kontrollk\xE4stchen \xFCbereinstimmen.",line3:"Hinweis: Status mit dem gleichen Symbol wie ein fr\xFCherer Status ignorieren wir. Best\xE4tigen Sie die tats\xE4chlich geladenen Status, indem Sie den 'Aufgabe erstellen oder bearbeiten'-Befehl ausf\xFChren und das Status-Dropdown anschauen.",line4:"Nutzen Sie die Dokumentation, um loszulegen!"},heading:"Benutzerdefinierte Status"},heading:"Aufgabenstatus"}}}});var jT,UT=z(()=>{jT={main:{loadingPlugin:"Loading plugin: {{name}} v{{version}}",unloadingPlugin:"Unloading plugin: {{name}} v{{version}}"},modals:{customStatusModal:{editAvailableAsCommand:{description:"If enabled this status will be available as a command so you can assign a hotkey and toggle the status using it.",name:"Available as command"},editNextStatusSymbol:{description:"When clicked on this is the symbol that should be used next.",name:"Task Next Status Symbol"},editStatusName:{description:"This is the friendly name of the task status.",name:"Task Status Name"},editStatusSymbol:{description:"This is the character between the square braces. (It can only be edited for Custom statuses, and not Core statuses.)",name:"Task Status Symbol"},editStatusType:{description:"Control how the status behaves for searching and toggling.",name:"Task Status Type"},fixErrorsBeforeSaving:"Fix errors before saving."}},notices:{"do-not-show-message-again":"Do not show me this message again","live-preview-callout-warning":{line1:"Obsidian does not currently give plugins the correct ta
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"Add new preset"},line1:"You can define named instructions here, that you can re-use in multiple queries. A preset called '{{name}}' can be used in Tasks queries with either '{{instruction1}}' or '{{instruction2}}'.",line2:"Any open Tasks queries are reloaded automatically when presets are edited.",name:"Presets"},recurringTasks:{heading:"Recurring tasks",nextLine:{description:"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.",name:"Next recurrence appears on the line below"},removeScheduledDate:{description:{line1:"Enabling this will make the next recurrence of a task have no Scheduled (\u23F3) date, when at least one of Start (\u{1F6EB}) or Due (\u{1F4C5}) dates is present.",line2:"This is for when you want the Start and Due dates to carry forward to the next recurrence, but you will set the Scheduled date in future, once you plan to work on it."},name:"Remove scheduled date on recurrence"}},searchResults:{heading:"Search results",taskCountLocation:{description:"Choose whether the task count is shown at the top or bottom of query results.",name:"Task count location",options:{bottom:"Bottom",top:"Top"}}},searches:{enableCustomSearches:{description:{line1:"Enables '{{filterByFunction}}', '{{sortByFunction}}', and '{{groupByFunction}}', which execute JavaScript in Tasks queries.",line2:"Malicious JavaScript in a Tasks query or Markdown file could run inside Obsidian and access or modify your vault contents, local files, or other system resources.",line3:"Only enable this if you trust the current and future contents of this vault, including files you may later download, copy, or sync from other people.",line4:"This setting is stored on this device only; enable it separately on each device where you use this vault."},name:"Enable custom searches"},heading:"Searches"},seeTheDocumentation:"See the documentation",statuses:{collections:{anuppuccinTheme:"AnuPpuccin Theme",auraTheme:"Aura Theme",borderTheme:"Border Theme",buttons:{addCollection:{name:"{{themeName}}: Add {{numberOfStatuses}} supported Statuses"}},ebullientworksTheme:"Ebullientworks Theme",itsThemeAndSlrvbCheckboxes:"ITS Theme & SlRvb Checkboxes",lytModeTheme:"LYT Mode Theme (Dark mode only)",minimalTheme:"Minimal Theme",thingsTheme:"Things Theme"},coreStatuses:{buttons:{checkStatuses:{name:"Review and check your Statuses",tooltip:"Create a new file in the root of the vault, containing a Mermaid diagram of the current status settings."}},description:{line1:"These are the core statuses that Tasks supports natively, with no need for custom CSS styling or theming.",line2:"You can add edit and add your own custom statuses in the section below."},heading:"Core Statuses"},customStatuses:{buttons:{addAllUnknown:{name:"Add All Unknown Status Types"},addNewStatus:{name:"Add New Task Status"},resetCustomStatuses:{name:"Reset Custom Status Types to Defaults"}},description:{line1:"You should first <b>select and install a CSS Snippet or Theme</b> to style custom checkboxes.",line2:"Then, use the buttons below to set up your custom statuses, to match your chosen CSS checkboxes.",line3:"<b>Note</b> Any statuses with the same symbol as any earlier statuses will be ignored. You can confirm the actually loaded statuses by running the 'Create or edit task' command and looking at the Status drop-down.",line4:"See the documentation to get started!"},heading:"Custom Statuses"},heading:"Task Statuses"}}}});var WT,$T=z(()=>{WT={main:{loadingPlugin:"Cargando el complemento: {{name}} v{{version}}",unloadingPlugin:"Descargando el complemento: {{name}} v{{version}}"},modals:{customStatusModal:{editAvailableAsCommand:{description:"Si se activa, este estado estar\xE1 disponible como comando para que puedas asignarle un atajo de teclado y alternar el estado con \xE9l.",name:"Disponible como comando"},editNextStatusSymbol:{description:"Al hacer clic, este es el s\xEDmbolo que se debe usar a continuaci\xF3n.",name:"S\xEDmbolo del sigu
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"A\xF1adir nuevo preajuste"},line1:"Aqu\xED puedes definir instrucciones con nombre que puedes reutilizar en varias consultas. Un preajuste llamado '{{name}}' se puede usar en consultas de Tasks con '{{instruction1}}' o '{{instruction2}}'.",line2:"Las consultas de Tasks que est\xE9n abiertas se recargan autom\xE1ticamente al editar los preajustes.",name:"Preajustes"},recurringTasks:{heading:"Tareas recurrentes",nextLine:{description:"Al activar esta opci\xF3n, la siguiente repetici\xF3n de una tarea aparecer\xE1 en la l\xEDnea debajo de la tarea completada. En caso contrario, la siguiente repetici\xF3n aparecer\xE1 antes de la completada.",name:"La siguiente repetici\xF3n aparece en la l\xEDnea de abajo"},removeScheduledDate:{description:{line1:"Al activar esta opci\xF3n, la siguiente repetici\xF3n de una tarea no tendr\xE1 fecha Programada (\u23F3) cuando est\xE9 presente al menos una fecha de Inicio (\u{1F6EB}) o de Vencimiento (\u{1F4C5}).",line2:"Esto es \xFAtil cuando quieres que las fechas de Inicio y Vencimiento se trasladen a la siguiente repetici\xF3n, pero prefieres establecer la fecha Programada m\xE1s adelante, cuando planees trabajar en ella."},name:"Eliminar la fecha programada en la repetici\xF3n"}},searchResults:{heading:"Resultados de la b\xFAsqueda",taskCountLocation:{description:"Elige si el recuento de tareas se muestra en la parte superior o inferior de los resultados de la consulta.",name:"Ubicaci\xF3n del recuento de tareas",options:{bottom:"Inferior",top:"Superior"}}},searches:{enableCustomSearches:{description:{line1:"Habilita '{{filterByFunction}}', '{{sortByFunction}}' y '{{groupByFunction}}', que ejecutan JavaScript en las consultas de Tasks.",line2:"El c\xF3digo JavaScript malicioso en una consulta de Tasks o en un archivo Markdown podr\xEDa ejecutarse dentro de Obsidian y acceder o modificar el contenido de tu b\xF3veda, archivos locales u otros recursos del sistema.",line3:"Act\xEDvalo solo si conf\xEDas en el contenido actual y futuro de esta b\xF3veda, incluidos los archivos que puedas descargar, copiar o sincronizar m\xE1s adelante desde otras personas.",line4:"Este ajuste se guarda solo en este dispositivo; act\xEDvalo por separado en cada dispositivo donde uses esta b\xF3veda."},name:"Habilitar b\xFAsquedas personalizadas"},heading:"B\xFAsquedas"},seeTheDocumentation:"Consulta la documentaci\xF3n",statuses:{collections:{anuppuccinTheme:"Tema AnuPpuccin",auraTheme:"Tema Aura",borderTheme:"Tema Border",buttons:{addCollection:{name:"{{themeName}}: A\xF1adir {{numberOfStatuses}} estados admitidos"}},ebullientworksTheme:"Tema Ebullientworks",itsThemeAndSlrvbCheckboxes:"Tema ITS y casillas SlRvb",lytModeTheme:"Tema LYT Mode (Solo modo oscuro)",minimalTheme:"Tema Minimal",thingsTheme:"Tema Things"},coreStatuses:{buttons:{checkStatuses:{name:"Revisar y comprobar tus estados",tooltip:"Crea un nuevo archivo en la ra\xEDz de la b\xF3veda que contiene un diagrama Mermaid de los ajustes de estado actuales."}},description:{line1:"Estos son los estados principales que Tasks admite de forma nativa, sin necesidad de estilos CSS personalizados ni temas.",line2:"Puedes editar y a\xF1adir tus propios estados personalizados en la secci\xF3n siguiente."},heading:"Estados principales"},customStatuses:{buttons:{addAllUnknown:{name:"A\xF1adir todos los tipos de estado desconocidos"},addNewStatus:{name:"A\xF1adir nuevo estado de tarea"},resetCustomStatuses:{name:"Restablecer los tipos de estado personalizados a los valores predeterminados"}},description:{line1:"Primero debes <b>seleccionar e instalar un fragmento CSS o un tema</b> para dar estilo a las casillas personalizadas.",line2:"A continuaci\xF3n, usa los botones de abajo para configurar tus estados personalizados, de forma que coincidan con las casillas CSS elegidas.",line3:"<b>Nota:</b> cualquier estado con el mismo s\xEDmbolo que un estado anterior se ignorar\xE1. Puedes confirmar los estados realmente cargados ejecutando el comando 'Crear o editar tarea' y consultando el men\xFA desplegable de Estado.",l
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"Ajouter un pr\xE9r\xE9glage"},line1:"Vous pouvez d\xE9finir ici des instructions \xE0 r\xE9utiliser dans plusieurs requ\xEAtes. Un pr\xE9r\xE9glage appel\xE9 '{{name}}' pourra \xEAtre appliqu\xE9 dans les requ\xEAtes Tasks avec '{{instruction1}}' ou '{{instruction2}}'.",line2:"Toutes les requ\xEAtes Tasks ouvertes sont recharg\xE9es automatiquement quand les pr\xE9r\xE9glages sont modifi\xE9s.",name:"Pr\xE9r\xE9glages"},recurringTasks:{heading:"T\xE2ches r\xE9currentes",nextLine:{description:"Activer cette option ajoutera la prochaine occurence d'une t\xE2che en-dessous de la t\xE2che compl\xE9t\xE9e. Sinon, la prochaine occurrence sera ajout\xE9e au-dessus de la t\xE2che compl\xE9t\xE9e.",name:"Prochaine occurrence en-dessous"},removeScheduledDate:{description:{line1:"Activer cette option retirera la Date planifi\xE9e (\u23F3) sur la prochaine occurrence, si au moins une Date de d\xE9but (\u{1F6EB}) ou une Date d'\xE9ch\xE9ance (\u{1F4C5}) est pr\xE9sente.",line2:"Pratique si vous voulez que la Date de d\xE9but et la Date de fin soient report\xE9es sur la prochaine occurrence, mais que vous comptez attribuer une Date planifi\xE9e plus tard."},name:"Retirer la Date planifi\xE9e sur la prochaine occurrence"}},searchResults:{heading:"R\xE9sultats de recherche",taskCountLocation:{description:"Afficher le nombre de t\xE2ches en haut ou en bas des r\xE9sultats d'une requ\xEAte.",name:"Emplacement du nombre de t\xE2ches",options:{bottom:"En bas",top:"En haut"}}},searches:{enableCustomSearches:{description:{line1:"Active '{{filterByFunction}}', '{{sortByFunction}}', et '{{groupByFunction}}', qui \xE9x\xE9cutent JavaScript dans les requ\xEAtes Tasks.",line2:"Du code JavaScript malveillant dans une requ\xEAte Tasks ou un fichier Markdown peut s'ex\xE9cuter \xE0 l'int\xE9rieur d'Obsidian et lire ou modifier le contenu de votre coffre, vos fichiers locaux, ou autres ressources du syst\xE8me.",line3:"Activez uniquement si vous avez confiance dans le contenu actuel et futur de ce coffre, y compris les fichiers d'autres personnes que vous pourriez t\xE9l\xE9charger, copier, ou synchroniser.",line4:"Ce r\xE9glage est stock\xE9 seulement sur cet appareil; activez-le s\xE9par\xE9ment sur chaque appareil sur lequel vous utilisez ce coffre."},name:"Activer les requ\xEAtes personnalis\xE9es"},heading:"Requ\xEAtes"},seeTheDocumentation:"Voir la documentation",statuses:{collections:{anuppuccinTheme:"Th\xE8me AnuPpuccin",auraTheme:"Th\xE8me Aura",borderTheme:"Th\xE8me Border",buttons:{addCollection:{name:"{{themeName}}: Ajouter {{numberOfStatuses}} Statuts pris en charge"}},ebullientworksTheme:"Th\xE8me Ebullientworks",itsThemeAndSlrvbCheckboxes:"Th\xE8me ITS & SlRvb Checkboxes",lytModeTheme:"Th\xE8me LYT Mode (Mode sombre seulement)",minimalTheme:"Th\xE8me Minimal",thingsTheme:"Th\xE8me Things"},coreStatuses:{buttons:{checkStatuses:{name:"Examiner et v\xE9rifier vos Statuts",tooltip:"Cr\xE9e un nouveau fichier \xE0 la racine du coffre, contenant un sch\xE9ma Mermaid des r\xE9glages actuels des Statuts."}},description:{line1:"Voici les statuts principaux pris en charge nativement par Tasks, sans n\xE9cessit\xE9 de styles CSS ou de th\xE8me personnalis\xE9s.",line2:"Vous pouvez ajouter ou modifier vos propres statuts personnalis\xE9s dans la section ci-dessous."},heading:"Statuts principaux"},customStatuses:{buttons:{addAllUnknown:{name:"Ajouter tous les types de Statuts inconnus."},addNewStatus:{name:"Nouveau Statut"},resetCustomStatuses:{name:"R\xE9initialiser les types de Statuts personnalis\xE9s"}},description:{line1:"Vous devriez d'abord <b>s\xE9lectionner et installer un fragment CSS ou un Th\xE8me</b> pour appliquer un style aux cases \xE0 cocher personnalis\xE9es.",line2:"Ensuite, utilisez les boutons ci-dessous pour r\xE9gler vos statuts personnalis\xE9s en correspondance avec vos cases \xE0 cocher CSS.",line3:"<b>Note</b> Tout statut avec un symbole d\xE9j\xE0 utilis\xE9 sera ignor\xE9. Vous pouvez v\xE9rifier les Statuts effectivement utilis\xE9s en lan\xE7ant la commande 'Cr\xE9er ou
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"\uC0C8 \uD504\uB9AC\uC14B \uCD94\uAC00"},line1:"\uC5EC\uAE30\uC11C \uC774\uB984 \uC788\uB294 \uC9C0\uCE68\uC744 \uC815\uC758\uD574 \uC5EC\uB7EC \uCFFC\uB9AC\uC5D0\uC11C \uC7AC\uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. '{{name}}' \uD504\uB9AC\uC14B\uC740 Tasks \uCFFC\uB9AC\uC5D0\uC11C '{{instruction1}}' \uB610\uB294 '{{instruction2}}'\uB85C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",line2:"\uD504\uB9AC\uC14B\uC744 \uC218\uC815\uD558\uBA74 \uC5F4\uB824 \uC788\uB294 \uBAA8\uB4E0 Tasks \uCFFC\uB9AC\uAC00 \uC790\uB3D9\uC73C\uB85C \uC0C8\uB85C\uACE0\uCE68\uB429\uB2C8\uB2E4.",name:"\uD504\uB9AC\uC14B"},recurringTasks:{heading:"\uBC18\uBCF5 \uC791\uC5C5",nextLine:{description:"\uD65C\uC131\uD654\uD558\uBA74 \uC644\uB8CC\uB41C \uC791\uC5C5\uC758 \uBC14\uB85C \uC544\uB798 \uC904\uC5D0 \uB2E4\uC74C \uBC18\uBCF5\uC774 \uB098\uD0C0\uB0A9\uB2C8\uB2E4. \uBE44\uD65C\uC131\uD654 \uC2DC \uB2E4\uC74C \uBC18\uBCF5\uC740 \uC644\uB8CC\uB41C \uC791\uC5C5 \uC55E\uC5D0 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.",name:"\uB2E4\uC74C \uBC18\uBCF5\uC744 \uC544\uB798 \uC904\uC5D0 \uD45C\uC2DC"},removeScheduledDate:{description:{line1:"\uD65C\uC131\uD654\uD558\uBA74 \uC2DC\uC791\uC77C(\u{1F6EB})\uB610\uB294 \uB9C8\uAC10\uC77C(\u{1F4C5}) \uC911 \uD558\uB098\uB77C\uB3C4 \uC788\uC744 \uB54C, \uB2E4\uC74C \uBC18\uBCF5 \uC791\uC5C5\uC5D0\uB294 \uC608\uC815\uC77C(\u23F3)\uC744 \uC124\uC815\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",line2:"\uC2DC\uC791\uC77C\uACFC \uB9C8\uAC10\uC77C\uC740 \uB2E4\uC74C \uBC18\uBCF5\uC73C\uB85C \uB118\uAE30\uB418, \uC608\uC815\uC77C\uC740 \uCD94\uD6C4 \uC791\uC5C5 \uACC4\uD68D \uC2DC\uC810\uC5D0 \uC124\uC815\uD558\uB824\uB294 \uACBD\uC6B0\uC5D0 \uC720\uC6A9\uD569\uB2C8\uB2E4."},name:"\uBC18\uBCF5 \uC2DC \uC608\uC815\uC77C \uC81C\uAC70"}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"\uBB38\uC11C \uBCF4\uAE30",statuses:{collections:{anuppuccinTheme:"AnuPpuccin \uD14C\uB9C8",auraTheme:"Aura \uD14C\uB9C8",borderTheme:"Border \uD14C\uB9C8",buttons:{addCollection:{name:"{{themeName}}: \uC9C0\uC6D0\uB418\uB294 \uC0C1\uD0DC {{numberOfStatuses}}\uAC1C \uCD94\uAC00"}},ebullientworksTheme:"Ebullientworks \uD14C\uB9C8",itsThemeAndSlrvbCheckboxes:"ITS \uD14C\uB9C8 & SlRvb \uCCB4\uD06C\uBC15\uC2A4",lytModeTheme:"LYT Mode \uD14C\uB9C8 (\uB2E4\uD06C \uBAA8\uB4DC \uC804\uC6A9)",minimalTheme:"Minimal \uD14C\uB9C8",thingsTheme:"Things \uD14C\uB9C8"},coreStatuses:{buttons:{checkStatuses:{name:"\uC0C1\uD0DC \uAC80\uD1A0 \uBC0F \uD655\uC778",tooltip:"\uBCF4\uAD00\uC18C \uB8E8\uD2B8\uC5D0 \uD604\uC7AC \uC0C1\uD0DC \uC124\uC815\uC758 Mermaid \uB2E4\uC774\uC5B4\uADF8\uB7A8\uC744 \uD3EC\uD568\uD55C \uC0C8 \uD30C\uC77C\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}},description:{line1:"\uC774\uAC83\uB4E4\uC740 \uC0AC\uC6A9\uC790 \uC815\uC758 CSS\uB098 \uD14C\uB9C8 \uC5C6\uC774\uB3C4 Tasks\uAC00 \uC790\uCCB4\uC801\uC73C\uB85C \uC9C0\uC6D0\uD558\uB294 \uCF54\uC5B4 \uC0C1\uD0DC\uC785\uB2C8\uB2E4.",line2:"\uC544\uB798 \uC139\uC158\uC5D0\uC11C \uC0AC\uC6A9\uC790 \uC815\uC758 \uC0C1\uD0DC\uB97C \uC9C1\uC811 \uD3B8\uC9D1\uD558\uACE0 \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},heading:"\uCF54\uC5B4 \uC0C1\uD0DC"},customStatuses:{buttons:{addAllUnknown:{name:"\uC54C \uC218 \uC5C6\uB294 \uBAA8\uB4E0 \uC0C1\uD0DC \uC720\uD615 \uCD94\uAC00"},addNewStatus:{name:"\uC0C8 \uC791\uC5C5 \uC0C1\uD0DC \uCD94\uAC00"},resetCustomStatuses:{name:"\uC0AC\uC6A9\uC790 \uC815\uC758 \uC0C1\uD0DC\uB97C \uAE30\uBCF8\uAC12\uC73C\uB85C \uC7AC\uC124\uC815"}},description:{line1:"\uBA3C\uC800 <b>CSS \uC2A4\uB2C8\uD3AB \uB610\uB294 \uD14C\uB9C8\uB97C \uC124\uCE58\uD558\uC5EC \uC0AC\uC6A9\uC790 \uC815\uC758 \uCCB4\uD06C\uBC15\uC2A4\uC5D0 \uC2A4\uD0C0\uC77C\uC744 \uC801\uC6A9</b>\uD558\uC138\uC694.",line2:"\uADF8 \uB2E4\uC74C, \uC544\uB798 \uBC84\uD2BC\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC120\uD0DD\uD55C \uCCB4\uD06C\uBC15\uC2A4 \uC2A4\uD0C0\uC77C\uC5D0 \uB9DE\uCDB0
2026-01-05 13:03:55 +08:00
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"Adicionar nova predefini\xE7\xE3o"},line1:"Voc\xEA pode definir instru\xE7\xF5es nomeadas aqui, que podem ser reutilizadas em v\xE1rias consultas. Uma predefini\xE7\xE3o chamada '{{name}}' pode ser usada em consultas do Tasks com '{{instruction1}}' ou '{{instruction2}}'.",line2:"Quaisquer consultas do Tasks abertas s\xE3o recarregadas automaticamente quando as predefini\xE7\xF5es s\xE3o editadas.",name:"Predefini\xE7\xF5es (Presets)"},recurringTasks:{heading:"Tarefas recorrentes",nextLine:{description:"A ativa\xE7\xE3o desta op\xE7\xE3o far\xE1 com que a pr\xF3xima recorr\xEAncia de uma tarefa apare\xE7a na linha logo abaixo da tarefa conclu\xEDda. Caso contr\xE1rio, a pr\xF3xima recorr\xEAncia aparecer\xE1 antes da conclu\xEDda.",name:"A pr\xF3xima recorr\xEAncia aparece na linha de baixo"},removeScheduledDate:{description:{line1:"A ativa\xE7\xE3o desta op\xE7\xE3o far\xE1 com que a pr\xF3xima recorr\xEAncia de uma tarefa n\xE3o tenha data Agendada (\u23F3), quando pelo menos uma das datas de In\xEDcio (\u{1F6EB}) ou Vencimento (\u{1F4C5}) estiver presente.",line2:"Isto \xE9 \xFAtil para quando voc\xEA deseja que as datas de In\xEDcio e Vencimento sejam mantidas na pr\xF3xima recorr\xEAncia, mas pretende definir a data Agendada no futuro, quando for planejar trabalhar nela."},name:"Remover data agendada na recorr\xEAncia"}},searchResults:{heading:"Resultados da pesquisa",taskCountLocation:{description:"Escolha se a contagem de tarefas deve ser mostrada na parte superior ou inferior dos resultados da consulta.",name:"Localiza\xE7\xE3o da contagem de tarefas",options:{bottom:"Inferior",top:"Superior"}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"Veja a documenta\xE7\xE3o",statuses:{collections:{anuppuccinTheme:"Tema AnuPpuccin",auraTheme:"Tema Aura",borderTheme:"Tema Border",buttons:{addCollection:{name:"{{themeName}}: Adicionar {{numberOfStatuses}} Status suportados"}},ebullientworksTheme:"Tema Ebullientworks",itsThemeAndSlrvbCheckboxes:"Tema ITS e Checkboxes SlRvb",lytModeTheme:"Tema LYT Mode (Somente modo escuro)",minimalTheme:"Tema Minimal",thingsTheme:"Tema Things"},coreStatuses:{buttons:{checkStatuses:{name:"Revisar e verificar seus Status",tooltip:"Criar um novo arquivo na raiz do cofre, contendo um diagrama Mermaid das configura\xE7\xF5es atuais de status."}},description:{line1:"Estes s\xE3o os status principais que o Tasks suporta nativamente, sem a necessidade de estilos CSS personalizados ou temas.",line2:"Voc\xEA pode adicionar e editar seus pr\xF3prios status personalizados na se\xE7\xE3o abaixo."},heading:"Status Principais"},customStatuses:{buttons:{addAllUnknown:{name:"Adicionar Todos os Tipos de Status Desconhecidos"},addNewStatus:{name:"Adicionar Novo Status de Tarefa"},resetCustomStatuses:{name:"Redefinir Tipos de Status Personalizados para os Padr\xF5es"}},description:{line1:"Primeiro, voc\xEA deve <b>selecionar e instalar um Snippet CSS ou Tema</b> para estilizar as caixas de sele\xE7\xE3o personalizadas.",line2:"Em seguida, use os bot\xF5es abaixo para configurar seus status personalizados, para que correspondam \xE0s caixas de sele\xE7\xE3o CSS escolhidas.",line3:"<b>Nota:</b> Qualquer status com o mesmo s\xEDmbolo de um status anterior ser\xE1 ignorado. Voc\xEA pode confirmar os status que foram realmente carregados executando o comando 'Criar ou editar tarefa' e olhando a lista suspensa de Status.",line4:"Veja a documenta\xE7\xE3o para come\xE7ar!"},heading:"Status Personalizados"},heading:"Status das Tarefas"}}}});var ZT,KT=z(()=>{ZT={main:{loadingPlugin:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043F\u043B\u0430\u0433\u0438\u043D\u0430: {{name}} v{{version}}",unloadingPlugin:"\u0412\u044B\u0433\u0440\u0443\u0437\u043A\u0430 \u043F\u043B\u0430\u0433\u0438\u043D\u0430: {{name}} v{{version}}"},modals:{customStatusModal:{editAvailableAsCommand:{description:"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u044D\u0442\u043E\u0442 \u0441\
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:""},line1:"",line2:"",name:""},recurringTasks:{heading:"\u041F\u043E\u0432\u0442\u043E\u0440\u044F\u044E\u0449\u0438\u0435\u0441\u044F \u0437\u0430\u0434\u0430\u0447\u0438",nextLine:{description:"\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u044D\u0442\u043E\u0439 \u043E\u043F\u0446\u0438\u0438 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043A \u0442\u043E\u043C\u0443, \u0447\u0442\u043E \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0435 \u043D\u0438\u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0412 \u043F\u0440\u043E\u0442\u0438\u0432\u043D\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435 \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0439.",name:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435 \u043F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0430 \u0441\u0442\u0440\u043E\u043A\u0435 \u043D\u0438\u0436\u0435"},removeScheduledDate:{description:{line1:"",line2:""},name:""}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"\u0421\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E",statuses:{collections:{anuppuccinTheme:"\u0422\u0435\u043C\u0430 AnuPpuccin",auraTheme:"\u0422\u0435\u043C\u0430 Aura",borderTheme:"\u0422\u0435\u043C\u0430 Border",buttons:{addCollection:{name:"{{themeName}}: \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C {{numberOfStatuses}} \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u0445 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432"}},ebullientworksTheme:"\u0422\u0435\u043C\u0430 Ebullientworks",itsThemeAndSlrvbCheckboxes:"\u0422\u0435\u043C\u0430 ITS \u0438 \u0444\u043B\u0430\u0436\u043A\u0438 SlRvb",lytModeTheme:"\u0422\u0435\u043C\u0430 LYT Mode (\u0442\u043E\u043B\u044C\u043A\u043E \u0442\u0435\u043C\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C)",minimalTheme:"\u0422\u0435\u043C\u0430 Minimal",thingsTheme:"\u0422\u0435\u043C\u0430 Things"},coreStatuses:{buttons:{checkStatuses:{name:"\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u0432\u043E\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044B",tooltip:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B \u0432 \u043A\u043E\u0440\u043D\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 Mermaid \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0443 \u0442\u0435\u043A\u0443\u0449\u0438\u0445 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432."}},description:{line1:"\u042D\u0442\u043E \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 Tasks \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E, \u0431\u0435\u0437 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0445 CSS \u0441\u0442\u0438\u043B\u0435\u0439 \u0438\u043B\u0438 \u0442\u0435\u043C.",line2
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"Yeni \xF6n ayar ekle"},line1:"Burada birden fazla sorguda yeniden kullanabilece\u011Finiz adland\u0131r\u0131lm\u0131\u015F talimatlar tan\u0131mlayabilirsiniz. '{{name}}' adl\u0131 bir \xF6n ayar, Tasks sorgular\u0131nda '{{instruction1}}' veya '{{instruction2}}' ile kullan\u0131labilir.",line2:"\xD6n ayarlar d\xFCzenlendi\u011Finde a\xE7\u0131k Tasks sorgular\u0131 otomatik olarak yeniden y\xFCklenir.",name:"\xD6n Ayarlar"},recurringTasks:{heading:"Tekrarlayan g\xF6revler",nextLine:{description:"Bu se\xE7ene\u011Fi etkinle\u015Ftirirseniz, bir g\xF6revin sonraki tekrar\u0131 tamamlanan g\xF6revin alt\u0131ndaki sat\u0131rda g\xF6r\xFCn\xFCr. Aksi takdirde sonraki tekrar tamamlanandan \xF6nce g\xF6r\xFCn\xFCr.",name:"Sonraki tekrar bir alt sat\u0131rda g\xF6r\xFCns\xFCn"},removeScheduledDate:{description:{line1:"Bu se\xE7ene\u011Fi etkinle\u015Ftirirseniz, Ba\u015Flang\u0131\xE7 (\u{1F6EB}) veya Son Tarih (\u{1F4C5}) tarihlerinden en az biri mevcutsa g\xF6revin sonraki tekrar\u0131nda Zamanlanm\u0131\u015F (\u23F3) tarih olmaz.",line2:"Bu se\xE7enek; Ba\u015Flang\u0131\xE7 ve Son Tarih tarihlerinin bir sonraki tekrara ta\u015F\u0131nmas\u0131n\u0131, ancak Zamanlanm\u0131\u015F tarihin \xFCzerinde \xE7al\u0131\u015Fmay\u0131 planlad\u0131\u011F\u0131n\u0131zda ileride belirlenmesini istedi\u011Finizde kullan\u0131\u015Fl\u0131d\u0131r."},name:"Tekrarda zamanlanm\u0131\u015F tarihi kald\u0131r"}},searchResults:{heading:"Arama sonu\xE7lar\u0131",taskCountLocation:{description:"G\xF6rev say\u0131s\u0131n\u0131n sorgu sonu\xE7lar\u0131n\u0131n \xFCst\xFCnde mi yoksa alt\u0131nda m\u0131 g\xF6sterilece\u011Fini se\xE7in.",name:"G\xF6rev say\u0131s\u0131 konumu",options:{bottom:"Alt",top:"\xDCst"}}},searches:{enableCustomSearches:{description:{line1:"Tasks sorgular\u0131nda JavaScript \xE7al\u0131\u015Ft\u0131ran '{{filterByFunction}}', '{{sortByFunction}}' ve '{{groupByFunction}}' \xF6zelliklerini etkinle\u015Ftirir.",line2:"Bir Tasks sorgusunda veya Markdown dosyas\u0131nda k\xF6t\xFC ama\xE7l\u0131 JavaScript, Obsidian i\xE7inde \xE7al\u0131\u015Farak kasa i\xE7eriklerinize, yerel dosyalar\u0131n\u0131za veya di\u011Fer sistem kaynaklar\u0131na eri\u015Febilir ya da bunlar\u0131 de\u011Fi\u015Ftirebilir.",line3:"Bunu yaln\u0131zca bu kasan\u0131n mevcut ve gelecekteki i\xE7eriklerine (ba\u015Fkalar\u0131ndan daha sonra indirebilece\u011Finiz, kopyalayabilece\u011Finiz veya e\u015Fitleyebilece\u011Finiz dosyalar dahil) g\xFCveniyorsan\u0131z etkinle\u015Ftirin.",line4:"Bu ayar yaln\u0131zca bu cihazda saklan\u0131r; bu kasay\u0131 kulland\u0131\u011F\u0131n\u0131z her cihazda ayr\u0131 ayr\u0131 etkinle\u015Ftirin."},name:"\xD6zel aramalar\u0131 etkinle\u015Ftir"},heading:"Aramalar"},seeTheDocumentation:"Belgelere bak\u0131n",statuses:{collections:{anuppuccinTheme:"AnuPpuccin Temas\u0131",auraTheme:"Aura Temas\u0131",borderTheme:"Border Temas\u0131",buttons:{addCollection:{name:"{{themeName}}: {{numberOfStatuses}} desteklenen Durumu ekle"}},ebullientworksTheme:"Ebullientworks Temas\u0131",itsThemeAndSlrvbCheckboxes:"ITS Temas\u0131 & SlRvb Onay Kutular\u0131",lytModeTheme:"LYT Mode Temas\u0131 (Yaln\u0131zca karanl\u0131k mod)",minimalTheme:"Minimal Tema",thingsTheme:"Things Temas\u0131"},coreStatuses:{buttons:{checkStatuses:{name:"Durumlar\u0131n\u0131z\u0131 inceleyin ve kontrol edin",tooltip:"Kasan\u0131n k\xF6k dizininde, mevcut durum ayarlar\u0131n\u0131n Mermaid diyagram\u0131n\u0131 i\xE7eren yeni bir dosya olu\u015Fturur."}},description:{line1:"Bunlar, Tasks'\u0131n \xF6zel CSS stillendirmesi veya tema gerektirmeksizin yerel olarak destekledi\u011Fi temel durumlard\u0131r.",line2:"A\u015Fa\u011F\u0131daki b\xF6l\xFCmde kendi \xF6zel durumlar\u0131n\u0131z\u0131 d\xFCzenleyebilir ve ekleyebilirsiniz."},heading:"Temel Durumlar"},customStatuses:{buttons:{addAllUnknown:{name:"T\xFCm Bilinmeyen Durum T\xFCrlerini Ekle"},addNewStatus:{name:"Yeni G\xF6rev Durumu Ekle"},resetCustomStatuses:{name:"\xD6zel Durum T\xFCrlerini Varsay\u0131lanlara S\u0131f\u0131rla"}},description:
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:""},line1:"",line2:"",name:""},recurringTasks:{heading:"\u041F\u043E\u0432\u0442\u043E\u0440\u044E\u0432\u0430\u043D\u0456 \u0437\u0430\u0434\u0430\u0447\u0456",nextLine:{description:"\u0423\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F \u0446\u044C\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u0437\u043C\u0443\u0441\u0438\u0442\u044C \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0437\u0430\u0434\u0430\u0447\u0456 \u0437\u2019\u044F\u0432\u043B\u044F\u0442\u0438\u0441\u044F \u043D\u0430 \u0440\u044F\u0434\u043A\u0443 \u043D\u0438\u0436\u0447\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0457 \u0437\u0430\u0434\u0430\u0447\u0456. \u0406\u043D\u0430\u043A\u0448\u0435 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0437\u2019\u044F\u0432\u0438\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u044E.",name:"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0437\u2019\u044F\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F \u043D\u0430 \u0440\u044F\u0434\u043A\u0443 \u043D\u0438\u0436\u0447\u0435"},removeScheduledDate:{description:{line1:"",line2:""},name:""}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044E",statuses:{collections:{anuppuccinTheme:"\u0422\u0435\u043C\u0430 AnuPpuccin",auraTheme:"\u0422\u0435\u043C\u0430 Aura",borderTheme:"\u0422\u0435\u043C\u0430 Border",buttons:{addCollection:{name:"{{themeName}}: \u0414\u043E\u0434\u0430\u0442\u0438 {{numberOfStatuses}} \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0432\u0430\u043D\u0438\u0445 \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432"}},ebullientworksTheme:"\u0422\u0435\u043C\u0430 Ebullientworks",itsThemeAndSlrvbCheckboxes:"\u0422\u0435\u043C\u0430 ITS \u0456 \u043F\u0440\u0430\u043F\u043E\u0440\u0446\u0456 SlRvb",lytModeTheme:"\u0422\u0435\u043C\u0430 LYT Mode (\u043B\u0438\u0448\u0435 \u0442\u0435\u043C\u043D\u0438\u0439 \u0440\u0435\u0436\u0438\u043C)",minimalTheme:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0430 \u0442\u0435\u043C\u0430",thingsTheme:"\u0422\u0435\u043C\u0430 Things"},coreStatuses:{buttons:{checkStatuses:{name:"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0442\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u0432\u0430\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438",tooltip:"\u0421\u0442\u0432\u043E\u0440\u0456\u0442\u044C \u043D\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B \u0443 \u043A\u043E\u0440\u0435\u043D\u0456 \u0441\u0445\u043E\u0432\u0438\u0449\u0430, \u0449\u043E \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0434\u0456\u0430\u0433\u0440\u0430\u043C\u0443 Mermaid \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0445 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C \u0441\u0442\u0430\u0442\u0443\u0441\u0443."}},description:{line1:"\u0426\u0435 \u043E\u0441\u043D\u043E\u0432\u043D\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438, \u044F\u043A\u0456 Tasks \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454 \u043D\u0430\u0442\u0438\u0432\u043D\u043E, \u0431\u0435\u0437 \u043F\u043E\u0442\u0440\u0435\u0431\u0438 \u0432 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u043E\u043C\u0443 CSS-\u0441\u0442\u0438\u043B\u044E\u0432\u0430\u043D\u043D\u0456 \u0447\u0438 \u0442\u0435\u043C\u0430\u0445.",line2:"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438, \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0442\u0430 \u0434\u04
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:"Th\xEAm preset m\u1EDBi"},line1:"B\u1EA1n c\xF3 th\u1EC3 \u0111\u1ECBnh ngh\u0129a c\xE1c h\u01B0\u1EDBng d\u1EABn \u0111\u01B0\u1EE3c \u0111\u1EB7t t\xEAn \u1EDF \u0111\xE2y, m\xE0 b\u1EA1n c\xF3 th\u1EC3 s\u1EED d\u1EE5ng l\u1EA1i trong nhi\u1EC1u truy v\u1EA5n. M\u1ED9t preset c\xF3 t\xEAn '{{name}}' c\xF3 th\u1EC3 \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng trong truy v\u1EA5n Tasks v\u1EDBi '{{instruction1}}' ho\u1EB7c '{{instruction2}}'.",line2:"B\u1EA5t k\u1EF3 truy v\u1EA5n Tasks n\xE0o \u0111ang m\u1EDF s\u1EBD \u0111\u01B0\u1EE3c t\u1EA3i l\u1EA1i t\u1EF1 \u0111\u1ED9ng khi c\xE1c preset \u0111\u01B0\u1EE3c ch\u1EC9nh s\u1EEDa.",name:"Preset"},recurringTasks:{heading:"Nhi\u1EC7m v\u1EE5 \u0111\u1ECBnh k\u1EF3",nextLine:{description:"B\u1EADt t\xEDnh n\u0103ng n\xE0y s\u1EBD l\xE0m cho l\u1EA7n l\u1EB7p l\u1EA1i ti\u1EBFp theo c\u1EE7a nhi\u1EC7m v\u1EE5 xu\u1EA5t hi\u1EC7n tr\xEAn d\xF2ng b\xEAn d\u01B0\u1EDBi nhi\u1EC7m v\u1EE5 \u0111\xE3 ho\xE0n th\xE0nh. N\u1EBFu kh\xF4ng, l\u1EA7n l\u1EB7p l\u1EA1i ti\u1EBFp theo s\u1EBD xu\u1EA5t hi\u1EC7n tr\u01B0\u1EDBc l\u1EA7n \u0111\xE3 ho\xE0n th\xE0nh.",name:"L\u1EA7n l\u1EB7p l\u1EA1i ti\u1EBFp theo xu\u1EA5t hi\u1EC7n tr\xEAn d\xF2ng b\xEAn d\u01B0\u1EDBi"},removeScheduledDate:{description:{line1:"B\u1EADt t\xEDnh n\u0103ng n\xE0y s\u1EBD l\xE0m cho l\u1EA7n l\u1EB7p l\u1EA1i ti\u1EBFp theo c\u1EE7a nhi\u1EC7m v\u1EE5 kh\xF4ng c\xF3 ng\xE0y \u0110\xE3 l\xEAn l\u1ECBch (\u23F3), khi \xEDt nh\u1EA5t m\u1ED9t trong c\xE1c ng\xE0y B\u1EAFt \u0111\u1EA7u (\u{1F6EB}) ho\u1EB7c \u0110\u1EBFn h\u1EA1n (\u{1F4C5}) c\xF3 m\u1EB7t.",line2:"\u0110i\u1EC1u n\xE0y d\xE0nh cho khi b\u1EA1n mu\u1ED1n ng\xE0y B\u1EAFt \u0111\u1EA7u v\xE0 \u0110\u1EBFn h\u1EA1n \u0111\u01B0\u1EE3c chuy\u1EC3n ti\u1EBFp sang l\u1EA7n l\u1EB7p l\u1EA1i ti\u1EBFp theo, nh\u01B0ng b\u1EA1n s\u1EBD \u0111\u1EB7t ng\xE0y \u0110\xE3 l\xEAn l\u1ECBch trong t\u01B0\u01A1ng lai, m\u1ED9t khi b\u1EA1n d\u1EF1 \u0111\u1ECBnh l\xE0m vi\u1EC7c v\u1EDBi n\xF3."},name:"X\xF3a ng\xE0y \u0111\xE3 l\xEAn l\u1ECBch khi l\u1EB7p l\u1EA1i"}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"Xem t\xE0i li\u1EC7u",statuses:{collections:{anuppuccinTheme:"Theme AnuPpuccin",auraTheme:"Theme Aura",borderTheme:"Theme Border",buttons:{addCollection:{name:"{{themeName}}: Th\xEAm {{numberOfStatuses}} Tr\u1EA1ng th\xE1i \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3"}},ebullientworksTheme:"Theme Ebullientworks",itsThemeAndSlrvbCheckboxes:"Theme ITS & SlRvb Checkboxes",lytModeTheme:"Theme LYT Mode (Ch\u1EC9 ch\u1EBF \u0111\u1ED9 t\u1ED1i)",minimalTheme:"Theme Minimal",thingsTheme:"Theme Things"},coreStatuses:{buttons:{checkStatuses:{name:"Xem x\xE9t v\xE0 ki\u1EC3m tra Tr\u1EA1ng th\xE1i c\u1EE7a b\u1EA1n",tooltip:"T\u1EA1o file m\u1EDBi trong th\u01B0 m\u1EE5c g\u1ED1c c\u1EE7a vault, ch\u1EE9a s\u01A1 \u0111\u1ED3 Mermaid c\u1EE7a c\xE1c c\xE0i \u0111\u1EB7t tr\u1EA1ng th\xE1i hi\u1EC7n t\u1EA1i."}},description:{line1:"\u0110\xE2y l\xE0 c\xE1c tr\u1EA1ng th\xE1i c\u1ED1t l\xF5i m\xE0 Tasks h\u1ED7 tr\u1EE3 nguy\xEAn b\u1EA3n, kh\xF4ng c\u1EA7n CSS t\xF9y ch\u1EC9nh ho\u1EB7c theme.",line2:"B\u1EA1n c\xF3 th\u1EC3 th\xEAm ch\u1EC9nh s\u1EEDa v\xE0 th\xEAm c\xE1c tr\u1EA1ng th\xE1i t\xF9y ch\u1EC9nh c\u1EE7a ri\xEAng b\u1EA1n trong ph\u1EA7n b\xEAn d\u01B0\u1EDBi."},heading:"Tr\u1EA1ng th\xE1i c\u1ED1t l\xF5i"},customStatuses:{buttons:{addAllUnknown:{name:"Th\xEAm t\u1EA5t c\u1EA3 lo\u1EA1i tr\u1EA1ng th\xE1i kh\xF4ng x\xE1c \u0111\u1ECBnh"},addNewStatus:{name:"Th\xEAm tr\u1EA1ng th\xE1i nhi\u1EC7m v\u1EE5 m\u1EDBi"},resetCustomStatuses:{name:"\u0110\u1EB7t l\u1EA1i lo\u1EA1i tr\u1EA1ng th\xE1i t\xF9y ch\u1EC9nh v\u1EC1 m\u1EB7c \u0111\u1ECBnh"}},description:{line1:"Tr\u01B0\u1EDBc ti\xEAn, b\u1EA1n n\xEAn <b>ch\u1ECDn v\xE0 c\xE0i \u0111\u1EB7t CSS Snippet ho\u1EB7c Theme</b> \u0111\u1EC3 t\u1EA1o ki\u1EC3u cho c\xE1c \xF4 \u0111\
path does not include _templates/
limit 300
show urgency`}},presets:{buttons:{addNewPreset:""},line1:"\u60A8\u53EF\u4EE5\u5728\u8FD9\u91CC\u5B9A\u4E49\u547D\u540D\u6307\u4EE4\uFF0C\u53EF\u4EE5\u5728\u591A\u4E2A\u67E5\u8BE2\u4E2D\u91CD\u590D\u4F7F\u7528\u3002\u4E00\u4E2A\u540D\u4E3A '{{name}}' \u7684\u9884\u8BBE\u53EF\u4EE5\u5728\u4EFB\u52A1\u67E5\u8BE2\u4E2D\u4F7F\u7528 '{{instruction1}}' \u6216 '{{instruction2}}'\u3002",line2:"\u4EFB\u4F55\u6253\u5F00\u7684\u4EFB\u52A1\u67E5\u8BE2\u5728\u9884\u8BBE\u88AB\u7F16\u8F91\u65F6\u90FD\u4F1A\u81EA\u52A8\u91CD\u65B0\u52A0\u8F7D\u3002",name:"\u9884\u8BBE"},recurringTasks:{heading:"\u91CD\u590D\u6027\u4EFB\u52A1",nextLine:{description:"\u542F\u7528\u6B64\u529F\u80FD\u540E\uFF0C\u4EFB\u52A1\u7684\u4E0B\u4E00\u6B21\u91CD\u590D\u5C06\u663E\u793A\u5728\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u4E0B\u4E00\u884C\u3002\u82E5\u5173\u95ED\u6B64\u529F\u80FD\uFF0C\u5219\u4E0B\u4E00\u6B21\u91CD\u590D\u5C06\u51FA\u73B0\u5728\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u4E0A\u4E00\u884C\u3002",name:"\u628A\u4EFB\u52A1\u7684\u4E0B\u4E00\u6B21\u91CD\u590D\u653E\u5728\u4E0B\u4E00\u884C"},removeScheduledDate:{description:{line1:"\u5F00\u542F\u6B64\u9009\u9879\u540E\uFF0C\u5F53\u4EFB\u52A1\u81F3\u5C11\u8BBE\u7F6E\u4E86\u5F00\u59CB\u65E5\u671F(\u{1F6EB})\u6216\u8BA1\u5212\u65E5\u671F(\u{1F4C5})\u4E2D\u7684\u4E00\u4E2A\u65F6\uFF0C\u8BE5\u4EFB\u52A1\u7684\u4E0B\u4E00\u6B21\u91CD\u590D\u5468\u671F\u5C06\u4E0D\u518D\u5305\u542B\u8BA1\u5212\u65E5\u671F(\u23F3)\u3002",line2:"\u6B64\u529F\u80FD\u9002\u7528\u4E8E\u4F60\u5E0C\u671B\u5C06\u5F00\u59CB\u548C\u622A\u6B62\u65E5\u671F\u5EF6\u7EED\u5230\u4E0B\u4E00\u4E2A\u5468\u671F\uFF0C\u4F46\u8BA1\u5212\u65E5\u671F\u6682\u4E0D\u8BBE\u7F6E\uFF0C\u7B49\u5B9E\u9645\u5F00\u59CB\u5904\u7406\u65F6\u518D\u786E\u5B9A\u7684\u60C5\u51B5\u3002"},name:"\u5728\u91CD\u590D\u6027\u4EFB\u52A1\u4E2D\u79FB\u9664\u8BA1\u5212\u65E5\u671F"}},searchResults:{heading:"",taskCountLocation:{description:"",name:"",options:{bottom:"",top:""}}},searches:{enableCustomSearches:{description:{line1:"",line2:"",line3:"",line4:""},name:""},heading:""},seeTheDocumentation:"\u53C2\u9605\u6587\u6863",statuses:{collections:{anuppuccinTheme:"AnuPpuccin \u4E3B\u9898",auraTheme:"Aura \u4E3B\u9898",borderTheme:"Border \u4E3B\u9898",buttons:{addCollection:{name:"{{themeName}}: \u6DFB\u52A0 {{numberOfStatuses}} \u79CD\u652F\u6301\u72B6\u6001"}},ebullientworksTheme:"Ebullientworks \u4E3B\u9898",itsThemeAndSlrvbCheckboxes:"ITS \u4E3B\u9898\u548C SlRvb \u590D\u9009\u6846",lytModeTheme:"LYT Mode \u4E3B\u9898 (\u4EC5\u6DF1\u8272\u6A21\u5F0F)",minimalTheme:"Minimal \u4E3B\u9898",thingsTheme:"Things \u4E3B\u9898"},coreStatuses:{buttons:{checkStatuses:{name:"\u67E5\u770B\u5E76\u68C0\u67E5\u60A8\u7684\u72B6\u6001",tooltip:"\u5728\u5E93\u7684\u6839\u76EE\u5F55\u4E0B\u521B\u5EFA\u4E00\u4E2A\u65B0\u6587\u4EF6,\u5305\u542B\u5F53\u524D\u72B6\u6001\u8BBE\u7F6E\u7684 Mermaid \u56FE\u8868."}},description:{line1:"\u8FD9\u4E9B\u662F Tasks \u539F\u751F\u652F\u6301\u7684\u6838\u5FC3\u72B6\u6001\uFF0C\u4E0D\u9700\u8981\u81EA\u5B9A\u4E49CSS\u6837\u5F0F\u6216\u4E3B\u9898\u3002",line2:"\u60A8\u53EF\u4EE5\u5728\u4E0B\u9762\u7F16\u8F91\u548C\u6DFB\u52A0\u81EA\u5B9A\u4E49\u72B6\u6001\u3002"},heading:"\u6838\u5FC3\u72B6\u6001"},customStatuses:{buttons:{addAllUnknown:{name:"\u6DFB\u52A0\u6240\u6709\u672A\u77E5\u72B6\u6001\u7C7B\u578B"},addNewStatus:{name:"\u6DFB\u52A0\u65B0\u4EFB\u52A1\u72B6\u6001"},resetCustomStatuses:{name:"\u91CD\u7F6E\u81EA\u5B9A\u4E49\u72B6\u6001\u7C7B\u578B\u4E3A\u9ED8\u8BA4\u503C"}},description:{line1:"\u60A8\u5E94\u8BE5\u9996\u5148<b>\u9009\u62E9\u5E76\u5B89\u88C5 CSS\u4EE3\u7801\u6BB5\u6216\u4E3B\u9898<b>\u4EE5\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u590D\u9009\u6846\u7684\u6837\u5F0F",line2:"\u7136\u540E\uFF0C\u4F7F\u7528\u4E0B\u9762\u7684\u6309\u94AE\u8BBE\u7F6E\u60A8\u7684\u81EA\u5B9A\u4E49\u72B6\u6001,\u4EE5\u5339\u914D\u60A8\u9009\u62E9\u7684CSS\u590D\u9009\u6846.",line3:"<b>\u6CE8\u610F</b>\u4EFB\u4F55\u4E0E\u66F4\u65E9\u7684\u72B6\u6001\u5177\u6709\u76F8\u540C\u7B26\u53F7\u7684\u72B6\u6001\u90FD\u5C06\u88AB\u5FFD\u7565.\u60A8\u53EF\u4EE5\u901A\u8FC7\u8FD0\u884C\u201CC
`).map(NY).filter(function(e){return e!==null});return Yt(Yt({},t[0]),t[1])}function Nl(n){var t={},e=/DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(n);if(!e)return t;var r=e[1],i=e[2];return r&&(t.tzid=r),t.dtstart=Ml(i),t}function NY(n){if(n=n.replace(/^\s+|\s+$/,""),!n.length)return null;var t=/^([A-Z]+?)[:;]/.exec(n.toUpperCase());if(!t)return sD(n);var e=t[1];switch(e.toUpperCase()){case"RRULE":case"EXRULE":return sD(n);case"DTSTART":return Nl(n);default:throw new Error("Unsupported RFC prop ".concat(e," in ").concat(n))}}function sD(n){var t=n.replace(/^RRULE:/i,""),e=Nl(t),r=n.replace(/^(?:RRULE|EXRULE):/i,"").split(";");return r.forEach(function(i){var s=i.split("="),a=s[0],o=s[1];switch(a.toUpperCase()){case"FREQ":e.freq=Ie[o.toUpperCase()];break;case"WKST":e.wkst=ir[o.toUpperCase()];break;case"COUNT":case"INTERVAL":case"BYSETPOS":case"BYMONTH":case"BYMONTHDAY":case"BYYEARDAY":case"BYWEEKNO":case"BYHOUR":case"BYMINUTE":case"BYSECOND":var l=FY(o),u=a.toLowerCase();e[u]=l;break;case"BYWEEKDAY":case"BYDAY":e.byweekday=LY(o);break;case"DTSTART":case"TZID":var c=Nl(n);e.tzid=c.tzid,e.dtstart=c.dtstart;break;case"UNTIL":e.until=Ml(o);break;case"BYEASTER":e.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+a+"'")}}),e}function FY(n){if(n.indexOf(",")!==-1){var t=n.split(",");return t.map(aD)}return aD(n)}function aD(n){return/^[+-]?\d+$/.test(n)?Number(n):n}function LY(n){var t=n.split(",");return t.map(function(e){if(e.length===2)return ir[e];var r=e.match(/^([+-]?\d{1,2})([A-Z]{2})$/);if(!r||r.length<3)throw new SyntaxError("Invalid weekday string: ".concat(e));var i=Number(r[1]),s=r[2],a=ir[s].weekday;return new bt(a,i)})}var Sy=z(()=>{$r();Ti();_s();Bt();rr()});var Os,Ic=z(()=>{Bt();Os=(function(){function n(t,e){if(isNaN(t.getTime()))throw new RangeError("Invalid date passed to DateWithZone");this.date=t,this.tzid=e}return Object.defineProperty(n.prototype,"isUTC",{get:function(){return!this.tzid||this.tzid.toUpperCase()==="UTC"},enumerable:!1,configurable:!0}),n.prototype.toString=function(){var t=ka(this.date.getTime(),this.isUTC);return this.isUTC?":".concat(t):";TZID=".concat(this.tzid,":").concat(t)},n.prototype.getTime=function(){return this.date.getTime()},n.prototype.rezonedDate=function(){return this.isUTC?this.date:B_(this.date,this.tzid)},n})()});function Ll(n){for(var t=[],e="",r=Object.keys(n),i=Object.keys(Il),s=0;s<r.length;s++)if(r[s]!=="tzid"&&Ue(i,r[s])){var a=r[s].toUpperCase(),o=n[r[s]],l="";if(!(!rt(o)||qt(o)&&!o.length)){switch(a){case"FREQ":l=ue.FREQUENCIES[n.freq];break;case"WKST":Ln(o)?l=new bt(o).toString():l=o.toString();break;case"BYWEEKDAY":a="BYDAY",l=U_(o).map(function(p){return p instanceof bt?p:qt(p)?new bt(p[0],p[1]):new bt(p)}).toString();break;case"DTSTART":e=qY(o,n.tzid);break;case"UNTIL":l=ka(o,!n.tzid);break;default:if(qt(o)){for(var u=[],c=0;c<o.length;c++)u[c]=String(o[c]);l=u.toString()}else l=String(o)}l&&t.push([a,l])}}var d=t.map(function(p){var h=p[0],b=p[1];return"".concat(h,"=").concat(b.toString())}).join(";"),f="";return d!==""&&(f="RRULE:".concat(d)),[e,f].filter(function(p){return!!p}).join(`
`)}function qY(n,t){return n?"DTSTART"+new Os(new Date(n),t).toString():""}var _y=z(()=>{rr();mn();_s();Bt();Ic()});function YY(n,t){return Array.isArray(n)?!Array.isArray(t)||n.length!==t.length?!1:n.every(function(e,r){return e.getTime()===t[r].getTime()}):n instanceof Date?t instanceof Date&&n.getTime()===t.getTime():n===t}var oD,lD=z(()=>{Mc();Bt();mn();oD=(function(){function n(){this.all=!1,this.before=[],this.after=[],this.between=[]}return n.prototype._cacheAdd=function(t,e,r){e&&(e=e instanceof Date?Cc(e):by(e)),t==="all"?this.all=e:(r._value=e,this[t].push(r))},n.prototype._cacheGet=function(t,e){var r=!1,i=e?Object.keys(e):[],s=function(c){for(var d=0;d<i.length;d++){var f=i[d];if(!YY(e[f],c[f]))return!0}return!1},a=this[t];if(t==="all")r=this.all;else if(qt(a))for(var o=0;o<a.length;o++){var l=a[o];if(!(i.length&&s(l))){r=l._value;break}}if(!r&&this.all){for(var u=new bi(t,e),o=0;o<this.all.length&&u.accept(this.all[o]);o++);r=u.getValue(),this._cacheAdd(t,r,e)}return qt(r)?by(r):r instanceof Date?Cc(r):r},n})()});var uD,cD,UY,jY,Wi,Gt,dD,fD,$Y,WY,Hi,zt,pD,mD,hD,gD,Dy,yD=z(()=>{$r();mn();uD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],qe(1,31),!0),qe(2,28),!0),qe(3,31),!0),qe(4,30),!0),qe(5,31),!0),qe(6,30),!0),qe(7,31),!0),qe(8,31),!0),qe(9,30),!0),qe(10,31),!0),qe(11,30),!0),qe(12,31),!0),qe(1,7),!0),cD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],qe(1,31),!0),qe(2,29),!0),qe(3,31),!0),qe(4,30),!0),qe(5,31),!0),qe(6,30),!0),qe(7,31),!0),qe(8,31),!0),qe(9,30),!0),qe(10,31),!0),qe(11,30),!0),qe(12,31),!0),qe(1,7),!0),UY=nr(1,29),jY=nr(1,30),Wi=nr(1,31),Gt=nr(1,32),dD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],Gt,!0),jY,!0),Gt,!0),Wi,!0),Gt,!0),Wi,!0),Gt,!0),Gt,!0),Wi,!0),Gt,!0),Wi,!0),Gt,!0),Gt.slice(0,7),!0),fD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],Gt,!0),UY,!0),Gt,!0),Wi,!0),Gt,!0),Wi,!0),Gt,!0),Gt,!0),Wi,!0),Gt,!0),Wi,!0),Gt,!0),Gt.slice(0,7),!0),$Y=nr(-28,0),WY=nr(-29,0),Hi=nr(-30,0),zt=nr(-31,0),pD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],zt,!0),WY,!0),zt,!0),Hi,!0),zt,!0),Hi,!0),zt,!0),zt,!0),Hi,!0),zt,!0),Hi,!0),zt,!0),zt.slice(0,7),!0),mD=Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z(Z([],zt,!0),$Y,!0),zt,!0),Hi,!0),zt,!0),Hi,!0),zt,!0),zt,!0),Hi,!0),zt,!0),Hi,!0),zt,!0),zt.slice(0,7),!0),hD=[0,31,60,91,121,152,182,213,244,274,305,335,366],gD=[0,31,59,90,120,151,181,212,243,273,304,334,365],Dy=(function(){for(var n=[],t=0;t<55;t++)n=n.concat(nr(7));return n})()});function bD(n,t){var e=jr(n,1,1),r=va(n)?366:365,i=va(n+1)?366:365,s=Cl(e),a=gi(e),o=Yt(Yt({yearlen:r,nextyearlen:i,yearordinal:s,yearweekday:a},HY(n)),{wnomask:null});if(qn(t.byweekno))return o;o.wnomask=qe(0,r+7);var l,u,c=l=Ht(7-a+t.wkst,7);c>=4?(c=0,u=o.yearlen+Ht(a-t.wkst,7)):u=r-c;for(var d=Math.floor(u/7),f=Ht(u,7),p=Math.floor(d+f/4),h=0;h<t.byweekno.length;h++){var b=t.byweekno[h];if(b<0&&(b+=p+1),b>0&&b<=p){var v=void 0;b>1?(v=c+(b-1)*7,c!==l&&(v-=7-l)):v=c;for(var E=0;E<7&&(o.wnomask[v]=1,v++,o.wdaymask[v]!==t.wkst);E++);}}if(Ue(t.byweekno,1)){var v=c+p*7;if(c!==l&&(v-=7-l),v<r)for(var h=0;h<7&&(o.wnomask[v]=1,v+=1,o.wdaymask[v]!==t.wkst);h++);}if(c){var R=void 0;if(Ue(t.byweekno,-1))R=-1;else{var D=gi(jr(n-1,1,1)),U=Ht(7-D.valueOf()+t.wkst,7),ee=va(n-1)?366:365,V=void 0;U>=4?(U=0,V=ee+Ht(D-t.wkst,7)):V=r-c,R=Math.floor(52+Ht(V,7)/4)}if(Ue(t.byweekno,R))for(var v=0;v<c;v++)o.wnomask[v]=1}return o}function HY(n){var t=va(n)?366:365,e=jr(n,1,1),r=gi(e);return t===365?{mmask:uD,mdaymask:fD,nmdaymask:mD,wdaymask:Dy.slice(r),mrange:gD}:{mmask:cD,mdaymask:dD,nmdaymask:pD,wdaymask:Dy.slice(r),mrange:hD}}var TD=z(()=>{$r();Bt();mn();yD()});function vD(n,t,e,r,i,s){var a={lastyear:n,lastmonth:t,nwdaymask:[]},o=[];if(s.freq===ue.YEARLY)if(qn(s.bymonth))o=[[0,e]];else for(var l=0;l<s.bymonth.length;l++)t=s.bymonth[l],o.push(r.slice(t-1,t+1));else s.freq===ue.MONTHLY&&(o=[r.slice(t-1,t+1)]);if(qn(o))return a;a.nwdaymask=qe(0,e);for(var l=0;l<o.length;l++)for(var u=o[l],c=u[0],d=u[1]-1,f=0;f<s.bynweekday.length;f++){var p=void 0,h=s.bynweekday[f],b=h[0],v=h[1];v<0?(p=d+(v+1)*7,p-=Ht(i[p]-b,7)):(p=c+(v-1)*7,p+=Ht(7-i[p]+b,7)),c<=p&&p<=d&&(a.nwdaymask[p]=1)}return a}var kD=z(()=>{rr();mn()});function wD(n,t){t===void 0&&(t=0);var e=
`),r=0;r<e.length;){var i=e[r]=e[r].replace(/\s+$/g,"");i?r>0&&i[0]===" "?(e[r-1]+=i.slice(1),e.splice(r,1)):r+=1:e.splice(r,1)}return e}function tU(n){n.forEach(function(t){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(t))throw new Error("unsupported RDATE/EXDATE parm: "+t)})}function AD(n,t){return tU(t),n.split(",").map(function(e){return Ml(e)})}var MD,Oy=z(()=>{$r();rr();Cy();Bt();mn();Sy();MD={dtstart:null,cache:!1,unfold:!1,forceset:!1,compatible:!1,tzid:null}});function PD(n){var t=this;return function(e){if(e!==void 0&&(t["_".concat(n)]=e),t["_".concat(n)]!==void 0)return t["_".concat(n)];for(var r=0;r<t._rrule.length;r++){var i=t._rrule[r].origOptions[n];if(i)return i}}}function ID(n,t){if(!(n instanceof ue))throw new TypeError(String(n)+" is not RRule instance");Ue(t.map(String),String(n))||t.push(n)}function ND(n,t){if(!(n instanceof Date))throw new TypeError(String(n)+" is not Date instance");Ue(t.map(Number),Number(n))||(t.push(n),yi(t))}function FD(n,t,e){var r=!e||e.toUpperCase()==="UTC",i=r?"".concat(n,":"):"".concat(n,";TZID=").concat(e,":"),s=t.map(function(a){return ka(a.valueOf(),r)}).join(",");return"".concat(i).concat(s)}var Ry,Cy=z(()=>{$r();rr();Bt();mn();CD();Oy();_y();Ry=(function(n){wa(t,n);function t(e){e===void 0&&(e=!1);var r=n.call(this,{},e)||this;return r.dtstart=PD.apply(r,["dtstart"]),r.tzid=PD.apply(r,["tzid"]),r._rrule=[],r._rdate=[],r._exrule=[],r._exdate=[],r}return t.prototype._iter=function(e){return RD(e,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},t.prototype.rrule=function(e){ID(e,this._rrule)},t.prototype.exrule=function(e){ID(e,this._exrule)},t.prototype.rdate=function(e){ND(e,this._rdate)},t.prototype.exdate=function(e){ND(e,this._exdate)},t.prototype.rrules=function(){return this._rrule.map(function(e){return Fc(e.toString())})},t.prototype.exrules=function(){return this._exrule.map(function(e){return Fc(e.toString())})},t.prototype.rdates=function(){return this._rdate.map(function(e){return new Date(e.getTime())})},t.prototype.exdates=function(){return this._exdate.map(function(e){return new Date(e.getTime())})},t.prototype.valueOf=function(){var e=[];return!this._rrule.length&&this._dtstart&&(e=e.concat(Ll({dtstart:this._dtstart}))),this._rrule.forEach(function(r){e=e.concat(r.toString().split(`
`))}),this._exrule.forEach(function(r){e=e.concat(r.toString().split(`
`).map(function(i){return i.replace(/^RRULE:/,"EXRULE:")}).filter(function(i){return!/^DTSTART/.test(i)}))}),this._rdate.length&&e.push(FD("RDATE",this._rdate,this.tzid())),this._exdate.length&&e.push(FD("EXDATE",this._exdate,this.tzid())),e},t.prototype.toString=function(){return this.valueOf().join(`
`)},t.prototype.clone=function(){var e=new t(!!this._cache);return this._rrule.forEach(function(r){return e.rrule(r.clone())}),this._exrule.forEach(function(r){return e.exrule(r.clone())}),this._rdate.forEach(function(r){return e.rdate(new Date(r.getTime()))}),this._exdate.forEach(function(r){return e.exdate(new Date(r.getTime()))}),e},t})(ue)});var LD=z(()=>{rr();Cy();Oy();Ti();_s();Bt()});var ki,Lc=z(()=>{"use strict";LD();ki=class n{constructor({rrule:t,baseOnToday:e,occurrence:r}){this.rrule=t,this.baseOnToday=e,this.occurrence=r}static fromText({recurrenceRuleText:t,occurrence:e}){try{let r=t.match(/^([a-zA-Z0-9, !]+?)( when done)?$/i);if(r==null)return null;let i=r[1].trim(),s=r[2]!==void 0,a=ue.parseText(i);if(a!==null){let o=e.referenceDate;!s&&o!==null?a.dtstart=window.moment(o).startOf("day").utc(!0).toDate():a.dtstart=window.moment().startOf("day").utc(!0).toDate();let l=new ue(a);return new n({rrule:l,baseOnToday:s,occurrence:e})}}catch(r){return null}return null}toText(){let t=this.rrule.toText();return this.baseOnToday&&(t+=" when done"),t}next(t=window.moment()){let e=this.nextReferenceDate(t);return e===null?null:this.occurrence.next(e)}identicalTo(t){return this.baseOnToday!==t.baseOnToday||!this.occurrence.isIdenticalTo(t.occurrence)?!1:this.toText()===t.toText()}nextReferenceDate(t){return this.baseOnToday?this.nextReferenceDateFromToday(t.clone()).toDate():this.nextReferenceDateFromOriginalReferenceDate().toDate()}nextReferenceDateFromToday(t){let e=new ue(me(L({},this.rrule.origOptions),{dtstart:t.startOf("day").utc(!0).toDate()}));return this.nextAfter(t.endOf("day"),e)}nextReferenceDateFromOriginalReferenceDate(){var e;let t=window.moment((e=this.occurrence.referenceDate)!=null?e:void 0).endOf("day");return this.nextAfter(t,this.rrule)}nextAfter(t,e){t.utc(!0);let r=window.moment.utc(e.after(t.toDate())),i=this.toText(),s=i.match(/every( \d+)? month(s)?(.*)?/);s!==null&&(i.includes(" on ")||(r=n.nextAfterMonths(t,r,e,s[1])));let a=i.match(/every( \d+)? year(s)?(.*)?/);return a!==null&&(r=n.nextAfterYears(t,r,e,a[1])),n.addTimezone(r)}static nextAfterMonths(t,e,r,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));n.isSkippingTooManyMonths(t,e,s);)e=n.fromOneDayEarlier(t,r);return e}static isSkippingTooManyMonths(t,e,r){let i=e.month()-t.month(),s=e.year()-t.year();return i+=s*12,i>r}static nextAfterYears(t,e,r,i){let s=1;for(i!==void 0&&(s=Number.parseInt(i.trim(),10));n.isSkippingTooManyYears(t,e,s);)e=n.fromOneDayEarlier(t,r);return e}static isSkippingTooManyYears(t,e,r){return e.year()-t.year()>r}static fromOneDayEarlier(t,e){t.subtract(1,"days").endOf("day");let r=e.origOptions;return r.dtstart=t.startOf("day").toDate(),e=new ue(r),window.moment.utc(e.after(t.toDate()))}static addTimezone(t){return window.moment.utc(t).set({hour:12,minute:0,second:0,millisecond:0}).local(!0).startOf("day")}}});function qD(n,t,e){let r=new Map([["cancelled date","cancelledDate"],["created date","createdDate"],["depends on","dependsOn"],["done date","doneDate"],["due date","dueDate"],["id","id"],["on completion","onCompletion"],["priority","priority"],["recurrence rule","recurrenceRule"],["scheduled date","scheduledDate"],["start date","startDate"]]);for(let[i,s]of r.entries())if(t.startsWith(i))return n.setVisibility(s,e),!0;return t.startsWith("tags")?(n.setTagsVisibility(e),!0):!1}var Da,qc,Hr,Bi=z(()=>{"use strict";Da=(p=>(p.Description="description",p.Id="id",p.DependsOn="dependsOn",p.Priority="priority",p.RecurrenceRule="recurrenceRule",p.OnCompletion="onCompletion",p.CreatedDate="createdDate",p.StartDate="startDate",p.ScheduledDate="scheduledDate",p.DueDate="dueDate",p.CancelledDate="cancelledDate",p.DoneDate="doneDate",p.BlockLink="blockLink",p))(Da||{}),qc=Object.values(Da),Hr=class{constructor(){this.visible={};this.tagsVisible=!0;qc.forEach(t=>{this.visible[t]=!0})}isShown(t){return this.visible[t]}areTagsShown(){return this.tagsVisible}hide(t){this.visible[t]=!1}setVisibility(t,e){this.visible[t]=e}setTagsVisibility(t){this.tagsVisible=t}get shownComponents(){return qc.filter(t=>this.visible[
`})),c=c.slice(0,a.autoSuggestMaxItems),c}}function MU(n,t,e){let r=WU(t.substring(0,e),[["(",")"],["[","]"]])=="("?")":"]",i=n?r+" ":" ",s=n&&t.length>e&&t.charAt(e)===r?1:0;return{postfix:i,insertSkip:s}}function AU(n,t,e){let r=[],i=e.line;Ps(r,i,n.dueDateSymbol,"due date"),Ps(r,i,n.startDateSymbol,"start date"),Ps(r,i,n.scheduledDateSymbol,"scheduled date"),PU(r,n,e),Ps(r,i,n.recurrenceSymbol,"recurring (repeat)"),IU(r,n,e),t&&(Ps(r,i,n.idSymbol,"id"),Ps(r,i,n.dependsOnSymbol,"depends on id")),Ps(r,i,n.onCompletionSymbol,"on completion");let s=NU(r,e);return s.length===0&&e.settings.autoSuggestMinMatch===0?r:s}function Ps(n,t,e,r){t.includes(e)||n.push({displayText:`${e} ${r}`,appendText:`${e} `})}function PU(n,t,e){if(!(i=>Object.values(t.prioritySymbols).some(s=>s.length>0&&i.includes(s)))(e.line)){let i=t.prioritySymbols,s=["High","Medium","Low","Highest","Lowest"];for(let a of s){let o=i[a];n.push({displayText:e.dataviewMode?`${o} priority`:`${o} ${a.toLowerCase()} priority`,appendText:`${o}${e.postfix}`,insertSkip:e.dataviewMode?e.insertSkip:void 0})}}}function IU(n,t,e){if(!e.line.includes(t.createdDateSymbol)){let i=mi.parseDate("today",!0).format($e.dateFormat);n.push({textToMatch:`${t.createdDateSymbol} created`,displayText:`${t.createdDateSymbol} created today (${i})`,appendText:`${t.createdDateSymbol} ${i}`+e.postfix,insertSkip:e.dataviewMode?e.insertSkip:void 0})}}function NU(n,t){let e=Pa(/([a-zA-Z'_-]*)/g,t),r=[];if(e&&e.length>0){let i=e[0];if(i.length>=Math.max(1,t.settings.autoSuggestMinMatch)){let s=n.filter(a=>{var l;return((l=a.textToMatch)!=null?l:a.displayText).toLowerCase().includes(i.toLowerCase())});for(let a of s){let o=t.dataviewMode&&(a.displayText.includes("priority")||a.displayText.includes("created"))?i.length+t.insertSkip:i.length;r.push({suggestionType:"match",displayText:a.displayText,appendText:a.appendText,insertAt:e.index,insertSkip:o})}}}return r}function yE(n,t){let e=`${t}`,r=`${n} ${t}`;return{displayText:e,appendText:r}}function FU(n,t){let r=`${mi.parseDate(t,!0).format($e.dateFormat)}`,i=`${t} (${r})`,s=`${n} ${r}`;return{displayText:i,appendText:s}}function LU(n,t,e){let r=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],i=[],s=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),a=Pa(s,e);if(a&&a.length>=2){let o=a[2];if(o.length<e.settings.autoSuggestMinMatch)return[];let l=o&&o.length>1?mi.parseDate(_c(o),!0):null;if(l!=null&&l.isValid()){let c=l.format($e.dateFormat);Jc(e,a,[c],yE,i)}let u=Wy(r,o,t,!0);Jc(e,a,u,FU,i)}return i}function qU(n,t){var a;let e=["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"],r=[],i=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),s=Pa(i,t);if(s&&s.length>=2){let o=s[1],l=s[2];if(l.length<t.settings.autoSuggestMinMatch)return[];if(l.length>0){let f=(a=ki.fromText({recurrenceRuleText:l,occurrence:new hi({startDate:null,scheduledDate:null,dueDate:null})}))==null?void 0:a.toText();if(f){let p=`${o} ${f}`+t.postfix;if(r.push({suggestionType:"match",displayText:`\u2705 ${f}`,appendText:p,insertAt:s.index,insertSkip:Hy(s[0],t)}),s[0]==p)return[]}}let u=t.settings.autoSuggestMaxItems/2,c=Wy(e,l,u,!1);c.length===0&&l.trim().length===0&&(c=e.slice(0,u)),Jc(t,s,c,(f,p)=>{let h=`${p}`,b=`${f} ${p}`;return{displayText:h,appendText:b}},r)}return r}function YU(n,t,e){let r=["delete","keep"],i=[],s=new RegExp(`(${n})\\s*([0-9a-zA-Z ]*)`,"ug"),a=Pa(s,e);if(a&&a.length>=2){let o=a[2];if(o.length<e.settings.autoSuggestMinMatch)return[];let l=Wy(r,o,t,!0);Jc(e,a,l,yE,i)}return i}function UU(n,t,e){let r=[],i=new RegExp(`(${n})\\s*(${Rs.source})?`,"ug"),s=Pa(i,e);if(s&&s[0].trim().length<=n.length){let a=Ul(t.map(o=>o.id));r.push({suggestionType:"match",displayText:"generate unique id",appendText:`${n} ${a}`+e.postfix,insertAt:s.index,insertSkip:Hy(s[0],e)})}return r}function jU(n,t,e,r){let i=[
`);r.length>1&&(t=r[0],e=!0);let i=50;return t.length>i&&(t=t.slice(0,i),e=!0),e&&(t+="..."),t}function wE(n,t){let e=`Cannot find preset "${n}" in the Tasks settings`;if(Object.keys(t).length===0)e+=`
You can define the instruction(s) for "${n}" in the Tasks settings.`;else{let i=Math.max(...Object.keys(t).map(a=>a.length)),s=Object.entries(t).sort(([a],[o])=>a.localeCompare(o)).map(([a,o])=>`${a.padEnd(i)}: ${GU(o)}`).join(`
`);e+=`
2026-01-05 13:03:55 +08:00
The following presets are defined in the Tasks settings:
${s}`}return e}var kE,Vy=z(()=>{"use strict";kE={this_file:"path includes {{query.file.path}}",this_folder:"folder includes {{query.file.folder}}",this_folder_only:"filter by function task.file.folder === query.file.folder",this_root:"root includes {{query.file.root}}",hide_date_fields:`# Hide any values for all date fields
2026-01-05 13:03:55 +08:00
hide due date
hide scheduled date
hide start date
hide created date
hide done date
hide cancelled date`,hide_non_date_fields:`# Hide all the non-date fields, but not tags
hide id
hide depends on
hide recurrence rule
hide on completion
hide priority`,hide_query_elements:`# Hide toolbar, postpone, edit, backlinks and task count
hide toolbar
2026-01-05 13:03:55 +08:00
hide postpone button
hide edit button
hide backlinks
hide task count`,hide_everything:`# Hide everything except description and any tags
2026-01-05 13:03:55 +08:00
preset hide_date_fields
preset hide_non_date_fields
preset hide_query_elements`}});var td,SE=z(()=>{"use strict";td=class{constructor(t=!1,e=!1,r=!1){this.ignoreSortInstructions=t,this.showTaskHiddenData=e,this.recordTimings=r}}});var Na,nd=z(()=>{"use strict";Na={priority:!0,recurrence:!0,due:!0,scheduled:!0,start:!0,before_this:!0,after_this:!0,status:!0,created:!0,done:!0,cancelled:!0}});var _t,Fa=z(()=>{"use strict";_r();_t=class n{constructor(){this.coreStatuses=[Ce.TODO.configuration,Ce.DONE.configuration],this.customStatuses=[Ce.IN_PROGRESS.configuration,Ce.CANCELLED.configuration]}static addStatus(t,e){t.push(e)}static replaceStatus(t,e,r){let i=this.findStatusIndex(e,t);return i<=-1?!1:(t.splice(i,1,r),!0)}static findStatusIndex(t,e){let r=new Ce(t);return e.findIndex(i=>new Ce(i).previewText()==r.previewText())}static deleteStatus(t,e){let r=this.findStatusIndex(e,t);return r<=-1?!1:(t.splice(r,1),!0)}static deleteAllCustomStatuses(t){t.customStatuses.splice(0)}static resetAllCustomStatuses(t){n.deleteAllCustomStatuses(t),new n().customStatuses.forEach(r=>{n.addStatus(t.customStatuses,r)})}static bulkAddStatusCollection(t,e){let r=[];return e.forEach(i=>{t.customStatuses.find(a=>a.symbol==i[0]&&a.name==i[1]&&a.nextStatusSymbol==i[2])?r.push(`The status ${i[1]} (${i[0]}) is already added.`):n.addStatus(t.customStatuses,Ce.createFromImportedValue(i))}),r}static allStatuses(t){return t.coreStatuses.concat(t.customStatuses)}static applyToStatusRegistry(t,e){e.clearStatuses(),n.allStatuses(t).forEach(r=>{e.add(r)})}}});var DE,_E=z(()=>{DE=[{index:9999,internalName:"INTERNAL_TESTING_ENABLED_BY_DEFAULT",displayName:"Test Item. Used to validate the Feature Framework.",description:"Description",enabledByDefault:!0,stable:!1}]});var $l,EE=z(()=>{"use strict";_E();$l=class n{constructor(t,e,r,i,s,a){this.internalName=t;this.index=e;this.description=r;this.displayName=i;this.enabledByDefault=s;this.stable=a}static get values(){let t=[];return DE.forEach(e=>{t=[...t,new n(e.internalName,e.index,e.description,e.displayName,e.enabledByDefault,e.stable)]}),t}static get settingsFlags(){let t={};return n.values.forEach(e=>{t[e.internalName]=e.enabledByDefault}),t}static fromString(t){for(let e of n.values)if(t===e.internalName)return e;throw new RangeError(`Illegal argument passed to fromString(): ${t} does not correspond to any available Feature ${this.name}`)}}});function Qy(n,t){for(let e in n)t[e]===void 0&&(t[e]=n[e])}function Wl(){return hn[X().taskFormat]}function VU(n){let t=L({},n);return"includes"in t&&!("presets"in t)&&(t.presets=t.includes,delete t.includes),t}var hn,Ky,Di,X,it,Is,xE,dt=z(()=>{"use strict";By();Yl();zy();Yn();_r();vE();zy();Nr();Vy();SE();nd();Fa();EE();hn={tasksPluginEmoji:{getDisplayName:()=>x.t("settings.format.displayName.tasksEmojiFormat"),taskSerializer:new Cs(ql),buildSuggestions:$y(ql,jy,!1)},dataview:{getDisplayName:()=>x.t("settings.format.displayName.dataview"),taskSerializer:new ed,buildSuggestions:bE($y(Gy,jy,!0),[["(",")"],["[","]"]])}},Ky={presets:kE,globalQuery:"",globalFilter:"",removeGlobalFilter:!1,taskFormat:"tasksPluginEmoji",setCreatedDate:!1,setDoneDate:!0,setCancelledDate:!0,autoSuggestInEditor:!0,autoSuggestMinMatch:0,autoSuggestMaxItems:20,provideAccessKeys:!0,useFilenameAsScheduledDate:!1,filenameAsScheduledDateFormat:"",filenameAsDateFolders:[],recurrenceOnNextLine:!1,removeScheduledDateOnRecurrence:!1,searchResults:{taskCountLocation:"bottom"},statusSettings:new _t,isShownInEditModal:Na,dismissedNotices:{"live-preview-callout-warning":!1},features:$l.settingsFlags,generalSettings:{},headingOpened:{},debugSettings:new td,loggingOptions:{minLevels:{"":"info",tasks:"info","tasks.Cache":"info","tasks.Events":"info","tasks.File":"info","tasks.Query":"info","tasks.Task":"info"}}},Di=L({},Ky);X=()=>(Qy($l.settingsFlags,Di.features),Qy(Ky.loggingOptions.minLevels,Di.loggingOptions.minLevels),Qy(Ky.debugSettings,Di.debugSettings),Di.statusSettings.customStatuses.forEach((n,t,e)=>{var i,s;let r=Ce.getTypeFromStatusTypeString(n.type);e[t]=new Tt((i=n.symbol)!=null?i:" ",n.name,(s=n.nextStatusSymbol)!=null?s:"x",n.availableAsCommand,
\`\`\`${r}
2026-01-05 13:03:55 +08:00
flowchart LR
classDef TODO stroke:#f33,stroke-width:3px;
classDef DONE stroke:#0c0,stroke-width:3px;
classDef IN_PROGRESS stroke:#fa0,stroke-width:3px;
classDef CANCELLED stroke:#ddd,stroke-width:3px;
classDef NON_TASK stroke:#99e,stroke-width:3px;
classDef ON_HOLD stroke:#00f,stroke-width:3px;
2026-01-05 13:03:55 +08:00
${i.join(`
`)}
${s.join(`
`)}
linkStyle default stroke:gray
\`\`\`
`}addEdgeIfNotToInternal(t,e,r,i,s){let a=t.findIndex(u=>u.symbol===e.symbol),o=a!==-1,l=e.type!=="EMPTY";if(o&&l){let u;s?u='-. "\u{1F501}" .-> ':u=" --> ";let c=`${i+1}${u}${a+1}`;r.push(c)}}getMermaidNodeLabel(t,e){let r=OE(t.name),i=t.type;if(e){let s=rd(t.symbol),a=rd(t.nextStatusSymbol),o=`[${s}] -> [${a}]`,l=`'${r}'`,u=`(${i})`;return`["${l}<br>${o}<br>${u}"]:::${i}`}else return`["${r}"]:::${i}`}}});var zr,CE=z(()=>{"use strict";zr=class{constructor(t,e){this.name=t,this.sortOrder=e}get groupText(){return this.name!==""?`%%${this.sortOrder}%% ${this.name}`:""}}});var ME,jt,id=z(()=>{"use strict";ME=require("obsidian");CE();ii();jt=class{constructor(t){this._date=null;this._date=t}get moment(){return this._date?this._date.clone():null}formatAsDate(t=""){return this.format($e.dateFormat,t)}formatAsDateAndTime(t=""){return this.format($e.dateTimeFormat,t)}format(t,e=""){return this._date?this._date.format(t):e}toISOString(t){return this._date?this._date.toISOString(t):""}get category(){let t=window.moment(),e=this.moment;return e?e.isBefore(t,"day")?new zr("Overdue",1):e.isSame(t,"day")?new zr("Today",2):e.isValid()?new zr("Future",3):new zr("Invalid date",0):new zr("Undated",4)}get fromNow(){let t=this.moment;if(!t)return new zr("",0);let e=this.fromNowOrder(t);return new zr(t.fromNow(),e)}fromNowOrder(t){if(!t.isValid())return 0;let e=window.moment(),r=t.isSameOrBefore(e,"second"),i=this.fromNowStartDateOfGroup(t,r,e);return Number((r?1:3)+i.format("YYYYMMDDHHmm"))}fromNowStartDateOfGroup(t,e,r){let i=t.clone().locale("en").fromNow(!0).split(" "),s,a=Number(i[0]);isNaN(a)?s=1:s=a;let o=i[1];return e?r.subtract(s,o):r.add(s,o)}postpone(t="days",e=1){if(!this._date)throw new ME.Notice("Cannot postpone a null date");let r=window.moment().startOf("day");return this._date.isSameOrAfter(r,"day")?this._date.clone().add(e,t):r.add(e,t)}}});var IE=O((AE,PE)=>{(function(n){var t=Object.hasOwnProperty,e=Array.isArray?Array.isArray:function(T){return Object.prototype.toString.call(T)==="[object Array]"},r=10,i=typeof process=="object"&&typeof process.nextTick=="function",s=typeof Symbol=="function",a=typeof Reflect=="object",o=typeof setImmediate=="function",l=o?setImmediate:setTimeout,u=s?a&&typeof Reflect.ownKeys=="function"?Reflect.ownKeys:function(m){var T=Object.getOwnPropertyNames(m);return T.push.apply(T,Object.getOwnPropertySymbols(m)),T}:Object.keys;function c(){this._events={},this._conf&&d.call(this,this._conf)}function d(m){m&&(this._conf=m,m.delimiter&&(this.delimiter=m.delimiter),m.maxListeners!==n&&(this._maxListeners=m.maxListeners),m.wildcard&&(this.wildcard=m.wildcard),m.newListener&&(this._newListener=m.newListener),m.removeListener&&(this._removeListener=m.removeListener),m.verboseMemoryLeak&&(this.verboseMemoryLeak=m.verboseMemoryLeak),m.ignoreErrors&&(this.ignoreErrors=m.ignoreErrors),this.wildcard&&(this.listenerTree={}))}function f(m,T){var w="(node) warning: possible EventEmitter memory leak detected. "+m+" listeners added. Use emitter.setMaxListeners() to increase limit.";if(this.verboseMemoryLeak&&(w+=" Event name: "+T+"."),typeof process!="undefined"&&process.emitWarning){var k=new Error(w);k.name="MaxListenersExceededWarning",k.emitter=this,k.count=m,process.emitWarning(k)}else console.error(w),console.trace&&console.trace()}var p=function(m,T,w){var k=arguments.length;switch(k){case 0:return[];case 1:return[m];case 2:return[m,T];case 3:return[m,T,w];default:for(var S=new Array(k);k--;)S[k]=arguments[k];return S}};function h(m,T){for(var w={},k,S=m.length,C=T?T.length:0,I=0;I<S;I++)k=m[I],w[k]=I<C?T[I]:n;return w}function b(m,T,w){this._emitter=m,this._target=T,this._listeners={},this._listenersCount=0;var k,S;if((w.on||w.off)&&(k=w.on,S=w.off),T.addEventListener?(k=T.addEventListener,S=T.removeEventListener):T.addListener?(k=T.addListener,S=T.removeListener):T.on&&(k=T.on,S=T.off),!k&&!S)throw Error("target does not implement any known event API");if(typeof k!="function")throw TypeError("on method must be a function");if(typeof S!="function")throw TypeError("off method must be a function");this._
`),this.dateFromFileName=new La(()=>$t.fromPath(this.filePath))}get filePath(){return this.tasksFile.path}get fileCache(){return this.tasksFile.cachedMetadata}parseFileContent(){if(this.listItems===void 0)return this.tasks;let t=this.fileLines.length,e=null,r=0;for(let i of this.listItems){let s=i.position.start.line;if(s>=t)return this.logger.debug(`${this.filePath} Obsidian gave us a line number ${s} past the end of the file. ${t}.`),this.tasks;if((e===null||e.position.end.line<s)&&(e=Ls.getSection(s,this.fileCache.sections),r=0),e===null)continue;let a=this.fileLines[s];if(a===void 0){this.logger.debug(`${this.filePath}: line ${s} - ignoring 'undefined' line.`);continue}let o=new Jt(this.tasksFile,s,e.position.start.line,r,Ls.getPrecedingHeader(s,this.fileCache.headings));r=this.parseLine(i,a,o,s,r)}return this.tasks}parseLine(t,e,r,i,s){var o;if(t.task===void 0)return this.createListItem(t,e,i,r),s;let a;try{if(a=ye.fromLine({line:e,taskLocation:r,fallbackDate:this.dateFromFileName.value}),a!==null){let l=(o=this.line2ListItem.get(t.parent))!=null?o:null;l!==null&&(a=new ye(me(L({},a),{parent:l}))),this.line2ListItem.set(i,a),a!==null&&(s++,this.tasks.push(a))}else this.createListItem(t,e,i,r)}catch(l){this.errorReporter(l,this.filePath,t,e)}return s}createListItem(t,e,r,i){var o;let s=(o=this.line2ListItem.get(t.parent))!=null?o:null,a=Ki.fromListItemLine(e,s,i);if(a===null){this.logger.warn("Unexpected failure to create a list item from line: "+e+" in file: "+this.filePath);return}this.line2ListItem.set(r,a)}};var KU=4;var Ls=class{constructor({metadataCache:t,vault:e,workspace:r,events:i}){this.logger=gn.getLogger("tasks.Cache");this.notifySubscribersDebounced=(0,qE.debounce)(()=>this.notifySubscribersNotDebounced(),100,!0);this.reportTaskParsingErrorToUser=(t,e,r,i)=>{let s=`There was an error reading one of the tasks in this vault.
2026-01-05 13:03:55 +08:00
The following task has been ignored, to prevent Tasks queries getting stuck with 'Loading Tasks ...'
Error: ${t}
File: ${e}
Line number: ${r.position.start.line}
2026-01-05 13:03:55 +08:00
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.
`;this.logger.error(s),t instanceof Error&&this.logger.error(t.stack?t.stack:"Cannot determine stack"),this.state==="Initializing"&&new qa.Notice(s,1e4)};this.logger.debug("Creating Cache object"),this.metadataCache=t,this.metadataCacheEventReferences=[],this.vault=e,this.workspace=r,this.vaultEventReferences=[],this.events=i,this.eventsEventReferences=[],this.tasksMutex=new Ru,this.state="Cold",this.logger.debug("Cache.constructor(): state = Cold"),this.tasks=[],this.loadedAfterFirstResolve=!1,this.subscribeToCache(),this.workspace.onLayoutReady(()=>M(this,null,function*(){this.subscribeToVault(),yield this.loadVault()})),this.subscribeToEvents()}unload(){this.logger.info("Unloading Cache");for(let t of this.metadataCacheEventReferences)this.metadataCache.offref(t);for(let t of this.vaultEventReferences)this.vault.offref(t);for(let t of this.eventsEventReferences)this.events.off(t)}getTasks(){return this.tasks}getState(){return this.state}notifySubscribers(){this.logger.debug("Cache.notifySubscribers()"),this.notifySubscribersDebounced()}notifySubscribersNotDebounced(){this.logger.debug("Cache.notifySubscribersNotDebounced()"),this.events.triggerCacheUpdate({tasks:this.tasks,state:this.state})}subscribeToCache(){this.logger.debug("Cache.subscribeToCache()");let t=this.metadataCache.on("resolved",()=>M(this,null,function*(){this.loadedAfterFirstResolve||(this.loadedAfterFirstResolve=!0,this.loadVault())}));this.metadataCacheEventReferences.push(t);let e=this.metadataCache.on("changed",r=>M(this,null,function*(){yield this.tasksMutex.runExclusive(()=>this.indexFile(r))}));this.metadataCacheEventReferences.push(e)}subscribeToVault(){this.logger.debug("Cache.subscribeToVault()");let{useFilenameAsScheduledDate:t}=X(),e=this.vault.on("create",s=>M(this,null,function*(){s instanceof qa.TFile&&(this.logger.debug(`Cache.subscribeToVault.createdEventReference() ${s.path}`),yield this.tasksMutex.runExclusive(()=>this.indexFile(s)))}));this.vaultEventReferences.push(e);let r=this.vault.on("delete",s=>M(this,null,function*(){s instanceof qa.TFile&&(this.logger.debug(`Cache.subscribeToVault.deletedEventReference() ${s.path}`),yield this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.filter(a=>a.path!==s.path),this.notifySubscribers()}))}));this.vaultEventReferences.push(r);let i=this.vault.on("rename",(s,a)=>M(this,null,function*(){s instanceof qa.TFile&&(this.logger.debug(`Cache.subscribeToVault.renamedEventReference() ${s.path}`),yield this.tasksMutex.runExclusive(()=>{let o=this.metadataCache.getFileCache(s),l=new ut(s.path,o!=null?o:void 0),u=new La(()=>$t.fromPath(s.path));this.tasks=this.tasks.map(c=>{if(c.path!==a)return c;let d=c.taskLocation.fromRenamedFile(l);return t?$t.updateTaskPath(c,d,u.value):new ye(me(L({},c),{taskLocation:d}))}),this.notifySubscribers()}))}));this.vaultEventReferences.push(i)}subscribeToEvents(){this.logger.debug("Cache.subscribeToEvents()");let t=this.events.onRequestCacheUpdate(r=>{r({tasks:this.tasks,state:this.state})});this.eventsEventReferences.push(t);let e=this.events.onReloadVault(()=>M(this,null,function*(){return yield this.loadVault()}));this.eventsEventReferences.push(e)}loadVault(){return this.logger.debug("Cache.loadVault()"),this.tasksMutex.runExclusive(()=>M(this,null,function*(){let t=new Fs(`Loading vault with global filter '${Re.getInstance().get()}'`);t.start(),this.state="Initializing",this.logger.debug("Cache.loadVault(): state = Initializing"),yield this.indexFiles(this.vault.getMarkdownFiles()),this.state="Warm",this.logger.debug("Cache.loadVault(): state = Warm"),t.finish(),this.notifySubscribers()}))}indexFiles(t){return M(this,null,function*(){let e=0,r=()=>M(this,null,function*(){for(;e<t.length;){let s=t[e];e++,yield this.indexFile(s,!1)}}),i=Math.min(KU,t.length);yield Promise.all(Array.from({length:i},()=>r()))})}indexFile(t,e=!0){return M(this,null,function*(){var l;let r=this.metadataCache.getFileCache(t);if(r==null)return;if(!t.path.endsWith(".md")){this.logger.debug("indexFile: skipping non-markdown file: "+t.path);return}this.logger.debug("Cache.indexFile: "
2026-01-05 13:03:55 +08:00
The task line not updated is:
${n.originalMarkdown}
2026-01-05 13:03:55 +08:00
In this markdown file:
"${n.taskLocation.path}"
2026-01-05 13:03:55 +08:00
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.
`;vd(c);return}let u=Math.min(Math.pow(10,s),100);o.debug(`timeout = ${u}`),window.setTimeout(()=>M(null,null,function*(){yield Fx({originalTask:n,newTasks:t,vault:e,metadataCache:r,workspace:i,previousTries:s+1})}),u)});try{let[u,c,d]=yield Lx(n,e),f=[...d.slice(0,u),...t.map(p=>p.toFileLineString()),...d.slice(u+1)];yield e.modify(c,f.join(`
`))}catch(u){if(u instanceof Xi){u.message&&Nx(u.message),yield l();return}else if(u instanceof kd){yield l();return}else u instanceof Error&&vd(u.message)}});function Lx(n,t){return M(this,null,function*(){if(Xl===void 0)throw new Xi;let e=n.file.tFile||t.getFileByPath(n.path);if(!e)throw new Xi(`Tasks: No file found for task ${n.description}. Retrying ...`);if(!Bj.includes(e.extension))throw new Error(`Tasks: Does not support files with the ${e.extension} file extension.`);let r=Xl.getFileCache(e);if(r==null||r===null)throw new Xi(`Tasks: No file cache found for file ${e.path}. Retrying ...`);let i=r.listItems;if(i===void 0||i.length===0)throw new Xi(`Tasks: No list items found in file cache of ${e.path}. Retrying ...`);let a=(yield t.read(e)).split(`
`),o=zj(n,a,i,Gj);if(o===void 0)throw new kd;return[o,e,a]})}function Jl(n,t){return M(this,null,function*(){try{let[e,r,i]=yield Lx(n,t);return[e,r]}catch(e){e instanceof Xi?e.message&&Nx(e.message):e instanceof Error&&vd(e.message)}})}function qx(n,t){return n<t.length}function zj(n,t,e,r){let i=Vj(n,t);return i!==void 0||(i=Qj(n,t),i!==void 0)?i:Kj(n,t,e,r)}function Vj(n,t){let e=n.taskLocation.lineNumber;if(qx(e,t)&&t[e]===n.originalMarkdown)return wd().debug(`Found original markdown at original line number ${e}`),e}function Qj(n,t){let e=[];for(let r=0;r<t.length;r++)t[r]===n.originalMarkdown&&e.push(r);if(e.length===1)return e[0]}function Kj(n,t,e,r){let i,s=0;for(let a of e){let o=a.position.start.line;if(!qx(o,t))return;if(o<n.taskLocation.sectionStart||a.task===void 0)continue;let l=t[o];if(Re.getInstance().includedIn(l)){if(s===n.taskLocation.sectionIndex){if(l===n.originalMarkdown)i=o;else{r(`Tasks: Unable to find task in file ${n.taskLocation.path}.
2026-01-05 13:03:55 +08:00
Expected task:
${n.originalMarkdown}
2026-01-05 13:03:55 +08:00
Found task:
${l}`);return}break}s++}}return i}Dc();Gi();Lc();vt();$c();Yn();var Sd=class n{constructor(t){this.addGlobalFilterOnSave=t.addGlobalFilterOnSave,this.originalBlocking=t.originalBlocking,this.description=t.description,this.status=t.status,this.priority=t.priority,this.onCompletion=t.onCompletion,this.recurrenceRule=t.recurrenceRule,this.createdDate=t.createdDate,this.startDate=t.startDate,this.scheduledDate=t.scheduledDate,this.dueDate=t.dueDate,this.doneDate=t.doneDate,this.cancelledDate=t.cancelledDate,this.forwardOnly=t.forwardOnly,this.blockedBy=t.blockedBy,this.blocking=t.blocking}static fromTask(t,e){let r=Re.getInstance().removeAsWordFrom(t.description),i=r!=t.description||!Re.getInstance().includedIn(t.description),s="none";t.priority==="5"?s="lowest":t.priority==="4"?s="low":t.priority==="2"?s="medium":t.priority==="1"?s="high":t.priority==="0"&&(s="highest");let a=[];for(let l of t.dependsOn){let u=e.find(c=>c.id===l);u&&a.push(u)}let o=e.filter(l=>l.dependsOn.includes(t.id));return new n({addGlobalFilterOnSave:i,originalBlocking:o,description:r,status:t.status,priority:s,recurrenceRule:t.recurrence?t.recurrence.toText():"",onCompletion:t.onCompletion,createdDate:t.created.formatAsDate(),startDate:t.start.formatAsDate(),scheduledDate:t.scheduled.formatAsDate(),dueDate:t.due.formatAsDate(),doneDate:t.done.formatAsDate(),cancelledDate:t.cancelled.formatAsDate(),forwardOnly:!0,blockedBy:a,blocking:o})}applyEdits(t,e){return M(this,null,function*(){let r=this.description.trim();this.addGlobalFilterOnSave&&(r=Re.getInstance().prependTo(r));let i=ws(this.startDate,this.forwardOnly),s=ws(this.scheduledDate,this.forwardOnly),a=ws(this.dueDate,this.forwardOnly),o=ws(this.cancelledDate,this.forwardOnly),l=ws(this.createdDate,this.forwardOnly),u=ws(this.doneDate,this.forwardOnly),c=null;this.recurrenceRule&&(c=ki.fromText({recurrenceRuleText:this.recurrenceRule,occurrence:new hi({startDate:i,scheduledDate:s,dueDate:a})}));let d=this.onCompletion,f=[];for(let R of this.blockedBy){let D=yield Zj(R,e);f.push(D)}let p=t.id,h=[],b=[];(this.blocking.toString()!==this.originalBlocking.toString()||this.blocking.length!==0)&&(t.id===""&&(p=Ul(e.filter(R=>R.id!=="").map(R=>R.id))),h=this.originalBlocking.filter(R=>!this.blocking.includes(R)),b=this.blocking.filter(R=>!this.originalBlocking.includes(R)));let v=new ye(me(L({},t),{description:r,status:t.status,priority:Un.priorityValue(this.priority),onCompletion:d,recurrence:c,startDate:i,scheduledDate:s,dueDate:a,doneDate:u,createdDate:l,cancelledDate:o,dependsOn:f.map(R=>R.id),id:p}));for(let R of h){let D=WD(R,v);yield Hn({originalTask:R,newTasks:D})}for(let R of b){let D=$D(R,v);yield Hn({originalTask:R,newTasks:D})}let E=this.inferTodaysDate(this.status.type,u,o);return v.handleNewStatusWithRecurrenceInUsersOrder(this.status,E)})}inferTodaysDate(t,e,r){return t==="DONE"&&e!==null?e:t==="CANCELLED"&&r!==null?r:window.moment()}parseAndValidateRecurrence(){var e;if(!this.recurrenceRule)return{parsedRecurrence:"<i>not recurring</>",isRecurrenceValid:!0};let t=(e=ki.fromText({recurrenceRuleText:this.recurrenceRule,occurrence:new hi({startDate:null,scheduledDate:null,dueDate:null})}))==null?void 0:e.toText();return t?this.startDate||this.scheduledDate||this.dueDate?{parsedRecurrence:t,isRecurrenceValid:!0}:{parsedRecurrence:"<i>due, scheduled or start date required</i>",isRecurrenceValid:!1}:{parsedRecurrence:"<i>invalid recurrence rule</i>",isRecurrenceValid:!1}}};function Zj(n,t){return M(this,null,function*(){if(n.id!=="")return n;let e=t.filter(i=>i.id!==""),r=jc(n,e.map(i=>i.id));return yield Hn({originalTask:n,newTasks:r}),r})}dt();function Yx(n,t,e){let r=n.slice();return r[7]=t[e].value,r[8]=t[e].label,r[9]=t[e].symbol,r[10]=t[e].accessKey,r[11]=t[e].accessKeyIndex,r}function Xj(n){let t,e=n[8]+"",r;return{c(){t=ie("span"),r=We(e)},m(i,s){fe(i,t,s),B(t,r)},p:je,d(i){i&&ce(t)}}}function Jj(n){let t,e=n[8].substring(0,n[11])+"",r,i,s=n[8].substring(n[11],n[11]+1)+"",a,o,l=n[8].substring(n[11]+1)+"",u;return{c(){t=ie("span"),r=We(e),i=ie("span"),a=We(s),o=ie("span"),u=We(l),j(i,"
`);t.setLine(l,b)};new Ji({app:r,task:c,onSaveSettings:s,onSubmit:d,allTasks:i}).open()};vt();ii();var Rb=require("obsidian");var gO=(n,t)=>{let e={line:0,ch:n.ch},r=L(L({},e),t.moveTo),i=t.text.split(`
`)[r.line].length;return{line:n.line+r.line,ch:Math.min(r.ch,i)}},Ed=n=>{function t(e,r,i){var f;if(e)return i instanceof Rb.MarkdownView;if(!(i instanceof Rb.MarkdownView))return;let s=(f=i.file)==null?void 0:f.path;if(s===void 0)return;let a=r.getCursor(),o=a.line,l=r.getLine(o),u=n(l,s);if(u===void 0)return;let c=u.text.length>0,d=o>=r.lineCount()-1;if(c||d)r.setLine(o,u.text);else{let p={line:o,ch:0},h={line:o+1,ch:0};r.replaceRange("",p,h)}r.setCursor(gO(a,u))}return t};var Cb=(n,t)=>{let e=ye.fromLine({line:n,taskLocation:Jt.fromUnknownPosition(new ut(t)),fallbackDate:null});if(e!==null){let r=e.toggleWithRecurrenceInUsersOrder().map(s=>s.toFileLineString()),i=r.length>0?r.length-1:0;return{text:r.join(`
`),moveTo:{line:i}}}else{let r=n.match($e.taskRegex);if(r!==null){let s=r[3]===" "?"x":" ";return{text:n.replace($e.taskRegex,`$1$2 [${s}] $4`)}}else if($e.listItemRegex.test(n)){let i=n.replace($e.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=n.replace($e.indentationRegex,"$1- [ ] ");return{text:i,moveTo:{ch:i.length}}}}},yO=Ed(Cb);var Xb=require("obsidian");dt();var es=class{constructor(){this.hideToolbar=!1;this.hidePostponeButton=!1;this.hideTaskCount=!1;this.hideGroupCount=!0;this.hideBacklinks=!1;this.hideNestedBacklinks=!1;this.hideEditButton=!1;this.hideUrgency=!0;this.hideTree=!0;this.shortMode=!1;this.explainQuery=!1}};function bO(n,t,e){let r=new Map([["backlink","hideBacklinks"],["edit button","hideEditButton"],["nested backlink","hideNestedBacklinks"],["postpone button","hidePostponeButton"],["task count","hideTaskCount"],["group count","hideGroupCount"],["toolbar","hideToolbar"],["tree","hideTree"],["urgency","hideUrgency"]]);for(let[i,s]of r.entries())if(t.startsWith(i))return n[s]=e,!0;return!1}Bi();Zt();var Je=class n{constructor(t,e=[],r=""){this.description=t,this.symbol=r,this.children=e}static booleanAnd(t){return this.combineOrCreateExplanation("All of",t,"AND")}static booleanOr(t){return this.combineOrCreateExplanation("At least one of",t,"OR")}static booleanNot(t){return new n("None of",t,"NOT")}static booleanXor(t){return new n("Exactly one of",t,"XOR")}asString(t=""){if(this.children.length==0)return t+this.description;let e=t;this.symbol===""?e+=this.description:(e+=this.symbol,this.children.length>1&&(e+=` (${this.description})`),e+=":");let r=t+" ";for(let i=0;i<this.children.length;i++)e+=`
${this.children[i].asString(r)}`;return e}static combineOrCreateExplanation(t,e,r){if(e.length===2){let i=e[0],s=e[1];if(i.symbol===r&&s.symbol==="")return i.children.push(s),i}return new n(t,e,r)}};var Ka=class{matchesAnyOf(t){return t.some(e=>this.matches(e))}};var xd=class n extends Ka{constructor(t){super(),this.stringToFind=t}matches(t){return n.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,e){return t.toLocaleLowerCase().includes(e.toLocaleLowerCase())}explanation(t){return new Je(t)}};Aa();var Za=class n extends Ka{constructor(t){super(),this.regex=t}static validateAndConstruct(t){let e=/^\/(.+)\/([^/]*)$/,r=t.match(e);if(r!==null){let i=new RegExp(r[1],r[2]),s=mE(r[1]);if(s!==null)throw new SyntaxError(s);return new n(i)}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
2026-01-05 13:03:55 +08:00
Regular expressions must look like this:
/pattern/
or this:
/pattern/flags
Where:
- pattern: The 'regular expression' pattern to search for.
- flags: Optional characters that modify the search.
i => make the search case-insensitive
u => add Unicode support
Examples: /^Log/
/^Log/i
/File Name\.md/
/waiting|waits|waited/i
/\d\d:\d\d/
The following characters have special meaning in the pattern:
to find them literally, you must add a \ before them:
[\^$.|?*+()
CAUTION! Regular expression (or 'regex') searching is a powerful
but advanced feature that requires thorough knowledge in order to
use successfully, and not miss intended search results.
Patterns with nested quantifiers (for example (a+)+) are rejected
because they can cause extreme slowdowns (catastrophic backtracking).
`}explanation(t){let r=h$(t,"using regex: ",this.regexAsString());return new Je(r)}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 h$(n,t,e){var o;let r=n.match(/\//);if(!r)return"Error explaining instruction. Could not find a slash character";let i=2,s=((o=r.index)!=null?o:i)-i;return`${t.padEnd(s)}${e}`}function zs(n,t){let e=`Error: ${n}.
The error message was:
`,r="";return t instanceof Error?r+=t:r+="Unknown error",`${e}"${r}"`}var yn=class{constructor(t,e){this._rawInstruction=t,this._anyContinuationLinesRemoved=e.trim(),this._anyPlaceholdersExpanded=this._anyContinuationLinesRemoved}recordExpandedPlaceholders(t){this._anyPlaceholdersExpanded=t}get rawInstruction(){return this._rawInstruction}get anyContinuationLinesRemoved(){return this._anyContinuationLinesRemoved}get anyPlaceholdersExpanded(){return this._anyPlaceholdersExpanded}explainStatement(t){function e(a,o){o!==a&&(s+=` =>
${t}${o}`)}let r=this._rawInstruction.trim(),i=r.split(`
2026-01-05 13:03:55 +08:00
`).join(`
`+t),s=`${t}${i}`;return this._rawInstruction.includes(`
`)&&(s+=`
`+t),e(r,this._anyContinuationLinesRemoved),e(this._anyContinuationLinesRemoved,this._anyPlaceholdersExpanded),s}allLinesIdentical(){return this._rawInstruction===this._anyContinuationLinesRemoved&&this._rawInstruction===this._anyPlaceholdersExpanded}};var ts=class n{constructor(t,e,r,i){this._statement=new yn(t,t),this.property=e,this.comparator=n.maybeReverse(i,r)}setStatement(t){this._statement=t}get statement(){return this._statement}get instruction(){return this._statement.anyPlaceholdersExpanded}static maybeReverse(t,e){return t?n.makeReversedComparator(e):e}static makeReversedComparator(t){return(e,r,i)=>t(e,r,i)*-1}};Aa();var ns=class{constructor(t,e,r,i){this._statement=new yn(t,t),this.property=e,this.grouper=r,this.reverse=i}setStatement(t){this._statement=t}get statement(){return this._statement}get instruction(){return this._statement.anyPlaceholdersExpanded}};var Ze=class n{canCreateFilterForLine(t){return n.lineMatchesFilter(this.filterRegExp(),t)}static lineMatchesFilter(t,e){return t?t.test(e):!1}static getMatch(t,e){return t?e.match(t):null}fieldNameSingular(){return this.fieldName()}fieldNameSingularEscaped(){return Vi(this.fieldNameSingular())}supportsSorting(){return!1}createSorterFromLine(t){if(!this.supportsSorting())return null;let e=n.getMatch(this.sorterRegExp(),t);if(e===null)return null;let r=!!e[1];return this.createSorter(r)}sorterRegExp(){if(!this.supportsSorting())throw new Error(`sorterRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)?`,"i")}sorterInstruction(t){let e=`sort by ${this.fieldNameSingular()}`;return t&&(e+=" reverse"),e}comparator(){throw new Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(t){return new ts(this.sorterInstruction(t),this.fieldNameSingular(),this.comparator(),t)}createNormalSorter(){return this.createSorter(!1)}createReverseSorter(){return this.createSorter(!0)}supportsGrouping(){return!1}createGrouperFromLine(t){if(!this.supportsGrouping())return null;let e=n.getMatch(this.grouperRegExp(),t);if(e===null)return null;let r=!!e[1];return this.createGrouper(r)}grouperRegExp(){if(!this.supportsGrouping())throw new Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)?$`,"i")}grouperInstruction(t){let e=`group by ${this.fieldNameSingular()}`;return t&&(e+=" reverse"),e}grouper(){throw new Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(t){return new ns(this.grouperInstruction(t),this.fieldNameSingular(),this.grouper(),t)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var sn=class{constructor(t,e,r){this._statement=new yn(t,t),this.explanation=r,this.filterFunction=e}get statement(){return this._statement}setStatement(t){this._statement=t}get instruction(){return this._statement.anyPlaceholdersExpanded}explainFilterIndented(t){let e=this._statement.explainStatement(t);return this.onlyNeedsOneLineExplanation()?`${e}
2026-01-05 13:03:55 +08:00
`:`${e} =>
${this.explanation.asString(t+" ")}
`}simulateExplainFilter(){return this.onlyNeedsOneLineExplanation()?this.explanation:new Je(this.instruction+" =>",[this.explanation])}onlyNeedsOneLineExplanation(){return this.explanation.asString("")===this.instruction}};var Vs=class n{constructor(t){this.instruction=t}get queryComponent(){return this._queryComponent}set queryComponent(t){this._queryComponent=t}get error(){return this._error}set error(t){this._error=t}isValid(){return this._queryComponent!==void 0}static fromObject(t,e){let r=new n(t);return r._queryComponent=e,r}static fromError(t,e){let r=new n(t);return r._error=e,r}};var xe=class n{constructor(t){this.object=t}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(t){return new n(Vs.fromObject(t.instruction,t))}static fromError(t,e){return new n(Vs.fromError(t,e))}};var et=class extends Ze{createFilterOrErrorMessage(t){let e=Ze.getMatch(this.filterRegExp(),t);if(e===null)return xe.fromError(t,`do not understand query filter (${this.fieldName()})`);let r=e[1].toLowerCase(),i=e[2],s=null;if(r.includes("include"))s=new xd(i);else if(r.includes("regex")){try{s=Za.validateAndConstruct(i)}catch(l){let u=zs("Parsing regular expression",l)+`
2026-01-05 13:03:55 +08:00
${Za.helpMessage()}`;return xe.fromError(t,u)}if(s===null)return xe.fromError(t,`Invalid instruction: '${t}'
2026-01-05 13:03:55 +08:00
${Za.helpMessage()}`)}if(s===null)return xe.fromError(t,`do not understand query filter (${this.fieldName()})`);let a=r.match(/not/)!==null,o=new sn(t,this.getFilter(s,a),s.explanation(t));return xe.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(t,e){return r=>{let i=t.matches(this.value(r));return e?!i:i}}comparator(){return(t,e)=>this.value(t).localeCompare(this.value(e),void 0,{numeric:!0})}grouper(){return t=>[this.value(t)]}static escapeMarkdownCharacters(t){return t.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}};var rs=class n extends et{fieldName(){return"description"}value(t){return Re.getInstance().removeAsSubstringFrom(t.description)}supportsSorting(){return!0}comparator(){return(t,e)=>{let r=n.cleanDescription(t.description),i=n.cleanDescription(e.description);return r.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(t){t=Re.getInstance().removeAsSubstringFrom(t);let e=/^\[\[?([^\]]*)]]?/,r=t.match(e);if(r!==null){let i=r[1];t=i.substring(i.indexOf("|")+1)+t.replace(e,"")}return t=this.replaceFormatting(t,/^\*\*([^*]+)\*\*/),t=this.replaceFormatting(t,/^\*([^*]+)\*/),t=this.replaceFormatting(t,/^==([^=]+)==/),t=this.replaceFormatting(t,/^__([^_]+)__/),t=this.replaceFormatting(t,/^_([^_]+)_/),t}static replaceFormatting(t,e){let r=t.match(e);return r!==null&&(t=r[1]+t.replace(e,"")),t}};dy();fy();Ss();var Od=class{findUnexpandedDateText(t){let e=["<%","YYYY-MM-DD"];for(let r of e)if(t.includes(r))return this.unexpandedDateTextMessage(r);return null}unexpandedDateTextMessage(t){return`Instruction contains unexpanded template text: "${t}" - and cannot be interpreted.
2026-01-05 13:03:55 +08:00
Possible causes:
- The query is an a template file, and is not intended to be searched.
- A command such as "Replace templates in the active file" needs to be run.
- The core "Daily notes" plugin is in use, and the template contained
date calculations that it does not support.
- Some sample template text was accidentally pasted in to a tasks query,
instead of in to a template file.
See: https://publish.obsidian.md/tasks/Advanced/Daily+Agenda#Instruction+contains+unexpanded+template+text
`}};var Rd=class{constructor(t,e,r){this._instruction=t,this._filter=e,this._explanation=r}canCreateFilterForLine(t){return t.toLocaleLowerCase()===this._instruction.toLocaleLowerCase()}createFilterOrErrorMessage(t){return this.canCreateFilterForLine(t)?xe.fromFilter(new sn(t,this._filter,new Je(this._explanation||t))):xe.fromError(t,`do not understand filter: ${t}`)}};var On=class{constructor(){this._filters=[]}add(t,e,r){this._filters.push(new Rd(t,e,r))}canCreateFilterForLine(t){return this._filters.some(e=>e.canCreateFilterForLine(t))}createFilterOrErrorMessage(t){for(let e of this._filters){let r=e.createFilterOrErrorMessage(t);if(r.isValid())return r}return xe.fromError(t,`do not understand filter: ${t}`)}};var an=class n extends Ze{constructor(t=null){super(),t!==null?this.filterInstructions=t:(this.filterInstructions=new On,this.filterInstructions.add(`has ${this.fieldName()} date`,e=>this.date(e)!==null),this.filterInstructions.add(`no ${this.fieldName()} date`,e=>this.date(e)===null),this.filterInstructions.add(`${this.fieldName()} date is invalid`,e=>{let r=this.date(e);return r!==null&&!r.isValid()}))}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){var d;let e=this.checkForUnexpandedTemplateText(t);if(e)return xe.fromError(t,e);let r=this.filterInstructions.createFilterOrErrorMessage(t);if(r.isValid())return r;let i=Ze.getMatch(this.filterRegExp(),t);if(i===null)return xe.fromError(t,"do not understand query filter ("+this.fieldName()+" date)");let s=i[1],a=(d=i[2])==null?void 0:d.toLowerCase(),o=i[3],l=mi.parseDateRange(o);if(!l.isValid()){let f=mi.parseDate(s);f.isValid()&&(l=new er(f,f))}if(!l.isValid())return xe.fromError(t,"do not understand "+this.fieldName()+" date");let u=this.buildFilterFunction(a,l),c=n.buildExplanation(this.fieldNameForExplanation(),a,this.filterResultIfFieldMissing(),l);return xe.fromFilter(new sn(t,u,c))}buildFilterFunction(t,e){let r;switch(t){case"before":r=i=>i?i.isBefore(e.start):this.filterResultIfFieldMissing();break;case"after":r=i=>i?i.isAfter(e.end):this.filterResultIfFieldMissing();break;case"on or before":case"in or before":r=i=>i?i.isSameOrBefore(e.end):this.filterResultIfFieldMissing();break;case"on or after":case"in or after":r=i=>i?i.isSameOrAfter(e.start):this.filterResultIfFieldMissing();break;default:r=i=>i?i.isSameOrAfter(e.start)&&i.isSameOrBefore(e.end):this.filterResultIfFieldMissing()}return this.getFilter(r)}getFilter(t){return e=>t(this.date(e))}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,e,r,i){let s=e,a="YYYY-MM-DD (dddd Do MMMM YYYY)",o;switch(e){case"before":case"on or after":o=i.start.format(a);break;case"after":case"on or before":o=i.end.format(a);break;case"in or before":s="on or before",o=i.end.format(a);break;case"in or after":s="on or after",o=i.start.format(a);break;default:if(!i.start.isSame(i.end)){let u=`${t} date is between:`,c=[new Je(`${i.start.format(a)} and`),new Je(`${i.end.format(a)} inclusive`)];return r&&c.push(new Je(`OR no ${t} date`)),new Je(u,c)}s="on",o=i.start.format(a);break}let l=`${t} date is ${s} ${o}`;return r&&(l+=` OR no ${t} date`),new Je(l)}fieldNameForExplanation(){return this.fieldName()}supportsSorting(){return!0}comparator(){return(t,e)=>tr(this.date(t),this.date(e))}supportsGrouping(){return!0}grouper(){return t=>{let e=this.date(t);return e===null?["No "+this.fieldName()+" date"]:e.isValid()?[e.format("YYYY-MM-DD dddd")]:["%%0%% Invalid "+this.fieldName()+" date"]}}checkForUnexpandedTemplateText(t){return new Od().findUnexpandedDateText(t)}};var Cd=class extends an{fieldName(){return"created"}date(t){return t.createdDate}filterResultIfFieldMissing(){return!1}};var Md=class extends an{fieldName(){return"done"}date(t){return t.doneDate}filterResultIfFieldMissing(){return!1}};var Xa=class extends an{fieldName(){return"due"}date(t){
This query uses JavaScript, for example via "filter by function", "sort by function", or "group by function".
JavaScript can run inside Obsidian and access or modify vault contents, local files, or other system resources.
Read the Tasks documentation page "JavaScript in Tasks Queries" before deciding whether to enable it:
https://publish.obsidian.md/tasks/Scripting/JavaScript+in+Tasks+Queries`;var Er=eu;var tu=class extends Vs{};function nu(n,t){if(!on.getInstance().get())throw new Er;try{let e=n.map(([s])=>s),r=t.includes("return")?t:`return ${t}`,i=t&&new Function(...e,r);return i instanceof Function?tu.fromObject(t,i):tu.fromError(t,`Problem parsing expression "${t}"`)}catch(e){return tu.fromError(t,zs(`Failed parsing expression "${t}"`,e))}}function ru(n,t){if(!on.getInstance().get())throw new Er;let e=t.map(([r,i])=>i);return n(...e)}function Mb(n,t,e){try{return ru(n,t)}catch(r){return zs(`Failed calculating expression "${e}"`,r)}}function Pd(n,t){return[["task",n],["query",t?t.query:null]]}function vO(n,t,e){let r=Pd(n,e||null),i=nu(r,t);return i.error?i.error:Mb(i.queryComponent,r,t)}var iu=class{constructor(t){this.line=t,this.functionOrError=nu(Pd(null,null),t)}isValid(){return this.functionOrError.isValid()}get parseError(){return this.functionOrError.error}evaluate(t,e){if(!this.isValid())throw new Error(`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`);return ru(this.functionOrError.queryComponent,Pd(t,e||null))}evaluateOrCatch(t,e){return this.isValid()?Mb(this.functionOrError.queryComponent,Pd(t,e),this.line):`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`}};Ss();function Ab(n){if(n===null)return"null";let t=typeof n;return t==="object"?n.constructor.name:t}var Id=class extends Ze{createFilterOrErrorMessage(t){if(!on.getInstance().get())return xe.fromError(t,Er.helpMessage);let e=Ze.getMatch(this.filterRegExp(),t);if(e===null)return xe.fromError(t,"Unable to parse line");let r=e[1],i=new iu(r);return i.isValid()?xe.fromFilter(new sn(t,g$(i),new Je(t))):xe.fromError(t,i.parseError)}fieldName(){return"function"}filterRegExp(){return new RegExp(`^filter by ${this.fieldNameSingularEscaped()} (.*)`,"i")}supportsSorting(){return!0}sorterRegExp(){return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)? (.*)`,"i")}createSorterFromLine(t){let e=Ze.getMatch(this.sorterRegExp(),t);if(e===null)return null;if(!on.getInstance().get())throw new Er;let r=!!e[1],i=e[2],s=new iu(i);if(!s.isValid())throw new Error(s.parseError);let a=(o,l,u)=>{try{let c=u.queryContext(),d=this.validateTaskSortKey(s.evaluate(o,c)),f=this.validateTaskSortKey(s.evaluate(l,c));return this.compareTaskSortKeys(d,f)}catch(c){throw c instanceof Error&&(c.message+=`: while evaluating instruction '${t}'`),c}};return new ts(t,this.fieldNameSingular(),a,r)}validateTaskSortKey(t){function e(r){throw new Error(`"${r}" is not a valid sort key`)}return t===void 0&&e("undefined"),Number.isNaN(t)&&e("NaN (Not a Number)"),Array.isArray(t)&&e("array"),t}compareTaskSortKeys(t,e){let r=Ab(t),i=Ab(e),s=this.compareTaskSortKeysIfOptionalMoment(t,e,r,i);if(s!==void 0)return s;let a=this.compareTaskSortKeysIfEitherIsNull(t,e);if(a!==void 0)return a;if(r!==i)throw new Error(`Unable to compare two different sort key types '${r}' and '${i}' order`);if(r==="string")return t.localeCompare(e,void 0,{numeric:!0});if(r==="TasksDate")return tr(t.moment,e.moment);if(r==="boolean")return Number(e)-Number(t);let o=Number(t)-Number(e);if(isNaN(o))throw new Error(`Unable to determine sort order for sort key types '${r}' and '${i}'`);return o}compareTaskSortKeysIfOptionalMoment(t,e,r,i){let s=r==="Moment",a=i==="Moment";if(s&&a||s&&e===null||a&&t===null)return tr(t,e)}compareTaskSortKeysIfEitherIsNull(t,e){if(t===null&&e===null)return 0;if(t===null&&e!==null)return-1;if(t!==null&&e===null)return 1}supportsGrouping(){return!0}createGrouperFromLine(t){let e=Ze.getMatch(this.grouperRegExp(),t);if(e===null)return null;if(!on.getInstance().get())throw new Er;let r=!!e[1],i=e[2];return new ns(t,"function",b$(i),r)}grouperRegExp(){return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)? (.*)`,"i")}grouper(){throw new Error("grouper() function not valid for FunctionField. Use createGrouperFromLine() instead.")}};function g$(n){return(t,e)=>{let r=e.quer
2026-01-05 13:03:55 +08:00
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 xe.fromError(e,l)}stringifySubExpressionsForErrorMessage(e){return Object.entries(e).map(([r,i])=>` '${r}': '${i}'
2026-01-05 13:03:55 +08:00
=> ${this.stringifySubExpressionStatus(i)}`).join(`
`)}stringifySubExpressionStatus(e){let r=ou(e);return r?r.error?`ERROR:
${r.error.split(`
2026-01-05 13:03:55 +08:00
`).map(s=>s.trim()).join(`
`)}`:"OK":`ERROR:
do not understand query`}helpMessageFromSimpleError(e,r){return`Could not interpret the following instruction as a Boolean combination:
2026-01-05 13:03:55 +08:00
${e}
The error message is:
${r}`}};var Kd=class extends et{fieldName(){return"filename"}value(t){let e=t.filename;return e===null?"":e+".md"}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return t=>{let e=t.filename;return e===null?["Unknown Location"]:["[["+e+"]]"]}}};var lo=class extends Ze{canCreateFilterForLine(t){return!1}createFilterOrErrorMessage(t){return xe.fromError(t,"Filtering by urgency is not yet supported")}fieldName(){return"urgency"}filterRegExp(){throw new Error(`filterRegExp() unimplemented for ${this.fieldName()}`)}supportsSorting(){return!0}comparator(){return(t,e)=>e.urgency-t.urgency}supportsGrouping(){return!0}grouper(){return t=>[`${t.urgency.toFixed(2)}`]}createGrouper(t){return super.createGrouper(!t)}grouperInstruction(t){return super.grouperInstruction(!t)}};var Zd=class extends et{constructor(){super()}fieldName(){return"status.name"}value(t){return t.status.name}supportsSorting(){return!0}supportsGrouping(){return!0}};Yn();var uo=class n extends Ze{canCreateFilterForLine(t){let e=new RegExp(`^(?:${this.fieldNameSingularEscaped()})`,"i");return Ze.lineMatchesFilter(e,t)}createFilterOrErrorMessage(t){let e=Ze.getMatch(this.filterRegExp(),t);if(e===null)return this.helpMessage(t);let r=e[1].toLowerCase(),i=e[2],s=Vt[i.toUpperCase()];if(!s)return this.helpMessage(t);let a;switch(r){case"is":a=o=>o.status.type===s;break;case"is not":a=o=>o.status.type!==s;break;default:return this.helpMessage(t)}return xe.fromFilter(new sn(t,a,new Je(t)))}filterRegExp(){return new RegExp(`^(?:${this.fieldNameSingularEscaped()}) (is|is not) ([^ ]+)$`,"i")}helpMessage(t){let e=Object.values(Vt).filter(i=>i!=="EMPTY").join(" "),r=`Invalid ${this.fieldNameSingular()} instruction: '${t}'.
2026-01-05 13:03:55 +08:00
Allowed options: 'is' and 'is not' (without quotes).
Allowed values: ${e}
Note: values are case-insensitive,
so 'in_progress' works too, for example.
Example: ${this.fieldNameSingular()} is not NON_TASK`;return xe.fromError(t,r)}fieldName(){return"status.type"}value(t){return t.status.type}supportsSorting(){return!0}comparator(){return(t,e)=>{let r=n.groupName(t),i=n.groupName(e);return r.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return t=>[n.groupName(t)]}static groupName(t){return t.status.typeGroupText}};var Xd=class extends et{fieldName(){return"recurrence"}value(t){return t.recurrence!==null?t.recurrence.toText():""}supportsGrouping(){return!0}grouper(){return t=>t.recurrence!==null?[t.recurrence.toText()]:["None"]}};var Jd=class extends et{fieldName(){return"folder"}value(t){return t.file.folder}supportsGrouping(){return!0}grouper(){return t=>[et.escapeMarkdownCharacters(this.value(t))]}};var ef=class extends et{fieldName(){return"root"}value(t){return t.file.root}supportsGrouping(){return!0}grouper(){return t=>[et.escapeMarkdownCharacters(this.value(t))]}};var tf=class extends et{fieldName(){return"backlink"}value(t){let e=t.getLinkText({isFilenameUnique:!0});return e===null?"Unknown Location":e}createFilterOrErrorMessage(t){return xe.fromError(t,"backlink field does not support filtering")}canCreateFilterForLine(t){return!1}supportsGrouping(){return!0}grouper(){return t=>{let e=t.filename;if(e===null)return["Unknown Location"];let r=t.precedingHeader;return r===null?["[["+e+"]]"]:[`[[${e}#${r}|${e} > ${r}]]`]}}};var nf=class extends an{fieldName(){return"cancelled"}date(t){return t.cancelledDate}filterResultIfFieldMissing(){return!1}};var rf=class extends dr{constructor(){super(),this._filters.add("is blocking",(t,e)=>t.isBlocking(e.allTasks)),this._filters.add("is not blocking",(t,e)=>!t.isBlocking(e.allTasks)),this._filters.add("is blocked",(t,e)=>t.isBlocked(e.allTasks)),this._filters.add("is not blocked",(t,e)=>!t.isBlocked(e.allTasks))}fieldName(){return"blocking"}};var sf=class extends et{constructor(){super();this.filterInstructions=new On;this.filterInstructions.add("has id",e=>e.id.length>0),this.filterInstructions.add("no id",e=>e.id.length===0)}canCreateFilterForLine(e){return this.filterInstructions.canCreateFilterForLine(e)?!0:super.canCreateFilterForLine(e)}createFilterOrErrorMessage(e){let r=this.filterInstructions.createFilterOrErrorMessage(e);return r.isValid()?r:super.createFilterOrErrorMessage(e)}fieldName(){return"id"}value(e){return e.id}supportsSorting(){return!0}supportsGrouping(){return!0}};var af=class extends Ze{constructor(){super();this.filterInstructions=new On;this.filterInstructions.add("has depends on",e=>e.dependsOn.length>0),this.filterInstructions.add("no depends on",e=>e.dependsOn.length===0)}canCreateFilterForLine(e){return this.filterInstructions.canCreateFilterForLine(e)?!0:super.canCreateFilterForLine(e)}createFilterOrErrorMessage(e){let r=this.filterInstructions.createFilterOrErrorMessage(e);return r.isValid()?r:xe.fromError(e,"Unknown instruction")}fieldName(){return"blocked by"}filterRegExp(){return null}};var of=class extends dr{fieldName(){return"random"}supportsSorting(){return!0}comparator(){return(t,e)=>this.sortKey(t)-this.sortKey(e)}sortKey(t){let e=i=>{let s=0,a=9;for(;s<i.length;)a=Math.imul(a^i.charCodeAt(s++),387420489);return a^a>>>9},r=window.moment().format("Y-MM-DD");return e(r+" "+t.description)}};var Wb=[()=>new Zd,()=>new uo,()=>new jd,()=>new Ud,()=>new eo,()=>new Yd,()=>new nf,()=>new Cd,()=>new qd,()=>new Ld,()=>new Xa,()=>new Md,()=>new Ja,()=>new Jd,()=>new ef,()=>new tf,()=>new rs,()=>new Wd,()=>new Nd,()=>new Ad,()=>new Kd,()=>new lo,()=>new Xd,()=>new Id,()=>new sf,()=>new af,()=>new rf,()=>new of,()=>new Qd];function ou(n){for(let t of Wb){let e=t();if(e.canCreateFilterForLine(n))return e.createFilterOrErrorMessage(n)}return null}function NO(n){let t=/^sort by /i;if(n.match(t)===null)return null;for(let e of Wb){let i=e().createSorterFromLine(n);if(i)return i}return null}function lf(n){let t=/^group by /i;if(n.match(t)===null)return null;for(let e of Wb){let i=e().createGrouperFromLine(n);if(i)return i}return null}var FO=["list","columns"],uf=cl
Columns view grouping uses the same fields as "group by".
${qO()}`}:(n.viewMode="columns",n.grouper=r,{success:!0})}function K$(){return{success:!1,error:`columns view requires a grouping expression
${qO()}`}}function qO(){return`For example:
view columns by priority
view columns by root
view columns by status.type reverse`}function YO(n){return{success:!1,error:`do not understand view mode "${n}"
The available view modes are:
${FO.map(t=>` ${t}`).join(`
`)}
For example:
view ${FO[0]}`}}Ns();var Z$=Object.prototype.toString,fo=Array.isArray||function(t){return Z$.call(t)==="[object Array]"};function Bb(n){return typeof n=="function"}function X$(n){return fo(n)?"array":typeof n}function Hb(n){return n.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function UO(n,t){return n!=null&&typeof n=="object"&&t in n}function J$(n,t){return n!=null&&typeof n!="object"&&n.hasOwnProperty&&n.hasOwnProperty(t)}var eW=RegExp.prototype.test;function tW(n,t){return eW.call(n,t)}var nW=/\S/;function rW(n){return!tW(nW,n)}var iW={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function sW(n){return String(n).replace(/[&<>"'`=\/]/g,function(e){return iW[e]})}var aW=/\s*/,oW=/\s+/,jO=/\s*=/,lW=/\s*\}/,uW=/#|\^|\/|>|\{|&|=|!/;function cW(n,t){if(!n)return[];var e=!1,r=[],i=[],s=[],a=!1,o=!1,l="",u=0;function c(){if(a&&!o)for(;s.length;)delete i[s.pop()];else s=[];a=!1,o=!1}var d,f,p;function h(J){if(typeof J=="string"&&(J=J.split(oW,2)),!fo(J)||J.length!==2)throw new Error("Invalid tags: "+J);d=new RegExp(Hb(J[0])+"\\s*"),f=new RegExp("\\s*"+Hb(J[1])),p=new RegExp("\\s*"+Hb("}"+J[1]))}h(t||mr.tags);for(var b=new uu(n),v,E,R,D,U,ee;!b.eos();){if(v=b.pos,R=b.scanUntil(d),R)for(var V=0,$=R.length;V<$;++V)D=R.charAt(V),rW(D)?(s.push(i.length),l+=D):(o=!0,e=!0,l+=" "),i.push(["text",D,v,v+1]),v+=1,D===`
`&&(c(),l="",u=0,e=!1);if(!b.scan(d))break;if(a=!0,E=b.scan(uW)||"name",b.scan(aW),E==="="?(R=b.scanUntil(jO),b.scan(jO),b.scanUntil(f)):E==="{"?(R=b.scanUntil(p),b.scan(lW),b.scanUntil(f),E="&"):R=b.scanUntil(f),!b.scan(f))throw new Error("Unclosed tag at "+b.pos);if(E==">"?U=[E,R,v,b.pos,l,u,e]:U=[E,R,v,b.pos],u++,i.push(U),E==="#"||E==="^")r.push(U);else if(E==="/"){if(ee=r.pop(),!ee)throw new Error('Unopened section "'+R+'" at '+v);if(ee[1]!==R)throw new Error('Unclosed section "'+ee[1]+'" at '+v)}else E==="name"||E==="{"||E==="&"?o=!0:E==="="&&h(R)}if(c(),ee=r.pop(),ee)throw new Error('Unclosed section "'+ee[1]+'" at '+b.pos);return fW(dW(i))}function dW(n){for(var t=[],e,r,i=0,s=n.length;i<s;++i)e=n[i],e&&(e[0]==="text"&&r&&r[0]==="text"?(r[1]+=e[1],r[3]=e[3]):(t.push(e),r=e));return t}function fW(n){for(var t=[],e=t,r=[],i,s,a=0,o=n.length;a<o;++a)switch(i=n[a],i[0]){case"#":case"^":e.push(i),r.push(i),e=i[4]=[];break;case"/":s=r.pop(),s[5]=i[2],e=r.length>0?r[r.length-1][4]:t;break;default:e.push(i)}return t}function uu(n){this.string=n,this.tail=n,this.pos=0}uu.prototype.eos=function(){return this.tail===""};uu.prototype.scan=function(t){var e=this.tail.match(t);if(!e||e.index!==0)return"";var r=e[0];return this.tail=this.tail.substring(r.length),this.pos+=r.length,r};uu.prototype.scanUntil=function(t){var e=this.tail.search(t),r;switch(e){case-1:r=this.tail,this.tail="";break;case 0:r="";break;default:r=this.tail.substring(0,e),this.tail=this.tail.substring(e)}return this.pos+=r.length,r};function co(n,t){this.view=n,this.cache={".":this.view},this.parent=t}co.prototype.push=function(t){return new co(t,this)};co.prototype.lookup=function(t){var e=this.cache,r;if(e.hasOwnProperty(t))r=e[t];else{for(var i=this,s,a,o,l=!1;i;){if(t.indexOf(".")>0)for(s=i.view,a=t.split("."),o=0;s!=null&&o<a.length;)o===a.length-1&&(l=UO(s,a[o])||J$(s,a[o])),s=s[a[o++]];else s=i.view[t],l=UO(i.view,t);if(l){r=s;break}i=i.parent}e[t]=r}return Bb(r)&&(r=r.call(this.view)),r};function bn(){this.templateCache={_cache:{},set:function(t,e){this._cache[t]=e},get:function(t){return this._cache[t]},clear:function(){this._cache={}}}}bn.prototype.clearCache=function(){typeof this.templateCache!="undefined"&&this.templateCache.clear()};bn.prototype.parse=function(t,e){var r=this.templateCache,i=t+":"+(e||mr.tags).join(":"),s=typeof r!="undefined",a=s?r.get(i):void 0;return a==null&&(a=cW(t,e),s&&r.set(i,a)),a};bn.prototype.render=function(t,e,r,i){var s=this.getConfigTags(i),a=this.parse(t,s),o=e instanceof co?e:new co(e,void 0);return this.renderTokens(a,o,r,t,i)};bn.prototype.renderTokens=function(t,e,r,i,s){for(var a="",o,l,u,c=0,d=t.length;c<d;++c)u=void 0,o=t[c],l=o[0],l==="#"?u=this.renderSection(o,e,r,i,s):l==="^"?u=this.renderInverted(o,e,r,i,s):l===">"?u=this.renderPartial(o,e,r,s):l==="&"?u=this.unescapedValue(o,e):l==="name"?u=this.escapedValue(o,e,s):l==="text"&&(u=this.rawValue(o)),u!==void 0&&(a+=u);return a};bn.prototype.renderSection=function(t,e,r,i,s){var a=this,o="",l=e.lookup(t[1]);function u(f){return a.render(f,e,r,s)}if(l){if(fo(l))for(var c=0,d=l.length;c<d;++c)o+=this.renderTokens(t[4],e.push(l[c]),r,i,s);else if(typeof l=="object"||typeof l=="string"||typeof l=="number")o+=this.renderTokens(t[4],e.push(l),r,i,s);else if(Bb(l)){if(typeof i!="string")throw new Error("Cannot use higher-order sections without the original template");l=l.call(e.view,i.slice(t[3],t[5]),u),l!=null&&(o+=l)}else o+=this.renderTokens(t[4],e,r,i,s);return o}};bn.prototype.renderInverted=function(t,e,r,i,s){var a=e.lookup(t[1]);if(!a||fo(a)&&a.length===0)return this.renderTokens(t[4],e,r,i,s)};bn.prototype.indentPartial=function(t,e,r){for(var i=e.replace(/[^ \t]/g,""),s=t.split(`
`),a=0;a<s.length;a++)s[a].length&&(a>0||!r)&&(s[a]=i+s[a]);return s.join(`
`)};bn.prototype.renderPartial=function(t,e,r,i){if(r){var s=this.getConfigTags(i),a=Bb(r)?r(t[1]):r[t[1]];if(a!=null){var o=t[6],l=t[5],u=t[4],c=a;l==0&&u&&(c=this.indentPartial(a,u,o));var d=this.parse(c,s);return this.renderTokens(d,e,r,c,i)}}};bn.prototype.unescapedValue=function(t,e){var r=e.lookup(t[1]);if(r!=null)return r};bn.prototype.escapedValue=function(t,e,r){var i=this.getConfigEscape(r)||mr.escape,s=e.lookup(t[1]);if(s!=null)return typeof s=="number"&&i===mr.escape?String(s):i(s)};bn.prototype.rawValue=function(t){return t[1]};bn.prototype.getConfigTags=function(t){return fo(t)?t:t&&typeof t=="object"?t.tags:void 0};bn.prototype.getConfigEscape=function(t){if(t&&typeof t=="object"&&!fo(t))return t.escape};var mr={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(n){lu.templateCache=n},get templateCache(){return lu.templateCache}},lu=new bn;mr.clearCache=function(){return lu.clearCache()};mr.parse=function(t,e){return lu.parse(t,e)};mr.render=function(t,e,r,i){if(typeof t!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+X$(t)+'" was given as the first argument for mustache#render(template, view, partials)');return lu.render(t,e,r,i)};mr.escape=sW;mr.Scanner=uu;mr.Context=co;mr.Writer=bn;var Gb=mr;var ZO=ds(BO());function VO(n,t){let e=n.trim(),r=t.query.file;switch(e){case"query.file.path":return Rr(r.path);case"query.file.pathWithoutExtension":return Rr(r.pathWithoutExtension);case"query.file.root":return Rr(r.root);case"query.file.folder":return Rr(r.folder);case"query.file.filename":return Rr(r.filename);case"query.file.filenameWithoutExtension":return Rr(r.filenameWithoutExtension);case"query.file.outlinksInProperties":return Rr(r.outlinksInProperties);case"query.file.outlinksInBody":return Rr(r.outlinksInBody);case"query.file.outlinks":return Rr(r.outlinks)}let i=zO(e,GO("query.file.property"));if(i!==null)return Rr(r.property(i));let s=zO(e,GO("query.file.hasProperty"));return s!==null?Rr(r.hasProperty(s)):pW()}function Rr(n){return{resolved:!0,value:n}}function pW(){return{resolved:!1}}function GO(n){let t=n.replace(/\./g,String.raw`\.`);return new RegExp(String.raw`^${t}\((['"])([^'"]*)\1\)$`)}function zO(n,t){var r;let e=new RegExp(t).exec(n);return(r=e==null?void 0:e[2])!=null?r:null}function Vb(n,t){Gb.escape=e=>e;try{let e=hW(n,t);return Gb.render(e,(0,ZO.default)(t))}catch(e){let r="";throw e instanceof Error?r=`There was an error expanding one or more placeholders.
The error message was:
${e.message.replace(/ > /g,".").replace("Missing Mustache data property","Unknown property")}`:r="Unknown error expanding placeholders.",r+=`
The problem is in:
${n}`,new Error(r)}}var mW=new RegExp(["\\{\\{","(.*?)","\\}\\}"].join(""),"g");function hW(n,t){return n.replace(mW,(e,r)=>{if(gW(t)){let a=VO(r,t);if(a.resolved){let o=a.value;if(o===null&&KO(r),o!==void 0)return QO(o)}}if(!on.getInstance().get()){if(yW(r))return e;throw new Er}let i=bW(t),s=nu(i,r);if(s.isValid()){let a=ru(s.queryComponent,i);if(a===null&&KO(r),a!==void 0)return QO(a)}return e})}function QO(n){return typeof n=="object"?JSON.stringify(n):String(n)}function gW(n){var t;return((t=n==null?void 0:n.query)==null?void 0:t.file)!==void 0}function KO(n){throw new Error(`Invalid placeholder result 'null'.
Check for missing file property in this expression:
{{${n}}}`)}function yW(n){return/^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)*$/.test(n.trim())}function bW(n){return Object.entries(n)}dt();function Qb(n){return Kb(n,[])}function Kb(n,t){return{query:{file:n,allTasks:t,searchCache:{}},preset:L({},X().presets)}}Vy();dt();var po=class{constructor(t=""){this.indentation=t}explainQuery(t){if(t.error!==void 0)return this.explainError(t);let e=[];return e.push(this.explainIgnoreGlobalQuery(t)),e.push(this.explainFilters(t)),e.push(this.explainGroups(t)),e.push(this.explainSorters(t)),e.push(this.explainLayout(t)),e.push(this.explainQueryLimits(t)),e.push(this.explainDebugSettings()),e.filter(r=>r!=="").join(`
`)}explainError(t){let e="";return e+=`Query has an error:
`,e+=t.error+`
`,e}explainIgnoreGlobalQuery(t){return t.ignoreGlobalQuery?this.indent(`ignore global query
`):""}explainFilters(t){return t.filters.length===0?this.indent(`No filters supplied. All tasks will match the query.
`):t.filters.map(e=>e.explainFilterIndented(this.indentation)).join(`
`)}explainGroups(t){return this.explainStatements(t.grouping.map(e=>e.statement))}explainSorters(t){return this.explainStatements(t.sorting.map(e=>e.statement))}explainLayout(t){return this.explainStatements(t.layoutStatements)}explainQueryLimits(t){function e(i){let s=`At most ${i} task`;return i!==1&&(s+="s"),s}let r=[];if(t.limit!==void 0){let i=e(t.limit)+`.
`;r.push(this.indent(i))}if(t.taskGroupLimit!==void 0){let i=e(t.taskGroupLimit)+` per group (if any "group by" options are supplied).
`;r.push(this.indent(i))}return r.join(`
`)}explainDebugSettings(){let t="",{debugSettings:e}=X();return e.ignoreSortInstructions&&(t+=this.indent(`NOTE: All sort instructions, including default sort order, are disabled, due to 'ignoreSortInstructions' setting.
`)),t}explainStatements(t){return t.length===0?"":t.map(e=>e.explainStatement(this.indentation)).join(`
`)+`
`}indent(t){return this.indentation+t}};var cf=class{constructor(t,e,r){this.nestingLevel=t,this.displayName=e,this.property=r}};var df=class{constructor(t,e){this.lastHeadingAtLevel=new Array;this.groupers=e;let i=t.keys().next().value.length;for(let s=0;s<i;s++)this.lastHeadingAtLevel.push("")}getHeadingsForTaskGroup(t){let e=new Array;for(let r=0;r<t.length;r++){let i=t[r];if(i!=this.lastHeadingAtLevel[r]){e.push(new cf(r,i,this.groupers[r].property));for(let s=r;s<t.length;s++)this.lastHeadingAtLevel[s]="";this.lastHeadingAtLevel[r]=i}}return e}};var ff=class{constructor(t){this.children=new Map;this.values=[];this.values=t}generateAllPaths(t=[]){let e=new Map;if(this.children.size==0)return e.set([...t],this.values),e;for(let[r,i]of this.children)t.push(r),i.generateAllPaths(t).forEach((a,o)=>e.set(o,a)),t.pop();return e}};var pf=class extends ff{},mf=class{constructor(t,e,r){this.root=new pf(e),this.buildGroupingTree(t,r)}buildGroupingTree(t,e){let r=[this.root];for(let i of t){let s=[];for(let a of r)for(let o of a.values){let l=i.grouper(o,e);l.length===0&&l.push("");for(let u of l){let c=a.children.get(u);c===void 0&&(c=new pf([]),a.children.set(u,c),s.push(c)),c.values.push(o)}}r=s}}generateTaskTreeStorage(){return this.root.generateAllPaths()}};function XO(n){return`task${n!==1?"s":""}`}function hf(n,t){return n===t?`${n} ${XO(n)}`:`${n} of ${t} ${XO(t)}`}var gf=class{constructor(t,e){this.groups=t,this.groupHeadings=[],this.tasks=e,this._totalTasksCountBeforeLimit=e.length}setGroupHeadings(t){for(let e of t)this.groupHeadings.push(e)}applyTaskLimit(t){this.tasks=this.tasks.slice(0,t)}describeTaskCount(){let t=this.tasks.length;return hf(t,this._totalTasksCountBeforeLimit)}tasksAsStringOfLines(){let t="";for(let e of this.tasks)t+=e.toFileLineString()+`
2026-01-05 13:03:55 +08:00
`;return t}toString(){let t=`
`;for(let e of this.groupHeadings){let r="#".repeat(Math.min(4+e.nestingLevel,6));t+=`${r} ${e.displayName}
`}return t+=this.tasksAsStringOfLines(),t}};var Xs=class{constructor(t,e,r){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=e.length,this._groupers=t;let s=new mf(t,e,r).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 t="";for(let e of this.groups)t+=e.toString();return t}addTaskGroups(t){for(let[e,r]of t){let i=new gf(e,r);this.addTaskGroup(i)}}addTaskGroup(t){this._groups.push(t)}sortTaskGroups(){let t=(e,r)=>{let i=e.groups,s=r.groups;for(let a=0;a<i.length;a++){let o=this._groupers[a],l=i[a].localeCompare(s[a],void 0,{numeric:!0});if(l!==0)return o.reverse?-l:l}return 0};this._groups.sort(t)}setGroupsHeadings(t){let e=new df(t,this._groupers);for(let r of this._groups)r.setGroupHeadings(e.getHeadingsForTaskGroup(r.groups))}applyTaskLimit(t){this._groupers.length!==0&&(this._groups.forEach(e=>{e.applyTaskLimit(t)}),this.recalculateTotalTaskCount())}recalculateTotalTaskCount(){let t=[];this._groups.forEach(r=>{t=[...t,...r.tasks]});let e=[...new Set(t)];this._totalTaskCount=e.length}};var Ci=class n{constructor(t,e){this.tasksFile=t,this.allTasks=[...e],this._queryContext=this.tasksFile?Kb(this.tasksFile,this.allTasks):void 0}static fromAllTasks(t){return new n(void 0,t)}get queryPath(){var t,e;return(e=(t=this.tasksFile)==null?void 0:t.path)!=null?e:void 0}queryContext(){return this._queryContext}};var cu=class n{constructor(t,e,r){this.totalTasksCountBeforeLimit=0;this._searchErrorMessage=void 0;this.taskGroups=t,this.totalTasksCountBeforeLimit=e,this._tasksFile=r}get searchErrorMessage(){return this._searchErrorMessage}set searchErrorMessage(t){this._searchErrorMessage=t}get totalTasksCount(){return this.taskGroups.totalTasksCount()}totalTasksCountDisplayText(){let t=this.totalTasksCount,e=this.totalTasksCountBeforeLimit;return hf(t,e)}get groups(){return this.taskGroups.groups}static fromError(t){let e=new n(new Xs([],[],Ci.fromAllTasks([])),0,void 0);return e._searchErrorMessage=t,e}asMarkdown(){let t="";return t+=this.taskGroups.groups.map(e=>this.toString(e)).join(""),t}toString(t){let e=`
`;for(let r of t.groupHeadings){let i="#".repeat(Math.min(4+r.nestingLevel,6));e+=`${i} ${r.displayName}
`}return e+=this.tasksAsStringOfLines(t.tasks),e}tasksAsStringOfLines(t){let e="";for(let r of t)e+=this.toFileLineString(r)+`
`;return e}toFileLineString(t){return`- [${t.status.symbol}] ${t.toString()}`}applyFilter(t){if(this._searchErrorMessage)return n.fromError(this._searchErrorMessage);let e=this.taskGroups.groups.flatMap(a=>a.tasks),r=new Ci(this._tasksFile,e),i=a=>t.filterFunction(a,r),s=[...new Set(e.filter(i))];return new n(new Xs(this.taskGroups.groupers,s,r),this.totalTasksCountBeforeLimit,this._tasksFile)}};function JO(n){return n.endsWith("\\")}function e1(n){return n.endsWith("\\\\")}function TW(n){return n.replace(/^[ \t]*/,"")}function vW(n){return n.replace(/[ \t]*\\$/,"")}function kW(n,t){let e=n;return t&&(e=TW(n)),e1(e)?e=e.slice(0,-1):JO(n)&&(e=vW(e)),e}function yf(n){let t=[],e=!1,r="",i="",s=n+`
2026-01-05 13:03:55 +08:00
`;for(let a of s.split(`
`)){let o=kW(a,e);e?(r+=`
`+a,i+=" "+o):(r=a,i=o),e1(a)?e=!1:e=JO(a),e||(i.trim()!==""&&t.push(new yn(r,i)),r="",i="")}return t}function t1(n){return yf(n).map(t=>t.anyContinuationLinesRemoved)}var mo=class n{static by(t,e,r){let i=this.defaultSorters().map(a=>a.comparator),s=[];for(let a of t)s.push(a.comparator);return e.sort(n.makeCompositeComparator([...s,...i],r))}static defaultSorters(){return[new uo().createNormalSorter(),new lo().createNormalSorter(),new Xa().createNormalSorter(),new eo().createNormalSorter(),new Ja().createNormalSorter()]}static makeCompositeComparator(t,e){return(r,i)=>{for(let s of t){let a=s(r,i,e);if(a!==0)return a}return 0}}};var n1=0,Cr=class n{constructor(t,e=void 0){this.statements=[];this._limit=void 0;this._taskGroupLimit=void 0;this._taskLayoutOptions=new Hr;this._queryLayoutOptions=new es;this._viewLayoutOptions=new uf;this.layoutStatements=[];this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this._ignoreGlobalQuery=!1;this.viewModeRegexp=/^view +(.*)/i;this.hideOptionsRegexp=/^(hide|show) +(.*)/i;this.shortModeRegexp=/^short/i;this.fullModeRegexp=/^full/i;this.explainQueryRegexp=/^explain/i;this.ignoreGlobalQueryRegexp=/^ignore global query/i;this.logger=gn.getLogger("tasks.Query");this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/i;this.commentRegexp=/^#.*/;this.presetRegexp=/^preset +(.*)/i;this._queryId=this.generateQueryId(10),this.source=t,this.tasksFile=e;let r=yf(t);for(let i of r){let s=this.expandPlaceholders(i,e);if(this.error!==void 0)return;this.statements.push(...s)}for(let i of this.statements)try{if(this.parseLine(i),this.error!==void 0)return}catch(s){let a;s instanceof Error?a=s.message:a="Unknown error",this.setError(a,i);return}}removeIllegalGlobalQueryInstructions(){this._ignoreGlobalQuery=!1}get filePath(){var t,e;return(e=(t=this.tasksFile)==null?void 0:t.path)!=null?e:void 0}get queryId(){return this._queryId}parseLine(t){let e=t.anyPlaceholdersExpanded;switch(!0){case this.presetRegexp.test(e):this.parsePreset(e,t);break;case this.shortModeRegexp.test(e):this._queryLayoutOptions.shortMode=!0,this.saveLayoutStatement(t);break;case this.fullModeRegexp.test(e):this._queryLayoutOptions.shortMode=!1,this.saveLayoutStatement(t);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,t):break;case this.parseGroupBy(e,t):break;case this.viewModeRegexp.test(e):this.parseViewMode(t);break;case this.hideOptionsRegexp.test(e):this.parseHideOptions(t);break;case this.commentRegexp.test(e):break;case this.parseFilter(e,t):break;default:this.setError("do not understand query",t)}}formatQueryForLogging(){return`
2026-01-05 13:03:55 +08:00
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
${this.source}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
`}expandPlaceholders(t,e){let r=t.anyContinuationLinesRemoved;if(r.includes("{{")&&r.includes("}}")&&this.tasksFile===void 0)return this._error=`The query looks like it contains a placeholder, with "{{" and "}}"
2026-01-05 13:03:55 +08:00
but no file path has been supplied, so cannot expand placeholder values.
The query is:
${r}`,[t];if(this.commentRegexp.test(r))return[t];let s=r;if(e){let a=Qb(e),o="";try{let u=0;for(;s!==o&&u<10;)o=s,s=Vb(o,a),u++;s!==r&&(s=yf(s).map(c=>c.anyContinuationLinesRemoved).join(`
`))}catch(l){return l instanceof Error?this._error=l.message:this._error="Internal error. expandPlaceholders() threw something other than Error.",[t]}}return this.createStatementsFromExpandedPlaceholders(s,t)}createStatementsFromExpandedPlaceholders(t,e){let r=t.split(`
`).map(i=>i.trim()).filter(i=>i.length>0);return r.length===1?(e.recordExpandedPlaceholders(r[0]),[e]):r.map((i,s)=>{let a=`: statement ${s+1} after expansion of placeholder`,o=new yn(e.rawInstruction+a,e.anyContinuationLinesRemoved+a);return o.recordExpandedPlaceholders(i),o})}append(t){return this.source===""?t:t.source===""?this:new n(`${this.source}
${t.source}`,this.tasksFile)}explainQuery(){return new po().explainQuery(this)}get limit(){return this._limit}get taskGroupLimit(){return this._taskGroupLimit}get taskLayoutOptions(){return this._taskLayoutOptions}get viewLayoutOptions(){return this._viewLayoutOptions}get queryLayoutOptions(){return this._queryLayoutOptions}get filters(){return this._filters}addFilter(t){this._filters.push(t)}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}setError(t,e){this._error=n.generateErrorMessage(e,t)}static generateErrorMessage(t,e){return t.allLinesIdentical()?`${e}
2026-01-05 13:03:55 +08:00
Problem line: "${t.rawInstruction}"`:`${e}
Problem statement:
${t.explainStatement(" ")}
`}get ignoreGlobalQuery(){return this._ignoreGlobalQuery}applyQueryToTasks(t){this.debug(`[search] Executing query: ${this.formatQueryForLogging()}`);let e=new Ci(this.tasksFile,t),r;try{this.filters.forEach(c=>{r=c.statement,t=t.filter(d=>c.filterFunction(d,e))}),r=void 0;let{debugSettings:i}=X(),s=i.ignoreSortInstructions?t:mo.by(this.sorting,t,e),a=s.slice(0,this.limit),l=this.viewLayoutOptions.viewMode==="columns"&&this.viewLayoutOptions.grouper!==null?[this.viewLayoutOptions.grouper,...this.grouping]:this.grouping,u=new Xs(l,a,e);return this._taskGroupLimit!==void 0&&u.applyTaskLimit(this._taskGroupLimit),new cu(u,s.length,this.tasksFile)}catch(i){let a=zs("Search failed",i);return r&&(a=n.generateErrorMessage(r,a)),cu.fromError(a)}}parseViewMode(t){let r=t.anyPlaceholdersExpanded.match(this.viewModeRegexp);if(r===null)return;let i=LO(this._viewLayoutOptions,r[1].trim());if(i.success){this.saveLayoutStatement(t);return}this.setError(i.error,t)}parseHideOptions(t){let e=t.anyPlaceholdersExpanded,r=e.match(this.hideOptionsRegexp);if(r===null)return;let i=r[1].toLowerCase()==="hide",s=r[2].toLowerCase();if(bO(this._queryLayoutOptions,s,i)){this.saveLayoutStatement(t);return}if(qD(this._taskLayoutOptions,s,!i)){this.saveLayoutStatement(t);return}this.setError("do not understand hide/show option",new yn(e,e))}saveLayoutStatement(t){this.layoutStatements.push(t)}parseFilter(t,e){var i;let r=ou(t);return r!=null?(r.filter?(r.filter.setStatement(e),this._filters.push(r.filter)):this.setError((i=r.error)!=null?i:"Unknown error",e),!0):!1}parseLimit(t){let e=t.match(this.limitRegexp);if(e===null){this.setError("do not understand query limit",new yn(t,t));return}let r=Number.parseInt(e[3],10);e[1]!==void 0?this._taskGroupLimit=r:this._limit=r}parseSortBy(t,e){let r=null;try{r=NO(t)}catch(i){let s=i instanceof Error?i.message:"Unknown error";return this.setError(s,e),!0}return r?(r.setStatement(e),this._sorting.push(r),!0):!1}parseGroupBy(t,e){let r;try{r=lf(t)}catch(i){let s=i instanceof Error?i.message:"Unknown error";return this.setError(s,e),!0}return r?(r.setStatement(e),this._grouping.push(r),!0):!1}parsePreset(t,e){let r=this.presetRegexp.exec(t);if(r){let i=r[1].trim(),{presets:s}=X(),a=s[i];if(!a){this.setError(wE(i,s),e);return}let o=t1(a);for(let l of o){let u=new yn(e.rawInstruction,e.anyContinuationLinesRemoved);if(u.recordExpandedPlaceholders(l),l.includes("{{")&&l.includes("}}")&&this.tasksFile){let c=Qb(this.tasksFile),d=Vb(l,c);u.recordExpandedPlaceholders(d)}this.parseLine(u)}}}generateQueryId(t){return n1+=1,n1.toString().padStart(t,"0")}debug(t,e){this.logger.debugWithId(this._queryId,`"${this.filePath}": ${t}`,e)}warn(t,e){this.logger.warnWithId(this._queryId,`"${this.filePath}": ${t}`,e)}};var Zb=[{name:"TQ_show_toolbar",type:"checkbox",display:"toolbar",handler:"showAndHide"},{name:"TQ_explain",type:"checkbox",handler:"instruction",trueValue:"explain",falseValue:""},{name:"TQ_short_mode",type:"checkbox",handler:"instruction",trueValue:"short mode",falseValue:"full mode"},{name:"TQ_show_tree",type:"checkbox",display:"tree",handler:"showAndHide"},{name:"TQ_show_tags",type:"checkbox",display:"tags",handler:"showAndHide"},{name:"TQ_show_id",type:"checkbox",display:"id",handler:"showAndHide"},{name:"TQ_show_depends_on",type:"checkbox",display:"depends on",handler:"showAndHide"},{name:"TQ_show_priority",type:"checkbox",display:"priority",handler:"showAndHide"},{name:"TQ_show_recurrence_rule",type:"checkbox",display:"recurrence rule",handler:"showAndHide"},{name:"TQ_show_on_completion",type:"checkbox",display:"on completion",handler:"showAndHide"},{name:"TQ_show_created_date",type:"checkbox",display:"created date",handler:"showAndHide"},{name:"TQ_show_start_date",type:"checkbox",display:"start date",handler:"showAndHide"},{name:"TQ_show_scheduled_date",type:"checkbox",display:"scheduled date",handler:"showAndHide"},{name:"TQ_show_due_date",type:"checkbox",display:"due date",handler:"showAndHide"},{name:"TQ_show_cancelled_date",type:"checkbox",display:"cancelled date",handler:"showAndHide"},{name:"TQ_show_done_d
`):""}generateInstruction(t,e){let r=t.hasProperty(e.name),i=t.property(e.name);switch(e.handler){case"instruction":return r&&(i?e.trueValue:e.falseValue)||"";case"showAndHide":return r&&(i?"show "+e.display:"hide "+e.display)||"";case"addValue":return r&&typeof i=="string"?i:""}}query(t){return new Cr(this.source(t),t)}allPropertyNames(){return Zb.map(t=>t.name)}allPropertyNamesSorted(){return this.allPropertyNames().sort((t,e)=>t.localeCompare(e))}propertyType(t){var e,r;return(r=(e=Zb.find(i=>i.name===t))==null?void 0:e.type)!=null?r:void 0}metaBindPluginWidgets(){return"\ntoolbar: `INPUT[toggle:TQ_show_toolbar]`\nshort mode: `INPUT[toggle:TQ_short_mode]`\ntree: `INPUT[toggle:TQ_show_tree]`\ntags: `INPUT[toggle:TQ_show_tags]`\nid: `INPUT[toggle:TQ_show_id]` depends on: `INPUT[toggle:TQ_show_depends_on]`\npriority: `INPUT[toggle:TQ_show_priority]`\nrecurrence rule: `INPUT[toggle:TQ_show_recurrence_rule]` on completion: `INPUT[toggle:TQ_show_on_completion]`\nstart date: `INPUT[toggle:TQ_show_start_date]` scheduled date: `INPUT[toggle:TQ_show_scheduled_date]` due date: `INPUT[toggle:TQ_show_due_date]`\ncreated date: `INPUT[toggle:TQ_show_created_date]` cancelled date: `INPUT[toggle:TQ_show_cancelled_date]` done date: `INPUT[toggle:TQ_show_done_date]`\nurgency: `INPUT[toggle:TQ_show_urgency]`\nbacklink: `INPUT[toggle:TQ_show_backlink]`\nedit button: `INPUT[toggle:TQ_show_edit_button]` postpone button: `INPUT[toggle:TQ_show_postpone_button]`\ntask count: `INPUT[toggle:TQ_show_task_count]`\nextra instructions: `INPUT[textArea:TQ_extra_instructions]`\nexplain: `INPUT[toggle:TQ_explain]`\n"}};function r1(n,t){return M(this,null,function*(){yield n.fileManager.processFrontMatter(t,e=>{let r=new Mi().allPropertyNamesSorted(),i=!1;r.forEach(s=>{s in e||(e[s]=null,i=!0)}),i?new Xb.Notice("Properties updated successfully."):new Xb.Notice("All supported properties are already present.")})})}var i1=require("obsidian");vt();_r();Fa();var Jb=class{constructor(t){this.newStatus=t}apply(t){return this.isCheckedForTask(t)?[t]:t.handleNewStatusWithRecurrenceInUsersOrder(this.newStatus)}instructionDisplayName(){return`Change status to: [${this.newStatus.symbol}] ${this.newStatus.name}`}isCheckedForTask(t){return this.newStatus.symbol===t.status.symbol}};function bf(n){let t=[],e=new _t().coreStatuses.map(r=>r.symbol);for(let r of[!0,!1])for(let i of n.registeredStatuses)e.includes(i.symbol)===r&&t.push(new Jb(i));return t}var wW=(n,t,e)=>{let r=ye.fromLine({line:n,taskLocation:Jt.fromUnknownPosition(new ut(t)),fallbackDate:null});if(r!==null){let i=r.handleNewStatusWithRecurrenceInUsersOrder(e).map(a=>a.toFileLineString()),s=i.length>0?i.length-1:0;return{text:i.join(`
`),moveTo:{line:s}}}},SW=n=>(t,e)=>{let r=wW(t,e,n);return r===void 0&&new i1.Notice("Cannot set status: line is not a task or does not match global filter"),r};function s1(n){let t=bf(n),e=[];for(let r of t){let i=r.newStatus,a={id:`set-status-symbol-to-${i.symbol===" "?"space":i.symbol}`,name:r.instructionDisplayName(),editorCheckCallback:Ed(SW(i))};e.push(a)}return e}var Ai=require("obsidian");dt();Bi();Zt();var ei=class ei{constructor(t=ei.empty){this._source=t}static getInstance(){return ei.instance||(ei.instance=new ei),ei.instance}set(t){this._source=t}reset(){this._source=ei.empty}query(t=void 0){let e=new Cr(this._source,t);return e.removeIllegalGlobalQueryInstructions(),e}hasInstructions(){return this._source.trim()!==ei.empty}};ei.empty="";var Rn=ei;function _W(){let n=new ut("Dummy Path for Quick Search command.md"),t=Rn.getInstance().query(n);return t.error!==void 0?[]:t.filters}function DW(n,t,e){try{return n.every(r=>r.filterFunction(t,e))}catch(r){return!0}}function EW(n,t){if(t.trim()==="")return[];let e=t.toLowerCase(),r=_W(),i=Ci.fromAllTasks([...n]),s=n.filter(a=>!a.isDone&&a.descriptionWithoutTags.toLowerCase().includes(e)&&DW(r,a,i));return xW(s,i)}function xW(n,t){let e=new rs().createNormalSorter();return mo.by([e],n,t)}function OW(n){var t,e;return{description:n.descriptionWithoutTags,source:(t=n.path.split("/").pop())!=null?t:n.path,heading:(e=n.precedingHeader)!=null?e:"No heading"}}function RW(n){let t=hn.tasksPluginEmoji.taskSerializer;return["dueDate","scheduledDate","startDate","priority","recurrenceRule"].map(r=>t.componentToString(n,!1,r).trim()).filter(r=>r!=="")}function CW(n,t){return M(this,null,function*(){let e=yield Jl(n,t.vault);if(e===void 0){let s=`Tasks: Could not open the selected task.
It may have changed. Try searching again.`;console.warn(s),new Ai.Notice(s);return}let[r,i]=e;try{yield t.workspace.getLeaf(!1).openFile(i,{eState:{line:r}})}catch(s){console.error("Tasks: Could not open task source.",s),new Ai.Notice("Tasks: Could not open task source.")}})}var Tf=class extends Ai.SuggestModal{constructor(e,r){super(e);this.getTasks=r;this.renderComponents=[];this.setPlaceholder("Search incomplete tasks"),this.emptyStateText="Type to search incomplete tasks."}getSuggestions(e){return EW(this.getTasks(),e)}renderSuggestion(e,r){let i=OW(e);r.classList.add("tasks-quick-search-result");let s=r.createEl("input",{type:"checkbox",cls:["task-list-item-checkbox","tasks-quick-search-result-checkbox"]});s.checked=e.isDone,s.tabIndex=-1,s.setAttribute("aria-label",`Task status: ${e.status.name}`);let a=r.createDiv({cls:"tasks-quick-search-result-description"}),o=new Ai.Component;o.load(),this.renderComponents.push(o);let l=Re.getInstance().removeAsWordFromDependingOnSettings(e.description);Ai.MarkdownRenderer.render(this.app,l,a,e.path,o).catch(()=>{a.textContent=i.description}),r.createDiv({cls:"tasks-quick-search-result-location",text:`${i.source} \xB7 ${i.heading}`}),r.createDiv({cls:"tasks-quick-search-result-metadata",text:RW(e).join(" ")})}onChooseSuggestion(e,r){CW(e,this.app)}onClose(){this.renderComponents.forEach(e=>e.unload()),this.renderComponents.length=0,super.onClose()}};var eT="Toggle task done",vf=class{get app(){return this.plugin.app}constructor({plugin:t}){this.plugin=t,t.addCommand({id:"edit-task",name:"Create or edit task",icon:"pencil",editorCheckCallback:(r,i,s)=>hO(r,i,s,this.app,this.plugin.getTasks(),()=>M(this,null,function*(){return yield this.plugin.saveSettings()}))}),t.addCommand({id:"toggle-done",name:eT,icon:"check-in-circle",editorCheckCallback:yO}),t.addCommand({id:"quick-search",name:"Quick search",icon:"search",callback:()=>new Tf(this.app,()=>this.plugin.getTasks()).open()}),t.addCommand({id:"add-query-file-defaults-properties",name:"Add all Query File Defaults properties",icon:"settings",checkCallback:r=>{let i=this.app.workspace.getActiveFile();return!i||i.extension!=="md"?!1:(r||this.ensureQueryFileDefaultsFrontmatter(i).catch(console.error),!0)}});let e=s1(at.getInstance());for(let r of e)t.addCommand(r)}ensureQueryFileDefaultsFrontmatter(t){return M(this,null,function*(){let{app:e}=this;yield r1(e,t)})}};Ns();var kf=class{constructor({obsidianEvents:t}){this.logger=gn.getLogger("tasks.Events");this.obsidianEvents=t}onCacheUpdate(t){return this.logger.debug("TasksEvents.onCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",t)}triggerCacheUpdate(t){this.logger.debug("TasksEvents.triggerCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",t)}onRequestCacheUpdate(t){return this.logger.debug("TasksEvents.onRequestCacheUpdate()"),this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",t)}triggerRequestCacheUpdate(t){this.logger.debug("TasksEvents.triggerRequestCacheUpdate()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",t)}onReloadOpenSearchResults(t){return this.logger.debug("TasksEvents.onReloadOpenSearchResults()"),this.obsidianEvents.on("obsidian-tasks-plugin:reload-open-search-results",t)}triggerReloadOpenSearchResults(){this.logger.debug("TasksEvents.triggerReloadOpenSearchResults()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:reload-open-search-results")}onReloadVault(t){return this.logger.debug("TasksEvents.onReloadVault()"),this.obsidianEvents.on("obsidian-tasks-plugin:reload-vault",t)}triggerReloadVault(){this.logger.debug("TasksEvents.triggerReloadVault()"),this.obsidianEvents.trigger("obsidian-tasks-plugin:reload-vault")}off(t){this.logger.debug("TasksEvents.off()"),this.obsidianEvents.offref(t)}};var M1=require("obsidian");Zt();Bi();vt();var R1=require("obsidian");Zt();dt();vt();Qi();id();function a1(n){for(let e of ye.allDateFields()){let r=n[e];if(r&&!r.isValid())return!1}let t=n.happensDates.some(e=>!!(e!=null&&e.isValid()));return!n.isDone&&t}function ho(n){ret
2026-01-05 13:03:55 +08:00
<span class='flatpickr-weekday'>
`+y.join("</span><span class='flatpickr-weekday'>")+`
2026-01-05 13:03:55 +08:00
</span>
`}}function k(){e.calendarContainer.classList.add("hasWeeks");var g=Ge("div","flatpickr-weekwrapper");g.appendChild(Ge("span","flatpickr-weekday",e.l10n.weekAbbreviation));var y=Ge("div","flatpickr-weeks");return g.appendChild(y),{weekWrapper:g,weekNumbers:y}}function S(g,y){y===void 0&&(y=!0);var _=y?g:g-e.currentMonth;_<0&&e._hidePrevMonthArrow===!0||_>0&&e._hideNextMonthArrow===!0||(e.currentMonth+=_,(e.currentMonth<0||e.currentMonth>11)&&(e.currentYear+=e.currentMonth>11?1:-1,e.currentMonth=(e.currentMonth+12)%12,lt("onYearChange"),P()),W(),lt("onMonthChange"),vu())}function C(g,y){if(g===void 0&&(g=!0),y===void 0&&(y=!0),e.input.value="",e.altInput!==void 0&&(e.altInput.value=""),e.mobileInput!==void 0&&(e.mobileInput.value=""),e.selectedDates=[],e.latestSelectedDateObj=void 0,y===!0&&(e.currentYear=e._initialDate.getFullYear(),e.currentMonth=e._initialDate.getMonth()),e.config.enableTime===!0){var _=Cf(e.config),N=_.hours,G=_.minutes,ne=_.seconds;p(N,G,ne)}e.redraw(),g&&lt("onChange")}function I(){e.isOpen=!1,e.isMobile||(e.calendarContainer!==void 0&&e.calendarContainer.classList.remove("open"),e._input!==void 0&&e._input.classList.remove("active")),lt("onClose")}function Y(){e.config!==void 0&&lt("onDestroy");for(var g=e._handlers.length;g--;)e._handlers[g].remove();if(e._handlers=[],e.mobileInput)e.mobileInput.parentNode&&e.mobileInput.parentNode.removeChild(e.mobileInput),e.mobileInput=void 0;else if(e.calendarContainer&&e.calendarContainer.parentNode)if(e.config.static&&e.calendarContainer.parentNode){var y=e.calendarContainer.parentNode;if(y.lastChild&&y.removeChild(y.lastChild),y.parentNode){for(;y.firstChild;)y.parentNode.insertBefore(y.firstChild,y);y.parentNode.removeChild(y)}}else e.calendarContainer.parentNode.removeChild(e.calendarContainer);e.altInput&&(e.input.type="text",e.altInput.parentNode&&e.altInput.parentNode.removeChild(e.altInput),delete e.altInput),e.input&&(e.input.type=e.input._type,e.input.classList.remove("flatpickr-input"),e.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(_){try{delete e[_]}catch(N){}})}function F(g){return e.calendarContainer.contains(g)}function q(g){if(e.isOpen&&!e.config.inline){var y=Mn(g),_=F(y),N=y===e.input||y===e.altInput||e.element.contains(y)||g.path&&g.path.indexOf&&(~g.path.indexOf(e.input)||~g.path.indexOf(e.altInput)),G=!N&&!_&&!F(g.relatedTarget),ne=!e.config.ignoredFocusElements.some(function(Ee){return Ee.contains(y)});G&&ne&&(e.config.allowInput&&e.setDate(e._input.value,!1,e.config.altInput?e.config.altFormat:e.config.dateFormat),e.timeContainer!==void 0&&e.minuteElement!==void 0&&e.hourElement!==void 0&&e.input.value!==""&&e.input.value!==void 0&&l(),e.close(),e.config&&e.config.mode==="range"&&e.selectedDates.length===1&&e.clear(!1))}}function A(g){if(!(!g||e.config.minDate&&g<e.config.minDate.getFullYear()||e.config.maxDate&&g>e.config.maxDate.getFullYear())){var y=g,_=e.currentYear!==y;e.currentYear=y||e.currentYear,e.config.maxDate&&e.currentYear===e.config.maxDate.getFullYear()?e.currentMonth=Math.min(e.config.maxDate.getMonth(),e.currentMonth):e.config.minDate&&e.currentYear===e.config.minDate.getFullYear()&&(e.currentMonth=Math.max(e.config.minDate.getMonth(),e.currentMonth)),_&&(e.redraw(),lt("onYearChange"),P())}}function se(g,y){var _;y===void 0&&(y=!0);var N=e.parseDate(g,void 0,y);if(e.config.minDate&&N&&An(N,e.config.minDate,y!==void 0?y:!e.minDateHasTime)<0||e.config.maxDate&&N&&An(N,e.config.maxDate,y!==void 0?y:!e.maxDateHasTime)>0)return!1;if(!e.config.enable&&e.config.disable.length===0)return!0;if(N===void 0)return!1;for(va
`);if(b===void 0)return!1;let v=null;for(let R=0;R<b.length;R=R+1)if(b[R]!==""){v=b[R];break}return v===null?!1:Re.getInstance().includedIn(v)});if(i.length===0)return;let s=e.sourcePath,a=this.app.vault.getFileByPath(s)||void 0,o=new ut(s,{},a),l=e.getSectionInfo(t);if(l===null)return;let u=l.text.split(`
`),c=0,d=[];for(let h=l.lineStart;h<=l.lineEnd;h++){let b=u[h];if(b===void 0)continue;let v=null,E=ye.fromLine({line:b,taskLocation:new Jt(o,h,l.lineStart,c,v),fallbackDate:null});E!==null&&(d.push(E),c++)}let f=new ls({obsidianApp:this.app,obsidianComponent:r,taskLayoutOptions:new Hr,queryLayoutOptions:new es});for(let h=0;h<i.length;h++){let b=d[h],v=i[h];if(b===void 0||v===void 0)continue;let E=(p=v.getAttr("data-line"))!=null?p:"0",R=Number.parseInt(E,10),D=t.createEl("li");yield f.renderTaskLine({li:D,task:b,taskIndex:R,isTaskInQueryFile:!0});let U=v.childNodes;for(let $=0;$<U.length;$=$+1){let J=U[$],_e=J.nodeName.toLowerCase();_e==="div"?D.prepend(J):(_e==="ul"||_e==="ol")&&D.append(J)}let ee=v.querySelectorAll("[data-footnote-id]"),V=D.querySelectorAll("[data-footnote-id]");if(ee.length===V.length)for(let $=0;$<ee.length;$++)V[$].replaceWith(ee[$]);C1(v,D)}})}};var I1=require("@codemirror/view");vt();var A1=require("obsidian");Nr();dt();function P1(n,t,e){if(X().dismissedNotices[n])return;let r=createFragment(),i=createDiv();i.textContent=t;let s=createEl("label");s.addClass("tasks-dismissible-notice-checkbox-label");let a=createEl("input");a.type="checkbox",a.addEventListener("change",()=>{X().dismissedNotices[n]=a.checked,e.saveSettings()}),s.appendChild(a),s.appendText(" "+x.t("notices.do-not-show-message-again")),r.appendChild(i),r.appendChild(s),console.warn(t),new A1.Notice(r,45e3)}Nr();var N1=n=>I1.ViewPlugin.fromClass(class extends lT{constructor(t){super(t,n)}}),lT=class{constructor(t,e){this.handleClickEvent=t=>{let{target:e}=t;if(!e||!(e instanceof HTMLInputElement)||e.type!=="checkbox")return!1;let r=e.closest("ul.plugin-tasks-query-result, div.callout-content");if(r){if(r.matches("div.callout-content")){let p="live-preview-callout-warning",h=x.t("notices.live-preview-callout-warning.line1")+`
2026-01-05 13:03:55 +08:00
`+x.t("notices.live-preview-callout-warning.line2")+`
2026-01-05 13:03:55 +08:00
`+x.t("notices.live-preview-callout-warning.line3")+`
`+x.t("notices.live-preview-callout-warning.line4")+`
`+x.t("notices.live-preview-callout-warning.line5")+`
`+x.t("notices.live-preview-callout-warning.line6",{commandName:eT});P1(p,h,this.plugin)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(e),a=i.doc.lineAt(s),o=ye.fromLine({line:a.text,taskLocation:Jt.fromUnknownPosition(new ut("")),fallbackDate:null});if(o===null)return!1;t.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder(),u=l.map(p=>p.toFileLineString()).join(i.lineBreak),c=a.to;if(u===""){let p=a.number<i.doc.lines?i.doc.line(a.number+1):null;p&&(c=p.from)}let d=i.update({changes:{from:a.from,to:c,insert:u}});if(this.view.dispatch(d),l.length===1){let p=l[0].status.symbol!==" ";window.setTimeout(()=>{e.checked=p},1)}return!0};this.view=t,this.plugin=e,this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}};var us=require("obsidian"),U1=require("obsidian");function F1(n,t,e,r=void 0){let i="";t.isEmpty()||(i+=`Only tasks containing the global filter '${t.get()}'.
`);let s=new po(" ");function a(c,d){return`${c}:
${s.explainQuery(d)}`}let o=new Cr(n,r),l=new Mi().query(r);if(!(o.ignoreGlobalQuery||l.ignoreGlobalQuery)&&e.hasInstructions()){let c=e.query(r);i+=a("Explanation of the global query",c)+`
2026-01-05 13:03:55 +08:00
`}return l.source!==""&&(i+=a("Explanation of the Query File Defaults (from properties/frontmatter in the query's file)",l)+`
`),i+=a("Explanation of this Tasks code block query",o),i}function If(n,t,e){let i=new Mi().query(e).append(new Cr(n,e));return i.ignoreGlobalQuery?i:t.query(e).append(i)}Qi();var ti=require("obsidian");vt();vt();Ia();Gi();var uT=class{constructor(t){this.newPriority=t}apply(t){return this.isCheckedForTask(t)?[t]:[new ye(me(L({},t),{priority:this.newPriority}))]}instructionDisplayName(){return`Priority: ${Un.priorityNameUsingNormal(this.newPriority)}`}isCheckedForTask(t){return t.priority===this.newPriority}};function L1(n){return new uT(n.priority)}function q1(n,t){if(n==="priority")return L1(t);let e=ye.allDateFields().find(r=>FW(r)===n);return e?T1(e,t):null}function FW(n){return n.replace(/Date$/,"")}var Nf=class{start(t){this.draggedTask=t}dragged(t){return M(this,null,function*(){return yield hr(this.draggedTask,t.apply(this.draggedTask)),this.draggedTask})}clear(){this.draggedTask=void 0}};dt();function hu(n,t,e){t&&n.push(LW(e))}function LW(n){return`tasks-layout-hide-${n}`}var Ff=class{constructor(t){t?this.queryLayoutOptions=t:this.queryLayoutOptions=new es}getHiddenClasses(){let t=[],e=[[this.queryLayoutOptions.hideUrgency,"urgency"],[this.queryLayoutOptions.hideBacklinks,"backlinks"],[this.queryLayoutOptions.hideEditButton,"edit-button"],[this.queryLayoutOptions.hidePostponeButton,"postpone-button"]];for(let[r,i]of e)hu(t,r,i);return this.queryLayoutOptions.shortMode&&t.push("tasks-layout-short-mode"),t}};Bi();var Lf=class{constructor(t){t?this.taskLayoutOptions=t:this.taskLayoutOptions=new Hr}generateHiddenClasses(){let t=[];return this.taskLayoutOptions.toggleableComponents.forEach(e=>{hu(t,!this.taskLayoutOptions.isShown(e),e)}),hu(t,!this.taskLayoutOptions.areTagsShown(),"tags"),t}};var cT=require("obsidian");var gu=class n extends ss{constructor(t,e,r=hr){super(r);let i=(u,c,d,f,p,h)=>{var R;let b=!1,v=ho(e);if(v){let{postponedDate:D}=h(e,v,d,f);(R=e[v])!=null&&R.isSame(D,"day")&&(b=!0)}let E=p(e,f,d);c.setChecked(b).setTitle(E).onClick(()=>n.postponeOnClickCallback(u,e,f,d,h,r))},s=p1,a=o1;this.addItem(u=>i(t,u,"days",0,s,a)),this.addItem(u=>i(t,u,"day",1,s,a)),this.addSeparator();let o=nT,l=tT;o(e,1,"day")!==s(e,1,"day")&&this.addItem(u=>i(t,u,"day",1,o,l)),this.addItem(u=>i(t,u,"days",2,o,l)),this.addItem(u=>i(t,u,"days",3,o,l)),this.addItem(u=>i(t,u,"days",4,o,l)),this.addItem(u=>i(t,u,"days",5,o,l)),this.addItem(u=>i(t,u,"days",6,o,l)),this.addSeparator(),this.addItem(u=>i(t,u,"week",1,o,l)),this.addItem(u=>i(t,u,"weeks",2,o,l)),this.addItem(u=>i(t,u,"weeks",3,o,l)),this.addItem(u=>i(t,u,"month",1,o,l)),this.addSeparator(),this.addItem(u=>i(t,u,"days",2,m1,l1))}static postponeOnClickCallback(o,l,u,c){return M(this,arguments,function*(t,e,r,i,s=tT,a=hr){var h;let d=ho(e);if(d===null){let b="\u26A0\uFE0F Postponement requires a date: due, scheduled or start.";return new cT.Notice(b,1e4)}let{postponedDate:f,postponedTask:p}=s(e,d,i,r);(h=e[d])!=null&&h.isSame(f,"day")||(yield a(e,p),n.postponeSuccessCallback(t,d,f))})}static postponeSuccessCallback(t,e,r){t.classList.add("tasks-no-pointer-events");let i=d1(r,e);new cT.Notice(i,2e3)}};Zt();vt();var _o=class{constructor(t,e,r){this.addedListItems=new Set;this.nestingLevel=0;this.source=t,this.tasksFile=e,this.query=r}get filePath(){return this.tasksFile.path}renderQuery(t,e){return M(this,null,function*(){this.beginRender();let i=this.query.error;t==="Warm"&&i===void 0?yield this.renderQuerySearchResults(e):i?this.renderErrorMessage(i):this.renderLoadingMessage()})}renderQuerySearchResults(t){return M(this,null,function*(){if(this.explainQuery(),t.searchErrorMessage!==void 0){this.renderErrorMessage(t.searchErrorMessage);return}yield this.renderSearchResults(t)})}explainQuery(){if(this.query.queryLayoutOptions.explainQuery){let t=F1(this.source,Re.getInstance(),Rn.getInstance(),this.tasksFile);this.renderExplanation(t)}}renderSearchResults(t){return M(this,null,function*(){this.renderSearchResultsHeader(t),yield this.addAllTaskGroups(t.taskGroups);let e=t.totalTasksCount;this.query.debug(`[render] ${e} tasks displayed`),this.renderSearchResultsFooter(t)
`)}beginRender(){this.markdownLines.length=0,this.taskIndentationLevel=0}renderSearchResultsHeader(e){}renderSearchResultsFooter(e){}renderLoadingMessage(){}renderExplanation(e){e&&this.markdownLines.push(e)}renderErrorMessage(e){this.markdownLines.push(e)}beginTaskList(){this.taskIndentationLevel+=1}endTaskList(){this.taskIndentationLevel-=1,this.taskIndentationLevel===0&&this.addEmptyLine()}addEmptyLine(){this.markdownLines.push("")}beginListItem(){}addTask(e,r){return this.markdownLines.push(this.formatTask(e)),Promise.resolve()}formatTask(e){return`${this.listItemIndentation()}- [${e.status.symbol}] ${e.toString()}`}addListItem(e,r){return this.markdownLines.push(this.formatListItem(e)),Promise.resolve()}formatListItem(e){let r=e.statusCharacter?`[${e.statusCharacter}] `:"";return`${this.listItemIndentation()}- ${r}${e.description}`}listItemIndentation(){let e=Math.max(0,this.taskIndentationLevel-1);return" ".repeat(e)}addGroupHeading(e,r){let i="#".repeat(Math.min(4+e.nestingLevel,6)),s=r===""?"":` ${r}`;return this.markdownLines.push(`${i} ${e.displayName}${s}`),this.addEmptyLine(),Promise.resolve()}};var Uf=class{constructor(t,e,r,i,s,a,o,l){this._filterString="";this.source=e,this._tasksFile=r,this.queryResult=new Cr("").applyQueryToTasks([]),this.filteredQueryResult=this.queryResult,t==="block-language-tasks"?(this.query=this.makeQueryFromSourceAndTasksFile(),this.queryType="tasks"):(this.query=this.makeQueryFromSourceAndTasksFile(),this.queryType="tasks"),this.renderMarkdown=i,this.obsidianComponent=s,this.obsidianApp=a,this.textRenderer=o,this.htmlQueryRendererParameters=l}get filterString(){return this._filterString}makeQueryFromSourceAndTasksFile(){return If(this.source,Rn.getInstance(),this.tasksFile)}get tasksFile(){return this._tasksFile}setTasksFile(t){this._tasksFile=t,this.rereadQueryFromFile()}rereadQueryFromFile(){this.query=this.makeQueryFromSourceAndTasksFile()}get filePath(){return this.tasksFile.path}render(t,e,r){return M(this,null,function*(){this.performSearch(e),this.addToolbar(r),yield this.renderQueryResult(t,this.filteredQueryResult,r)})}performSearch(t){let e=new Fs(`Search: ${this.query.queryId} - ${this.filePath}`);e.start(),this.queryResult=this.query.applyQueryToTasks(t),this.filterResults(),e.finish()}renderQueryResult(t,e,r){return M(this,null,function*(){let i=new Fs(`Render: ${this.query.queryId} - ${this.filePath}`);i.start();let s=this.query.viewLayoutOptions.viewMode==="columns"?new qf(this.renderMarkdown,this.obsidianComponent,this.obsidianApp,this.textRenderer,this.htmlQueryRendererParameters,this.source,this.tasksFile,this.query):new Do(this.renderMarkdown,this.obsidianComponent,this.obsidianApp,this.textRenderer,this.htmlQueryRendererParameters,this.source,this.tasksFile,this.query);s.content=r,yield s.renderQuery(t,e),i.finish()})}addToolbar(t){if(this.query.queryLayoutOptions.hideToolbar)return;let e=t.createDiv();e.classList.add("plugin-tasks-toolbar"),this.addSearchBox(e,t),this.addCopyButton(e)}addSearchBox(t,e){let r=t.createEl("label");(0,ti.setIcon)(r,"lucide-filter");let i=r.createEl("input");i.value=this._filterString,i.placeholder="Filter by description...",(0,ti.setTooltip)(i,"Filter results");let s=()=>M(this,null,function*(){let a=i.value;yield this.applySearchBoxFilterAndRerender(a,e)});i.addEventListener("input",(0,ti.debounce)(s,500,!0))}applySearchBoxFilterAndRerender(t,e){return M(this,null,function*(){for(this._filterString=t,this.filterResults();e.firstElementChild!==e.lastElementChild;){let r=e.lastChild;if(r===null)break;r.remove()}yield this.renderQueryResult("Warm",this.filteredQueryResult,e)})}filterResults(){if(this._filterString===""){this.filteredQueryResult=this.queryResult;return}let{filter:t,error:e}=new rs().createFilterOrErrorMessage("description includes "+this._filterString);if(e){this.filteredQueryResult=this.queryResult;return}this.filteredQueryResult=this.queryResult.applyFilter(t)}addCopyButton(t){let e=t.createEl("button");(0,ti.setIcon)(e,"lucide-copy"),(0,ti.setTooltip)(e,"Copy results"),e.addEventListener("click",()=>M(this,nu
2026-01-05 13:03:55 +08:00
`,this._markdown+=`${e}
`}addRow(t){let e=this.makeRowText(t);this._markdown+=`${e}
`}addRowIfNew(t){let e=this.makeRowText(t);this._markdown.includes(e)||(this._markdown+=`${e}
`)}makeRowText(t){let e="|";return t.forEach(r=>{e+=` ${r} |`}),e}};Nr();Zt();Yn();_r();Gr();function j1(n,t){return n.findIndex(e=>e.symbol===t)}function Ni(n){return n===""?n:"`"+(n!==" "?n:"space")+"`"}function jW(n,t){let e=Ce.getTypeForUnknownSymbol(n.symbol);if(n.type===e||e==="TODO"&&n.symbol!==" ")return;let r=Ni(n.symbol),i=Ni(e);t.push(x.t("reports.statusRegistry.messages.notConventionalType",{symbol:r,type:i}))}function $W(n,t,e){let r=t.nextStatusSymbol,i=j1(n,r);if(i===-1){let a=Ni(r);e.push(x.t("reports.statusRegistry.messages.nextSymbolUnknown",{symbol:a}));return}if(t.type!=="DONE")return;let s=n[i];if(s){if(s.type!=="TODO"&&s.type!=="IN_PROGRESS"){let a="https://publish.obsidian.md/tasks/Getting+Started/Statuses/Recurring+Tasks+and+Custom+Statuses",o=Ni(s.type),l=[x.t("reports.statusRegistry.messages.wrongTypeAfterDone.line1",{nextType:o}),x.t("reports.statusRegistry.messages.wrongTypeAfterDone.line2"),x.t("reports.statusRegistry.messages.wrongTypeAfterDone.line3",{helpURL:a})].join("<br>");e.push(l)}}else e.push(x.t("reports.statusRegistry.messages.cannotFindNextStatus"))}function WW(n,t,e){let r=[];if(t.symbol===Ce.EMPTY.symbol)return r.push(x.t("reports.statusRegistry.messages.emptySymbol")),r;if(j1(n,t.symbol)!=e){let s=Ni(t.symbol);return r.push(x.t("reports.statusRegistry.messages.duplicateSymbol",{symbol:s})),r}return jW(t,r),$W(n,t,r),r}function $1(n){let t=new $f([x.t("reports.statusRegistry.columnHeadings.statusSymbol"),x.t("reports.statusRegistry.columnHeadings.nextStatusSymbol"),x.t("reports.statusRegistry.columnHeadings.statusName"),x.t("reports.statusRegistry.columnHeadings.statusType"),x.t("reports.statusRegistry.columnHeadings.problems")]),e=_t.allStatuses(n);return e.forEach((r,i)=>{t.addRow([Ni(r.symbol),Ni(r.nextStatusSymbol),r.name,Ni(r.type),WW(e,r,i).join("<br>")])}),t.markdown}function W1(n){let t=new at;return _t.applyToStatusRegistry(n,t),t.registeredStatuses.map((r,i)=>{let s=Re.getInstance(),a=s.isEmpty()?"":s.get()+" ",o=`Sample task ${i+1}`,l=`status symbol=${Ni(r.symbol)}`,u=`status name='${r.name}'`;return`- [${r.symbol}] ${a}${o}: ${l} ${u}`})}function H1(n,t,e,r){let s=$1(n),a=t.mermaidDiagram(!0),o=W1(n);return`# ${e}
2026-01-05 13:03:55 +08:00
## ${x.t("reports.statusRegistry.about.title")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.about.createdBy",{version:r})}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.about.updateReport.line1")}
2026-01-05 13:03:55 +08:00
- ${x.t("reports.statusRegistry.about.updateReport.line2")}
- ${x.t("reports.statusRegistry.about.updateReport.line3")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.about.deleteFileAnyTime")}
2026-01-05 13:03:55 +08:00
## ${x.t("reports.statusRegistry.statusSettings.title")}
2026-01-05 13:03:55 +08:00
<!--
${x.t("reports.statusRegistry.statusSettings.comment.line1")}
${x.t("reports.statusRegistry.statusSettings.comment.line2")}
${x.t("reports.statusRegistry.statusSettings.comment.line3")}
2026-01-05 13:03:55 +08:00
-->
${x.t("reports.statusRegistry.statusSettings.theseAreStatusValues")}
2026-01-05 13:03:55 +08:00
${s}
## ${x.t("reports.statusRegistry.loadedSettings.title")}
2026-01-05 13:03:55 +08:00
<!-- ${x.t("reports.statusRegistry.loadedSettings.switchToLivePreview")} -->
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.loadedSettings.settingsActuallyUsed")}
2026-01-05 13:03:55 +08:00
${a}
## ${x.t("reports.statusRegistry.sampleTasks.title")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.sampleTasks.line1")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.sampleTasks.line2")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.sampleTasks.line3")}
2026-01-05 13:03:55 +08:00
> [!Tip] ${x.t("reports.statusRegistry.sampleTasks.tip.line1")}
> ${x.t("reports.statusRegistry.sampleTasks.tip.line2",{url:"https://publish.obsidian.md/tasks/How+To/Style+custom+statuses"})}
2026-01-05 13:03:55 +08:00
${o.join(`
`)}
## ${x.t("reports.statusRegistry.searchSampleTasks.title")}
2026-01-05 13:03:55 +08:00
${x.t("reports.statusRegistry.searchSampleTasks.line1")}
2026-01-05 13:03:55 +08:00
\`\`\`tasks
path includes {{query.file.path}}
group by status.type
group by status.name
sort by function task.lineNumber
hide postpone button
short mode
\`\`\`
`}Nr();function B1(){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 G1(){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 z1(){return[[" ","To Do","x","TODO"],["/","In Progress","x","IN_PROGRESS"],["x","Done"," ","DONE"],["-","Cancelled"," ","CANCELLED"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["i","Infomation","x","TODO"],["S","Amount","x","TODO"],["*","Star","x","TODO"],["b","Bookmark","x","TODO"],["\u201C","Quote","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["I","Idea","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["u","Up","x","TODO"],["d","Down","x","TODO"]]}function V1(){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 Q1(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["<","Migrated","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 K1(){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 Z1(){
2026-01-05 13:03:55 +08:00
`)+`
`+x.t("modals.customStatusModal.fixErrorsBeforeSaving");new Ar.Notice(d);return}this.saved=!0,this.close()})),u)),l.addExtraButton(u=>(u.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),u))}onOpen(){this.display()}static setValidationError(e){e.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(e){e.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(e,r){r.length===0?n.removeValidationError(e):n.setValidationError(e)}};var fT=require("obsidian");function J1(n,t,e){if(t===e||!Object.prototype.hasOwnProperty.call(n,t))return L({},n);let r={};for(let[i,s]of Object.entries(n))i===t?r[e]=s:r[i]=s;return r}var yu=class{constructor(t,e,r){this.originalName=t,this.isValid=e,this.errorMessage=r}},Bf=class{validateRenames(t){let e={};for(let[r,i]of Object.entries(t)){let s={};for(let[a,o]of Object.entries(t))a!==r&&(s[o]="");e[r]=this.validateRename(s,"",i)}return e}validateRename(t,e,r){if(!r||r.trim()==="")return new yu(e,!1,"Preset name cannot be empty or all whitespace");for(let i of Object.keys(t))if(i!==e&&i.trim()===r.trim())return new yu(e,!1,"A preset with this name already exists");return new yu(e,!0,null)}addPreset(t){let e=this.generateUniqueKey(t),r=L({},t);return r[e]="",{presets:r,newKey:e}}renamePreset(t,e,r){return!r||r.trim()===""||(r=r.trim(),this.wouldCreateDuplicateKey(t,e,r))?null:J1(t,e,r)}deletePreset(t,e){let r=L({},t);return delete r[e],r}updatePresetValue(t,e,r){let i=L({},t);return i[e]=r,i}wouldCreateDuplicateKey(t,e,r){let i=r.trim();if(e.trim()===i)return!1;for(let s of Object.keys(t))if(s!==e&&s.trim()===i)return!0;return!1}generateUniqueKey(t){let e="new_key",r=1;for(;Object.prototype.hasOwnProperty.call(t,`${e}_${r}`);)r++;return`${e}_${r}`}reorderPreset(t,e,r){let i=Object.keys(t),s=i.indexOf(e);if(s===-1||r<0||r>=i.length)return null;if(s===r)return L({},t);let a=[...i];a.splice(s,1),a.splice(r,0,e);let o={};for(let l of a)o[l]=t[l];return o}};Nr();dt();var Gf=class{constructor(t,e){this.presetsSettingsService=new Bf;this.nameFields=new Map;this.plugin=t,this.events=e}renderPresetsSettings(t){let e=t.createDiv(),r=X(),i=()=>{e.empty(),this.nameFields.clear(),Object.entries(r.presets).forEach(([s,a])=>{this.renderPresetItem(e,r,s,a,i)})};i(),this.createAddNewPresetButton(t,r,i)}renderPresetItem(t,e,r,i,s){let a=t.createDiv({cls:"tasks-presets-wrapper"}),o=new fT.Setting(a);o.settingEl.addClass("tasks-presets-setting"),a.setAttribute("data-preset-key",r),o.addText(l=>{l.setPlaceholder("Name").setValue(r),l.inputEl.addClass("tasks-presets-key"),this.nameFields.set(r,{inputEl:l.inputEl,originalKey:r});let u=r;l.inputEl.addEventListener("input",d=>{u=d.target.value,this.validateAllInputs()});let c=()=>{if(u&&u!==r){let d=this.presetsSettingsService.renamePreset(e.presets,r,u);d&&this.savePresetsSettings(d,e,s)}};l.inputEl.addEventListener("blur",c),l.inputEl.addEventListener("keydown",d=>{d.key==="Enter"&&(d.preventDefault(),l.inputEl.blur())})}),o.addTextArea(l=>(l.inputEl.addClass("tasks-presets-value"),l.setPlaceholder("Query or filter text...").setValue(i),this.setupAutoResizingTextarea(l),l.onChange(u=>M(this,null,function*(){let c=this.presetsSettingsService.updatePresetValue(e.presets,r,u);this.savePresetsSettings(c,e,null)})))),o.addExtraButton(l=>{l.extraSettingsEl.addClass("tasks-presets-drag-handle"),l.setIcon("grip-vertical").setTooltip("Drag to reorder"),l.extraSettingsEl.addEventListener("mousedown",u=>{a.draggable=!0,l.extraSettingsEl.addClass("tasks-presets-drag-handle-active")}),l.extraSettingsEl.addEventListener("mouseup",u=>{l.extraSettingsEl.removeClass("tasks-presets-drag-handle-active")})}),o.addExtraButton(l=>{l.extraSettingsEl.addClass("tasks-presets-delete-button"),l.setIcon("cross").setTooltip("Delete").onClick(()=>M(this,null,function*(){let u=this.presetsSettingsService.deletePreset(e.presets,r);this.savePresetsSettings(u,e,s)}))}),this.setupDragAndDrop(a,r,e,s),o.infoEl.remove()}setupDragAndDrop(t,e,r,i){t.addEventListener("dragstart",s=>{s.dataTransfer&&(s.dataTransfer.setData("text/plain",e),s.dataTra
2026-01-05 13:03:55 +08:00
This message has been written to the console.
`,1e4)}var Vf=class extends cs.EditorSuggest{constructor(t,e,r){super(t),this.settings=e,this.plugin=r,t.scope.register([],"Tab",()=>{var s;let i=(s=this.context)==null?void 0:s.editor;return i?(i.exec("indentMore"),!1):!0})}onTrigger(t,e,r){if(!this.settings.autoSuggestInEditor||r===void 0)return null;let i=e.getLine(t.line);return!TE(i,t,e)||this.grabSuggestions(e,r,i).length===0?null:{start:{line:t.line,ch:0},end:{line:t.line,ch:i.length},query:i}}getSuggestions(t){return t.file===void 0?[]:this.grabSuggestions(t.editor,t.file,t.query).map(r=>me(L({},r),{context:t}))}grabSuggestions(t,e,r){var u,c,d;let i=t.getCursor(),s=this.plugin.getTasks(),a=s.find(f=>f.taskLocation.path==e.path&&f.taskLocation.lineNumber==i.line),o=this.getMarkdownFileInfo(t),l=this.canSaveEdits(o);return(d=(c=(u=Wl()).buildSuggestions)==null?void 0:c.call(u,r,i.ch,this.settings,s,l,a))!=null?d:[]}getMarkdownFileInfo(t){return t.cm.state.field(cs.editorInfoField)}canSaveEdits(t){return t instanceof cs.MarkdownView}renderSuggestion(t,e){e.setText(t.displayText)}selectSuggestion(t,e){return M(this,null,function*(){var l,u,c;let r=t.context.editor;if(t.suggestionType==="empty"){this.close();let d=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(u=(l=r==null?void 0:r.cm)==null?void 0:l.contentDOM)==null||u.dispatchEvent(d);return}if(t.taskItDependsOn!=null){let d=jc(t.taskItDependsOn,this.plugin.getTasks().map(f=>f.id));if(t.appendText+=` ${d.id}`,t.taskItDependsOn!==d)if(t.context.file.path==d.path){let f=t.taskItDependsOn.originalMarkdown,p={line:t.taskItDependsOn.lineNumber,ch:0},h={line:t.taskItDependsOn.lineNumber,ch:f.length},b=t.context.editor.getRange(p,h);if(b!==f){let v=`Error adding new ID, due to mismatched data in Tasks memory and the editor:
task line in memory: '${t.taskItDependsOn.originalMarkdown}'
2026-01-05 13:03:55 +08:00
task line in editor: '${b}'
2026-01-05 13:03:55 +08:00
file: '${d.path}'
`;zW(v);return}t.context.editor.replaceRange(d.toFileLineString(),p,h)}else yield Hn({originalTask:t.taskItDependsOn,newTasks:d})}let i=t.context.editor.getCursor(),s={line:i.line,ch:(c=t.insertAt)!=null?c:i.ch},a=t.insertSkip?{line:i.line,ch:s.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,s,a),t.context.editor.setCursor({line:i.line,ch:s.ch+t.appendText.length});let o=this.getMarkdownFileInfo(t.context.editor);this.canSaveEdits(o)&&(yield o.save())})}};Fa();function Qf(n,t,e,r){let i,s=new Promise((c,d)=>{i=c}),a=c=>{let d=c.map(f=>f.toFileLineString()).join(`
`);i(d)},o=()=>{i("")},l=Dd({line:t!=null?t:"",path:""});return new Ji({app:n,task:l,onSaveSettings:r,onSubmit:a,onCancel:o,allTasks:e}).open(),s}var tR=(n,t,e)=>Qf(n,"",t,e);var nR=n=>{let t=n.app,e=()=>M(null,null,function*(){return yield n.saveSettings()});return{createTaskLineModal:()=>tR(t,n.getTasks(),e),editTaskLineModal:r=>Qf(t,r,n.getTasks(),e),executeToggleTaskDoneCommand:(r,i)=>Cb(r,i).text}};Zt();hp();var Kf=class{constructor(t){this.app=t}load(t){return this.app.loadLocalStorage(t)}save(t,e){this.app.saveLocalStorage(t,e)}};var Zf=class extends Xf.Plugin{get apiV1(){return nR(this)}onload(){return M(this,null,function*(){yield ov(),gn.registerConsoleLogger(),Jy("info",x.t("main.loadingPlugin",{name:this.manifest.name,version:this.manifest.version})),yield this.loadSettings(),on.initialise(new Kf(this.app));let{loggingOptions:t}=X();gn.configure(t),sa.getInstance().setGetFirstLinkpathDestFn((r,i)=>{let s=(0,Xf.getLinkpath)(r.link),a=this.app.metadataCache.getFirstLinkpathDest(s,i);return a?a.path:null});let e=new kf({obsidianEvents:this.app.workspace});this.addSettingTab(new zf({plugin:this,events:e})),Ix({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses(),this.cache=new Ls({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace,events:e}),this.inlineRenderer=new Pf({plugin:this,app:this.app}),this.queryRenderer=new jf({plugin:this,events:e}),this.setObsidianPropertiesTypes(),this.registerEditorExtension(N1(this)),this.registerEditorSuggest(new Vf(this.app,X(),this)),new vf({plugin:this})})}loadTaskStatuses(){return M(this,null,function*(){let{statusSettings:t}=X();_t.applyToStatusRegistry(t,at.getInstance())})}onunload(){var t;Jy("info",x.t("main.unloadingPlugin",{name:this.manifest.name,version:this.manifest.version})),(t=this.cache)==null||t.unload()}loadSettings(){return M(this,null,function*(){let t=yield this.loadData();it(t),t=X(),Re.getInstance().set(t.globalFilter),Re.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),Rn.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return M(this,null,function*(){yield this.saveData(X())})}getTasks(){return this.cache===void 0?[]:this.cache.getTasks()}getState(){return this.cache===void 0?"Cold":this.cache.getState()}setObsidianPropertiesTypes(){var t;try{let e=this.app.metadataTypeManager,r=e.getAllProperties(),i=new Mi;for(let s of i.allPropertyNamesSorted()){let a=i.propertyType(s);((t=r[s])==null?void 0:t.type)!==a&&e.setType(s,a)}}catch(e){console.error("setObsidianPropertiesTypes error",e)}}};
/*! Bundled license information:
eventemitter2/lib/eventemitter2.js:
(*!
* EventEmitter2
* https://github.com/hij1nx/EventEmitter2
*
* Copyright (c) 2013 hij1nx
* Licensed under the MIT license.
*)
mustache/mustache.mjs:
(*!
* mustache.js - Logic-less {{mustache}} templates with JavaScript
* http://github.com/janl/mustache.js
*)
*/
2026-01-05 13:03:55 +08:00
/* nosourcemap */