/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ var uV=Object.create;var Wc=Object.defineProperty;var pV=Object.getOwnPropertyDescriptor;var mV=Object.getOwnPropertyNames;var fV=Object.getPrototypeOf,hV=Object.prototype.hasOwnProperty;var gV=(n,a,e)=>a in n?Wc(n,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[a]=e;var D=(n,a)=>()=>(n&&(a=n(n=0)),a);var ve=(n,a)=>()=>(a||n((a={exports:{}}).exports,a),a.exports),Et=(n,a)=>{for(var e in a)Wc(n,e,{get:a[e],enumerable:!0})},CS=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of mV(a))!hV.call(n,r)&&r!==e&&Wc(n,r,{get:()=>a[r],enumerable:!(t=pV(a,r))||t.enumerable});return n};var Oe=(n,a,e)=>(e=n!=null?uV(fV(n)):{},CS(a||!n||!n.__esModule?Wc(e,"default",{value:n,enumerable:!0}):e,n)),_l=n=>CS(Wc({},"__esModule",{value:!0}),n);var z=(n,a,e)=>gV(n,typeof a!="symbol"?a+"":a,e);var Ib=ve((R9,SS)=>{"use strict";var kV={mode:"lazy"};SS.exports=kV});var Gf=ve((O9,DS)=>{"use strict";var yV=RegExp.prototype.exec;DS.exports=yV});var PS=ve((N9,ES)=>{"use strict";ES.exports={_hasUFlag:!1,shouldRun:function(a){var e=a.flags.includes("s");return e?(a.flags=a.flags.replace("s",""),this._hasUFlag=a.flags.includes("u"),!0):!1},Char:function(a){var e=a.node;if(!(e.kind!=="meta"||e.value!==".")){var t="\\uFFFF",r="\uFFFF";this._hasUFlag&&(t="\\u{10FFFF}",r="\u{10FFFF}"),a.replace({type:"CharacterClass",expressions:[{type:"ClassRange",from:{type:"Char",value:"\\0",kind:"decimal",symbol:"\0"},to:{type:"Char",value:t,kind:"unicode",symbol:r}}]})}}}});var IS=ve((L9,MS)=>{"use strict";MS.exports={_groupNames:{},init:function(){this._groupNames={}},getExtra:function(){return this._groupNames},Group:function(a){var e=a.node;e.name&&(this._groupNames[e.name]=e.number,delete e.name,delete e.nameRaw)},Backreference:function(a){var e=a.node;e.kind==="name"&&(e.kind="number",e.reference=e.number,delete e.referenceRaw)}}});var FS=ve((j9,AS)=>{"use strict";AS.exports={RegExp:function(a){var e=a.node;e.flags.includes("x")&&(e.flags=e.flags.replace("x",""))}}});var OS=ve((H9,RS)=>{"use strict";RS.exports={dotAll:PS(),namedCapturingGroups:IS(),xFlag:FS()}});var Ab=ve((B9,NS)=>{"use strict";function zr(n){return n?vV[n.type](n):""}var vV={RegExp:function(a){return"/"+zr(a.body)+"/"+a.flags},Alternative:function(a){return(a.expressions||[]).map(zr).join("")},Disjunction:function(a){return zr(a.left)+"|"+zr(a.right)},Group:function(a){var e=zr(a.expression);return a.capturing?a.name?"(?<"+(a.nameRaw||a.name)+">"+e+")":"("+e+")":"(?:"+e+")"},Backreference:function(a){switch(a.kind){case"number":return"\\"+a.reference;case"name":return"\\k<"+(a.referenceRaw||a.reference)+">";default:throw new TypeError("Unknown Backreference kind: "+a.kind)}},Assertion:function(a){switch(a.kind){case"^":case"$":case"\\b":case"\\B":return a.kind;case"Lookahead":{var e=zr(a.assertion);return a.negative?"(?!"+e+")":"(?="+e+")"}case"Lookbehind":{var t=zr(a.assertion);return a.negative?"(?{"use strict";var Fb={General_Category:"gc",Script:"sc",Script_Extensions:"scx"},zc=Jf(Fb),Xf={ASCII:"ASCII",ASCII_Hex_Digit:"AHex",Alphabetic:"Alpha",Any:"Any",Assigned:"Assigned",Bidi_Control:"Bidi_C",Bidi_Mirrored:"Bidi_M",Case_Ignorable:"CI",Cased:"Cased",Changes_When_Casefolded:"CWCF",Changes_When_Casemapped:"CWCM",Changes_When_Lowercased:"CWL",Changes_When_NFKC_Casefolded:"CWKCF",Changes_When_Titlecased:"CWT",Changes_When_Uppercased:"CWU",Dash:"Dash",Default_Ignorable_Code_Point:"DI",Deprecated:"Dep",Diacritic:"Dia",Emoji:"Emoji",Emoji_Component:"Emoji_Component",Emoji_Modifier:"Emoji_Modifier",Emoji_Modifier_Base:"Emoji_Modifier_Base",Emoji_Presentation:"Emoji_Presentation",Extended_Pictographic:"Extended_Pictographic",Extender:"Ext",Grapheme_Base:"Gr_Base",Grapheme_Extend:"Gr_Ext",Hex_Digit:"Hex",IDS_Binary_Operator:"IDSB",IDS_Trinary_Operator:"IDST",ID_Continue:"IDC",ID_Start:"IDS",Ideographic:"Ideo",Join_Control:"Join_C",Logical_Order_Exception:"LOE",Lowercase:"Lower",Math:"Math",Noncharacter_Code_Point:"NChar",Pattern_Syntax:"Pat_Syn",Pattern_White_Space:"Pat_WS",Quotation_Mark:"QMark",Radical:"Radical",Regional_Indicator:"RI",Sentence_Terminal:"STerm",Soft_Dotted:"SD",Terminal_Punctuation:"Term",Unified_Ideograph:"UIdeo",Uppercase:"Upper",Variation_Selector:"VS",White_Space:"space",XID_Continue:"XIDC",XID_Start:"XIDS"},Rs=Jf(Xf),Rb={Cased_Letter:"LC",Close_Punctuation:"Pe",Connector_Punctuation:"Pc",Control:["Cc","cntrl"],Currency_Symbol:"Sc",Dash_Punctuation:"Pd",Decimal_Number:["Nd","digit"],Enclosing_Mark:"Me",Final_Punctuation:"Pf",Format:"Cf",Initial_Punctuation:"Pi",Letter:"L",Letter_Number:"Nl",Line_Separator:"Zl",Lowercase_Letter:"Ll",Mark:["M","Combining_Mark"],Math_Symbol:"Sm",Modifier_Letter:"Lm",Modifier_Symbol:"Sk",Nonspacing_Mark:"Mn",Number:"N",Open_Punctuation:"Ps",Other:"C",Other_Letter:"Lo",Other_Number:"No",Other_Punctuation:"Po",Other_Symbol:"So",Paragraph_Separator:"Zp",Private_Use:"Co",Punctuation:["P","punct"],Separator:"Z",Space_Separator:"Zs",Spacing_Mark:"Mc",Surrogate:"Cs",Symbol:"S",Titlecase_Letter:"Lt",Unassigned:"Cn",Uppercase_Letter:"Lu"},Kf=Jf(Rb),Ob={Adlam:"Adlm",Ahom:"Ahom",Anatolian_Hieroglyphs:"Hluw",Arabic:"Arab",Armenian:"Armn",Avestan:"Avst",Balinese:"Bali",Bamum:"Bamu",Bassa_Vah:"Bass",Batak:"Batk",Bengali:"Beng",Bhaiksuki:"Bhks",Bopomofo:"Bopo",Brahmi:"Brah",Braille:"Brai",Buginese:"Bugi",Buhid:"Buhd",Canadian_Aboriginal:"Cans",Carian:"Cari",Caucasian_Albanian:"Aghb",Chakma:"Cakm",Cham:"Cham",Cherokee:"Cher",Common:"Zyyy",Coptic:["Copt","Qaac"],Cuneiform:"Xsux",Cypriot:"Cprt",Cyrillic:"Cyrl",Deseret:"Dsrt",Devanagari:"Deva",Dogra:"Dogr",Duployan:"Dupl",Egyptian_Hieroglyphs:"Egyp",Elbasan:"Elba",Ethiopic:"Ethi",Georgian:"Geor",Glagolitic:"Glag",Gothic:"Goth",Grantha:"Gran",Greek:"Grek",Gujarati:"Gujr",Gunjala_Gondi:"Gong",Gurmukhi:"Guru",Han:"Hani",Hangul:"Hang",Hanifi_Rohingya:"Rohg",Hanunoo:"Hano",Hatran:"Hatr",Hebrew:"Hebr",Hiragana:"Hira",Imperial_Aramaic:"Armi",Inherited:["Zinh","Qaai"],Inscriptional_Pahlavi:"Phli",Inscriptional_Parthian:"Prti",Javanese:"Java",Kaithi:"Kthi",Kannada:"Knda",Katakana:"Kana",Kayah_Li:"Kali",Kharoshthi:"Khar",Khmer:"Khmr",Khojki:"Khoj",Khudawadi:"Sind",Lao:"Laoo",Latin:"Latn",Lepcha:"Lepc",Limbu:"Limb",Linear_A:"Lina",Linear_B:"Linb",Lisu:"Lisu",Lycian:"Lyci",Lydian:"Lydi",Mahajani:"Mahj",Makasar:"Maka",Malayalam:"Mlym",Mandaic:"Mand",Manichaean:"Mani",Marchen:"Marc",Medefaidrin:"Medf",Masaram_Gondi:"Gonm",Meetei_Mayek:"Mtei",Mende_Kikakui:"Mend",Meroitic_Cursive:"Merc",Meroitic_Hieroglyphs:"Mero",Miao:"Plrd",Modi:"Modi",Mongolian:"Mong",Mro:"Mroo",Multani:"Mult",Myanmar:"Mymr",Nabataean:"Nbat",New_Tai_Lue:"Talu",Newa:"Newa",Nko:"Nkoo",Nushu:"Nshu",Ogham:"Ogam",Ol_Chiki:"Olck",Old_Hungarian:"Hung",Old_Italic:"Ital",Old_North_Arabian:"Narb",Old_Permic:"Perm",Old_Persian:"Xpeo",Old_Sogdian:"Sogo",Old_South_Arabian:"Sarb",Old_Turkic:"Orkh",Oriya:"Orya",Osage:"Osge",Osmanya:"Osma",Pahawh_Hmong:"Hmng",Palmyrene:"Palm",Pau_Cin_Hau:"Pauc",Phags_Pa:"Phag",Phoenician:"Phnx",Psalter_Pahlavi:"Phlp",Rejang:"Rjng",Runic:"Runr",Samaritan:"Samr",Saurashtra:"Saur",Sharada:"Shrd",Shavian:"Shaw",Siddham:"Sidd",SignWriting:"Sgnw",Sinhala:"Sinh",Sogdian:"Sogd",Sora_Sompeng:"Sora",Soyombo:"Soyo",Sundanese:"Sund",Syloti_Nagri:"Sylo",Syriac:"Syrc",Tagalog:"Tglg",Tagbanwa:"Tagb",Tai_Le:"Tale",Tai_Tham:"Lana",Tai_Viet:"Tavt",Takri:"Takr",Tamil:"Taml",Tangut:"Tang",Telugu:"Telu",Thaana:"Thaa",Thai:"Thai",Tibetan:"Tibt",Tifinagh:"Tfng",Tirhuta:"Tirh",Ugaritic:"Ugar",Vai:"Vaii",Warang_Citi:"Wara",Yi:"Yiii",Zanabazar_Square:"Zanb"},Qf=Jf(Ob);function Jf(n){var a={};for(var e in n)if(n.hasOwnProperty(e)){var t=n[e];if(Array.isArray(t))for(var r=0;r{"use strict";var PV=(function(){function n(a,e){var t=[],r=!0,i=!1,s=void 0;try{for(var o=a[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(t.push(l.value),!(e&&t.length===e));r=!0);}catch(c){i=!0,s=c}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return t}return function(a,e){if(Array.isArray(a))return a;if(Symbol.iterator in Object(a))return n(a,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})();function US(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a/,function(){var n=dn.slice(3,-1);return $S(n,this.getCurrentState()),"NAMED_GROUP_REF"}],[/^\\b/,function(){return"ESC_b"}],[/^\\B/,function(){return"ESC_B"}],[/^\\c[a-zA-Z]/,function(){return"CTRL_CH"}],[/^\\0\d{1,2}/,function(){return"OCT_CODE"}],[/^\\0/,function(){return"DEC_CODE"}],[/^\\\d{1,3}/,function(){return"DEC_CODE"}],[/^\\u[dD][89abAB][0-9a-fA-F]{2}\\u[dD][c-fC-F][0-9a-fA-F]{2}/,function(){return"U_CODE_SURROGATE"}],[/^\\u\{[0-9a-fA-F]{1,}\}/,function(){return"U_CODE"}],[/^\\u[0-9a-fA-F]{4}/,function(){return"U_CODE"}],[/^\\[pP]\{\w+(?:=\w+)?\}/,function(){return"U_PROP_VALUE_EXP"}],[/^\\x[0-9a-fA-F]{2}/,function(){return"HEX_CODE"}],[/^\\[tnrdDsSwWvf]/,function(){return"META_CHAR"}],[/^\\\//,function(){return"ESC_CHAR"}],[/^\\[ #]/,function(){return"ESC_CHAR"}],[/^\\[\^\$\.\*\+\?\(\)\\\[\]\{\}\|\/]/,function(){return"ESC_CHAR"}],[/^\\[^*?+\[()\\|]/,function(){var n=this.getCurrentState();if(n==="u_class"&&dn==="\\-")return"ESC_CHAR";if(n==="u"||n==="xu"||n==="u_class")throw new SyntaxError("invalid Unicode escape "+dn);return"ESC_CHAR"}],[/^\(/,function(){return"CHAR"}],[/^\)/,function(){return"CHAR"}],[/^\(\?=/,function(){return"POS_LA_ASSERT"}],[/^\(\?!/,function(){return"NEG_LA_ASSERT"}],[/^\(\?<=/,function(){return"POS_LB_ASSERT"}],[/^\(\?/,function(){return dn=dn.slice(3,-1),$S(dn,this.getCurrentState()),"NAMED_CAPTURE_GROUP"}],[/^\(/,function(){return"L_PAREN"}],[/^\)/,function(){return"R_PAREN"}],[/^[*?+[^$]/,function(){return"CHAR"}],[/^\\\]/,function(){return"ESC_CHAR"}],[/^\]/,function(){return this.popState(),"R_BRACKET"}],[/^\^/,function(){return"BOS"}],[/^\$/,function(){return"EOS"}],[/^\*/,function(){return"STAR"}],[/^\?/,function(){return"Q_MARK"}],[/^\+/,function(){return"PLUS"}],[/^\|/,function(){return"BAR"}],[/^\./,function(){return"ANY"}],[/^\//,function(){return"SLASH"}],[/^[^*?+\[()\\|]/,function(){return"CHAR"}],[/^\[\^/,function(){var n=this.getCurrentState();return this.pushState(n==="u"||n==="xu"?"u_class":"class"),"NEG_CLASS"}],[/^\[/,function(){var n=this.getCurrentState();return this.pushState(n==="u"||n==="xu"?"u_class":"class"),"L_BRACKET"}]],AV={INITIAL:[8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],u:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],xu:[0,1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],x:[0,1,8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],u_class:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],class:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]},WS={type:qS,value:""};$r={initString:function(a){return this._string=a,this._cursor=0,this._states=["INITIAL"],this._tokensQueue=[],this._currentLine=1,this._currentColumn=0,this._currentLineBeginOffset=0,this._tokenStartOffset=0,this._tokenEndOffset=0,this._tokenStartLine=1,this._tokenEndLine=1,this._tokenStartColumn=0,this._tokenEndColumn=0,this},getStates:function(){return this._states},getCurrentState:function(){return this._states[this._states.length-1]},pushState:function(a){this._states.push(a)},begin:function(a){this.pushState(a)},popState:function(){return this._states.length>1?this._states.pop():this._states[0]},getNextToken:function(){if(this._tokensQueue.length>0)return this.onToken(this._toToken(this._tokensQueue.shift()));if(!this.hasMoreTokens())return this.onToken(WS);for(var a=this._string.slice(this._cursor),e=AV[this.getCurrentState()],t=0;t0){var c;(c=this._tokensQueue).unshift.apply(c,US(l))}}return this.onToken(this._toToken(o,dn))}}if(this.isEOF())return this._cursor++,WS;this.throwUnexpectedToken(a[0],this._currentLine,this._currentColumn)},throwUnexpectedToken:function(a,e,t){var r=this._string.split(` `)[e-1],i="";if(r){var s=" ".repeat(t);i=` `+r+` `+s+`^ `}throw new SyntaxError(i+'Unexpected token: "'+a+'" '+("at "+e+":"+t+"."))},getCursor:function(){return this._cursor},getCurrentLine:function(){return this._currentLine},getCurrentColumn:function(){return this._currentColumn},_captureLocation:function(a){var e=/\n/g;this._tokenStartOffset=this._cursor,this._tokenStartLine=this._currentLine,this._tokenStartColumn=this._tokenStartOffset-this._currentLineBeginOffset;for(var t=void 0;(t=e.exec(a))!==null;)this._currentLine++,this._currentLineBeginOffset=this._tokenStartOffset+t.index+1;this._tokenEndOffset=this._cursor+a.length,this._tokenEndLine=this._currentLine,this._tokenEndColumn=this._currentColumn=this._tokenEndOffset-this._currentLineBeginOffset},_toToken:function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return{type:a,value:e,startOffset:this._tokenStartOffset,endOffset:this._tokenEndOffset,startLine:this._tokenStartLine,endLine:this._tokenEndLine,startColumn:this._tokenStartColumn,endColumn:this._tokenEndColumn}},isEOF:function(){return this._cursor===this._string.length},hasMoreTokens:function(){return this._cursor<=this._string.length},_match:function(a,e){var t=a.match(e);return t?(this._captureLocation(t[0]),this._cursor+=t[0].length,t[0]):null},onToken:function(a){return a}};sa.lexer=$r;sa.tokenizer=$r;sa.options={captureLocations:!0};var Eo={setOptions:function(a){return sa.options=a,this},getOptions:function(){return sa.options},parse:function(a,e){if(!$r)throw new Error("Tokenizer instance wasn't specified.");$r.initString(a);var t=sa.options;e&&(sa.options=Object.assign({},sa.options,e)),Eo.onParseBegin(a,$r,sa.options),cr.length=0,cr.push(0);var r=$r.getNextToken(),i=null;do{r||(sa.options=t,QS());var s=cr[cr.length-1],o=VS[r.type];Nb[s].hasOwnProperty(o)||(sa.options=t,_S(r));var l=Nb[s][o];if(l[0]==="s"){var c=null;sa.options.captureLocations&&(c={startOffset:r.startOffset,endOffset:r.endOffset,startLine:r.startLine,endLine:r.endLine,startColumn:r.startColumn,endColumn:r.endColumn}),i=this.onShift(r),cr.push({symbol:VS[i.type],semanticValue:i.value,loc:c},Number(l.slice(1))),r=$r.getNextToken()}else if(l[0]==="r"){var u=l.slice(1),p=MV[u],m=typeof p[2]=="function",f=m?[]:null,h=m&&sa.options.captureLocations?[]:null;if(p[1]!==0)for(var g=p[1];g-- >0;){cr.pop();var k=cr.pop();m&&(f.unshift(k.semanticValue),h&&h.unshift(k.loc))}var y={symbol:p[0]};if(m){dn=i?i.value:null,YS=i?i.value.length:null;var b=h!==null?f.concat(h):f;p[2].apply(p,US(b)),y.semanticValue=ne,h&&(y.loc=J)}var v=cr[cr.length-1],w=p[0];cr.push(y,Nb[v][w])}else if(l==="acc"){cr.pop();var x=cr.pop();return(cr.length!==1||cr[0]!==0||$r.hasMoreTokens())&&(sa.options=t,_S(r)),x.hasOwnProperty("semanticValue")?(sa.options=t,Eo.onParseEnd(x.semanticValue),x.semanticValue):(Eo.onParseEnd(),sa.options=t,!0)}}while($r.hasMoreTokens()||cr.length>1)},setTokenizer:function(a){return $r=a,Eo},getTokenizer:function(){return $r},onParseBegin:function(a,e,t){},onParseEnd:function(a){},onShift:function(a){return a}},jb=0,$c={},GS="";Eo.onParseBegin=function(n,a){GS=n,jb=0,$c={};var e=n.lastIndexOf("/"),t=n.slice(e);t.includes("x")&&t.includes("u")?a.pushState("xu"):(t.includes("x")&&a.pushState("x"),t.includes("u")&&a.pushState("u"))};Eo.onShift=function(n){return(n.type==="L_PAREN"||n.type==="NAMED_CAPTURE_GROUP")&&(n.value=new String(n.value),n.value.groupNumber=++jb),n};function Lb(n){var a=n.match(/\d+/g).map(Number);if(Number.isFinite(a[1])&&a[1]a.codePoint)throw new SyntaxError("Range "+n.value+"-"+a.value+" out of order in character class")}var Ul=BS();function FV(n,a){var e=n[1]==="P",t=n.indexOf("="),r=n.slice(3,t!==-1?t:-1),i=void 0,s=t===-1&&Ul.isGeneralCategoryValue(r),o=t===-1&&Ul.isBinaryPropertyName(r);if(s)i=r,r="General_Category";else if(o)i=r;else{if(!Ul.isValidName(r))throw new SyntaxError("Invalid unicode property name: "+r+".");if(i=n.slice(t+1,-1),!Ul.isValidValue(r,i))throw new SyntaxError("Invalid "+r+" unicode property value: "+i+".")}return Nt({type:"UnicodeProperty",name:r,value:i,negative:e,shorthand:s,binary:o,canonicalName:Ul.getCanonicalName(r)||r,canonicalValue:Ul.getCanonicalValue(i)||i},a)}function ur(n,a,e){var t=void 0,r=void 0;switch(a){case"decimal":{r=Number(n.slice(1)),t=String.fromCodePoint(r);break}case"oct":{r=parseInt(n.slice(1),8),t=String.fromCodePoint(r);break}case"hex":case"unicode":{if(n.lastIndexOf("\\u")>0){var i=n.split("\\u").slice(1),s=PV(i,2),o=s[0],l=s[1];o=parseInt(o,16),l=parseInt(l,16),r=(o-55296)*1024+(l-56320)+65536,t=String.fromCodePoint(r)}else{var c=n.slice(2).replace("{","");if(r=parseInt(c,16),r>1114111)throw new SyntaxError("Bad character escape sequence: "+n);t=String.fromCodePoint(r)}break}case"meta":{switch(n){case"\\t":t=" ",r=t.codePointAt(0);break;case"\\n":t=` `,r=t.codePointAt(0);break;case"\\r":t="\r",r=t.codePointAt(0);break;case"\\v":t="\v",r=t.codePointAt(0);break;case"\\f":t="\f",r=t.codePointAt(0);break;case"\\b":t="\b",r=t.codePointAt(0);case"\\0":t="\0",r=0;case".":t=".",r=NaN;break;default:r=NaN}break}case"simple":{t=n,r=t.codePointAt(0);break}}return Nt({type:"Char",value:n,kind:a,symbol:t,codePoint:r},e)}var RV="gimsuxy";function OV(n){var a=new Set,e=!0,t=!1,r=void 0;try{for(var i=n[Symbol.iterator](),s;!(e=(s=i.next()).done);e=!0){var o=s.value;if(a.has(o)||!RV.includes(o))throw new SyntaxError("Invalid flags: "+n);a.add(o)}}catch(l){t=!0,r=l}finally{try{!e&&i.return&&i.return()}finally{if(t)throw r}}return n.split("").sort().join("")}function NV(n,a){var e=Number(n.slice(1));return e>0&&e<=jb?Nt({type:"Backreference",kind:"number",number:e,reference:e},a):ur(n,"decimal",a)}var LV=/^\\u[0-9a-fA-F]{4}/,jV=/^\\u\{[0-9a-fA-F]{1,}\}/,HV=/\\u\{[0-9a-fA-F]{1,}\}/;function $S(n,a){var e=HV.test(n),t=a==="u"||a==="xu"||a==="u_class";if(e&&!t)throw new SyntaxError('invalid group Unicode name "'+n+'", use `u` flag.');return n}var BV=/\\u(?:([dD][89aAbB][0-9a-fA-F]{2})\\u([dD][c-fC-F][0-9a-fA-F]{2})|([dD][89aAbB][0-9a-fA-F]{2})|([dD][c-fC-F][0-9a-fA-F]{2})|([0-9a-ce-fA-CE-F][0-9a-fA-F]{3}|[dD][0-7][0-9a-fA-F]{2})|\{(0*(?:[0-9a-fA-F]{1,5}|10[0-9a-fA-F]{4}))\})/;function KS(n){return n.replace(new RegExp(BV,"g"),function(a,e,t,r,i,s,o){return e?String.fromCodePoint(parseInt(e,16),parseInt(t,16)):r?String.fromCodePoint(parseInt(r,16)):i?String.fromCodePoint(parseInt(i,16)):s?String.fromCodePoint(parseInt(s,16)):o?String.fromCodePoint(parseInt(o,16)):a})}function VV(n,a){var e=n.slice(3,-1),t=KS(e);if($c.hasOwnProperty(t))return Nt({type:"Backreference",kind:"name",number:$c[t],reference:t,referenceRaw:e},a);var r=null,i=null,s=null,o=null;a&&(r=a.startOffset,i=a.startLine,s=a.endLine,o=a.startColumn);var l=/^[\w$<>]/,c=void 0,u=[ur(n.slice(1,2),"simple",r?{startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:r+=2,endColumn:o+=2}:null)];for(u[0].escaped=!0,n=n.slice(2);n.length>0;){var p=null;(p=n.match(LV))||(p=n.match(jV))?(r&&(c={startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:r+=p[0].length,endColumn:o+=p[0].length}),u.push(ur(p[0],"unicode",c)),n=n.slice(p[0].length)):(p=n.match(l))&&(r&&(c={startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:++r,endColumn:++o}),u.push(ur(p[0],"simple",c)),n=n.slice(1))}return u}function Nt(n,a){return sa.options.captureLocations&&(n.loc={source:GS.slice(a.startOffset,a.endOffset),start:{line:a.startLine,column:a.startColumn,offset:a.startOffset},end:{line:a.endLine,column:a.endColumn,offset:a.endOffset}}),n}function Zf(n,a){return sa.options.captureLocations?{startOffset:n.startOffset,endOffset:a.endOffset,startLine:n.startLine,endLine:a.endLine,startColumn:n.startColumn,endColumn:a.endColumn}:null}function _S(n){n.type===qS&&QS(),$r.throwUnexpectedToken(n.value,n.startLine,n.startColumn)}function QS(){WV("Unexpected end of input.")}function WV(n){throw new SyntaxError(n)}XS.exports=Eo});var Uc=ve((z9,ZS)=>{"use strict";var _c=JS(),zV=_c.parse.bind(_c);_c.parse=function(n,a){return zV(""+n,a)};_c.setOptions({captureLocations:!1});ZS.exports=_c});var th=ve(($9,tD)=>{"use strict";var $V=(function(){function n(a,e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:null,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;_V(this,n),this.node=a,this.parentPath=e,this.parent=e?e.node:null,this.property=t,this.index=r}return $V(n,[{key:"_enforceProp",value:function(e){if(!this.node.hasOwnProperty(e))throw new Error("Node of type "+this.node.type+` doesn't have "`+e+'" collection.')}},{key:"setChild",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=void 0;return t!=null?(r||(r=eh),this._enforceProp(r),this.node[r][t]=e,i=n.getForNode(e,this,r,t)):(r||(r=eD),this._enforceProp(r),this.node[r]=e,i=n.getForNode(e,this,r,null)),i}},{key:"appendChild",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;t||(t=eh),this._enforceProp(t);var r=this.node[t].length;return this.setChild(e,r,t)}},{key:"insertChildAt",value:function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eh;this._enforceProp(r),this.node[r].splice(t,0,e),t<=n.getTraversingIndex()&&n.updateTraversingIndex(1),this._rebuildIndex(this.node,r)}},{key:"remove",value:function(){if(!this.isRemoved()&&(n.registry.delete(this.node),this.node=null,!!this.parent)){if(this.index!==null){this.parent[this.property].splice(this.index,1),this.index<=n.getTraversingIndex()&&n.updateTraversingIndex(-1),this._rebuildIndex(this.parent,this.property),this.index=null,this.property=null;return}delete this.parent[this.property],this.property=null}}},{key:"_rebuildIndex",value:function(e,t){for(var r=n.getForNode(e),i=0;i0&&arguments[0]!==void 0?arguments[0]:0;return this.node.expressions?n.getForNode(this.node.expressions[e],this,eh,e):this.node.expression&&e==0?n.getForNode(this.node.expression,this,eD):null}},{key:"hasEqualSource",value:function(e){return JSON.stringify(this.node,Hb)===JSON.stringify(e.node,Hb)}},{key:"jsonEncode",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.format,r=e.useLoc;return JSON.stringify(this.node,r?null:Hb,t)}},{key:"getPreviousSibling",value:function(){return!this.parent||this.index==null?null:n.getForNode(this.parent[this.property][this.index-1],n.getForNode(this.parent),this.property,this.index-1)}},{key:"getNextSibling",value:function(){return!this.parent||this.index==null?null:n.getForNode(this.parent[this.property][this.index+1],n.getForNode(this.parent),this.property,this.index+1)}}],[{key:"getForNode",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1;if(!e)return null;n.registry.has(e)||n.registry.set(e,new n(e,t,r,i==-1?null:i));var s=n.registry.get(e);return t!==null&&(s.parentPath=t,s.parent=s.parentPath.node),r!==null&&(s.property=r),i>=0&&(s.index=i),s}},{key:"initRegistry",value:function(){n.registry||(n.registry=new Map),n.registry.clear()}},{key:"updateTraversingIndex",value:function(e){return n.traversingIndexStack[n.traversingIndexStack.length-1]+=e}},{key:"getTraversingIndex",value:function(){return n.traversingIndexStack[n.traversingIndexStack.length-1]}}]),n})();Bb.initRegistry();Bb.traversingIndexStack=[];function Hb(n,a){if(n!=="loc")return a}tD.exports=Bb});var Vb=ve((_9,aD)=>{"use strict";var Yl=th();function UV(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},e=a.pre,t=a.post,r=a.skipProperty;function i(s,o,l,c){if(!(!s||typeof s.type!="string")){var u=void 0;if(e&&(u=e(s,o,l,c)),u!==!1){o&&o[l]&&(isNaN(c)?s=o[l]:s=o[l][c]);for(var p in s)if(s.hasOwnProperty(p)){if(r?r(p,s):p[0]==="$")continue;var m=s[p];if(Array.isArray(m)){var f=0;for(Yl.traversingIndexStack.push(f);f2&&arguments[2]!==void 0?arguments[2]:{asNodes:!1};Array.isArray(e)||(e=[e]),e=e.filter(function(i){return typeof i.shouldRun!="function"?!0:i.shouldRun(a)}),Yl.initRegistry(),e.forEach(function(i){typeof i.init=="function"&&i.init(a)});function r(i,s,o,l){var c=Yl.getForNode(s),u=Yl.getForNode(i,c,o,l);return u}UV(a,{pre:function(s,o,l,c){var u=void 0;t.asNodes||(u=r(s,o,l,c));var p=!0,m=!1,f=void 0;try{for(var h=e[Symbol.iterator](),g;!(p=(g=h.next()).done);p=!0){var k=g.value;if(typeof k["*"]=="function")if(u){if(!u.isRemoved()){var y=k["*"](u);if(y===!1)return!1}}else k["*"](s,o,l,c);var b=void 0;if(typeof k[s.type]=="function"?b=k[s.type]:typeof k[s.type]=="object"&&typeof k[s.type].pre=="function"&&(b=k[s.type].pre),b)if(u){if(!u.isRemoved()){var v=b.call(k,u);if(v===!1)return!1}}else b.call(k,s,o,l,c)}}catch(w){m=!0,f=w}finally{try{!p&&h.return&&h.return()}finally{if(m)throw f}}},post:function(s,o,l,c){if(s){var u=void 0;t.asNodes||(u=r(s,o,l,c));var p=!0,m=!1,f=void 0;try{for(var h=e[Symbol.iterator](),g;!(p=(g=h.next()).done);p=!0){var k=g.value,y=void 0;if(typeof k[s.type]=="object"&&typeof k[s.type].post=="function"&&(y=k[s.type].post),y)if(u){if(!u.isRemoved()){var b=y.call(k,u);if(b===!1)return!1}}else y.call(k,s,o,l,c)}}catch(v){m=!0,f=v}finally{try{!p&&h.return&&h.return()}finally{if(m)throw f}}}},skipProperty:function(s){return s==="loc"}})}}});var ah=ve((U9,nD)=>{"use strict";var YV=(function(){function n(a,e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:null;qV(this,n),this._ast=a,this._source=null,this._string=null,this._regexp=null,this._extra=e}return YV(n,[{key:"getAST",value:function(){return this._ast}},{key:"setExtra",value:function(e){this._extra=e}},{key:"getExtra",value:function(){return this._extra}},{key:"toRegExp",value:function(){return this._regexp||(this._regexp=new RegExp(this.getSource(),this._ast.flags)),this._regexp}},{key:"getSource",value:function(){return this._source||(this._source=rD.generate(this._ast.body)),this._source}},{key:"getFlags",value:function(){return this._ast.flags}},{key:"toString",value:function(){return this._string||(this._string=rD.generate(this._ast)),this._string}}]),n})();nD.exports={TransformResult:iD,transform:function(a,e){var t=a;return a instanceof RegExp&&(a=""+a),typeof a=="string"&&(t=GV.parse(a,{captureLocations:!0})),KV.traverse(t,e),new iD(t)}}});var oD=ve((Y9,sD)=>{"use strict";var rh=OS(),QV=ah();sD.exports={transform:function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=e.length>0?e:Object.keys(rh),r=void 0,i={};return t.forEach(function(s){if(!rh.hasOwnProperty(s))throw new Error("Unknown compat-transform: "+s+". Available transforms are: "+Object.keys(rh).join(", "));var o=rh[s];r=QV.transform(a,o),a=r.getAST(),typeof o.getExtra=="function"&&(i[s]=o.getExtra())}),r.setExtra(i),r}}});var dD=ve((q9,lD)=>{"use strict";lD.exports=function n(a){if(a===null||typeof a!="object")return a;var e=void 0;Array.isArray(a)?e=[]:e={};for(var t in a)e[t]=n(a[t]);return e}});var uD=ve((G9,cD)=>{"use strict";cD.exports={shouldRun:function(a){return a.flags.includes("u")},Char:function(a){var e=a.node;e.kind!=="unicode"||!e.isSurrogatePair||isNaN(e.codePoint)||(e.value="\\u{"+e.codePoint.toString(16)+"}",delete e.isSurrogatePair)}}});var vD=ve((K9,yD)=>{"use strict";var pD="A".codePointAt(0),mD="Z".codePointAt(0),fD="a".codePointAt(0),hD="z".codePointAt(0),gD="0".codePointAt(0),kD="9".codePointAt(0);yD.exports={Char:function(a){var e=a.node,t=a.parent;if(!(isNaN(e.codePoint)||e.kind==="simple")&&!(t.type==="ClassRange"&&!XV(t))&&JV(e.codePoint)){var r=String.fromCodePoint(e.codePoint),i={type:"Char",kind:"simple",value:r,symbol:r,codePoint:e.codePoint};ZV(r,t.type)&&(i.escaped=!0),a.replace(i)}}};function XV(n){var a=n.from,e=n.to;return a.codePoint>=gD&&a.codePoint<=kD&&e.codePoint>=gD&&e.codePoint<=kD||a.codePoint>=pD&&a.codePoint<=mD&&e.codePoint>=pD&&e.codePoint<=mD||a.codePoint>=fD&&a.codePoint<=hD&&e.codePoint>=fD&&e.codePoint<=hD}function JV(n){return n>=32&&n<=126}function ZV(n,a){return a==="ClassRange"||a==="CharacterClass"?/[\]\\^-]/.test(n):/[*[()+?^$./\\|{}]/.test(n)}});var xD=ve((Q9,TD)=>{"use strict";var bD="A".codePointAt(0),wD="Z".codePointAt(0);TD.exports={_AZClassRanges:null,_hasUFlag:!1,init:function(a){this._AZClassRanges=new Set,this._hasUFlag=a.flags.includes("u")},shouldRun:function(a){return a.flags.includes("i")},Char:function(a){var e=a.node,t=a.parent;if(!isNaN(e.codePoint)&&!(!this._hasUFlag&&e.codePoint>=4096)){if(t.type==="ClassRange"){if(!this._AZClassRanges.has(t)&&!eW(t))return;this._AZClassRanges.add(t)}var r=e.symbol.toLowerCase();r!==e.symbol&&(e.value=tW(r,e),e.symbol=r,e.codePoint=r.codePointAt(0))}}};function eW(n){var a=n.from,e=n.to;return a.codePoint>=bD&&a.codePoint<=wD&&e.codePoint>=bD&&e.codePoint<=wD}function tW(n,a){var e=n.codePointAt(0);if(a.kind==="decimal")return"\\"+e;if(a.kind==="oct")return"\\0"+e.toString(8);if(a.kind==="hex")return"\\x"+e.toString(16);if(a.kind==="unicode")if(a.isSurrogatePair){var t=aW(e),r=t.lead,i=t.trail;return"\\u"+"0".repeat(4-r.length)+r+"\\u"+"0".repeat(4-i.length)+i}else{if(a.value.includes("{"))return"\\u{"+e.toString(16)+"}";var s=e.toString(16);return"\\u"+"0".repeat(4-s.length)+s}return n}function aW(n){var a=Math.floor((n-65536)/1024)+55296,e=(n-65536)%1024+56320;return{lead:a.toString(16),trail:e.toString(16)}}});var SD=ve((X9,CD)=>{"use strict";CD.exports={CharacterClass:function(a){for(var e=a.node,t={},r=0;r{"use strict";function rW(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a{"use strict";var sW=ih(),oW=sW.increaseQuantifierByOne;MD.exports={Repetition:function(a){var e=a.node,t=a.parent;if(!(t.type!=="Alternative"||!a.index)){var r=a.getPreviousSibling();if(r)if(r.node.type==="Repetition"){if(!r.getChild().hasEqualSource(a.getChild()))return;var i=PD(r.node.quantifier),s=i.from,o=i.to,l=PD(e.quantifier),c=l.from,u=l.to;if(r.node.quantifier.greedy!==e.quantifier.greedy&&!nh(r.node.quantifier)&&!nh(e.quantifier))return;e.quantifier.kind="Range",e.quantifier.from=s+c,o&&u?e.quantifier.to=o+u:delete e.quantifier.to,(nh(r.node.quantifier)||nh(e.quantifier))&&(e.quantifier.greedy=!0),r.remove()}else{if(!r.hasEqualSource(a.getChild()))return;oW(e.quantifier),r.remove()}}}};function nh(n){return n.greedy&&(n.kind==="+"||n.kind==="*"||n.kind==="Range"&&!n.to)}function PD(n){var a=void 0,e=void 0;return n.kind==="*"?a=0:n.kind==="+"?a=1:n.kind==="?"?(a=0,e=1):(a=n.from,n.to&&(e=n.to)),{from:a,to:e}}});var FD=ve((eK,AD)=>{"use strict";AD.exports={Quantifier:function(a){var e=a.node;e.kind==="Range"&&(lW(a),dW(a),cW(a))}};function lW(n){var a=n.node;a.from!==0||a.to||(a.kind="*",delete a.from)}function dW(n){var a=n.node;a.from!==1||a.to||(a.kind="+",delete a.from)}function cW(n){var a=n.node;a.from!==1||a.to!==1||n.parentPath.replace(n.parentPath.node.expression)}});var OD=ve((tK,RD)=>{"use strict";RD.exports={ClassRange:function(a){var e=a.node;e.from.codePoint===e.to.codePoint?a.replace(e.from):e.from.codePoint===e.to.codePoint-1&&(a.getParent().insertChildAt(e.to,a.index+1),a.replace(e.from))}}});var HD=ve((aK,jD)=>{"use strict";function ND(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a2&&arguments[2]!==void 0?arguments[2]:"simple";return n.type==="Char"&&n.value===a&&n.kind===e}function zb(n,a){return LD(n,a,"meta")}function hW(n){return n.type==="ClassRange"&&n.from.value==="a"&&n.to.value==="z"}function gW(n){return n.type==="ClassRange"&&n.from.value==="A"&&n.to.value==="Z"}function kW(n){return n.type==="Char"&&n.value==="_"&&n.kind==="simple"}function Yc(n,a){return n.type==="Char"&&n.kind==="unicode"&&n.codePoint===a}});var VD=ve((rK,BD)=>{"use strict";BD.exports={CharacterClass:function(a){var e=a.node;if(!(e.expressions.length!==1||!wW(a)||!yW(e.expressions[0]))){var t=e.expressions[0],r=t.value,i=t.kind,s=t.escaped;if(e.negative){if(!vW(r))return;r=bW(r)}a.replace({type:"Char",value:r,kind:i,escaped:s||TW(r)})}}};function yW(n){return n.type==="Char"&&n.value!=="\\b"}function vW(n){return/^\\[dwsDWS]$/.test(n)}function bW(n){return/[dws]/.test(n)?n.toUpperCase():n.toLowerCase()}function wW(n){var a=n.parent,e=n.index;if(a.type!=="Alternative")return!0;var t=a.expressions[e-1];return t==null?!0:!(t.type==="Backreference"&&t.kind==="number"||t.type==="Char"&&t.kind==="decimal")}function TW(n){return/[*[()+?$./{}|]/.test(n)}});var zD=ve((iK,WD)=>{"use strict";WD.exports={_hasXFlag:!1,init:function(a){this._hasXFlag=a.flags.includes("x")},Char:function(a){var e=a.node;e.escaped&&xW(a,this._hasXFlag)&&delete e.escaped}};function xW(n,a){var e=n.node.value,t=n.index,r=n.parent;return r.type!=="CharacterClass"&&r.type!=="ClassRange"?!SW(e,t,r,a):!CW(e,t,r)}function CW(n,a,e){return n==="^"?a===0&&!e.negative:n==="-"?!0:/[\]\\]/.test(n)}function SW(n,a,e,t){return n==="{"?DW(a,e):n==="}"?EW(a,e):t&&/[ #]/.test(n)?!0:/[*[()+?^$./\\|]/.test(n)}function sh(n,a,e){for(var t=n,r=(e?t>=0:t=0:t=0&&a.expressions[t];return e&&ql(r,"{")?!0:ql(r,",")?(e=sh(t-1,a,!0),t=t-e-1,r=t{"use strict";UD.exports={_hasIUFlags:!1,init:function(a){this._hasIUFlags=a.flags.includes("i")&&a.flags.includes("u")},CharacterClass:function(a){var e=a.node,t=e.expressions,r=[];t.forEach(function(l){Yn(l)&&r.push(l.value)}),t.sort(PW);for(var i=0;i1&&arguments[1]!==void 0?arguments[1]:null;return n.type==="Char"&&n.kind==="meta"&&(a?n.value===a:/^\\[dws]$/i.test(n.value))}function $D(n){return n.type==="Char"&&n.kind==="control"}function MW(n,a,e){for(var t=0;t=8192&&n.codePoint<=8202||n.codePoint===8232||n.codePoint===8233||n.codePoint===8239||n.codePoint===8287||n.codePoint===12288||n.codePoint===65279}function _b(n){return n.codePoint>=48&&n.codePoint<=57}function Ub(n,a){return _b(n)||n.codePoint>=65&&n.codePoint<=90||n.codePoint>=97&&n.codePoint<=122||n.value==="_"||a&&(n.codePoint===383||n.codePoint===8490)}function IW(n,a){if(a&&a.type==="ClassRange"){if(Yb(n,a))return!0;if(lh(n)&&a.to.codePoint===n.codePoint-1)return a.to=n,!0;if(n.type==="ClassRange"&&n.from.codePoint<=a.to.codePoint+1&&n.to.codePoint>=a.from.codePoint-1)return n.from.codePointa.to.codePoint&&(a.to=n.to),!0}return!1}function AW(n,a){return a&&a.type==="ClassRange"&&lh(n)&&a.from.codePoint===n.codePoint+1?(a.from=n,!0):!1}function Yb(n,a){return n.type==="Char"&&isNaN(n.codePoint)?!1:n.type==="ClassRange"?Yb(n.from,a)&&Yb(n.to,a):n.codePoint>=a.from.codePoint&&n.codePoint<=a.to.codePoint}function FW(n,a,e){if(!lh(n))return 0;for(var t=0;a>0;){var r=e[a],i=e[a-1];if(lh(i)&&i.codePoint===r.codePoint-1)t++,a--;else break}return t>1?(e[a]={type:"ClassRange",from:e[a],to:n},t):0}function lh(n){return n&&n.type==="Char"&&!isNaN(n.codePoint)&&(Ub(n,!1)||n.kind==="unicode"||n.kind==="hex"||n.kind==="oct"||n.kind==="decimal")}});var KD=ve((sK,GD)=>{"use strict";var RW=th(),qD=ih(),OW=qD.disjunctionToList,NW=qD.listToDisjunction;GD.exports={Disjunction:function(a){var e=a.node,t={},r=OW(e).filter(function(i){var s=i?RW.getForNode(i).jsonEncode():"null";return t.hasOwnProperty(s)?!1:(t[s]=i,!0)});a.replace(NW(r))}}});var JD=ve((oK,XD)=>{"use strict";XD.exports={Disjunction:function(a){var e=a.node,t=a.parent;if(QD[t.type]){var r=new Map;if(!(!dh(e,r)||!r.size)){var i={type:"CharacterClass",expressions:Array.from(r.keys()).sort().map(function(s){return r.get(s)})};QD[t.type](a.getParent(),i)}}}};var QD={RegExp:function(a,e){var t=a.node;t.body=e},Group:function(a,e){var t=a.node;t.capturing?t.expression=e:a.replace(e)}};function dh(n,a){if(!n)return!1;var e=n.type;if(e==="Disjunction"){var t=n.left,r=n.right;return dh(t,a)&&dh(r,a)}else if(e==="Char"){if(n.kind==="meta"&&n.symbol===".")return!1;var i=n.value;return a.set(i,n),!0}else if(e==="CharacterClass"&&!n.negative)return n.expressions.every(function(s){return dh(s,a)});return!1}});var eE=ve((lK,ZD)=>{"use strict";ZD.exports={Group:function(a){var e=a.node,t=a.parent,r=a.getChild();e.capturing||r||(t.type==="Repetition"?a.getParent().replace(e):t.type!=="RegExp"&&a.remove())}}});var aE=ve((dK,tE)=>{"use strict";function qb(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a{"use strict";function ch(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a=e.expressions.length||(r=a.getChild(t),t=Math.max(1,BW(a,r,t)),t>=e.expressions.length))break;r=a.getChild(t),t=Math.max(1,VW(a,r,t)),t++}}};function HW(n,a,e){for(var t=n.node,r=Math.ceil(e/2),i=0;i{"use strict";sE.exports=new Map([["charSurrogatePairToSingleUnicode",uD()],["charCodeToSimpleChar",vD()],["charCaseInsensitiveLowerCaseTransform",xD()],["charClassRemoveDuplicates",SD()],["quantifiersMerge",ID()],["quantifierRangeToSymbol",FD()],["charClassClassrangesToChars",OD()],["charClassToMeta",HD()],["charClassToSingleChar",VD()],["charEscapeUnescape",zD()],["charClassClassrangesMerge",YD()],["disjunctionRemoveDuplicates",KD()],["groupSingleCharsToCharClass",JD()],["removeEmptyGroup",eE()],["ungroup",aE()],["combineRepeatingPatterns",nE()]])});var uE=ve((pK,cE)=>{"use strict";var lE=dD(),WW=Uc(),dE=ah(),ph=oE();cE.exports={optimize:function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.whitelist,r=t===void 0?[]:t,i=e.blacklist,s=i===void 0?[]:i,o=r.length>0?r:Array.from(ph.keys()),l=o.filter(function(m){return!s.includes(m)}),c=a;a instanceof RegExp&&(a=""+a),typeof a=="string"&&(c=WW.parse(a));var u=new dE.TransformResult(c),p=void 0;do p=u.toString(),c=lE(u.getAST()),l.forEach(function(m){if(!ph.has(m))throw new Error("Unknown optimization-transform: "+m+". Available transforms are: "+Array.from(ph.keys()).join(", "));var f=ph.get(m),h=dE.transform(c,f);h.toString()!==u.toString()&&(h.toString().length<=u.toString().length?u=h:c=lE(u.getAST()))});while(u.toString()!==p);return u}}});var qc=ve((mK,mE)=>{"use strict";var pE="\u03B5",zW=pE+"*";mE.exports={EPSILON:pE,EPSILON_CLOSURE:zW}});var Gb=ve((fK,gE)=>{"use strict";var $W=(function(){function n(a,e){var t=[],r=!0,i=!1,s=void 0;try{for(var o=a[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(t.push(l.value),!(e&&t.length===e));r=!0);}catch(c){i=!0,s=c}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return t}return function(a,e){if(Array.isArray(a))return a;if(Symbol.iterator in Object(a))return n(a,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),_W=(function(){function n(a,e){for(var t=0;t{"use strict";var KW=(function(){function n(a,e){var t=[],r=!0,i=!1,s=void 0;try{for(var o=a[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(t.push(l.value),!(e&&t.length===e));r=!0);}catch(c){i=!0,s=c}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return t}return function(a,e){if(Array.isArray(a))return a;if(Symbol.iterator in Object(a))return n(a,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})();function QW(n){return Array.isArray(n)?n:Array.from(n)}function Kb(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a0})],o=void 0,l=void 0;o=s[s.length-1],l=s[s.length-2];for(var c=function(){var de={},Te=!0,Re=!1,Pe=void 0;try{for(var nt=o[Symbol.iterator](),et;!(Te=(et=nt.next()).done);Te=!0){var Ne=et.value,oe={},ge=QW(Ne),Ee=ge[0],tt=ge.slice(1);oe[Ee]=new Set([Ee]);var Ke=!0,ue=!1,wt=void 0;try{e:for(var st=tt[Symbol.iterator](),xa;!(Ke=(xa=st.next()).done);Ke=!0){var Gt=xa.value,pt=!0,Dt=!1,dr=void 0;try{for(var wr=Object.keys(oe)[Symbol.iterator](),ai;!(pt=(ai=wr.next()).done);pt=!0){var ia=ai.value;if(ZW(Gt,ia,a,t)){oe[ia].add(Gt),oe[Gt]=oe[ia];continue e}}}catch(qa){Dt=!0,dr=qa}finally{try{!pt&&wr.return&&wr.return()}finally{if(Dt)throw dr}}oe[Gt]=new Set([Gt])}}catch(qa){ue=!0,wt=qa}finally{try{!Ke&&st.return&&st.return()}finally{if(ue)throw wt}}Object.assign(de,oe)}}catch(qa){Re=!0,Pe=qa}finally{try{!Te&&nt.return&&nt.return()}finally{if(Re)throw Pe}}qn=de;var ri=new Set(Object.keys(de).map(function(qa){return de[qa]}));s.push([].concat(Kb(ri))),o=s[s.length-1],l=s[s.length-2]};!JW(o,l);)c();var u=new Map,p=1;o.forEach(function(le){return u.set(le,p++)});var m={},f=new Set,h=function(de,Te){var Re=!0,Pe=!1,nt=void 0;try{for(var et=de[Symbol.iterator](),Ne;!(Re=(Ne=et.next()).done);Re=!0){var oe=Ne.value;r.has(oe)&&f.add(Te)}}catch(ge){Pe=!0,nt=ge}finally{try{!Re&&et.return&&et.return()}finally{if(Pe)throw nt}}},g=!0,k=!1,y=void 0;try{for(var b=u.entries()[Symbol.iterator](),v;!(g=(v=b.next()).done);g=!0){var w=v.value,x=KW(w,2),T=x[0],C=x[1];m[C]={};var S=!0,E=!1,A=void 0;try{for(var N=t[Symbol.iterator](),I;!(S=(I=N.next()).done);S=!0){var R=I.value;h(T,C);var j=void 0,W=!0,B=!1,X=void 0;try{for(var V=T[Symbol.iterator](),G;!(W=(G=V.next()).done);W=!0){var Y=G.value;if(j=a[Y][R],j)break}}catch(le){B=!0,X=le}finally{try{!W&&V.return&&V.return()}finally{if(B)throw X}}j&&(m[C][R]=u.get(qn[j]))}}catch(le){E=!0,A=le}finally{try{!S&&N.return&&N.return()}finally{if(E)throw A}}}}catch(le){k=!0,y=le}finally{try{!g&&b.return&&b.return()}finally{if(k)throw y}}return n.setTransitionTable(m),n.setAcceptingStateNumbers(f),n}function JW(n,a){if(!a||n.length!==a.length)return!1;for(var e=0;e{"use strict";var t5=(function(){function n(a,e){for(var t=0;t0;){var p=s.shift(),m=p.join(",");c[m]={};var f=!0,h=!1,g=void 0;try{for(var k=o[Symbol.iterator](),y;!(f=(y=k.next()).done);f=!0){var b=y.value,v=[];u(p);var w=!0,x=!1,T=void 0;try{for(var C=p[Symbol.iterator](),S;!(w=(S=C.next()).done);w=!0){var E=S.value,A=t[E][b];if(A){var N=!0,I=!1,R=void 0;try{for(var j=A[Symbol.iterator](),W;!(N=(W=j.next()).done);N=!0){var B=W.value;t[B]&&v.push.apply(v,vE(t[B][bE]))}}catch(Y){I=!0,R=Y}finally{try{!N&&j.return&&j.return()}finally{if(I)throw R}}}}}catch(Y){x=!0,T=Y}finally{try{!w&&C.return&&C.return()}finally{if(x)throw T}}var X=new Set(v),V=[].concat(vE(X));if(V.length>0){var G=V.join(",");c[m][b]=G,c.hasOwnProperty(G)||s.unshift(V)}}}catch(Y){h=!0,g=Y}finally{try{!f&&k.return&&k.return()}finally{if(h)throw g}}}return this._transitionTable=this._remapStateNumbers(c)}},{key:"_remapStateNumbers",value:function(e){var t={};this._originalTransitionTable=e;var r={};Object.keys(e).forEach(function(g,k){t[g]=k+1});for(var i in e){var s=e[i],o={};for(var l in s)o[l]=t[s[l]];r[t[i]]=o}this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._acceptingStateNumbers=new Set;var c=!0,u=!1,p=void 0;try{for(var m=this._originalAcceptingStateNumbers[Symbol.iterator](),f;!(c=(f=m.next()).done);c=!0){var h=f.value;this._acceptingStateNumbers.add(t[h])}}catch(g){u=!0,p=g}finally{try{!c&&m.return&&m.return()}finally{if(u)throw p}}return r}},{key:"getOriginalTransitionTable",value:function(){return this._originalTransitionTable||this.getTransitionTable(),this._originalTransitionTable}},{key:"matches",value:function(e){for(var t=1,r=0,i=this.getTransitionTable();e[r];)if(t=i[t][e[r++]],!t)return!1;return!!this.getAcceptingStateNumbers().has(t)}}]),n})();wE.exports=n5});var CE=ve((kK,xE)=>{"use strict";var s5=(function(){function n(a,e){for(var t=0;t0&&arguments[0]!==void 0?arguments[0]:{},e=a.accepting,t=e===void 0?!1:e;o5(this,n),this._transitions=new Map,this.accepting=t}return s5(n,[{key:"getTransitions",value:function(){return this._transitions}},{key:"addTransition",value:function(e,t){return this.getTransitionsOnSymbol(e).add(t),this}},{key:"getTransitionsOnSymbol",value:function(e){var t=this._transitions.get(e);return t||(t=new Set,this._transitions.set(e,t)),t}}]),n})();xE.exports=l5});var DE=ve((yK,SE)=>{"use strict";var d5=(function(){function n(a,e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:new Set;if(r.has(this))return!1;if(r.add(this),t.length===0){if(this.accepting)return!0;var i=!0,s=!1,o=void 0;try{for(var l=this.getTransitionsOnSymbol(Qb)[Symbol.iterator](),c;!(i=(c=l.next()).done);i=!0){var u=c.value;if(u.matches("",r))return!0}}catch(A){s=!0,o=A}finally{try{!i&&l.return&&l.return()}finally{if(s)throw o}}return!1}var p=t[0],m=t.slice(1),f=this.getTransitionsOnSymbol(p),h=!0,g=!1,k=void 0;try{for(var y=f[Symbol.iterator](),b;!(h=(b=y.next()).done);h=!0){var v=b.value;if(v.matches(m))return!0}}catch(A){g=!0,k=A}finally{try{!h&&y.return&&y.return()}finally{if(g)throw k}}var w=!0,x=!1,T=void 0;try{for(var C=this.getTransitionsOnSymbol(Qb)[Symbol.iterator](),S;!(w=(S=C.next()).done);w=!0){var E=S.value;if(E.matches(t,r))return!0}}catch(A){x=!0,T=A}finally{try{!w&&C.return&&C.return()}finally{if(x)throw T}}return!1}},{key:"getEpsilonClosure",value:function(){var t=this;return this._epsilonClosure||(function(){var r=t.getTransitionsOnSymbol(Qb),i=t._epsilonClosure=new Set;i.add(t);var s=!0,o=!1,l=void 0;try{for(var c=r[Symbol.iterator](),u;!(s=(u=c.next()).done);s=!0){var p=u.value;if(!i.has(p)){i.add(p);var m=p.getEpsilonClosure();m.forEach(function(f){return i.add(f)})}}}catch(f){o=!0,l=f}finally{try{!s&&c.return&&c.return()}finally{if(o)throw l}}})(),this._epsilonClosure}}]),a})(m5);SE.exports=h5});var Xb=ve((vK,PE)=>{"use strict";var mh=Gb(),Gl=DE(),g5=qc(),Tr=g5.EPSILON;function EE(n){var a=new Gl,e=new Gl({accepting:!0});return new mh(a.addTransition(n,e),e)}function k5(){return EE(Tr)}function y5(n,a){return n.out.accepting=!1,a.out.accepting=!0,n.out.addTransition(Tr,a.in),new mh(n.in,a.out)}function v5(n){for(var a=arguments.length,e=Array(a>1?a-1:0),t=1;t1?a-1:0),t=1;t{"use strict";function D5(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a{"use strict";var O5=Gb(),FE=TE(),N5=AE(),L5=Xb();RE.exports={NFA:O5,DFA:FE,builders:L5,toNFA:function(a){return N5.build(a)},toDFA:function(a){return new FE(this.toNFA(a))},test:function(a,e){return this.toDFA(a).matches(e)}}});var LE=ve((TK,NE)=>{"use strict";var j5=(function(){function n(a,e){for(var t=0;t{"use strict";var V5=oD(),W5=Ab(),z5=uE(),jE=Uc(),HE=ah(),$5=Vb(),_5=OE(),U5=LE(),Y5=U5.RegExpTree,q5={parser:jE,fa:_5,TransformResult:HE.TransformResult,parse:function(a,e){return jE.parse(""+a,e)},traverse:function(a,e,t){return $5.traverse(a,e,t)},transform:function(a,e){return HE.transform(a,e)},generate:function(a){return W5.generate(a)},toRegExp:function(a){var e=this.compatTranspile(a);return new RegExp(e.getSource(),e.getFlags())},optimize:function(a,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=t.blacklist;return z5.optimize(a,{whitelist:e,blacklist:r})},compatTranspile:function(a,e){return V5.transform(a,e)},exec:function(a,e){if(typeof a=="string"){var t=this.compatTranspile(a),r=t.getExtra();r.namedCapturingGroups?a=new Y5(t.toRegExp(),{flags:t.getFlags(),source:t.getSource(),groups:r.namedCapturingGroups}):a=t.toRegExp()}return a.exec(e)}};BE.exports=q5});var zE=ve((CK,WE)=>{"use strict";WE.exports=VE()});var rw=ve((SK,GE)=>{"use strict";var G5=Ib(),Jb=Gf(),Os=zE(),$E=new WeakMap;function K5(n){return G5.mode==="spec-compliant"?X5(this,n):Q5(this,n)}function Q5(n,a){let e=n.lastIndex,t=Jb.call(n,a);if(t===null)return null;let r;return Object.defineProperty(t,"indices",{enumerable:!0,configurable:!0,get(){if(r===void 0){let{measurementRegExp:i,groupInfos:s}=_E(n);i.lastIndex=e;let o=Jb.call(i,a);if(o===null)throw new TypeError;si(t,"indices",r=UE(o,s))}return r},set(i){si(t,"indices",i)}}),t}function X5(n,a){let{measurementRegExp:e,groupInfos:t}=_E(n);e.lastIndex=n.lastIndex;let r=Jb.call(e,a);if(r===null)return null;n.lastIndex=e.lastIndex;let i=[];si(i,0,r[0]);for(let s of t)si(i,s.oldGroupNumber,r[s.newGroupNumber]);return si(i,"index",r.index),si(i,"input",r.input),si(i,"groups",r.groups),si(i,"indices",UE(r,t)),i}function _E(n){let a=$E.get(n);a||(a=rz(Os.parse(`/${n.source}/${n.flags}`)),$E.set(n,a));let e=a.getExtra();return{measurementRegExp:a.toRegExp(),groupInfos:e}}function UE(n,a){let e=n.index,t=e+n[0].length,r=!!n.groups,i=[],s=r?Object.create(null):void 0;si(i,0,[e,t]);for(let o of a){let l;if(n[o.newGroupNumber]!==void 0){let c=e;if(o.measurementGroups)for(let p of o.measurementGroups)c+=n[p].length;let u=c+n[o.newGroupNumber].length;l=[c,u]}si(i,o.oldGroupNumber,l),s&&o.groupName!==void 0&&si(s,o.groupName,l)}return si(i,"groups",s),i}function si(n,a,e){let t=Object.getOwnPropertyDescriptor(n,a);if(t?t.configurable:Object.isExtensible(n)){let r={enumerable:t?t.enumerable:!0,configurable:t?t.configurable:!0,writable:!0,value:e};Object.defineProperty(n,a,r)}}var fh,Zb=!1,Kc=new Set,ew=[],Ql=!1,YE=1,hh=[],tw=new Map,aw=new Map,J5={init(){Zb=!1,Kc.clear(),ew.length=0,Ql=!1,YE=1,hh.length=0,tw.clear(),aw.clear(),fh=[]},RegExp(n){return Os.traverse(n.node,Z5),Kc.size>0&&(Os.transform(n.node,qE),Os.transform(n.node,ez),Zb&&Os.transform(n.node,tz)),!1}},Gc={pre(n){ew.push(Ql),Ql=n.node.type==="Group"&&n.node.capturing},post(n){Ql&&Kc.add(n.node),Ql=ew.pop()||Ql}},Z5={Alternative:Gc,Disjunction:Gc,Assertion:Gc,Group:Gc,Repetition:Gc,Backreference(n){Zb=!0}},qE={Alternative(n){if(Kc.has(n.node)){let a=0,e=[],t=[],r=[];for(let i=0;ia){let o={type:"Group",capturing:!0,number:-1,expression:e.length>1?{type:"Alternative",expressions:e}:e.length===1?e[0]:null};r.push(o),t.push(o),a=i,e=[]}hh.push(t),Os.transform(s,qE),hh.pop(),e.push(s);continue}e.push(s)}n.update({expressions:r.concat(e)})}return!1},Group(n){n.node.capturing&&tw.set(n.node,az())}},ez={Group(n){if(!fh)throw new Error("Not initialized.");if(!n.node.capturing)return;let a=n.node.number,e=YE++,t=tw.get(n.node);a!==-1&&(fh.push({oldGroupNumber:a,newGroupNumber:e,measurementGroups:t&&t.map(r=>r.number),groupName:n.node.name}),aw.set(a,e)),n.update({number:e})}},tz={Backreference(n){let a=aw.get(n.node.number);a&&(n.node.kind==="number"?n.update({number:a,reference:a}):n.update({number:a}))}};function az(){let n=[];for(let a of hh)for(let e of a)n.push(e);return n}function rz(n){let a=Os.transform(n,J5);return new Os.TransformResult(a.getAST(),fh)}GE.exports=K5});var iw=ve((DK,QE)=>{"use strict";var KE=Gf(),iz=rw();function nz(){let n=new RegExp("a");return KE.call(n,"a").indices?KE:iz}QE.exports=nz});var JE=ve((EK,XE)=>{"use strict";var sz=iw();function oz(){let n=sz();RegExp.prototype.exec!==n&&(RegExp.prototype.exec=n)}XE.exports=oz});var tP=ve((PK,eP)=>{"use strict";var lz=rw(),dz=Gf(),ZE=iw(),cz=JE(),uz=Ib(),pz=ZE();function Ns(n,a){return pz.call(n,a)}Ns.implementation=lz;Ns.native=dz;Ns.getPolyfill=ZE;Ns.shim=cz;Ns.config=uz;Ns||(Ns={});eP.exports=Ns});var bz,MQ,Th,hP,Zc,eu,gP,wz,kP,IQ,Tz,xz,AQ,gw,Mo=D(()=>{bz=Math.pow(10,8)*24*60*60*1e3,MQ=-bz,Th=6048e5,hP=864e5,Zc=6e4,eu=36e5,gP=1e3,wz=3600,kP=wz*24,IQ=kP*7,Tz=kP*365.2425,xz=Tz/12,AQ=xz*3,gw=Symbol.for("constructDateFrom")});function Ie(n,a){return typeof n=="function"?n(a):n&&typeof n=="object"&&gw in n?n[gw](a):n instanceof Date?new n.constructor(a):new Date(a)}var Qt=D(()=>{Mo()});function Ae(n,a){return Ie(a||n,n)}var Xt=D(()=>{Qt()});function td(n,a,e){let t=Ae(n,e==null?void 0:e.in);return isNaN(a)?Ie((e==null?void 0:e.in)||n,NaN):(a&&t.setDate(t.getDate()+a),t)}var tu=D(()=>{Qt();Xt()});var yP=D(()=>{});var vP=D(()=>{});var bP=D(()=>{});var wP=D(()=>{});var TP=D(()=>{});var xP=D(()=>{});var CP=D(()=>{});var SP=D(()=>{});function oi(){return Cz}var Cz,Io=D(()=>{Cz={}});function Cr(n,a){var o,l,c,u,p,m,f,h;let e=oi(),t=(h=(f=(u=(c=a==null?void 0:a.weekStartsOn)!=null?c:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.weekStartsOn)!=null?u:e.weekStartsOn)!=null?f:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?h:0,r=Ae(n,a==null?void 0:a.in),i=r.getDay(),s=(i{Io();Xt()});function Hi(n,a){return Cr(n,{...a,weekStartsOn:1})}var Ao=D(()=>{Hs()});function xh(n,a){let e=Ae(n,a==null?void 0:a.in),t=e.getFullYear(),r=Ie(e,0);r.setFullYear(t+1,0,4),r.setHours(0,0,0,0);let i=Hi(r),s=Ie(e,0);s.setFullYear(t,0,4),s.setHours(0,0,0,0);let o=Hi(s);return e.getTime()>=i.getTime()?t+1:e.getTime()>=o.getTime()?t:t-1}var Ch=D(()=>{Qt();Ao();Xt()});function Fo(n){let a=Ae(n),e=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()));return e.setUTCFullYear(a.getFullYear()),+n-+e}var Sh=D(()=>{Xt()});function ad(n,...a){let e=Ie.bind(null,n||a.find(t=>typeof t=="object"));return a.map(e)}var Dh=D(()=>{Qt()});function Jn(n,a){let e=Ae(n,a==null?void 0:a.in);return e.setHours(0,0,0,0),e}var Eh=D(()=>{Xt()});function DP(n,a,e){let[t,r]=ad(e==null?void 0:e.in,n,a),i=Jn(t),s=Jn(r),o=+i-Fo(i),l=+s-Fo(s);return Math.round((o-l)/hP)}var kw=D(()=>{Sh();Dh();Mo();Eh()});function EP(n,a){let e=xh(n,a),t=Ie((a==null?void 0:a.in)||n,0);return t.setFullYear(e,0,4),t.setHours(0,0,0,0),Hi(t)}var yw=D(()=>{Qt();Ch();Ao()});var PP=D(()=>{});var MP=D(()=>{});var IP=D(()=>{});var AP=D(()=>{});var FP=D(()=>{});var RP=D(()=>{});var OP=D(()=>{});var NP=D(()=>{});var LP=D(()=>{});var jP=D(()=>{});var HP=D(()=>{});var BP=D(()=>{});var VP=D(()=>{});var WP=D(()=>{});var zP=D(()=>{});function rd(n){return Ie(n,Date.now())}var au=D(()=>{Qt()});var $P=D(()=>{});function Ph(n,a,e){let[t,r]=ad(e==null?void 0:e.in,n,a);return+Jn(t)==+Jn(r)}var Mh=D(()=>{Dh();Eh()});function _P(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}var vw=D(()=>{});function ru(n){return!(!_P(n)&&typeof n!="number"||isNaN(+Ae(n)))}var bw=D(()=>{vw();Xt()});var UP=D(()=>{});var YP=D(()=>{});var qP=D(()=>{});var GP=D(()=>{});var KP=D(()=>{});var QP=D(()=>{});var XP=D(()=>{});var JP=D(()=>{});var ZP=D(()=>{});var eM=D(()=>{});var tM=D(()=>{});var aM=D(()=>{});var rM=D(()=>{});var iM=D(()=>{});var nM=D(()=>{});var sM=D(()=>{});var oM=D(()=>{});var lM=D(()=>{});var dM=D(()=>{});var cM=D(()=>{});var uM=D(()=>{});var pM=D(()=>{});var mM=D(()=>{});var fM=D(()=>{});var hM=D(()=>{});var gM=D(()=>{});var kM=D(()=>{});var yM=D(()=>{});var vM=D(()=>{});var bM=D(()=>{});var wM=D(()=>{});var TM=D(()=>{});var xM=D(()=>{});function CM(n,a){let e=Ae(n,a==null?void 0:a.in);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e}var ww=D(()=>{Xt()});var SM=D(()=>{});var DM=D(()=>{});var EM=D(()=>{});var PM=D(()=>{});var MM=D(()=>{});var IM=D(()=>{});var AM=D(()=>{});var FM=D(()=>{});var RM=D(()=>{});var OM=D(()=>{});var NM=D(()=>{});var LM=D(()=>{});var jM=D(()=>{});var Sz,HM,BM=D(()=>{Sz={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},HM=(n,a,e)=>{let t,r=Sz[n];return typeof r=="string"?t=r:a===1?t=r.one:t=r.other.replace("{{count}}",a.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+t:t+" ago":t}});function Ih(n){return(a={})=>{let e=a.width?String(a.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var VM=D(()=>{});var Dz,Ez,Pz,WM,zM=D(()=>{VM();Dz={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Ez={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Pz={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},WM={date:Ih({formats:Dz,defaultWidth:"full"}),time:Ih({formats:Ez,defaultWidth:"full"}),dateTime:Ih({formats:Pz,defaultWidth:"full"})}});var Mz,$M,_M=D(()=>{Mz={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},$M=(n,a,e,t)=>Mz[n]});function id(n){return(a,e)=>{let t=e!=null&&e.context?String(e.context):"standalone",r;if(t==="formatting"&&n.formattingValues){let s=n.defaultFormattingWidth||n.defaultWidth,o=e!=null&&e.width?String(e.width):s;r=n.formattingValues[o]||n.formattingValues[s]}else{let s=n.defaultWidth,o=e!=null&&e.width?String(e.width):n.defaultWidth;r=n.values[o]||n.values[s]}let i=n.argumentCallback?n.argumentCallback(a):a;return r[i]}}var UM=D(()=>{});var Iz,Az,Fz,Rz,Oz,Nz,Lz,YM,qM=D(()=>{UM();Iz={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Az={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Fz={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Rz={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Oz={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Nz={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Lz=(n,a)=>{let e=Number(n),t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},YM={ordinalNumber:Lz,era:id({values:Iz,defaultWidth:"wide"}),quarter:id({values:Az,defaultWidth:"wide",argumentCallback:n=>n-1}),month:id({values:Fz,defaultWidth:"wide"}),day:id({values:Rz,defaultWidth:"wide"}),dayPeriod:id({values:Oz,defaultWidth:"wide",formattingValues:Nz,defaultFormattingWidth:"wide"})}});function nd(n){return(a,e={})=>{let t=e.width,r=t&&n.matchPatterns[t]||n.matchPatterns[n.defaultMatchWidth],i=a.match(r);if(!i)return null;let s=i[0],o=t&&n.parsePatterns[t]||n.parsePatterns[n.defaultParseWidth],l=Array.isArray(o)?Hz(o,p=>p.test(s)):jz(o,p=>p.test(s)),c;c=n.valueCallback?n.valueCallback(l):l,c=e.valueCallback?e.valueCallback(c):c;let u=a.slice(s.length);return{value:c,rest:u}}}function jz(n,a){for(let e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&a(n[e]))return e}function Hz(n,a){for(let e=0;e{});function KM(n){return(a,e={})=>{let t=a.match(n.matchPattern);if(!t)return null;let r=t[0],i=a.match(n.parsePattern);if(!i)return null;let s=n.valueCallback?n.valueCallback(i[0]):i[0];s=e.valueCallback?e.valueCallback(s):s;let o=a.slice(r.length);return{value:s,rest:o}}}var QM=D(()=>{});var Bz,Vz,Wz,zz,$z,_z,Uz,Yz,qz,Gz,Kz,Qz,XM,JM=D(()=>{GM();QM();Bz=/^(\d+)(th|st|nd|rd)?/i,Vz=/\d+/i,Wz={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},zz={any:[/^b/i,/^(a|c)/i]},$z={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},_z={any:[/1/i,/2/i,/3/i,/4/i]},Uz={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Yz={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},qz={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Gz={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Kz={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Qz={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},XM={ordinalNumber:KM({matchPattern:Bz,parsePattern:Vz,valueCallback:n=>parseInt(n,10)}),era:nd({matchPatterns:Wz,defaultMatchWidth:"wide",parsePatterns:zz,defaultParseWidth:"any"}),quarter:nd({matchPatterns:$z,defaultMatchWidth:"wide",parsePatterns:_z,defaultParseWidth:"any",valueCallback:n=>n+1}),month:nd({matchPatterns:Uz,defaultMatchWidth:"wide",parsePatterns:Yz,defaultParseWidth:"any"}),day:nd({matchPatterns:qz,defaultMatchWidth:"wide",parsePatterns:Gz,defaultParseWidth:"any"}),dayPeriod:nd({matchPatterns:Kz,defaultMatchWidth:"any",parsePatterns:Qz,defaultParseWidth:"any"})}});var Ro,Tw=D(()=>{BM();zM();_M();qM();JM();Ro={code:"en-US",formatDistance:HM,formatLong:WM,formatRelative:$M,localize:YM,match:XM,options:{weekStartsOn:0,firstWeekContainsDate:1}}});var xw=D(()=>{Tw()});function ZM(n,a){let e=Ae(n,a==null?void 0:a.in);return DP(e,CM(e))+1}var Cw=D(()=>{kw();ww();Xt()});function Ah(n,a){let e=Ae(n,a==null?void 0:a.in),t=+Hi(e)-+EP(e);return Math.round(t/Th)+1}var Fh=D(()=>{Mo();Ao();yw();Xt()});function sd(n,a){var u,p,m,f,h,g,k,y;let e=Ae(n,a==null?void 0:a.in),t=e.getFullYear(),r=oi(),i=(y=(k=(f=(m=a==null?void 0:a.firstWeekContainsDate)!=null?m:(p=(u=a==null?void 0:a.locale)==null?void 0:u.options)==null?void 0:p.firstWeekContainsDate)!=null?f:r.firstWeekContainsDate)!=null?k:(g=(h=r.locale)==null?void 0:h.options)==null?void 0:g.firstWeekContainsDate)!=null?y:1,s=Ie((a==null?void 0:a.in)||n,0);s.setFullYear(t+1,0,i),s.setHours(0,0,0,0);let o=Cr(s,a),l=Ie((a==null?void 0:a.in)||n,0);l.setFullYear(t,0,i),l.setHours(0,0,0,0);let c=Cr(l,a);return+e>=+o?t+1:+e>=+c?t:t-1}var iu=D(()=>{Io();Qt();Hs();Xt()});function e1(n,a){var o,l,c,u,p,m,f,h;let e=oi(),t=(h=(f=(u=(c=a==null?void 0:a.firstWeekContainsDate)!=null?c:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.firstWeekContainsDate)!=null?u:e.firstWeekContainsDate)!=null?f:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.firstWeekContainsDate)!=null?h:1,r=sd(n,a),i=Ie((a==null?void 0:a.in)||n,0);return i.setFullYear(r,0,t),i.setHours(0,0,0,0),Cr(i,a)}var Sw=D(()=>{Io();Qt();iu();Hs()});function Rh(n,a){let e=Ae(n,a==null?void 0:a.in),t=+Cr(e,a)-+e1(e,a);return Math.round(t/Th)+1}var Oh=D(()=>{Mo();Hs();Sw();Xt()});function ot(n,a){let e=n<0?"-":"",t=Math.abs(n).toString().padStart(a,"0");return e+t}var Dw=D(()=>{});var Zn,t1=D(()=>{Dw();Zn={y(n,a){let e=n.getFullYear(),t=e>0?e:1-e;return ot(a==="yy"?t%100:t,a.length)},M(n,a){let e=n.getMonth();return a==="M"?String(e+1):ot(e+1,2)},d(n,a){return ot(n.getDate(),a.length)},a(n,a){let e=n.getHours()/12>=1?"pm":"am";switch(a){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];case"aaaa":default:return e==="am"?"a.m.":"p.m."}},h(n,a){return ot(n.getHours()%12||12,a.length)},H(n,a){return ot(n.getHours(),a.length)},m(n,a){return ot(n.getMinutes(),a.length)},s(n,a){return ot(n.getSeconds(),a.length)},S(n,a){let e=a.length,t=n.getMilliseconds(),r=Math.trunc(t*Math.pow(10,e-3));return ot(r,a.length)}}});function a1(n,a=""){let e=n>0?"-":"+",t=Math.abs(n),r=Math.trunc(t/60),i=t%60;return i===0?e+String(r):e+String(r)+a+ot(i,2)}function r1(n,a){return n%60===0?(n>0?"-":"+")+ot(Math.abs(n)/60,2):Oo(n,a)}function Oo(n,a=""){let e=n>0?"-":"+",t=Math.abs(n),r=ot(Math.trunc(t/60),2),i=ot(t%60,2);return e+r+a+i}var od,Ew,i1=D(()=>{Cw();Fh();Ch();Oh();iu();Dw();t1();od={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Ew={G:function(n,a,e){let t=n.getFullYear()>0?1:0;switch(a){case"G":case"GG":case"GGG":return e.era(t,{width:"abbreviated"});case"GGGGG":return e.era(t,{width:"narrow"});case"GGGG":default:return e.era(t,{width:"wide"})}},y:function(n,a,e){if(a==="yo"){let t=n.getFullYear(),r=t>0?t:1-t;return e.ordinalNumber(r,{unit:"year"})}return Zn.y(n,a)},Y:function(n,a,e,t){let r=sd(n,t),i=r>0?r:1-r;if(a==="YY"){let s=i%100;return ot(s,2)}return a==="Yo"?e.ordinalNumber(i,{unit:"year"}):ot(i,a.length)},R:function(n,a){let e=xh(n);return ot(e,a.length)},u:function(n,a){let e=n.getFullYear();return ot(e,a.length)},Q:function(n,a,e){let t=Math.ceil((n.getMonth()+1)/3);switch(a){case"Q":return String(t);case"QQ":return ot(t,2);case"Qo":return e.ordinalNumber(t,{unit:"quarter"});case"QQQ":return e.quarter(t,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(t,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(t,{width:"wide",context:"formatting"})}},q:function(n,a,e){let t=Math.ceil((n.getMonth()+1)/3);switch(a){case"q":return String(t);case"qq":return ot(t,2);case"qo":return e.ordinalNumber(t,{unit:"quarter"});case"qqq":return e.quarter(t,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(t,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(t,{width:"wide",context:"standalone"})}},M:function(n,a,e){let t=n.getMonth();switch(a){case"M":case"MM":return Zn.M(n,a);case"Mo":return e.ordinalNumber(t+1,{unit:"month"});case"MMM":return e.month(t,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(t,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(t,{width:"wide",context:"formatting"})}},L:function(n,a,e){let t=n.getMonth();switch(a){case"L":return String(t+1);case"LL":return ot(t+1,2);case"Lo":return e.ordinalNumber(t+1,{unit:"month"});case"LLL":return e.month(t,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(t,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(t,{width:"wide",context:"standalone"})}},w:function(n,a,e,t){let r=Rh(n,t);return a==="wo"?e.ordinalNumber(r,{unit:"week"}):ot(r,a.length)},I:function(n,a,e){let t=Ah(n);return a==="Io"?e.ordinalNumber(t,{unit:"week"}):ot(t,a.length)},d:function(n,a,e){return a==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):Zn.d(n,a)},D:function(n,a,e){let t=ZM(n);return a==="Do"?e.ordinalNumber(t,{unit:"dayOfYear"}):ot(t,a.length)},E:function(n,a,e){let t=n.getDay();switch(a){case"E":case"EE":case"EEE":return e.day(t,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(t,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(t,{width:"short",context:"formatting"});case"EEEE":default:return e.day(t,{width:"wide",context:"formatting"})}},e:function(n,a,e,t){let r=n.getDay(),i=(r-t.weekStartsOn+8)%7||7;switch(a){case"e":return String(i);case"ee":return ot(i,2);case"eo":return e.ordinalNumber(i,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});case"eeee":default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,a,e,t){let r=n.getDay(),i=(r-t.weekStartsOn+8)%7||7;switch(a){case"c":return String(i);case"cc":return ot(i,a.length);case"co":return e.ordinalNumber(i,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});case"cccc":default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,a,e){let t=n.getDay(),r=t===0?7:t;switch(a){case"i":return String(r);case"ii":return ot(r,a.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(t,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(t,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(t,{width:"short",context:"formatting"});case"iiii":default:return e.day(t,{width:"wide",context:"formatting"})}},a:function(n,a,e){let r=n.getHours()/12>=1?"pm":"am";switch(a){case"a":case"aa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(n,a,e){let t=n.getHours(),r;switch(t===12?r=od.noon:t===0?r=od.midnight:r=t/12>=1?"pm":"am",a){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,a,e){let t=n.getHours(),r;switch(t>=17?r=od.evening:t>=12?r=od.afternoon:t>=4?r=od.morning:r=od.night,a){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,a,e){if(a==="ho"){let t=n.getHours()%12;return t===0&&(t=12),e.ordinalNumber(t,{unit:"hour"})}return Zn.h(n,a)},H:function(n,a,e){return a==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):Zn.H(n,a)},K:function(n,a,e){let t=n.getHours()%12;return a==="Ko"?e.ordinalNumber(t,{unit:"hour"}):ot(t,a.length)},k:function(n,a,e){let t=n.getHours();return t===0&&(t=24),a==="ko"?e.ordinalNumber(t,{unit:"hour"}):ot(t,a.length)},m:function(n,a,e){return a==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):Zn.m(n,a)},s:function(n,a,e){return a==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):Zn.s(n,a)},S:function(n,a){return Zn.S(n,a)},X:function(n,a,e){let t=n.getTimezoneOffset();if(t===0)return"Z";switch(a){case"X":return r1(t);case"XXXX":case"XX":return Oo(t);case"XXXXX":case"XXX":default:return Oo(t,":")}},x:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"x":return r1(t);case"xxxx":case"xx":return Oo(t);case"xxxxx":case"xxx":default:return Oo(t,":")}},O:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"O":case"OO":case"OOO":return"GMT"+a1(t,":");case"OOOO":default:return"GMT"+Oo(t,":")}},z:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"z":case"zz":case"zzz":return"GMT"+a1(t,":");case"zzzz":default:return"GMT"+Oo(t,":")}},t:function(n,a,e){let t=Math.trunc(+n/1e3);return ot(t,a.length)},T:function(n,a,e){return ot(+n,a.length)}}});var n1,s1,Xz,nu,Pw=D(()=>{n1=(n,a)=>{switch(n){case"P":return a.date({width:"short"});case"PP":return a.date({width:"medium"});case"PPP":return a.date({width:"long"});case"PPPP":default:return a.date({width:"full"})}},s1=(n,a)=>{switch(n){case"p":return a.time({width:"short"});case"pp":return a.time({width:"medium"});case"ppp":return a.time({width:"long"});case"pppp":default:return a.time({width:"full"})}},Xz=(n,a)=>{let e=n.match(/(P+)(p+)?/)||[],t=e[1],r=e[2];if(!r)return n1(n,a);let i;switch(t){case"P":i=a.dateTime({width:"short"});break;case"PP":i=a.dateTime({width:"medium"});break;case"PPP":i=a.dateTime({width:"long"});break;case"PPPP":default:i=a.dateTime({width:"full"});break}return i.replace("{{date}}",n1(t,a)).replace("{{time}}",s1(r,a))},nu={p:s1,P:Xz}});function Nh(n){return Jz.test(n)}function Lh(n){return Zz.test(n)}function su(n,a,e){let t=t$(n,a,e);if(console.warn(t),e$.includes(n))throw new RangeError(t)}function t$(n,a,e){let t=n[0]==="Y"?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${a}\`) for formatting ${t} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Jz,Zz,e$,Mw=D(()=>{Jz=/^D+$/,Zz=/^Y+$/,e$=["D","DD","YY","YYYY"]});function Iw(n,a,e){var u,p,m,f,h,g,k,y,b,v,w,x,T,C,S,E,A,N;let t=oi(),r=(p=(u=e==null?void 0:e.locale)!=null?u:t.locale)!=null?p:Ro,i=(v=(b=(g=(h=e==null?void 0:e.firstWeekContainsDate)!=null?h:(f=(m=e==null?void 0:e.locale)==null?void 0:m.options)==null?void 0:f.firstWeekContainsDate)!=null?g:t.firstWeekContainsDate)!=null?b:(y=(k=t.locale)==null?void 0:k.options)==null?void 0:y.firstWeekContainsDate)!=null?v:1,s=(N=(A=(C=(T=e==null?void 0:e.weekStartsOn)!=null?T:(x=(w=e==null?void 0:e.locale)==null?void 0:w.options)==null?void 0:x.weekStartsOn)!=null?C:t.weekStartsOn)!=null?A:(E=(S=t.locale)==null?void 0:S.options)==null?void 0:E.weekStartsOn)!=null?N:0,o=Ae(n,e==null?void 0:e.in);if(!ru(o))throw new RangeError("Invalid time value");let l=a.match(r$).map(I=>{let R=I[0];if(R==="p"||R==="P"){let j=nu[R];return j(I,r.formatLong)}return I}).join("").match(a$).map(I=>{if(I==="''")return{isToken:!1,value:"'"};let R=I[0];if(R==="'")return{isToken:!1,value:o$(I)};if(Ew[R])return{isToken:!0,value:I};if(R.match(s$))throw new RangeError("Format string contains an unescaped latin alphabet character `"+R+"`");return{isToken:!1,value:I}});r.localize.preprocessor&&(l=r.localize.preprocessor(o,l));let c={firstWeekContainsDate:i,weekStartsOn:s,locale:r};return l.map(I=>{if(!I.isToken)return I.value;let R=I.value;(!(e!=null&&e.useAdditionalWeekYearTokens)&&Lh(R)||!(e!=null&&e.useAdditionalDayOfYearTokens)&&Nh(R))&&su(R,a,String(n));let j=Ew[R[0]];return j(o,R,r.localize,c)}).join("")}function o$(n){let a=n.match(i$);return a?a[1].replace(n$,"'"):n}var a$,r$,i$,n$,s$,o1=D(()=>{xw();Io();i1();Pw();Mw();bw();Xt();a$=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,r$=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,i$=/^'([^]*?)'?$/,n$=/''/g,s$=/[a-zA-Z]/});var l1=D(()=>{});var d1=D(()=>{});var c1=D(()=>{});var u1=D(()=>{});var p1=D(()=>{});var m1=D(()=>{});var f1=D(()=>{});var h1=D(()=>{});var g1=D(()=>{});var k1=D(()=>{});var y1=D(()=>{});var v1=D(()=>{});var b1=D(()=>{});var w1=D(()=>{});var T1=D(()=>{});var x1=D(()=>{});var C1=D(()=>{});var S1=D(()=>{});function D1(){return Object.assign({},oi())}var Aw=D(()=>{Io()});var E1=D(()=>{});function P1(n,a){let e=Ae(n,a==null?void 0:a.in).getDay();return e===0?7:e}var Fw=D(()=>{Xt()});var M1=D(()=>{});var I1=D(()=>{});var A1=D(()=>{});var F1=D(()=>{});var R1=D(()=>{});var O1=D(()=>{});var N1=D(()=>{});var L1=D(()=>{});var j1=D(()=>{});var H1=D(()=>{});var B1=D(()=>{});var V1=D(()=>{});var W1=D(()=>{});var z1=D(()=>{});var $1=D(()=>{});var _1=D(()=>{});var U1=D(()=>{});var Y1=D(()=>{});var q1=D(()=>{});var G1=D(()=>{});var K1=D(()=>{});var Q1=D(()=>{});var X1=D(()=>{});var J1=D(()=>{});var Z1=D(()=>{});var eI=D(()=>{});function tI(n,a){let e=l$(a)?new a(0):Ie(a,0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}function l$(n){var a;return typeof n=="function"&&((a=n.prototype)==null?void 0:a.constructor)===n}var Rw=D(()=>{Qt()});var d$,jh,Hh,Bh,Ow=D(()=>{Qt();Rw();d$=10,jh=class{constructor(){z(this,"subPriority",0)}validate(a,e){return!0}},Hh=class extends jh{constructor(a,e,t,r,i){super(),this.value=a,this.validateValue=e,this.setValue=t,this.priority=r,i&&(this.subPriority=i)}validate(a,e){return this.validateValue(a,this.value,e)}set(a,e,t){return this.setValue(a,e,this.value,t)}},Bh=class extends jh{constructor(e,t){super();z(this,"priority",d$);z(this,"subPriority",-1);this.context=e||(r=>Ie(t,r))}set(e,t){return t.timestampIsSet?e:Ie(e,tI(e,this.context))}}});var ce,at=D(()=>{Ow();ce=class{run(a,e,t,r){let i=this.parse(a,e,t,r);return i?{setter:new Hh(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(a,e,t){return!0}}});var Vh,aI=D(()=>{at();Vh=class extends ce{constructor(){super(...arguments);z(this,"priority",140);z(this,"incompatibleTokens",["R","u","t","T"])}parse(e,t,r){switch(t){case"G":case"GG":case"GGG":return r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"});case"GGGGG":return r.era(e,{width:"narrow"});case"GGGG":default:return r.era(e,{width:"wide"})||r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"})}}set(e,t,r){return t.era=r,e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}});var Qe,li,Ga=D(()=>{Qe={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},li={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/}});function ht(n,a){return n&&{value:a(n.value),rest:n.rest}}function _e(n,a){let e=a.match(n);return e?{value:parseInt(e[0],10),rest:a.slice(e[0].length)}:null}function di(n,a){let e=a.match(n);if(!e)return null;if(e[0]==="Z")return{value:0,rest:a.slice(1)};let t=e[1]==="+"?1:-1,r=e[2]?parseInt(e[2],10):0,i=e[3]?parseInt(e[3],10):0,s=e[5]?parseInt(e[5],10):0;return{value:t*(r*eu+i*Zc+s*gP),rest:a.slice(e[0].length)}}function Wh(n){return _e(Qe.anyDigitsSigned,n)}function Me(n,a){switch(n){case 1:return _e(Qe.singleDigit,a);case 2:return _e(Qe.twoDigits,a);case 3:return _e(Qe.threeDigits,a);case 4:return _e(Qe.fourDigits,a);default:return _e(new RegExp("^\\d{1,"+n+"}"),a)}}function ld(n,a){switch(n){case 1:return _e(Qe.singleDigitSigned,a);case 2:return _e(Qe.twoDigitsSigned,a);case 3:return _e(Qe.threeDigitsSigned,a);case 4:return _e(Qe.fourDigitsSigned,a);default:return _e(new RegExp("^-?\\d{1,"+n+"}"),a)}}function dd(n){switch(n){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function zh(n,a){let e=a>0,t=e?a:1-a,r;if(t<=50)r=n||100;else{let i=t+50,s=Math.trunc(i/100)*100,o=n>=i%100;r=n+s-(o?100:0)}return e?r:1-r}function $h(n){return n%400===0||n%4===0&&n%100!==0}var dt=D(()=>{Mo();Ga()});var _h,rI=D(()=>{at();dt();_h=class extends ce{constructor(){super(...arguments);z(this,"priority",130);z(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,t,r){let i=s=>({year:s,isTwoDigitYear:t==="yy"});switch(t){case"y":return ht(Me(4,e),i);case"yo":return ht(r.ordinalNumber(e,{unit:"year"}),i);default:return ht(Me(t.length,e),i)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r){let i=e.getFullYear();if(r.isTwoDigitYear){let o=zh(r.year,i);return e.setFullYear(o,0,1),e.setHours(0,0,0,0),e}let s=!("era"in t)||t.era===1?r.year:1-r.year;return e.setFullYear(s,0,1),e.setHours(0,0,0,0),e}}});var Uh,iI=D(()=>{iu();Hs();at();dt();Uh=class extends ce{constructor(){super(...arguments);z(this,"priority",130);z(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,t,r){let i=s=>({year:s,isTwoDigitYear:t==="YY"});switch(t){case"Y":return ht(Me(4,e),i);case"Yo":return ht(r.ordinalNumber(e,{unit:"year"}),i);default:return ht(Me(t.length,e),i)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r,i){let s=sd(e,i);if(r.isTwoDigitYear){let l=zh(r.year,s);return e.setFullYear(l,0,i.firstWeekContainsDate),e.setHours(0,0,0,0),Cr(e,i)}let o=!("era"in t)||t.era===1?r.year:1-r.year;return e.setFullYear(o,0,i.firstWeekContainsDate),e.setHours(0,0,0,0),Cr(e,i)}}});var Yh,nI=D(()=>{Ao();Qt();at();dt();Yh=class extends ce{constructor(){super(...arguments);z(this,"priority",130);z(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return t==="R"?ld(4,e):ld(t.length,e)}set(e,t,r){let i=Ie(e,0);return i.setFullYear(r,0,4),i.setHours(0,0,0,0),Hi(i)}}});var qh,sI=D(()=>{at();dt();qh=class extends ce{constructor(){super(...arguments);z(this,"priority",130);z(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return t==="u"?ld(4,e):ld(t.length,e)}set(e,t,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}});var Gh,oI=D(()=>{at();dt();Gh=class extends ce{constructor(){super(...arguments);z(this,"priority",120);z(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"Q":case"QQ":return Me(t.length,e);case"Qo":return r.ordinalNumber(e,{unit:"quarter"});case"QQQ":return r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(e,{width:"wide",context:"formatting"})||r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}});var Kh,lI=D(()=>{at();dt();Kh=class extends ce{constructor(){super(...arguments);z(this,"priority",120);z(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"q":case"qq":return Me(t.length,e);case"qo":return r.ordinalNumber(e,{unit:"quarter"});case"qqq":return r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return r.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(e,{width:"wide",context:"standalone"})||r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}});var Qh,dI=D(()=>{Ga();at();dt();Qh=class extends ce{constructor(){super(...arguments);z(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);z(this,"priority",110)}parse(e,t,r){let i=s=>s-1;switch(t){case"M":return ht(_e(Qe.month,e),i);case"MM":return ht(Me(2,e),i);case"Mo":return ht(r.ordinalNumber(e,{unit:"month"}),i);case"MMM":return r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return r.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(e,{width:"wide",context:"formatting"})||r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}});var Xh,cI=D(()=>{Ga();at();dt();Xh=class extends ce{constructor(){super(...arguments);z(this,"priority",110);z(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,t,r){let i=s=>s-1;switch(t){case"L":return ht(_e(Qe.month,e),i);case"LL":return ht(Me(2,e),i);case"Lo":return ht(r.ordinalNumber(e,{unit:"month"}),i);case"LLL":return r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return r.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(e,{width:"wide",context:"standalone"})||r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}});function uI(n,a,e){let t=Ae(n,e==null?void 0:e.in),r=Rh(t,e)-a;return t.setDate(t.getDate()-r*7),Ae(t,e==null?void 0:e.in)}var Nw=D(()=>{Oh();Xt()});var Jh,pI=D(()=>{Nw();Hs();Ga();at();dt();Jh=class extends ce{constructor(){super(...arguments);z(this,"priority",100);z(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,r){switch(t){case"w":return _e(Qe.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return Me(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r,i){return Cr(uI(e,r,i),i)}}});function mI(n,a,e){let t=Ae(n,e==null?void 0:e.in),r=Ah(t,e)-a;return t.setDate(t.getDate()-r*7),t}var Lw=D(()=>{Fh();Xt()});var Zh,fI=D(()=>{Lw();Ao();Ga();at();dt();Zh=class extends ce{constructor(){super(...arguments);z(this,"priority",100);z(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,t,r){switch(t){case"I":return _e(Qe.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return Me(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r){return Hi(mI(e,r))}}});var c$,u$,eg,hI=D(()=>{Ga();at();dt();c$=[31,28,31,30,31,30,31,31,30,31,30,31],u$=[31,29,31,30,31,30,31,31,30,31,30,31],eg=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"subPriority",1);z(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"d":return _e(Qe.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return Me(t.length,e)}}validate(e,t){let r=e.getFullYear(),i=$h(r),s=e.getMonth();return i?t>=1&&t<=u$[s]:t>=1&&t<=c$[s]}set(e,t,r){return e.setDate(r),e.setHours(0,0,0,0),e}}});var tg,gI=D(()=>{Ga();at();dt();tg=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"subpriority",1);z(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,t,r){switch(t){case"D":case"DD":return _e(Qe.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return Me(t.length,e)}}validate(e,t){let r=e.getFullYear();return $h(r)?t>=1&&t<=366:t>=1&&t<=365}set(e,t,r){return e.setMonth(0,r),e.setHours(0,0,0,0),e}}});function cd(n,a,e){var p,m,f,h,g,k,y,b;let t=oi(),r=(b=(y=(h=(f=e==null?void 0:e.weekStartsOn)!=null?f:(m=(p=e==null?void 0:e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?h:t.weekStartsOn)!=null?y:(k=(g=t.locale)==null?void 0:g.options)==null?void 0:k.weekStartsOn)!=null?b:0,i=Ae(n,e==null?void 0:e.in),s=i.getDay(),l=(a%7+7)%7,c=7-r,u=a<0||a>6?a-(s+c)%7:(l+c)%7-(s+c)%7;return td(i,u,e)}var ou=D(()=>{Io();tu();Xt()});var ag,kI=D(()=>{ou();at();ag=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"E":case"EE":case"EEE":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return r.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,i){return e=cd(e,r,i),e.setHours(0,0,0,0),e}}});var rg,yI=D(()=>{ou();at();dt();rg=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,t,r,i){let s=o=>{let l=Math.floor((o-1)/7)*7;return(o+i.weekStartsOn+6)%7+l};switch(t){case"e":case"ee":return ht(Me(t.length,e),s);case"eo":return ht(r.ordinalNumber(e,{unit:"day"}),s);case"eee":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeeee":return r.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,i){return e=cd(e,r,i),e.setHours(0,0,0,0),e}}});var ig,vI=D(()=>{ou();at();dt();ig=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,t,r,i){let s=o=>{let l=Math.floor((o-1)/7)*7;return(o+i.weekStartsOn+6)%7+l};switch(t){case"c":case"cc":return ht(Me(t.length,e),s);case"co":return ht(r.ordinalNumber(e,{unit:"day"}),s);case"ccc":return r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"ccccc":return r.day(e,{width:"narrow",context:"standalone"});case"cccccc":return r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return r.day(e,{width:"wide",context:"standalone"})||r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,i){return e=cd(e,r,i),e.setHours(0,0,0,0),e}}});function bI(n,a,e){let t=Ae(n,e==null?void 0:e.in),r=P1(t,e),i=a-r;return td(t,i,e)}var jw=D(()=>{tu();Fw();Xt()});var ng,wI=D(()=>{jw();at();dt();ng=class extends ce{constructor(){super(...arguments);z(this,"priority",90);z(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,t,r){let i=s=>s===0?7:s;switch(t){case"i":case"ii":return Me(t.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return ht(r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),i);case"iiiii":return ht(r.day(e,{width:"narrow",context:"formatting"}),i);case"iiiiii":return ht(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),i);case"iiii":default:return ht(r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),i)}}validate(e,t){return t>=1&&t<=7}set(e,t,r){return e=bI(e,r),e.setHours(0,0,0,0),e}}});var sg,TI=D(()=>{at();dt();sg=class extends ce{constructor(){super(...arguments);z(this,"priority",80);z(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,t,r){switch(t){case"a":case"aa":case"aaa":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(dd(r),0,0,0),e}}});var og,xI=D(()=>{at();dt();og=class extends ce{constructor(){super(...arguments);z(this,"priority",80);z(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,t,r){switch(t){case"b":case"bb":case"bbb":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(dd(r),0,0,0),e}}});var lg,CI=D(()=>{at();dt();lg=class extends ce{constructor(){super(...arguments);z(this,"priority",80);z(this,"incompatibleTokens",["a","b","t","T"])}parse(e,t,r){switch(t){case"B":case"BB":case"BBB":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(dd(r),0,0,0),e}}});var dg,SI=D(()=>{Ga();at();dt();dg=class extends ce{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,r){switch(t){case"h":return _e(Qe.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return Me(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,r){let i=e.getHours()>=12;return i&&r<12?e.setHours(r+12,0,0,0):!i&&r===12?e.setHours(0,0,0,0):e.setHours(r,0,0,0),e}}});var cg,DI=D(()=>{Ga();at();dt();cg=class extends ce{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,r){switch(t){case"H":return _e(Qe.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return Me(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,r){return e.setHours(r,0,0,0),e}}});var ug,EI=D(()=>{Ga();at();dt();ug=class extends ce{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,r){switch(t){case"K":return _e(Qe.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return Me(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.getHours()>=12&&r<12?e.setHours(r+12,0,0,0):e.setHours(r,0,0,0),e}}});var pg,PI=D(()=>{Ga();at();dt();pg=class extends ce{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,r){switch(t){case"k":return _e(Qe.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return Me(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,r){let i=r<=24?r%24:r;return e.setHours(i,0,0,0),e}}});var mg,MI=D(()=>{Ga();at();dt();mg=class extends ce{constructor(){super(...arguments);z(this,"priority",60);z(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"m":return _e(Qe.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return Me(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setMinutes(r,0,0),e}}});var fg,II=D(()=>{Ga();at();dt();fg=class extends ce{constructor(){super(...arguments);z(this,"priority",50);z(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"s":return _e(Qe.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return Me(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setSeconds(r,0),e}}});var hg,AI=D(()=>{at();dt();hg=class extends ce{constructor(){super(...arguments);z(this,"priority",30);z(this,"incompatibleTokens",["t","T"])}parse(e,t){let r=i=>Math.trunc(i*Math.pow(10,-t.length+3));return ht(Me(t.length,e),r)}set(e,t,r){return e.setMilliseconds(r),e}}});var gg,FI=D(()=>{Qt();Sh();Ga();at();dt();gg=class extends ce{constructor(){super(...arguments);z(this,"priority",10);z(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return di(li.basicOptionalMinutes,e);case"XX":return di(li.basic,e);case"XXXX":return di(li.basicOptionalSeconds,e);case"XXXXX":return di(li.extendedOptionalSeconds,e);case"XXX":default:return di(li.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Ie(e,e.getTime()-Fo(e)-r)}}});var kg,RI=D(()=>{Qt();Sh();Ga();at();dt();kg=class extends ce{constructor(){super(...arguments);z(this,"priority",10);z(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return di(li.basicOptionalMinutes,e);case"xx":return di(li.basic,e);case"xxxx":return di(li.basicOptionalSeconds,e);case"xxxxx":return di(li.extendedOptionalSeconds,e);case"xxx":default:return di(li.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Ie(e,e.getTime()-Fo(e)-r)}}});var yg,OI=D(()=>{Qt();at();dt();yg=class extends ce{constructor(){super(...arguments);z(this,"priority",40);z(this,"incompatibleTokens","*")}parse(e){return Wh(e)}set(e,t,r){return[Ie(e,r*1e3),{timestampIsSet:!0}]}}});var vg,NI=D(()=>{Qt();at();dt();vg=class extends ce{constructor(){super(...arguments);z(this,"priority",20);z(this,"incompatibleTokens","*")}parse(e){return Wh(e)}set(e,t,r){return[Ie(e,r),{timestampIsSet:!0}]}}});var LI,jI=D(()=>{aI();rI();iI();nI();sI();oI();lI();dI();cI();pI();fI();hI();gI();kI();yI();vI();wI();TI();xI();CI();SI();DI();EI();PI();MI();II();AI();FI();RI();OI();NI();LI={G:new Vh,y:new _h,Y:new Uh,R:new Yh,u:new qh,Q:new Gh,q:new Kh,M:new Qh,L:new Xh,w:new Jh,I:new Zh,d:new eg,D:new tg,E:new ag,e:new rg,c:new ig,i:new ng,a:new sg,b:new og,B:new lg,h:new dg,H:new cg,K:new ug,k:new pg,m:new mg,s:new fg,S:new hg,X:new gg,x:new kg,t:new yg,T:new vg}});function HI(n,a,e,t){var k,y,b,v,w,x,T,C,S,E,A,N,I,R,j,W,B,X;let r=()=>Ie((t==null?void 0:t.in)||e,NaN),i=D1(),s=(y=(k=t==null?void 0:t.locale)!=null?k:i.locale)!=null?y:Ro,o=(E=(S=(x=(w=t==null?void 0:t.firstWeekContainsDate)!=null?w:(v=(b=t==null?void 0:t.locale)==null?void 0:b.options)==null?void 0:v.firstWeekContainsDate)!=null?x:i.firstWeekContainsDate)!=null?S:(C=(T=i.locale)==null?void 0:T.options)==null?void 0:C.firstWeekContainsDate)!=null?E:1,l=(X=(B=(R=(I=t==null?void 0:t.weekStartsOn)!=null?I:(N=(A=t==null?void 0:t.locale)==null?void 0:A.options)==null?void 0:N.weekStartsOn)!=null?R:i.weekStartsOn)!=null?B:(W=(j=i.locale)==null?void 0:j.options)==null?void 0:W.weekStartsOn)!=null?X:0;if(!a)return n?r():Ae(e,t==null?void 0:t.in);let c={firstWeekContainsDate:o,weekStartsOn:l,locale:s},u=[new Bh(t==null?void 0:t.in,e)],p=a.match(m$).map(V=>{let G=V[0];if(G in nu){let Y=nu[G];return Y(V,s.formatLong)}return V}).join("").match(p$),m=[];for(let V of p){!(t!=null&&t.useAdditionalWeekYearTokens)&&Lh(V)&&su(V,a,n),!(t!=null&&t.useAdditionalDayOfYearTokens)&&Nh(V)&&su(V,a,n);let G=V[0],Y=LI[G];if(Y){let{incompatibleTokens:le}=Y;if(Array.isArray(le)){let Te=m.find(Re=>le.includes(Re.token)||Re.token===G);if(Te)throw new RangeError(`The format string mustn't contain \`${Te.fullToken}\` and \`${V}\` at the same time`)}else if(Y.incompatibleTokens==="*"&&m.length>0)throw new RangeError(`The format string mustn't contain \`${V}\` and any other token at the same time`);m.push({token:G,fullToken:V});let de=Y.run(n,V,s.match,c);if(!de)return r();u.push(de.setter),n=de.rest}else{if(G.match(k$))throw new RangeError("Format string contains an unescaped latin alphabet character `"+G+"`");if(V==="''"?V="'":G==="'"&&(V=y$(V)),n.indexOf(V)===0)n=n.slice(V.length);else return r()}}if(n.length>0&&g$.test(n))return r();let f=u.map(V=>V.priority).sort((V,G)=>G-V).filter((V,G,Y)=>Y.indexOf(V)===G).map(V=>u.filter(G=>G.priority===V).sort((G,Y)=>Y.subPriority-G.subPriority)).map(V=>V[0]),h=Ae(e,t==null?void 0:t.in);if(isNaN(+h))return r();let g={};for(let V of f){if(!V.validate(h,c))return r();let G=V.set(h,g,c);Array.isArray(G)?(h=G[0],Object.assign(g,G[1])):h=G}return h}function y$(n){return n.match(f$)[1].replace(h$,"'")}var p$,m$,f$,h$,g$,k$,BI=D(()=>{xw();Pw();Mw();Qt();Aw();Xt();Ow();jI();p$=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,m$=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,f$=/^'([^]*?)'?$/,h$=/''/g,g$=/\S/,k$=/[a-zA-Z]/});var VI=D(()=>{});var WI=D(()=>{});var zI=D(()=>{});var $I=D(()=>{});var _I=D(()=>{});var UI=D(()=>{});var YI=D(()=>{});var qI=D(()=>{});var GI=D(()=>{});var KI=D(()=>{});var QI=D(()=>{});var XI=D(()=>{});var JI=D(()=>{});var ZI=D(()=>{});function eA(n,a,e){let[t,r]=ad(e==null?void 0:e.in,n,a);return t.getFullYear()===r.getFullYear()}var Hw=D(()=>{Dh()});var tA=D(()=>{});var aA=D(()=>{});var rA=D(()=>{});var iA=D(()=>{});var nA=D(()=>{});var sA=D(()=>{});var oA=D(()=>{});function lA(n,a){return eA(Ie((a==null?void 0:a.in)||n,n),rd((a==null?void 0:a.in)||n))}var dA=D(()=>{Qt();au();Hw()});var cA=D(()=>{});function uA(n,a){return Ph(Ie((a==null?void 0:a.in)||n,n),rd((a==null?void 0:a.in)||n))}var pA=D(()=>{Qt();au();Mh()});function mA(n,a){return Ph(n,td(rd((a==null?void 0:a.in)||n),1),a)}var fA=D(()=>{tu();au();Mh()});var hA=D(()=>{});var gA=D(()=>{});var kA=D(()=>{});var yA=D(()=>{});var vA=D(()=>{});var bA=D(()=>{});var wA=D(()=>{});var TA=D(()=>{});var xA=D(()=>{});var CA=D(()=>{});var SA=D(()=>{});var DA=D(()=>{});var EA=D(()=>{});var PA=D(()=>{});var MA=D(()=>{});var IA=D(()=>{});var AA=D(()=>{});var FA=D(()=>{});var RA=D(()=>{});var OA=D(()=>{});var NA=D(()=>{});var LA=D(()=>{});var jA=D(()=>{});var HA=D(()=>{});var BA=D(()=>{});var VA=D(()=>{});var WA=D(()=>{});var zA=D(()=>{});var $A=D(()=>{});function _A(n,a){var c;let e=()=>Ie(a==null?void 0:a.in,NaN),t=(c=a==null?void 0:a.additionalDigits)!=null?c:2,r=T$(n),i;if(r.date){let u=x$(r.date,t);i=C$(u.restDateString,u.year)}if(!i||isNaN(+i))return e();let s=+i,o=0,l;if(r.time&&(o=S$(r.time),isNaN(o)))return e();if(r.timezone){if(l=D$(r.timezone),isNaN(l))return e()}else{let u=new Date(s+o),p=Ae(0,a==null?void 0:a.in);return p.setFullYear(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()),p.setHours(u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds()),p}return Ae(s+o+l,a==null?void 0:a.in)}function T$(n){let a={},e=n.split(bg.dateTimeDelimiter),t;if(e.length>2)return a;if(/:/.test(e[0])?t=e[0]:(a.date=e[0],t=e[1],bg.timeZoneDelimiter.test(a.date)&&(a.date=n.split(bg.timeZoneDelimiter)[0],t=n.substr(a.date.length,n.length))),t){let r=bg.timezone.exec(t);r?(a.time=t.replace(r[1],""),a.timezone=r[1]):a.time=t}return a}function x$(n,a){let e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+a)+"})|(\\d{2}|[+-]\\d{"+(2+a)+"})$)"),t=n.match(e);if(!t)return{year:NaN,restDateString:""};let r=t[1]?parseInt(t[1]):null,i=t[2]?parseInt(t[2]):null;return{year:i===null?r:i*100,restDateString:n.slice((t[1]||t[2]).length)}}function C$(n,a){if(a===null)return new Date(NaN);let e=n.match(v$);if(!e)return new Date(NaN);let t=!!e[4],r=lu(e[1]),i=lu(e[2])-1,s=lu(e[3]),o=lu(e[4]),l=lu(e[5])-1;if(t)return A$(a,o,l)?E$(a,o,l):new Date(NaN);{let c=new Date(0);return!M$(a,i,s)||!I$(a,r)?new Date(NaN):(c.setUTCFullYear(a,i,Math.max(r,s)),c)}}function lu(n){return n?parseInt(n):1}function S$(n){let a=n.match(b$);if(!a)return NaN;let e=Bw(a[1]),t=Bw(a[2]),r=Bw(a[3]);return F$(e,t,r)?e*eu+t*Zc+r*1e3:NaN}function Bw(n){return n&&parseFloat(n.replace(",","."))||0}function D$(n){if(n==="Z")return 0;let a=n.match(w$);if(!a)return 0;let e=a[1]==="+"?-1:1,t=parseInt(a[2]),r=a[3]&&parseInt(a[3])||0;return R$(t,r)?e*(t*eu+r*Zc):NaN}function E$(n,a,e){let t=new Date(0);t.setUTCFullYear(n,0,4);let r=t.getUTCDay()||7,i=(a-1)*7+e+1-r;return t.setUTCDate(t.getUTCDate()+i),t}function UA(n){return n%400===0||n%4===0&&n%100!==0}function M$(n,a,e){return a>=0&&a<=11&&e>=1&&e<=(P$[a]||(UA(n)?29:28))}function I$(n,a){return a>=1&&a<=(UA(n)?366:365)}function A$(n,a,e){return a>=1&&a<=53&&e>=0&&e<=6}function F$(n,a,e){return n===24?a===0&&e===0:e>=0&&e<60&&a>=0&&a<60&&n>=0&&n<25}function R$(n,a){return a>=0&&a<=59}var bg,v$,b$,w$,P$,YA=D(()=>{Mo();Qt();Xt();bg={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},v$=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,b$=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,w$=/^([+-])(\d{2})(?::?(\d{2}))?$/;P$=[31,null,31,30,31,30,31,31,30,31,30,31]});var qA=D(()=>{});var GA=D(()=>{});var KA=D(()=>{});var QA=D(()=>{});var XA=D(()=>{});var JA=D(()=>{});var ZA=D(()=>{});var eF=D(()=>{});var tF=D(()=>{});var aF=D(()=>{});var rF=D(()=>{});var iF=D(()=>{});var nF=D(()=>{});var sF=D(()=>{});var oF=D(()=>{});var lF=D(()=>{});var dF=D(()=>{});var cF=D(()=>{});var uF=D(()=>{});var pF=D(()=>{});var mF=D(()=>{});var fF=D(()=>{});var hF=D(()=>{});var gF=D(()=>{});var kF=D(()=>{});var yF=D(()=>{});var vF=D(()=>{});var bF=D(()=>{});var wF=D(()=>{});var TF=D(()=>{});var xF=D(()=>{});var CF=D(()=>{});var SF=D(()=>{});var DF=D(()=>{});var EF=D(()=>{});var PF=D(()=>{});var MF=D(()=>{});var IF=D(()=>{});var AF=D(()=>{});var FF=D(()=>{});var RF=D(()=>{});var OF=D(()=>{});var NF=D(()=>{});var LF=D(()=>{});var jF=D(()=>{});var HF=D(()=>{});var BF=D(()=>{vP();xP();tu();SP();MP();CP();IP();yP();AP();FP();RP();OP();NP();HP();BP();VP();WP();zP();Qt();au();$P();UP();kw();YP();qP();GP();QP();XP();JP();ZP();eM();aM();rM();iM();lM();dM();cM();uM();pM();mM();fM();hM();gM();yM();vM();bM();TM();SM();DM();nM();EM();PM();IM();AM();FM();sM();RM();OM();NM();LM();MM();xM();jM();o1();l1();d1();c1();u1();p1();m1();f1();h1();g1();k1();y1();v1();b1();w1();Cw();T1();C1();S1();Aw();E1();Fw();Fh();Ch();M1();I1();A1();F1();R1();KP();O1();N1();L1();Oh();j1();iu();B1();V1();W1();z1();$1();_1();U1();Y1();q1();G1();K1();vw();Q1();X1();J1();Z1();eI();oM();x1();VI();WI();zI();Mh();_I();YI();qI();KI();QI();XI();ZI();UI();Hw();bP();wP();tA();aA();rA();iA();nA();sA();oA();dA();cA();pA();fA();hA();bw();gA();TP();kA();vA();bA();TA();xA();H1();CA();wA();SA();DA();LP();EA();PA();MA();IA();jP();AA();FA();RA();OA();NA();LA();jA();HA();BA();VA();WA();zA();$A();BI();YA();qA();GA();KA();QA();XA();JA();ZA();eF();tF();aF();rF();iF();nF();sF();oF();lF();cF();uF();ou();pF();mF();fF();jw();Lw();PP();hF();gF();dF();kF();yF();Nw();vF();bF();Eh();wF();$I();Ao();yw();GI();wM();kM();JI();TF();xF();Hs();Sw();ww();CF();DF();EF();yA();PF();tM();MF();IF();SF();AF();FF();RF();OF();Xt();Rw();NF();LF();jF();HF()});var VF=D(()=>{});var WF=D(()=>{});var zF=D(()=>{});var $F=D(()=>{});var _F=D(()=>{});var UF=D(()=>{});var YF=D(()=>{});var qF=D(()=>{});var GF=D(()=>{});var KF=D(()=>{});var QF=D(()=>{});var XF=D(()=>{});var JF=D(()=>{});var ZF=D(()=>{});var eR=D(()=>{});var tR=D(()=>{});var aR=D(()=>{});var rR=D(()=>{});var iR=D(()=>{});var nR=D(()=>{});var sR=D(()=>{});var oR=D(()=>{});var lR=D(()=>{});var dR=D(()=>{});var cR=D(()=>{});var uR=D(()=>{});var pR=D(()=>{});var mR=D(()=>{});var fR=D(()=>{});var hR=D(()=>{});var gR=D(()=>{});var kR=D(()=>{});var yR=D(()=>{});var vR=D(()=>{});var bR=D(()=>{});var wR=D(()=>{});var TR=D(()=>{});var xR=D(()=>{});var CR=D(()=>{});var SR=D(()=>{});var DR=D(()=>{});var ER=D(()=>{});var PR=D(()=>{});var MR=D(()=>{});var IR=D(()=>{});var AR=D(()=>{});var FR=D(()=>{});var RR=D(()=>{});var OR=D(()=>{});var NR=D(()=>{});var LR=D(()=>{});var jR=D(()=>{});var HR=D(()=>{});var BR=D(()=>{});var VR=D(()=>{});var WR=D(()=>{});var zR=D(()=>{});var $R=D(()=>{});var _R=D(()=>{});var UR=D(()=>{});var YR=D(()=>{});var qR=D(()=>{});var GR=D(()=>{});var KR=D(()=>{});var QR=D(()=>{});var XR=D(()=>{});var JR=D(()=>{});var ZR=D(()=>{});var eO=D(()=>{});var tO=D(()=>{});var aO=D(()=>{});var rO=D(()=>{});var iO=D(()=>{});var nO=D(()=>{});var sO=D(()=>{});var oO=D(()=>{});var lO=D(()=>{});var dO=D(()=>{});var cO=D(()=>{});var uO=D(()=>{});var pO=D(()=>{});var mO=D(()=>{});var fO=D(()=>{});var hO=D(()=>{});var gO=D(()=>{});var kO=D(()=>{});var yO=D(()=>{});var vO=D(()=>{});var bO=D(()=>{});var wO=D(()=>{});var TO=D(()=>{});var xO=D(()=>{});var CO=D(()=>{});var SO=D(()=>{});var DO=D(()=>{VF();WF();zF();$F();_F();UF();YF();qF();GF();KF();QF();XF();JF();ZF();eR();tR();aR();rR();iR();nR();sR();oR();lR();dR();cR();uR();pR();Tw();mR();fR();hR();gR();kR();yR();vR();bR();wR();TR();xR();CR();SR();DR();ER();PR();MR();IR();AR();FR();RR();OR();NR();LR();jR();HR();BR();VR();WR();zR();$R();_R();UR();YR();qR();GR();KR();QR();XR();JR();ZR();eO();tO();aO();rO();iO();nO();sO();oO();lO();dO();cO();uO();pO();mO();fO();hO();gO();kO();yO();vO();bO();wO();TO();xO();CO();SO()});var EO={};Et(EO,{formatDate:()=>O$,getLocalDateString:()=>Tg,getRelativeTimeString:()=>Vi,getTodayLocalDateString:()=>Bi,parseLocalDate:()=>wg});function O$(n){return uA(n)?"Today":mA(n)?"Tomorrow":lA(n)?Iw(n,"MMM d"):Iw(n,"MMM d, yyyy")}function wg(n,a){if(!n||(n=n.trim(),n.includes("{{")||n.includes("}}")))return;let e=["yyyy-MM-dd","yyyy/MM/dd","dd-MM-yyyy","dd/MM/yyyy","MM-dd-yyyy","MM/dd/yyyy","yyyy.MM.dd","dd.MM.yyyy","yyyy\u5E74M\u6708d\u65E5","MMM d, yyyy","MMM dd, yyyy","d MMM yyyy","dd MMM yyyy","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],t=a?[...a,...e]:e;for(let r of t)try{let i=HI(n,r,new Date,{locale:Ro});if(ru(i))return Jn(i).getTime()}catch(i){continue}try{let r=_A(n);if(ru(r))return Jn(r).getTime()}catch(r){}console.warn(`Worker: Could not parse date: ${n}`)}function Bi(){let n=new Date,a=n.getFullYear(),e=String(n.getMonth()+1).padStart(2,"0"),t=String(n.getDate()).padStart(2,"0");return`${a}-${e}-${t}`}function Tg(n){let a=n.getFullYear(),e=String(n.getMonth()+1).padStart(2,"0"),t=String(n.getDate()).padStart(2,"0");return`${a}-${e}-${t}`}function Vi(n,a=navigator.language){let e=typeof n=="number"?n:n.getTime(),t=new Date;t.setHours(0,0,0,0);let r=new Date(e);r.setHours(0,0,0,0);let i=Math.round((r.getTime()-t.getTime())/(1e3*60*60*24));return new Intl.RelativeTimeFormat(a,{numeric:"auto"}).format(i,"day")}var Wi=D(()=>{BF();DO()});var Vw,Ww=D(()=>{Vw=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m});var xg=D(()=>{});var Cg,PO=D(()=>{Cg=class{constructor(a){this.protectedRanges=[];this.content=a,this.protectedRanges=[]}detectAllProtectedRanges(){return this.protectedRanges=[],this.detectObsidianLinks(),this.detectMarkdownLinks(),this.detectInlineCode(),this.detectDirectUrls(),this.detectColorCodes(),this.mergeAndSortRanges()}isPositionProtected(a){return this.protectedRanges.some(e=>a>=e.start&&a"{}|\\^`\[\]]+/g,e;for(;(e=a.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"url",content:e[0]})}detectColorCodes(){let a=/#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})(?![0-9A-Fa-f])/g,e;for(;(e=a.exec(this.content))!==null;)this.isLikelyColorCode(e.index,e[0])&&this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"color-code",content:e[0]})}detectInlineCode(){let a=/(`+)([^`]|[^`].*?[^`])\1(?!`)/g,e;for(;(e=a.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"inline-code",content:e[0]})}isLikelyColorCode(a,e){let t=a>0?this.content[a-1]:" ",r=a+e.length,i=rt.start-r.start);let a=[],e=this.protectedRanges[0];for(let t=1;tr.start?e={start:e.start,end:Math.max(e.end,r.end),type:e.type,content:this.content.substring(e.start,Math.max(e.end,r.end))}:(a.push(e),e=r)}return a.push(e),this.protectedRanges=a,a}getDebugInfo(){return this.detectAllProtectedRanges().map(e=>`${e.type}: [${e.start}-${e.end}] "${e.content}"`).join(` `)}}});var IO={};Et(IO,{ConfigurableTaskParser:()=>No,MarkdownTaskParser:()=>zi});var Sr,zi,No,Lo=D(()=>{xg();Wi();Ww();PO();Sr=class Sr{constructor(a,e){this.tasks=[];this.indentStack=[];this.config=a,this.customDateFormats=a.customDateFormats,this.timeParsingService=e}extractMetadataAndTags(a){return this.extractMetadataAndTagsInternal(a)}static createWithStatusMapping(a,e,t){let r={...a,statusMapping:e};return new Sr(r,t)}parse(a,e="",t,r,i){this.reset(),this.fileMetadata=t,r&&(this.projectConfigCache=r);let s=a.split(/\r?\n/),o=0,l=0,c=!1;for(;othis.config.maxParseIterations){console.warn("Warning: Maximum parse iterations reached, stopping to prevent infinite loop");break}let u=s[o];if(u.trim().startsWith("```")||u.trim().startsWith("~~~")){c=!c,o++;continue}if(c){o++;continue}if(this.config.parseHeadings){let m=this.extractHeading(u);if(m){let[f,h]=m;this.currentHeading=h,this.currentHeadingLevel=f,o++;continue}}let p=this.extractTaskLine(u);if(p){let[m,,f,h]=p,g=`${e}-L${o}`,[k,y]=this.findParentAndLevel(m),[b,v]=this.parseTaskContent(f),w=v.toLowerCase()==="x",x=this.getStatusFromMapping(v),[T,C,S]=this.extractMetadataAndTagsInternal(b),E=k!==void 0,A=this.inheritFileMetadata(C,E),N=this.extractTimeComponents(b,A),I=S;if(A.tags)try{let V=JSON.parse(A.tags);Array.isArray(V)&&(I=this.mergeTags(S,V))}catch(V){I=this.mergeTags(S,[A.tags])}let R=i||this.determineTgProject(e),[j,W]=this.config.parseComments&&o+10){let V=this.tasks.find(G=>G.id===k);V&&(V.childrenIds.push(g),V.children.push(g))}this.updateIndentStack(g,y,m),this.tasks.push(X)}o++}return[...this.tasks]}parseLegacy(a,e="",t,r,i){return this.parse(a,e,t,r,i).map(o=>this.convertToLegacyTask(o))}parseTask(a,e="",t=0){let r=this.parse(a,e);return this.convertToLegacyTask({...r[0],line:t,id:`${e}-L${t}`})}reset(){this.tasks=[],this.indentStack=[],this.currentHeading=void 0,this.currentHeadingLevel=void 0}extractTaskLine(a){let e=a.trim(),t=a.length-e.length;if(this.isTaskLine(e)){let r=this.extractListMarker(e);return[t,t,e,r]}return null}extractListMarker(a){for(let r of["-","*","+"])if(a.startsWith(r))return r;let e=a.split(""),t=0;for(;t0&&t0&&console.warn(`[MarkdownTaskParser] Time parsing warnings for "${a}":`,i),r.length>0&&console.warn(`[MarkdownTaskParser] Time parsing errors for "${a}":`,r);let s={...e,tags:this.safeParseTagsField(e.tags),children:[]};return Object.keys(t).length>0&&(s.timeComponents=t,s.enhancedDates=this.combineTimestampsWithTimeComponents({startDate:e.startDate,dueDate:e.dueDate,scheduledDate:e.scheduledDate,completedDate:e.completedDate},t)),s}catch(t){return console.error(`[MarkdownTaskParser] Failed to extract time components from "${a}":`,t),{...e,tags:this.safeParseTagsField(e.tags),children:[]}}}combineTimestampsWithTimeComponents(a,e){if(!e)return;let t={},r=(i,s)=>{if(!i||!s)return;let o;if(typeof i=="string")if(/^\d{4}-\d{2}-\d{2}$/.test(i)){let[c,u,p]=i.split("-").map(Number);o=new Date(c,u-1,p)}else o=new Date(i);else o=new Date(i);return isNaN(o.getTime())?void 0:new Date(o.getFullYear(),o.getMonth(),o.getDate(),s.hour,s.minute,s.second||0)};return a.startDate&&e.startTime&&(t.startDateTime=r(a.startDate,e.startTime)),a.dueDate&&e.dueTime&&(t.dueDateTime=r(a.dueDate,e.dueTime)),a.scheduledDate&&e.scheduledTime&&(t.scheduledDateTime=r(a.scheduledDate,e.scheduledTime)),a.startDate&&e.endTime&&(t.endDateTime=r(a.startDate,e.endTime)),a.dueDate&&!e.dueTime&&e.scheduledTime&&(t.dueDateTime=r(a.dueDate,e.scheduledTime)),a.scheduledDate&&!e.scheduledTime&&e.dueTime&&(t.scheduledDateTime=r(a.scheduledDate,e.dueTime)),Object.keys(t).length>0?t:void 0}extractDataviewMetadata(a){let e=a.indexOf("[");if(e===-1)return null;let t=a.indexOf("]",e);if(t===-1)return null;let r=a.substring(e+1,t);if(!r.includes("::"))return null;let i=r.split("::",2);if(i.length!==2)return null;let s=i[0].trim(),o=i[1].trim(),c={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion"}[s.toLowerCase()];if(c)s=c;else{let u=s.toLowerCase();for(let[p,m]of Object.entries(this.config.specialTagPrefixes||{}))if(p.toLowerCase()===u){s=m;break}}if(s&&o){Object.keys(this.config.specialTagPrefixes||{}).some(f=>f.toLowerCase()===i[0].trim().toLowerCase())&&console.debug("[TPB] Dataview metadata with configured prefix",{originalKey:i[0].trim(),mappedKey:s,value:o,specialTagPrefixes:Object.keys(this.config.specialTagPrefixes||{})});let p=a.substring(0,e),m=a.substring(t+1);return[s,o,p+m]}return null}extractEmojiMetadata(a){let e=null;for(let[f,h]of Object.entries(this.config.emojiMapping)){let g=a.indexOf(f);g!==-1&&(!e||go.substring(f).startsWith(k))||h==="["){l=f;break}let g=this.findFileExtensionEnd(o,f);if(g>f){l=g;break}if(/\s/.test(h)&&f+1f.trim()).filter(f=>f.length>0).join(","):e.key==="priority"?u=c||e.emoji:u=c||this.getDefaultEmojiValue(e.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(e.key)&&typeof u=="string"){let f=u.match(/\d{4}-\d{2}-\d{2}/);f&&(u=f[0])}let p=e.pos+e.emoji.length+s+l,m=a.substring(p);return[e.key,u,t,m]}findFileExtensionEnd(a,e){let t=[".md",".canvas",".txt",".pdf"];for(let r of t)if(a.substring(e).startsWith(r)){let i=e+r.length;if(i=a.length||a[i]===" ")return i}return e}getDefaultEmojiValue(a){return{"\u{1F53A}":"highest","\u23EB":"high","\u{1F53C}":"medium","\u{1F53D}":"low","\u23EC\uFE0F":"lowest","\u23EC":"lowest"}[a]||"true"}extractTag(a){let e=new Cg(a);e.detectAllProtectedRanges();let t=e.findNextUnprotectedHash(0);if(t===-1)return null;if(!this.isValidTagStart(a,t)){let o=e.findNextUnprotectedHash(t+1);if(o===-1)return null;let l=a.substring(o),c=this.extractTag(l);if(c){let[u,p,m]=c;return[u,a.substring(0,o)+p,m]}return null}let i=a.substring(t+1),s=0;for(let o=0;o=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||l==="/"||l==="-"||l==="_"||c>127&&l!=="\uFF0C"&&l!=="\u3002"&&l!=="\uFF1B"&&l!=="\uFF1A"&&l!=="\uFF01"&&l!=="\uFF1F"&&l!=="\u300C"&&l!=="\u300D"&&l!=="\u300E"&&l!=="\u300F"&&l!=="\uFF08"&&l!=="\uFF09"&&l!=="\u3010"&&l!=="\u3011"&&l!=='"'&&l!=='"'&&l!=="'"&&l!=="'"&&l!==" ")s=o+1;else break}if(s>0){let o="#"+i.substring(0,s),l=a.substring(0,t),c=a.substring(t+1+s);return[o,l,c]}return null}isValidTagStart(a,e){if(e===0)return!0;let t=a[e-1],r=/[\s\(\[\{<,;:!?\-\+\*\/\\\|=]/,i=/[a-zA-Z0-9#@$%^&*]/;return r.test(t)?!0:i.test(t)?!1:!t.match(/[a-zA-Z0-9#@$%^&*]/)}extractContext(a){let e=a.indexOf("@");if(e===-1||!(e===0||a[e-1].match(/\s/)||!a[e-1].match(/[a-zA-Z0-9#@$%^&*]/)))return null;let r=a.substring(e+1),i=0;for(let s=0;s=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122||o==="-"||o==="_"||l>127&&o!=="\uFF0C"&&o!=="\u3002"&&o!=="\uFF1B"&&o!=="\uFF1A"&&o!=="\uFF01"&&o!=="\uFF1F"&&o!=="\u300C"&&o!=="\u300D"&&o!=="\u300E"&&o!=="\u300F"&&o!=="\uFF08"&&o!=="\uFF09"&&o!=="\u3010"&&o!=="\u3011"&&o!=='"'&&o!=='"'&&o!=="'"&&o!=="'"&&o!==" ")i=s+1;else break}if(i>0){let s=r.substring(0,i),o=a.substring(0,e),l=a.substring(e+1+i);return[s,o,l]}return null}extractTagsOnly(a){var s;let e={},t=[],r="",i=a;for(;;){let o=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode==="dataview-only"||this.config.metadataParseMode==="both")){let l=this.extractDataviewMetadata(i);if(l){let[c,u,p]=l;e[c]=u,i=p,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractContext(i);if(l){let[c,u,p]=l,[m,f,h]=this.extractTagsOnly(u);for(let g of h)t.push(g);for(let[g,k]of Object.entries(f))e[g]=k;e.context=c,r+=m,i=p,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractTag(i);if(l){let[c,u,p]=l,m=c.startsWith("#")?c.substring(1):c,f=m.indexOf("/");if(f!==-1){let h=m.substring(0,f),g=m.substring(f+1),k=(s=this.config.specialTagPrefixes[h])!=null?s:this.config.specialTagPrefixes[h.toLowerCase()];k&&this.config.metadataParseMode!=="none"?e[k]=g:t.push(c)}else t.push(c);r+=u,i=p,o=!0;continue}}if(!o){r+=i;break}}return[r.trim(),e,t]}findParentAndLevel(a){if(this.indentStack.length===0||a===0)return[void 0,0];for(let e=this.indentStack.length-1;e>=0;e--){let{taskId:t,indentLevel:r,actualSpaces:i}=this.indentStack[e];if(i0;){if(r++,r>this.config.maxStackOperations){console.warn("Warning: Maximum stack operations reached, clearing stack"),this.indentStack=[];break}if(this.indentStack[this.indentStack.length-1].actualSpaces>=t)this.indentStack.pop();else break}this.indentStack.length>=this.config.maxStackSize&&this.indentStack.splice(0,this.indentStack.length-this.config.maxStackSize+1),this.indentStack.push({taskId:a,indentLevel:e,actualSpaces:t})}getStatusFromMapping(a){for(let[e,t]of Object.entries(this.config.statusMapping))if(t===a)return e}extractHeading(a){let e=a.trim();if(!e.startsWith("#"))return null;let t=0;for(let r of e)if(r==="#")t++;else{if(r.match(/\s/))break;return null}if(t>0&&t<=6){let r=e.substring(t).trim();if(r)return[t,r]}return null}extractMultilineComment(a,e,t){let r=[],i=e,s=0;for(;it&&!this.isTaskLine(l))r.push(l),s++;else break;i++}return r.length===0?[void 0,0]:[r.join(` `),s]}extractLegacyPriority(a){if(!a.priority)return;let e={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1,"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1},t=parseInt(a.priority,10);return isNaN(t)?e[a.priority.toLowerCase()]||e[a.priority]:t}extractLegacyDate(a,e){let t=a[e];if(!t)return;let r=`${t}_${(this.customDateFormats||[]).join(",")}`,i=Sr.dateCache.get(r);if(i!==void 0)return i;let s=wg(t,this.customDateFormats);if(Sr.dateCache.size>=Sr.MAX_CACHE_SIZE){let o=Sr.dateCache.keys().next().value;o&&Sr.dateCache.delete(o)}return Sr.dateCache.set(r,s),s}convertToLegacyTask(a){let e=t=>{try{let r=JSON.parse(t);return Array.isArray(r)?r:[]}catch(r){return[t]}};return{id:a.id,content:a.content,filePath:a.filePath,line:a.line,completed:a.completed,status:a.rawStatus,originalMarkdown:a.originalMarkdown,children:a.children||[],metadata:{tags:a.tags||(a.metadata.tags?e(a.metadata.tags):[]),priority:a.priority||a.metadata.priority,startDate:a.startDate||a.metadata.startDate,dueDate:a.dueDate||a.metadata.dueDate,scheduledDate:a.scheduledDate||a.metadata.scheduledDate,completedDate:a.completedDate||a.metadata.completedDate,createdDate:a.createdDate||a.metadata.createdDate,cancelledDate:a.metadata.cancelledDate,recurrence:a.recurrence||a.metadata.recurrence,project:a.project||a.metadata.project,context:a.context||a.metadata.context,area:a.metadata.area,id:a.metadata.id,dependsOn:a.metadata.dependsOn?a.metadata.dependsOn.split(",").map(t=>t.trim()).filter(t=>t.length>0):void 0,onCompletion:a.metadata.onCompletion,children:a.children,heading:Array.isArray(a.heading)?a.heading:a.heading?[a.heading]:[],parent:a.parentId,tgProject:a.tgProject}}}loadProjectConfig(a){this.config.projectConfig&&(this.projectConfigCache={})}determineTgProject(a){var t,r,i;if(!((t=this.config.projectConfig)!=null&&t.enableEnhancedProject))return;let e=this.config.projectConfig;if(e.pathMappings&&e.pathMappings.length>0){for(let s of e.pathMappings)if(s.enabled&&a.includes(s.pathPattern))return{type:"path",name:s.projectName,source:s.pathPattern,readonly:!0}}if((r=e.metadataConfig)!=null&&r.enabled&&this.fileMetadata){let s=e.metadataConfig.metadataKey||"project",o=this.fileMetadata[s];if(o&&typeof o=="string")return{type:"metadata",name:o,source:s,readonly:!0}}if((i=e.configFile)!=null&&i.enabled&&this.projectConfigCache){let s=this.projectConfigCache.project;if(s&&typeof s=="string")return{type:"config",name:s,source:e.configFile.fileName,readonly:!0}}}static clearDateCache(){Sr.dateCache.clear()}static getDateCacheStats(){return{size:Sr.dateCache.size,maxSize:Sr.MAX_CACHE_SIZE}}parseTagsForMetadata(a){var t;let e={};for(let r of a){let i=r.startsWith("#")?r.substring(1):r,s=i.indexOf("/");if(s!==-1){let o=i.substring(0,s),l=i.substring(s+1),c=(t=this.config.specialTagPrefixes[o])!=null?t:this.config.specialTagPrefixes[o.toLowerCase()];c&&this.config.metadataParseMode!=="none"&&(e[c]=l)}}return e}normalizeTag(a){if(typeof a!="string")return a;let e=a.trim();return!e||e.startsWith("#")?e:`#${e}`}safeParseTagsField(a){if(!a)return[];if(Array.isArray(a))return a;if(typeof a=="string")try{let e=JSON.parse(a);return Array.isArray(e)?e:[a]}catch(e){return[a]}return[]}mergeTags(a,e){let t=a.map(s=>this.normalizeTag(s)),r=e.map(s=>this.normalizeTag(s)),i=[...t];for(let s of r)i.includes(s)||i.push(s);return i}inheritFileMetadata(a,e=!1){var s,o,l,c,u;let t=p=>{if(p==null||typeof p=="number")return String(p);let m=String(p),f={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1,"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1},h=parseInt(m,10);if(!isNaN(h))return String(h);let g=f[m.toLowerCase()]||f[m];return g!==void 0?String(g):m},r={...a};if(r.priority!==void 0&&(r.priority=t(r.priority)),!((s=this.config.fileMetadataInheritance)!=null&&s.enabled))return{};if(!((o=this.config.fileMetadataInheritance)!=null&&o.inheritFromFrontmatter)||e&&!((l=this.config.fileMetadataInheritance)!=null&&l.inheritFromFrontmatterForSubtasks))return r;let i=new Set(["id","content","status","rawStatus","completed","line","lineNumber","originalMarkdown","filePath","heading","headingLevel","parent","parentId","children","childrenIds","indentLevel","actualIndent","listMarker","tgProject","comment","metadata"]);if(this.fileMetadata){try{let p=(u=(c=this.config.projectConfig)==null?void 0:c.metadataConfig)==null?void 0:u.metadataKey;p&&this.fileMetadata[p]!==void 0&&this.fileMetadata[p]!==null&&String(this.fileMetadata[p]).trim()!==""&&(r.project===void 0||r.project===null||r.project==="")&&(r.project=String(this.fileMetadata[p]).trim())}catch(p){}for(let[p,m]of Object.entries(this.fileMetadata))if(p==="tags"&&Array.isArray(m)){let f=this.parseTagsForMetadata(m);for(let[h,g]of Object.entries(f))!i.has(h)&&(r[h]===void 0||r[h]===null||r[h]==="")&&g!==void 0&&g!==null&&(h==="priority"?r[h]=t(g):r[h]=String(g));if(!i.has("tags")&&(r.tags===void 0||r.tags===null||r.tags==="")){let h=m.map(g=>this.normalizeTag(g));r.tags=JSON.stringify(h)}}else!i.has(p)&&(r[p]===void 0||r[p]===null||r[p]==="")&&m!==void 0&&m!==null&&(p==="priority"?r[p]=t(m):r[p]=String(m))}if(this.projectConfigCache)for(let[p,m]of Object.entries(this.projectConfigCache))!i.has(p)&&(r[p]===void 0||r[p]===null||r[p]==="")&&!(this.fileMetadata&&this.fileMetadata[p]!==void 0)&&m!==void 0&&m!==null&&(p==="priority"?r[p]=t(m):r[p]=String(m));return r}};Sr.dateCache=new Map,Sr.MAX_CACHE_SIZE=1e4;zi=Sr,No=class extends zi{constructor(a,e){let t={parseMetadata:!0,parseTags:!0,parseComments:!0,parseHeadings:!0,maxIndentSize:100,maxParseIterations:100,maxMetadataIterations:50,maxTagLength:50,maxEmojiValueLength:50,maxStackOperations:1e3,maxStackSize:50,statusMapping:{TODO:" ",IN_PROGRESS:"/",DONE:"x",CANCELLED:"-"},emojiMapping:{"\u{1F4C5}":"dueDate","\u{1F6EB}":"startDate","\u23F3":"scheduledDate","\u2705":"completedDate","\u2795":"createdDate","\u274C":"cancelledDate","\u{1F194}":"id","\u26D4":"dependsOn","\u{1F3C1}":"onCompletion","\u{1F501}":"repeat","\u{1F53A}":"priority","\u23EB":"priority","\u{1F53C}":"priority","\u{1F53D}":"priority","\u23EC":"priority"},metadataParseMode:"both",specialTagPrefixes:{project:"project","@":"context"}};super({...t,...a},e)}}});var Bs,du=D(()=>{xg();Bs=(n,a)=>{var s,o,l,c,u,p,m,f,h,g,k,y;let e=((o=(s=a==null?void 0:a.settings)==null?void 0:s.projectTagPrefix)==null?void 0:o[n])||"project",t=((c=(l=a==null?void 0:a.settings)==null?void 0:l.contextTagPrefix)==null?void 0:c[n])||(n==="dataview"?"context":"@"),r=((p=(u=a==null?void 0:a.settings)==null?void 0:u.areaTagPrefix)==null?void 0:p[n])||"area";return{parseTags:!0,parseMetadata:!0,parseHeadings:!0,parseComments:!1,metadataParseMode:n==="dataview"?"dataview-only":"both",statusMapping:{todo:" ",done:"x",cancelled:"-",forwarded:">",scheduled:"<",important:"!",question:"?",incomplete:"/",paused:"p",pro:"P",con:"C",quote:"Q",note:"N",bookmark:"b",information:"i",savings:"S",idea:"I",location:"l",phone:"k",win:"w",key:"K"},emojiMapping:{"\u{1F4C5}":"dueDate","\u{1F6EB}":"startDate","\u23F3":"scheduledDate","\u2705":"completedDate","\u274C":"cancelledDate","\u2795":"createdDate","\u{1F501}":"recurrence","\u{1F3C1}":"onCompletion","\u26D4":"dependsOn","\u{1F194}":"id","\u{1F53A}":"priority","\u23EB":"priority","\u{1F53C}":"priority","\u{1F53D}":"priority","\u23EC":"priority"},specialTagPrefixes:(()=>{let b={};return e&&(b[e]="project",b[String(e).toLowerCase()]="project"),r&&(b[r]="area",b[String(r).toLowerCase()]="area"),t&&(b[t]="context",b[String(t).toLowerCase()]="context"),b})(),maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:(f=(m=a==null?void 0:a.settings)==null?void 0:m.projectConfig)!=null&&f.enableEnhancedProject?(h=a==null?void 0:a.settings)==null?void 0:h.projectConfig:void 0,fileMetadataInheritance:(g=a==null?void 0:a.settings)==null?void 0:g.fileMetadataInheritance,customDateFormats:(k=a==null?void 0:a.settings)!=null&&k.enableCustomDateFormats?(y=a==null?void 0:a.settings)==null?void 0:y.customDateFormats:void 0}}});var L$,_w,NO=D(()=>{L$={"Search settings...":"Search settings...","Clear search":"Clear search","No settings found":"No settings found","File Metadata Inheritance":"File Metadata Inheritance","Configure how tasks inherit metadata from file frontmatter":"Configure how tasks inherit metadata from file frontmatter","Enable file metadata inheritance":"Enable file metadata inheritance","Allow tasks to inherit metadata properties from their file's frontmatter":"Allow tasks to inherit metadata properties from their file's frontmatter","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.","Show progress bar":"Show progress bar","Toggle this to show the progress bar.":"Toggle this to show the progress bar.","Support hover to show progress info":"Support hover to show progress info","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Toggle this to allow this plugin to show progress info when hovering over the progress bar.","Add progress bar to non-task bullet":"Add progress bar to non-task bullet","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Toggle this to allow adding progress bars to regular list items (non-task bullets).","Add progress bar to Heading":"Add progress bar to Heading","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Toggle this to allow this plugin to add progress bar for Task below the headings.","Enable heading progress bars":"Enable heading progress bars","Add progress bars to headings to show progress of all tasks under that heading.":"Add progress bars to headings to show progress of all tasks under that heading.","Auto complete parent task":"Auto complete parent task","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.","Mark parent as 'In Progress' when partially complete":"Mark parent as 'In Progress' when partially complete","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Count sub children level of current Task":"Count sub children level of current Task","Toggle this to allow this plugin to count sub tasks.":"Toggle this to allow this plugin to count sub tasks.","Checkbox Status Settings":"Checkbox Status Settings","Select a predefined task status collection or customize your own":"Select a predefined task status collection or customize your own","Completed task markers":"Completed task markers",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Characters in square brackets that represent completed tasks. Example: "x|X"',"Planned task markers":"Planned task markers",'Characters in square brackets that represent planned tasks. Example: "?"':'Characters in square brackets that represent planned tasks. Example: "?"',"In progress task markers":"In progress task markers",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Characters in square brackets that represent tasks in progress. Example: ">|/"',"Abandoned task markers":"Abandoned task markers",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Characters in square brackets that represent abandoned tasks. Example: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Characters in square brackets that represent not started tasks. Default is space " "',"Count other statuses as":"Count other statuses as",'Select the status to count other statuses as. Default is "Not Started".':'Select the status to count other statuses as. Default is "Not Started".',"Task Counting Settings":"Task Counting Settings","Exclude specific task markers":"Exclude specific task markers",'Specify task markers to exclude from counting. Example: "?|/"':'Specify task markers to exclude from counting. Example: "?|/"',"Only count specific task markers":"Only count specific task markers","Toggle this to only count specific task markers":"Toggle this to only count specific task markers","Specific task markers to count":"Specific task markers to count",'Specify which task markers to count. Example: "x|X|>|/"':'Specify which task markers to count. Example: "x|X|>|/"',"Conditional Progress Bar Display":"Conditional Progress Bar Display","Hide progress bars based on conditions":"Hide progress bars based on conditions","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Toggle this to enable hiding progress bars based on tags, folders, or metadata.","Hide by tags":"Hide by tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"',"Hide by folders":"Hide by folders",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"',"Hide by metadata":"Hide by metadata",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"',"Checkbox Status Switcher":"Checkbox Status Switcher","Enable task status switcher":"Enable task status switcher","Enable/disable the ability to cycle through task states by clicking.":"Enable/disable the ability to cycle through task states by clicking.","Enable custom task marks":"Enable custom task marks","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your task status cycle when clicked.","Enable cycle complete status":"Enable cycle complete status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Enable/disable the ability to automatically cycle through task states when pressing a mark.","Always cycle new tasks":"Always cycle new tasks","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.","Checkbox Status Cycle and Marks":"Checkbox Status Cycle and Marks","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.","Add Status":"Add Status","Completed Task Mover":"Completed Task Mover","Enable completed task mover":"Enable completed task mover","Toggle this to enable commands for moving completed tasks to another file.":"Toggle this to enable commands for moving completed tasks to another file.","Task marker type":"Task marker type","Choose what type of marker to add to moved tasks":"Choose what type of marker to add to moved tasks","Version marker text":"Version marker text","Text to append to tasks when moved (e.g., 'version 1.0')":"Text to append to tasks when moved (e.g., 'version 1.0')","Date marker text":"Date marker text","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Text to append to tasks when moved (e.g., 'archived on 2023-12-31')","Custom marker text":"Custom marker text","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Treat abandoned tasks as completed","If enabled, abandoned tasks will be treated as completed.":"If enabled, abandoned tasks will be treated as completed.","Complete all moved tasks":"Complete all moved tasks","If enabled, all moved tasks will be marked as completed.":"If enabled, all moved tasks will be marked as completed.","With current file link":"With current file link","A link to the current file will be added to the parent task of the moved tasks.":"A link to the current file will be added to the parent task of the moved tasks.","Say Thank You":"Say Thank You",Donate:"Donate","If you like this plugin, consider donating to support continued development:":"If you like this plugin, consider donating to support continued development:","Add number to the Progress Bar":"Add number to the Progress Bar","Toggle this to allow this plugin to add tasks number to progress bar.":"Toggle this to allow this plugin to add tasks number to progress bar.","Show percentage":"Show percentage","Toggle this to allow this plugin to show percentage in the progress bar.":"Toggle this to allow this plugin to show percentage in the progress bar.","Customize progress text":"Customize progress text","Toggle this to customize text representation for different progress percentage ranges.":"Toggle this to customize text representation for different progress percentage ranges.","Progress Ranges":"Progress Ranges","Define progress ranges and their corresponding text representations.":"Define progress ranges and their corresponding text representations.","Add new range":"Add new range","Add a new progress percentage range with custom text":"Add a new progress percentage range with custom text","Min percentage (0-100)":"Min percentage (0-100)","Max percentage (0-100)":"Max percentage (0-100)","Text template (use {{PROGRESS}})":"Text template (use {{PROGRESS}})","Reset to defaults":"Reset to defaults","Reset progress ranges to default values":"Reset progress ranges to default values",Reset:"Reset","Priority Picker Settings":"Priority Picker Settings","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Toggle to enable priority picker dropdown for emoji and letter format priorities.","Enable priority picker":"Enable priority picker","Enable priority keyboard shortcuts":"Enable priority keyboard shortcuts","Toggle to enable keyboard shortcuts for setting task priorities.":"Toggle to enable keyboard shortcuts for setting task priorities.","Date picker":"Date picker","Enable date picker":"Enable date picker","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.","Date mark":"Date mark","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Emoji mark to identify dates. You can use multiple emoji separated by commas.","Quick capture":"Quick capture","Enable quick capture":"Enable quick capture","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.","Target file":"Target file","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Placeholder text":"Placeholder text","Placeholder text to display in the capture panel":"Placeholder text to display in the capture panel","Append to file":"Append to file","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Daily note format":"Daily note format","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD, supports nested formats like YYYY-MM/YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location","Task Filter":"Task Filter","Enable Task Filter":"Enable Task Filter","Toggle this to enable the task filter panel":"Toggle this to enable the task filter panel","Preset Filters":"Preset Filters","Create and manage preset filters for quick access to commonly used task filters.":"Create and manage preset filters for quick access to commonly used task filters.","Edit Filter: ":"Edit Filter: ","Filter name":"Filter name","Checkbox Status":"Checkbox Status","Include or exclude tasks based on their status":"Include or exclude tasks based on their status","Include Completed Tasks":"Include Completed Tasks","Include In Progress Tasks":"Include In Progress Tasks","Include Abandoned Tasks":"Include Abandoned Tasks","Include Not Started Tasks":"Include Not Started Tasks","Include Planned Tasks":"Include Planned Tasks","Related Tasks":"Related Tasks","Include parent, child, and sibling tasks in the filter":"Include parent, child, and sibling tasks in the filter","Include Parent Tasks":"Include Parent Tasks","Include Child Tasks":"Include Child Tasks","Include Sibling Tasks":"Include Sibling Tasks","Advanced Filter":"Advanced Filter","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'","Filter query":"Filter query","Filter out tasks":"Filter out tasks","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"If enabled, tasks that match the query will be hidden, otherwise they will be shown",Save:"Save",Cancel:"Cancel","Hide filter panel":"Hide filter panel","Show filter panel":"Show filter panel","Filter Tasks":"Filter Tasks","Preset filters":"Preset filters","Select a saved filter preset to apply":"Select a saved filter preset to apply","Select a preset...":"Select a preset...",Query:"Query","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"If true, tasks that match the query will be hidden, otherwise they will be shown",Completed:"Completed","In Progress":"In Progress",Abandoned:"Abandoned","Not Started":"Not Started",Planned:"Planned","Include Related Tasks":"Include Related Tasks","Parent Tasks":"Parent Tasks","Child Tasks":"Child Tasks","Sibling Tasks":"Sibling Tasks",Apply:"Apply","New Preset":"New Preset","Preset saved":"Preset saved","No changes to save":"No changes to save",Close:"Close","Capture to":"Capture to",Capture:"Capture","Capture thoughts, tasks, or ideas...":"Capture thoughts, tasks, or ideas...",Tomorrow:"Tomorrow","In 2 days":"In 2 days","In 3 days":"In 3 days","In 5 days":"In 5 days","In 1 week":"In 1 week","In 10 days":"In 10 days","In 2 weeks":"In 2 weeks","In 1 month":"In 1 month","In 2 months":"In 2 months","In 3 months":"In 3 months","In 6 months":"In 6 months","In 1 year":"In 1 year","In 5 years":"In 5 years","In 10 years":"In 10 years",Today:"Today","Quick Select":"Quick Select",Calendar:"Calendar","Clear Date":"Clear Date","Highest priority":"Highest priority","High priority":"High priority","Medium priority":"Medium priority","No priority":"No priority","Low priority":"Low priority","Lowest priority":"Lowest priority","Priority A":"Priority A","Priority B":"Priority B","Priority C":"Priority C","Task Priority":"Task Priority","Remove Priority":"Remove Priority","Cycle task status forward":"Cycle task status forward","Cycle task status backward":"Cycle task status backward","Remove priority":"Remove priority","Move task to another file":"Move task to another file","Move all completed subtasks to another file":"Move all completed subtasks to another file","Move direct completed subtasks to another file":"Move direct completed subtasks to another file","Move all subtasks to another file":"Move all subtasks to another file","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file","moved on":"moved on","Set priority":"Set priority","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Quick Capture":"Quick Capture","Toggle task filter panel":"Toggle task filter panel","Filter Mode":"Filter Mode","Choose whether to include or exclude tasks that match the filters":"Choose whether to include or exclude tasks that match the filters","Show matching tasks":"Show matching tasks","Hide matching tasks":"Hide matching tasks","Choose whether to show or hide tasks that match the filters":"Choose whether to show or hide tasks that match the filters","Create new file:":"Create new file:","Completed tasks moved to":"Completed tasks moved to","Failed to create file:":"Failed to create file:","Beginning of file":"Beginning of file","Failed to move tasks:":"Failed to move tasks:","No active file found":"No active file found","Task moved to":"Task moved to","Failed to move task:":"Failed to move task:","Nothing to capture":"Nothing to capture","Captured successfully":"Captured successfully","Failed to save:":"Failed to save:","Captured successfully to":"Captured successfully to",Total:"Total",Workflow:"Workflow","Add as workflow root":"Add as workflow root","Move to stage":"Move to stage","Complete stage":"Complete stage","Add child task with same stage":"Add child task with same stage","Could not open quick capture panel in the current editor":"Could not open quick capture panel in the current editor","Just started {{PROGRESS}}%":"Just started {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Making progress {{PROGRESS}}%","Half way {{PROGRESS}}%":"Half way {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Good progress {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Almost there {{PROGRESS}}%","Progress bar":"Progress bar","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.","Hide progress bars":"Hide progress bars","Parent task changer":"Parent task changer","Change the parent task of the current task.":"Change the parent task of the current task.","No preset filters created yet. Click 'Add New Preset' to create one.":"No preset filters created yet. Click 'Add New Preset' to create one.","Configure task workflows for project and process management":"Configure task workflows for project and process management","Enable workflow":"Enable workflow","Toggle to enable the workflow system for tasks":"Toggle to enable the workflow system for tasks","Auto-add timestamp":"Auto-add timestamp","Automatically add a timestamp to the task when it is created":"Automatically add a timestamp to the task when it is created","Timestamp format:":"Timestamp format:","Timestamp format":"Timestamp format","Remove timestamp when moving to next stage":"Remove timestamp when moving to next stage","Remove the timestamp from the current task when moving to the next stage":"Remove the timestamp from the current task when moving to the next stage","Calculate spent time":"Calculate spent time","Calculate and display the time spent on the task when moving to the next stage":"Calculate and display the time spent on the task when moving to the next stage","Format for spent time:":"Format for spent time:","Calculate spent time when move to next stage.":"Calculate spent time when move to next stage.","Spent time format":"Spent time format","Calculate full spent time":"Calculate full spent time","Calculate the full spent time from the start of the task to the last stage":"Calculate the full spent time from the start of the task to the last stage","Auto remove last stage marker":"Auto remove last stage marker","Automatically remove the last stage marker when a task is completed":"Automatically remove the last stage marker when a task is completed","Auto-add next task":"Auto-add next task","Automatically create a new task with the next stage when completing a task":"Automatically create a new task with the next stage when completing a task","Workflow definitions":"Workflow definitions","Configure workflow templates for different types of processes":"Configure workflow templates for different types of processes","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"No workflow definitions created yet. Click 'Add New Workflow' to create one.","Edit workflow":"Edit workflow","Remove workflow":"Remove workflow","Delete workflow":"Delete workflow",Delete:"Delete","Add New Workflow":"Add New Workflow","New Workflow":"New Workflow","Create New Workflow":"Create New Workflow","Workflow name":"Workflow name","A descriptive name for the workflow":"A descriptive name for the workflow","Workflow ID":"Workflow ID","A unique identifier for the workflow (used in tags)":"A unique identifier for the workflow (used in tags)",Description:"Description","Optional description for the workflow":"Optional description for the workflow","Describe the purpose and use of this workflow...":"Describe the purpose and use of this workflow...","Workflow Stages":"Workflow Stages","No stages defined yet. Add a stage to get started.":"No stages defined yet. Add a stage to get started.",Edit:"Edit","Move up":"Move up","Move down":"Move down","Sub-stage":"Sub-stage","Sub-stage name":"Sub-stage name","Sub-stage ID":"Sub-stage ID","Next: ":"Next: ","Add Sub-stage":"Add Sub-stage","New Sub-stage":"New Sub-stage","Edit Stage":"Edit Stage","Stage name":"Stage name","A descriptive name for this workflow stage":"A descriptive name for this workflow stage","Stage ID":"Stage ID","A unique identifier for the stage (used in tags)":"A unique identifier for the stage (used in tags)","Stage type":"Stage type","The type of this workflow stage":"The type of this workflow stage","Linear (sequential)":"Linear (sequential)","Cycle (repeatable)":"Cycle (repeatable)","Terminal (end stage)":"Terminal (end stage)","Next stage":"Next stage","The stage to proceed to after this one":"The stage to proceed to after this one","Sub-stages":"Sub-stages","Define cycle sub-stages (optional)":"Define cycle sub-stages (optional)","No sub-stages defined yet.":"No sub-stages defined yet.","Can proceed to":"Can proceed to","Additional stages that can follow this one (for right-click menu)":"Additional stages that can follow this one (for right-click menu)","No additional destination stages defined.":"No additional destination stages defined.",Remove:"Remove",Add:"Add","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Name and ID are required.":"Name and ID are required.","End of file":"End of file","Include in cycle":"Include in cycle",Preset:"Preset","Preset name":"Preset name","Edit Filter":"Edit Filter","Add New Preset":"Add New Preset","New Filter":"New Filter","Reset to Default Presets":"Reset to Default Presets","This will replace all your current presets with the default set. Are you sure?":"This will replace all your current presets with the default set. Are you sure?","Edit Workflow":"Edit Workflow",General:"General","Views & Index":"Views & Index","Progress Display":"Progress Display","Task Management":"Task Management",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Projects:"Projects",Rewards:"Rewards",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features",About:"About","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Count sub children of current Task":"Count sub children of current Task","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Toggle this to allow this plugin to count sub tasks when generating progress bar .","Configure task status settings":"Configure task status settings","Configure which task markers to count or exclude":"Configure which task markers to count or exclude","On Completion":"On Completion","Action to execute on completion":"Action to execute on completion","Configuration is valid":"Configuration is valid","Action Type":"Action Type","Select action type":"Select action type",Keep:"Keep",Complete:"Complete",Move:"Move",Archive:"Archive",Duplicate:"Duplicate","Target File":"Target File","Select target file":"Select target file","Target Section":"Target Section","Section name (optional)":"Section name (optional)","Create section if not exists":"Create section if not exists","Task IDs":"Task IDs","Task IDs to complete (comma-separated)":"Task IDs to complete (comma-separated)","Archive File":"Archive File","Archive Section":"Archive Section","Include metadata in duplicate":"Include metadata in duplicate","Invalid JSON format":"Invalid JSON format","Action type is required":"Action type is required","Target file is required for move action":"Target file is required for move action","Task IDs are required for complete action":"Task IDs are required for complete action","Archive file is required for archive action":"Archive file is required for archive action","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",File:"File",Folder:"Folder",Pattern:"Pattern","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Preset Templates":"Preset Templates","Quick setup for common filtering scenarios":"Quick setup for common filtering scenarios","Exclude System Folders":"Exclude System Folders","Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files":"Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files","Apply System Exclusions":"Apply System Exclusions","This will enable file filtering and add system folder exclusion rules":"This will enable file filtering and add system folder exclusion rules","System Folders Already Excluded":"System Folders Already Excluded","All system folder exclusion rules are already configured and active":"All system folder exclusion rules are already configured and active","File filtering enabled and {{count}} system exclusion rules added":"File filtering enabled and {{count}} system exclusion rules added","File filtering enabled with existing system exclusion rules":"File filtering enabled with existing system exclusion rules","{{count}} system exclusion rules added":"{{count}} system exclusion rules added","System exclusion rules updated":"System exclusion rules updated","System folder exclusions added":"System folder exclusions added","Active Rules":"Active Rules","Cache Size":"Cache Size",Status:"Status",Enabled:"Enabled",Disabled:"Disabled","Task status cycle and marks":"Task status cycle and marks","About Task Genius":"About Task Genius",Version:"Version",Documentation:"Documentation","View the documentation for this plugin":"View the documentation for this plugin","Open Documentation":"Open Documentation","Incomplete tasks":"Incomplete tasks","In progress tasks":"In progress tasks","Completed tasks":"Completed tasks","All tasks":"All tasks","After heading":"After heading","End of section":"End of section","Enable text mark in source mode":"Enable text mark in source mode","Make the text mark in source mode follow the task status cycle when clicked.":"Make the text mark in source mode follow the task status cycle when clicked.","Status name":"Status name","Progress display mode":"Progress display mode","Choose how to display task progress":"Choose how to display task progress","No progress indicators":"No progress indicators","Graphical progress bar":"Graphical progress bar","Text progress indicator":"Text progress indicator","Both graphical and text":"Both graphical and text","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Toggle this to allow this plugin to count sub tasks when generating progress bar.","Progress format":"Progress format","Choose how to display the task progress":"Choose how to display the task progress","Percentage (75%)":"Percentage (75%)","Bracketed percentage ([75%])":"Bracketed percentage ([75%])","Fraction (3/4)":"Fraction (3/4)","Bracketed fraction ([3/4])":"Bracketed fraction ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Custom format","Range-based text":"Range-based text","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Preview:","Available placeholders":"Available placeholders","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Expression examples","Examples of advanced formats using expressions":"Examples of advanced formats using expressions","Text Progress Bar":"Text Progress Bar","Emoji Progress Bar":"Emoji Progress Bar","ICS Integration":"ICS Integration","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Show in Calendar Views":"Show in Calendar Views","Display ICS events in calendar views":"Display ICS events in calendar views","Show in Task Lists":"Show in Task Lists","Display ICS events as read-only tasks in task lists":"Display ICS events as read-only tasks in task lists","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","Add ICS Source":"Add ICS Source","Add a new calendar source":"Add a new calendar source","Add Source":"Add Source","ICS Enabled":"Enabled","ICS Disabled":"Disabled","ICS Enable":"Enable","ICS Disable":"Disable","Sync Now":"Sync Now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ","Edit ICS Source":"Edit ICS Source","ICS Source Name":"Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)",Color:"Color","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","ICS Username":"Username","ICS Password":"Password","ICS Bearer Token":"Bearer Token","JSON object with custom headers":"JSON object with custom headers","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Color-coded Status":"Color-coded Status","Status with Icons":"Status with Icons",Preview:"Preview",Use:"Use","Save Filter Configuration":"Save Filter Configuration","Load Filter Configuration":"Load Filter Configuration","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","Filter Configuration Name":"Filter Configuration Name","Filter Configuration Description":"Filter Configuration Description","Enter a name for this filter configuration":"Enter a name for this filter configuration","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration saved successfully":"Filter configuration saved successfully","Filter configuration loaded successfully":"Filter configuration loaded successfully","Filter configuration deleted successfully":"Filter configuration deleted successfully","Failed to save filter configuration":"Failed to save filter configuration","Failed to load filter configuration":"Failed to load filter configuration","Failed to delete filter configuration":"Failed to delete filter configuration","Filter configuration name is required":"Filter configuration name is required","Toggle this to show percentage instead of completed/total count.":"Toggle this to show percentage instead of completed/total count.","Customize progress ranges":"Customize progress ranges","Toggle this to customize the text for different progress ranges.":"Toggle this to customize the text for different progress ranges.","Apply Theme":"Apply Theme","Back to main settings":"Back to main settings","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.","Target File:":"Target File:","Task Properties":"Task Properties","Start Date":"Start Date","Due Date":"Due Date","Scheduled Date":"Scheduled Date",Priority:"Priority",None:"None",Highest:"Highest",High:"High",Medium:"Medium",Low:"Low",Lowest:"Lowest",Project:"Project","Project name":"Project name",Context:"Context",Recurrence:"Recurrence","e.g., every day, every week":"e.g., every day, every week","Task Content":"Task Content","Task Details":"Task Details","Task File":"File","Edit in File":"Edit in File","Mark Incomplete":"Mark Incomplete","Mark Complete":"Mark Complete","Task Title":"Task Title",Tags:"Tags","e.g. every day, every 2 weeks":"e.g. every day, every 2 weeks",Forecast:"Forecast","0 actions, 0 projects":"0 actions, 0 projects","Toggle list/tree view":"Toggle list/tree view","Focusing on Work":"Focusing on Work",Unfocus:"Unfocus","Past Due":"Past Due",Future:"Future",actions:"actions",project:"project","Coming Up":"Coming Up",Task:"Task",Tasks:"Tasks","No upcoming tasks":"No upcoming tasks","No tasks scheduled":"No tasks scheduled","0 tasks":"0 tasks","Filter tasks...":"Filter tasks...","Toggle multi-select":"Toggle multi-select","No projects found":"No projects found","projects selected":"projects selected",tasks:"tasks","No tasks in the selected projects":"No tasks in the selected projects","Select a project to see related tasks":"Select a project to see related tasks","Configure Review for":"Configure Review for","Review Frequency":"Review Frequency","How often should this project be reviewed":"How often should this project be reviewed","Custom...":"Custom...","e.g., every 3 months":"e.g., every 3 months","Last Reviewed":"Last Reviewed","Please specify a review frequency":"Please specify a review frequency","Review schedule updated for":"Review schedule updated for","Review Projects":"Review Projects","Select a project to review its tasks.":"Select a project to review its tasks.","Configured for Review":"Configured for Review","Not Configured":"Not Configured","No projects available.":"No projects available.","Select a project to review.":"Select a project to review.","Show all tasks":"Show all tasks","Showing all tasks, including completed tasks from previous reviews.":"Showing all tasks, including completed tasks from previous reviews.","Show only new and in-progress tasks":"Show only new and in-progress tasks","No tasks found for this project.":"No tasks found for this project.","Review every":"Review every",never:"never","Last reviewed":"Last reviewed","Mark as Reviewed":"Mark as Reviewed","No review schedule configured for this project":"No review schedule configured for this project","Configure Review Schedule":"Configure Review Schedule","Project Review":"Project Review","Select a project from the left sidebar to review its tasks.":"Select a project from the left sidebar to review its tasks.",Inbox:"Inbox",Flagged:"Flagged",Review:"Review","tags selected":"tags selected","No tasks with the selected tags":"No tasks with the selected tags","Select a tag to see related tasks":"Select a tag to see related tasks","Open Task Genius view":"Open Task Genius view","Minimal Quick Capture":"Minimal Quick Capture","Refresh task index":"Refresh task index","Refreshing task index...":"Refreshing task index...","Task index refreshed":"Task index refreshed","Failed to refresh task index":"Failed to refresh task index","Force reindex all tasks":"Force reindex all tasks","Clearing task cache and rebuilding index...":"Clearing task cache and rebuilding index...","Task index completely rebuilt":"Task index completely rebuilt","Failed to force reindex tasks":"Failed to force reindex tasks","Task Genius View":"Task Genius View","Toggle Sidebar":"Toggle Sidebar",Details:"Details",View:"View","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.","Enable task genius view":"Enable task genius view","Select a task to view details":"Select a task to view details","Task Status":"Status","Comma separated":"Comma separated",Focus:"Focus","Loading more...":"Loading more...",projects:"projects","No tasks for this section.":"No tasks for this section.","No tasks found.":"No tasks found.","Switch status":"Switch status","Rebuild index":"Rebuild index",Rebuild:"Rebuild","0 tasks, 0 projects":"0 tasks, 0 projects","New Custom View":"New Custom View","Create Custom View":"Create Custom View","Edit View: ":"Edit View: ","View Name":"View Name","My Custom Task View":"My Custom Task View","Icon Name":"Icon Name","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Enter any Lucide icon name (e.g., list-checks, filter, inbox)","Filter Rules":"Filter Rules","Hide Completed and Abandoned Tasks":"Hide Completed and Abandoned Tasks","Hide completed and abandoned tasks in this view.":"Hide completed and abandoned tasks in this view.","Text Contains":"Text Contains","Filter tasks whose content includes this text (case-insensitive).":"Filter tasks whose content includes this text (case-insensitive).","Tags Include":"Tags Include","Task must include ALL these tags (comma-separated).":"Task must include ALL these tags (comma-separated).","Tags Exclude":"Tags Exclude","Task must NOT include ANY of these tags (comma-separated).":"Task must NOT include ANY of these tags (comma-separated).","Project Is":"Project Is","Task must belong to this project (exact match).":"Task must belong to this project (exact match).","Priority Is":"Priority Is","Task must have this priority (e.g., 1, 2, 3).":"Task must have this priority (e.g., 1, 2, 3).","Status Include":"Status Include","Task status must be one of these (comma-separated markers, e.g., /,>).":"Task status must be one of these (comma-separated markers, e.g., /,>).","Status Exclude":"Status Exclude","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"Task status must NOT be one of these (comma-separated markers, e.g., -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.","Due Date Is":"Due Date Is","Start Date Is":"Start Date Is","Scheduled Date Is":"Scheduled Date Is","Path Includes":"Path Includes","Task must contain this path (case-insensitive).":"Task must contain this path (case-insensitive).","Path Excludes":"Path Excludes","Task must NOT contain this path (case-insensitive).":"Task must NOT contain this path (case-insensitive).","Unnamed View":"Unnamed View","View configuration saved.":"View configuration saved.","Hide Details":"Hide Details","Show Details":"Show Details","View Config":"View Config","View Configuration":"View Configuration","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure the Task Genius sidebar views, visibility, order, and create custom views.","Manage Views":"Manage Views","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure sidebar views, order, visibility, and hide/show completed tasks per view.","Show in sidebar":"Show in sidebar","Edit View":"Edit View","Move Up":"Move Up","Move Down":"Move Down","Delete View":"Delete View","Add Custom View":"Add Custom View","Error: View ID already exists.":"Error: View ID already exists.",Events:"Events",Plan:"Plan",Year:"Year",Month:"Month",Week:"Week",Day:"Day",Agenda:"Agenda","Back to categories":"Back to categories","No matching options found":"No matching options found","No matching filters found":"No matching filters found",Tag:"Tag","File Path":"File Path","Add filter":"Add filter","Clear all":"Clear all","Add Card":"Add Card","First Day of Week":"First Day of Week","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"Show checkbox","Show a checkbox for each task in the kanban view.":"Show a checkbox for each task in the kanban view.","Locale Default":"Locale Default","Use custom goal for progress bar":"Use custom goal for progress bar","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.","Prefer metadata format of task":"Prefer metadata format of task","You can choose dataview format or tasks format, that will influence both index and save format.":"You can choose dataview format or tasks format, that will influence both index and save format.","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.","Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.":"Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Format Examples:":"Format Examples:","always uses @ prefix":"always uses @ prefix","Open in new tab":"Open in new tab","Open settings":"Open settings","Hide in sidebar":"Hide in sidebar","No items found":"No items found","High Priority":"High Priority","Medium Priority":"Medium Priority","Low Priority":"Low Priority","No tasks in the selected items":"No tasks in the selected items","View Type":"View Type","Select the type of view to create":"Select the type of view to create","Standard View":"Standard View","Two Column View":"Two Column View",Items:"Items","selected items":"selected items","No items selected":"No items selected","Two Column View Settings":"Two Column View Settings","Group by Task Property":"Group by Task Property","Select which task property to use for left column grouping":"Select which task property to use for left column grouping",Priorities:"Priorities",Contexts:"Contexts","Due Dates":"Due Dates","Scheduled Dates":"Scheduled Dates","Start Dates":"Start Dates",Files:"Files","Left Column Title":"Left Column Title","Title for the left column (items list)":"Title for the left column (items list)","Right Column Title":"Right Column Title","Default title for the right column (tasks list)":"Default title for the right column (tasks list)","Multi-select Text":"Multi-select Text","Text to show when multiple items are selected":"Text to show when multiple items are selected","Empty State Text":"Empty State Text","Text to show when no items are selected":"Text to show when no items are selected","Filter Blanks":"Filter Blanks","Filter out blank tasks in this view.":"Filter out blank tasks in this view.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"Task must contain this path (case-insensitive). Separate multiple paths with commas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.","You have unsaved changes. Save before closing?":"You have unsaved changes. Save before closing?",Rotate:"Rotate","Are you sure you want to force reindex all tasks?":"Are you sure you want to force reindex all tasks?","Enable progress bar in reading mode":"Enable progress bar in reading mode","Toggle this to allow this plugin to show progress bars in reading mode.":"Toggle this to allow this plugin to show progress bars in reading mode.",Range:"Range","as a placeholder for the percentage value":"as a placeholder for the percentage value","Template text with":"Template text with",placeholder:"placeholder",Reindex:"Reindex","From now":"From now","Complete workflow":"Complete workflow","Quick Workflow Creation":"Quick Workflow Creation","Create quick workflow":"Create quick workflow","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","Project Management":"Project Management","Standard project management workflow":"Standard project management workflow","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow","Workflow created successfully":"Workflow created successfully","Convert task to workflow template":"Convert task to workflow template","Convert to workflow template":"Convert to workflow template","Convert Task to Workflow":"Convert Task to Workflow","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No task structure found at cursor position":"No task structure found at cursor position","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern","Workflow created from task structure":"Workflow created from task structure","Start workflow here":"Start workflow here","Start Workflow Here":"Start Workflow Here","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Start workflow":"Start workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Convert to workflow root":"Convert to workflow root","Convert Current Task to Workflow Root":"Convert Current Task to Workflow Root","Convert to Workflow Root":"Convert to Workflow Root","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","Duplicate workflow":"Duplicate workflow","Duplicate Workflow":"Duplicate Workflow","No workflows to duplicate":"No workflows to duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow quick actions":"Workflow quick actions","Create Quick Workflow":"Create Quick Workflow","Current: ":"Current: ",completed:"completed",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Move to":"Move to",Settings:"Settings","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Status Incomplete":"Incomplete","Status Complete":"Complete","Status Cancelled":"Cancelled","Status In Progress":"In Progress","Status Question":"Question","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable rewards":"Enable rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence levels":"Occurrence levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level name (e.g., common)":"Level name (e.g., common)","Chance (%)":"Chance (%)","Delete level":"Delete level","Add occurrence level":"Add occurrence level","New level":"New level","Reward items":"Reward items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward name/text":"Reward name/text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","No reward items defined yet.":"No reward items defined yet.","Add reward item":"Add reward item","New reward":"New reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Copy view: ":"Copy view: ","Copy View":"Copy View","Copy view":"Copy view","Copy of ":"Copy of ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","View copied successfully: ":"View copied successfully: ","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Level Name (e.g., common)":"Level Name (e.g., common)","Delete Level":"Delete Level","New Level":"New Level","Reward Name/Text":"Reward Name/Text","New Reward":"New Reward",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","Root condition":"Root condition","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task",Load:"Load","filter group":"filter group",filter:"filter",Match:"Match",All:"All","Add filter group":"Add filter group","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Line Number":"Line Number","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","You can override the auto-assigned project":"You can override the auto-assigned project","Complete substage and move to":"Complete substage and move to","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file",Timeline:"Timeline","Timeline Sidebar":"Timeline Sidebar","Open Timeline Sidebar":"Open Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline":"Open Timeline","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Timeline sidebar opened":"Timeline sidebar opened","Go to today":"Go to today","Focus on today":"Focus on today","No events to display":"No events to display","Go to task":"Go to task","What's on your mind?":"What's on your mind?",to:"to","To Do":"To Do",Done:"Done",Coding:"Coding","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Remove stage":"Remove stage",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","Add New Calendar Source":"Add New Calendar Source",URL:"URL",Refresh:"Refresh",min:"min","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured","Rule Enabled":"Enabled","Rule Disabled":"Disabled","Rule Target":"Target","Rule Pattern":"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name",Append:"Append",Prepend:"Prepend",Replace:"Replace","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.",Area:"Area","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","What do you want to do today?":"What do you want to do today?","More options":"More options","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Continue:"Continue","Convert current task to workflow root":"Convert current task to workflow root",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Loading more tasks...":"Loading more tasks...","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Use Priority Levels":"Use Priority Levels","Use Tags":"Use Tags","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Select action type...":"Select action type...","Delete task":"Delete task","Delete Task":"Delete Task","Delete task only":"Delete task only","Delete task and all subtasks":"Delete task and all subtasks","This task has {n} subtasks. How would you like to proceed?":"This task has {n} subtasks. How would you like to proceed?","Are you sure you want to delete this task?":"Are you sure you want to delete this task?","Task deleted":"Task deleted","Failed to delete task":"Failed to delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics",Target:"Target","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Automatically parse natural language time expressions and specific times (12:00, 1:30 PM, 12:00-13:00)":"Automatically parse natural language time expressions and specific times (12:00, 1:30 PM, 12:00-13:00)","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Time Format Configuration":"Time Format Configuration","Preferred Time Format":"Preferred Time Format","Default format preference for ambiguous time expressions":"Default format preference for ambiguous time expressions","12-hour format (1:30 PM)":"12-hour format (1:30 PM)","24-hour format (13:30)":"24-hour format (13:30)","Default AM/PM Period":"Default AM/PM Period","Default period when AM/PM is ambiguous in 12-hour format":"Default period when AM/PM is ambiguous in 12-hour format","AM (Morning)":"AM (Morning)","PM (Afternoon/Evening)":"PM (Afternoon/Evening)","Midnight Crossing Behavior":"Midnight Crossing Behavior","How to handle time ranges that cross midnight (e.g., 23:00-01:00)":"How to handle time ranges that cross midnight (e.g., 23:00-01:00)","Next day (23:00 today - 01:00 tomorrow)":"Next day (23:00 today - 01:00 tomorrow)","Same day (treat as error)":"Same day (treat as error)","Show error":"Show error","Time Range Separators":"Time Range Separators","Characters used to separate time ranges (comma-separated)":"Characters used to separate time ranges (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing",Date:"Date","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Fixed location":"Fixed location","Enter your task...":"Enter your task...","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings":"Search settings","Search results":"Search results","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized","Settings Migration Required":"Settings Migration Required","Task Genius has detected duplicate settings that can cause confusion. ":"Task Genius has detected duplicate settings that can cause confusion. ","We recommend migrating to the new unified FileSource system for better organization.":"We recommend migrating to the new unified FileSource system for better organization.","Auto-Migrate Settings":"Auto-Migrate Settings","Settings migrated successfully! ":"Settings migrated successfully! "," changes applied.":" changes applied.","Migration failed. Please check console for details.":"Migration failed. Please check console for details.","Learn More":"Learn More",FileSource:"FileSource","FileSource Configuration":"FileSource Configuration","Go to FileSource Settings":"Go to FileSource Settings","Note: This setting will be deprecated in favor of the unified FileSource system.":"Note: This setting will be deprecated in favor of the unified FileSource system.","Note: FileSource settings have been moved to a dedicated tab for better organization and to avoid duplication with file metadata parsing.":"Note: FileSource settings have been moved to a dedicated tab for better organization and to avoid duplication with file metadata parsing.","Configure Ignore Headings":"Configure Ignore Headings","Configure Focus Headings":"Configure Focus Headings","{{count}} heading(s) configured":"{{count}} heading(s) configured","Add headings to ignore. Tasks under these headings will be excluded from indexing. Examples: '## Project', '## Inbox', '# Archive'":"Add headings to ignore. Tasks under these headings will be excluded from indexing. Examples: '## Project', '## Inbox', '# Archive'","Add headings to focus on. Only tasks under these headings will be included in indexing. Examples: '## Project', '## Inbox', '# Tasks'":"Add headings to focus on. Only tasks under these headings will be included in indexing. Examples: '## Project', '## Inbox', '# Tasks'","Enter heading (e.g., ## Inbox)":"Enter heading (e.g., ## Inbox)","Enter heading (e.g., ## Tasks)":"Enter heading (e.g., ## Tasks)","No items configured. Click 'Add Item' to get started.":"No items configured. Click 'Add Item' to get started.","Enter value":"Enter value","Delete item":"Delete item","Delete this item":"Delete this item","Add Item":"Add Item"},_w=L$});var j$,LO,jO=D(()=>{j$={"File Metadata Inheritance":"File Metadata Inheritance","Configure how tasks inherit metadata from file frontmatter":"Configure how tasks inherit metadata from file frontmatter","Enable file metadata inheritance":"Enable file metadata inheritance","Allow tasks to inherit metadata properties from their file's frontmatter":"Allow tasks to inherit metadata properties from their file's frontmatter","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.","Show progress bar":"Show progress bar","Toggle this to show the progress bar.":"Toggle this to show the progress bar.","Support hover to show progress info":"Support hover to show progress info","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Toggle this to allow this plugin to show progress info when hovering over the progress bar.","Add progress bar to non-task bullet":"Add progress bar to non-task bullet","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Toggle this to allow adding progress bars to regular list items (non-task bullets).","Add progress bar to Heading":"Add progress bar to Heading","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Toggle this to allow this plugin to add progress bar for Task below the headings.","Enable heading progress bars":"Enable heading progress bars","Add progress bars to headings to show progress of all tasks under that heading.":"Add progress bars to headings to show progress of all tasks under that heading.","Auto complete parent task":"Auto complete parent task","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.","Mark parent as 'In Progress' when partially complete":"Mark parent as 'In Progress' when partially complete","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Count sub children level of current Task":"Count sub children level of current Task","Toggle this to allow this plugin to count sub tasks.":"Toggle this to allow this plugin to count sub tasks.","Checkbox Status Settings":"Checkbox Status Settings","Select a predefined task status collection or customize your own":"Select a predefined task status collection or customize your own","Completed task markers":"Completed task markers",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Characters in square brackets that represent completed tasks. Example: "x|X"',"Planned task markers":"Planned task markers",'Characters in square brackets that represent planned tasks. Example: "?"':'Characters in square brackets that represent planned tasks. Example: "?"',"In progress task markers":"In progress task markers",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Characters in square brackets that represent tasks in progress. Example: ">|/"',"Abandoned task markers":"Abandoned task markers",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Characters in square brackets that represent abandoned tasks. Example: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Characters in square brackets that represent not started tasks. Default is space " "',"Count other statuses as":"Count other statuses as",'Select the status to count other statuses as. Default is "Not Started".':'Select the status to count other statuses as. Default is "Not Started".',"Task Counting Settings":"Task Counting Settings","Exclude specific task markers":"Exclude specific task markers",'Specify task markers to exclude from counting. Example: "?|/"':'Specify task markers to exclude from counting. Example: "?|/"',"Only count specific task markers":"Only count specific task markers","Toggle this to only count specific task markers":"Toggle this to only count specific task markers","Specific task markers to count":"Specific task markers to count",'Specify which task markers to count. Example: "x|X|>|/"':'Specify which task markers to count. Example: "x|X|>|/"',"Conditional Progress Bar Display":"Conditional Progress Bar Display","Hide progress bars based on conditions":"Hide progress bars based on conditions","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Toggle this to enable hiding progress bars based on tags, folders, or metadata.","Hide by tags":"Hide by tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"',"Hide by folders":"Hide by folders",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"',"Hide by metadata":"Hide by metadata",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"',"Checkbox Status Switcher":"Checkbox Status Switcher","Enable task status switcher":"Enable task status switcher","Enable/disable the ability to cycle through task states by clicking.":"Enable/disable the ability to cycle through task states by clicking.","Enable custom task marks":"Enable custom task marks","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your task status cycle when clicked.","Enable cycle complete status":"Enable cycle complete status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Enable/disable the ability to automatically cycle through task states when pressing a mark.","Always cycle new tasks":"Always cycle new tasks","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.","Checkbox Status Cycle and Marks":"Checkbox Status Cycle and Marks","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.","Add Status":"Add Status","Completed Task Mover":"Completed Task Mover","Enable completed task mover":"Enable completed task mover","Toggle this to enable commands for moving completed tasks to another file.":"Toggle this to enable commands for moving completed tasks to another file.","Task marker type":"Task marker type","Choose what type of marker to add to moved tasks":"Choose what type of marker to add to moved tasks","Version marker text":"Version marker text","Text to append to tasks when moved (e.g., 'version 1.0')":"Text to append to tasks when moved (e.g., 'version 1.0')","Date marker text":"Date marker text","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Text to append to tasks when moved (e.g., 'archived on 2023-12-31')","Custom marker text":"Custom marker text","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Treat abandoned tasks as completed","If enabled, abandoned tasks will be treated as completed.":"If enabled, abandoned tasks will be treated as completed.","Complete all moved tasks":"Complete all moved tasks","If enabled, all moved tasks will be marked as completed.":"If enabled, all moved tasks will be marked as completed.","With current file link":"With current file link","A link to the current file will be added to the parent task of the moved tasks.":"A link to the current file will be added to the parent task of the moved tasks.","Say Thank You":"Say Thank You",Donate:"Donate","If you like this plugin, consider donating to support continued development:":"If you like this plugin, consider donating to support continued development:","Add number to the Progress Bar":"Add number to the Progress Bar","Toggle this to allow this plugin to add tasks number to progress bar.":"Toggle this to allow this plugin to add tasks number to progress bar.","Show percentage":"Show percentage","Toggle this to allow this plugin to show percentage in the progress bar.":"Toggle this to allow this plugin to show percentage in the progress bar.","Customize progress text":"Customize progress text","Toggle this to customize text representation for different progress percentage ranges.":"Toggle this to customize text representation for different progress percentage ranges.","Progress Ranges":"Progress Ranges","Define progress ranges and their corresponding text representations.":"Define progress ranges and their corresponding text representations.","Add new range":"Add new range","Add a new progress percentage range with custom text":"Add a new progress percentage range with custom text","Min percentage (0-100)":"Min percentage (0-100)","Max percentage (0-100)":"Max percentage (0-100)","Text template (use {{PROGRESS}})":"Text template (use {{PROGRESS}})","Reset to defaults":"Reset to defaults","Reset progress ranges to default values":"Reset progress ranges to default values",Reset:"Reset","Priority Picker Settings":"Priority Picker Settings","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Toggle to enable priority picker dropdown for emoji and letter format priorities.","Enable priority picker":"Enable priority picker","Enable priority keyboard shortcuts":"Enable priority keyboard shortcuts","Toggle to enable keyboard shortcuts for setting task priorities.":"Toggle to enable keyboard shortcuts for setting task priorities.","Date picker":"Date picker","Enable date picker":"Enable date picker","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.","Date mark":"Date mark","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Emoji mark to identify dates. You can use multiple emoji separated by commas.","Quick capture":"Quick capture","Enable quick capture":"Enable quick capture","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.","Target file":"Target file","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'","Placeholder text":"Placeholder text","Placeholder text to display in the capture panel":"Placeholder text to display in the capture panel","Append to file":"Append to file","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.","Task Filter":"Task Filter","Enable Task Filter":"Enable Task Filter","Toggle this to enable the task filter panel":"Toggle this to enable the task filter panel","Preset Filters":"Preset Filters","Create and manage preset filters for quick access to commonly used task filters.":"Create and manage preset filters for quick access to commonly used task filters.","Edit Filter: ":"Edit Filter: ","Filter name":"Filter name","Checkbox Status":"Checkbox Status","Include or exclude tasks based on their status":"Include or exclude tasks based on their status","Include Completed Tasks":"Include Completed Tasks","Include In Progress Tasks":"Include In Progress Tasks","Include Abandoned Tasks":"Include Abandoned Tasks","Include Not Started Tasks":"Include Not Started Tasks","Include Planned Tasks":"Include Planned Tasks","Related Tasks":"Related Tasks","Include parent, child, and sibling tasks in the filter":"Include parent, child, and sibling tasks in the filter","Include Parent Tasks":"Include Parent Tasks","Include Child Tasks":"Include Child Tasks","Include Sibling Tasks":"Include Sibling Tasks","Advanced Filter":"Advanced Filter","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'","Filter query":"Filter query","Filter out tasks":"Filter out tasks","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"If enabled, tasks that match the query will be hidden, otherwise they will be shown",Save:"Save",Cancel:"Cancel","Hide filter panel":"Hide filter panel","Show filter panel":"Show filter panel","Filter Tasks":"Filter Tasks","Preset filters":"Preset filters","Select a saved filter preset to apply":"Select a saved filter preset to apply","Select a preset...":"Select a preset...",Query:"Query","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"If true, tasks that match the query will be hidden, otherwise they will be shown",Completed:"Completed","In Progress":"In Progress",Abandoned:"Abandoned","Not Started":"Not Started",Planned:"Planned","Include Related Tasks":"Include Related Tasks","Parent Tasks":"Parent Tasks","Child Tasks":"Child Tasks","Sibling Tasks":"Sibling Tasks",Apply:"Apply","New Preset":"New Preset","Preset saved":"Preset saved","No changes to save":"No changes to save",Close:"Close","Capture to":"Capture to",Capture:"Capture","Capture thoughts, tasks, or ideas...":"Capture thoughts, tasks, or ideas...",Tomorrow:"Tomorrow","In 2 days":"In 2 days","In 3 days":"In 3 days","In 5 days":"In 5 days","In 1 week":"In 1 week","In 10 days":"In 10 days","In 2 weeks":"In 2 weeks","In 1 month":"In 1 month","In 2 months":"In 2 months","In 3 months":"In 3 months","In 6 months":"In 6 months","In 1 year":"In 1 year","In 5 years":"In 5 years","In 10 years":"In 10 years","Highest priority":"Highest priority","High priority":"High priority","Medium priority":"Medium priority","No priority":"No priority","Low priority":"Low priority","Lowest priority":"Lowest priority","Priority A":"Priority A","Priority B":"Priority B","Priority C":"Priority C","Task Priority":"Task Priority","Remove Priority":"Remove Priority","Cycle task status forward":"Cycle task status forward","Cycle task status backward":"Cycle task status backward","Remove priority":"Remove priority","Move task to another file":"Move task to another file","Move all completed subtasks to another file":"Move all completed subtasks to another file","Move direct completed subtasks to another file":"Move direct completed subtasks to another file","Move all subtasks to another file":"Move all subtasks to another file","Set priority":"Set priority","Toggle quick capture panel":"Toggle quick capture panel","Quick capture (Global)":"Quick capture (Global)","Toggle task filter panel":"Toggle task filter panel","Filter Mode":"Filter Mode","Choose whether to include or exclude tasks that match the filters":"Choose whether to include or exclude tasks that match the filters","Show matching tasks":"Show matching tasks","Hide matching tasks":"Hide matching tasks","Choose whether to show or hide tasks that match the filters":"Choose whether to show or hide tasks that match the filters","Create new file:":"Create new file:","Completed tasks moved to":"Completed tasks moved to","Failed to create file:":"Failed to create file:","Beginning of file":"Beginning of file","Failed to move tasks:":"Failed to move tasks:","No active file found":"No active file found","Task moved to":"Task moved to","Failed to move task:":"Failed to move task:","Nothing to capture":"Nothing to capture","Captured successfully":"Captured successfully","Failed to save:":"Failed to save:","Captured successfully to":"Captured successfully to",Total:"Total",Workflow:"Workflow","Add as workflow root":"Add as workflow root","Move to stage":"Move to stage","Complete stage":"Complete stage","Add child task with same stage":"Add child task with same stage","Could not open quick capture panel in the current editor":"Could not open quick capture panel in the current editor","Just started {{PROGRESS}}%":"Just started {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Making progress {{PROGRESS}}%","Half way {{PROGRESS}}%":"Half way {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Good progress {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Almost there {{PROGRESS}}%","Progress bar":"Progress bar","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.","Hide progress bars":"Hide progress bars","Parent task changer":"Parent task changer","Change the parent task of the current task.":"Change the parent task of the current task.","No preset filters created yet. Click 'Add New Preset' to create one.":"No preset filters created yet. Click 'Add New Preset' to create one.","Configure task workflows for project and process management":"Configure task workflows for project and process management","Enable workflow":"Enable workflow","Toggle to enable the workflow system for tasks":"Toggle to enable the workflow system for tasks","Auto-add timestamp":"Auto-add timestamp","Automatically add a timestamp to the task when it is created":"Automatically add a timestamp to the task when it is created","Timestamp format:":"Timestamp format:","Timestamp format":"Timestamp format","Remove timestamp when moving to next stage":"Remove timestamp when moving to next stage","Remove the timestamp from the current task when moving to the next stage":"Remove the timestamp from the current task when moving to the next stage","Calculate spent time":"Calculate spent time","Calculate and display the time spent on the task when moving to the next stage":"Calculate and display the time spent on the task when moving to the next stage","Format for spent time:":"Format for spent time:","Calculate spent time when move to next stage.":"Calculate spent time when move to next stage.","Spent time format":"Spent time format","Calculate full spent time":"Calculate full spent time","Calculate the full spent time from the start of the task to the last stage":"Calculate the full spent time from the start of the task to the last stage","Auto remove last stage marker":"Auto remove last stage marker","Automatically remove the last stage marker when a task is completed":"Automatically remove the last stage marker when a task is completed","Auto-add next task":"Auto-add next task","Automatically create a new task with the next stage when completing a task":"Automatically create a new task with the next stage when completing a task","Workflow definitions":"Workflow definitions","Configure workflow templates for different types of processes":"Configure workflow templates for different types of processes","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"No workflow definitions created yet. Click 'Add New Workflow' to create one.","Edit workflow":"Edit workflow","Remove workflow":"Remove workflow","Delete workflow":"Delete workflow",Delete:"Delete","Add New Workflow":"Add New Workflow","New Workflow":"New Workflow","Create New Workflow":"Create New Workflow","Workflow name":"Workflow name","A descriptive name for the workflow":"A descriptive name for the workflow","Workflow ID":"Workflow ID","A unique identifier for the workflow (used in tags)":"A unique identifier for the workflow (used in tags)",Description:"Description","Optional description for the workflow":"Optional description for the workflow","Describe the purpose and use of this workflow...":"Describe the purpose and use of this workflow...","Workflow Stages":"Workflow Stages","No stages defined yet. Add a stage to get started.":"No stages defined yet. Add a stage to get started.",Edit:"Edit","Move up":"Move up","Move down":"Move down","Sub-stage":"Sub-stage","Sub-stage name":"Sub-stage name","Sub-stage ID":"Sub-stage ID","Next: ":"Next: ","Add Sub-stage":"Add Sub-stage","New Sub-stage":"New Sub-stage","Edit Stage":"Edit Stage","Stage name":"Stage name","A descriptive name for this workflow stage":"A descriptive name for this workflow stage","Stage ID":"Stage ID","A unique identifier for the stage (used in tags)":"A unique identifier for the stage (used in tags)","Stage type":"Stage type","The type of this workflow stage":"The type of this workflow stage","Linear (sequential)":"Linear (sequential)","Cycle (repeatable)":"Cycle (repeatable)","Terminal (end stage)":"Terminal (end stage)","Next stage":"Next stage","The stage to proceed to after this one":"The stage to proceed to after this one","Sub-stages":"Sub-stages","Define cycle sub-stages (optional)":"Define cycle sub-stages (optional)","No sub-stages defined yet.":"No sub-stages defined yet.","Can proceed to":"Can proceed to","Additional stages that can follow this one (for right-click menu)":"Additional stages that can follow this one (for right-click menu)","No additional destination stages defined.":"No additional destination stages defined.",Remove:"Remove",Add:"Add","Name and ID are required.":"Name and ID are required.","End of file":"End of file","Include in cycle":"Include in cycle",Preset:"Preset","Preset name":"Preset name","Edit Filter":"Edit Filter","Add New Preset":"Add New Preset","New Filter":"New Filter","Reset to Default Presets":"Reset to Default Presets","This will replace all your current presets with the default set. Are you sure?":"This will replace all your current presets with the default set. Are you sure?","Edit Workflow":"Edit Workflow",General:"General","Progress Bar":"Progress Bar","Task Mover":"Task Mover","Quick Capture":"Quick Capture","Date & Priority":"Date & Priority",About:"About","Count sub children of current Task":"Count sub children of current Task","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Toggle this to allow this plugin to count sub tasks when generating progress bar .","Configure task status settings":"Configure task status settings","Configure which task markers to count or exclude":"Configure which task markers to count or exclude","Task status cycle and marks":"Task status cycle and marks","About Task Genius":"About Task Genius",Version:"Version",Documentation:"Documentation","View the documentation for this plugin":"View the documentation for this plugin","Open Documentation":"Open Documentation","Incomplete tasks":"Incomplete tasks","In progress tasks":"In progress tasks","Completed tasks":"Completed tasks","All tasks":"All tasks","After heading":"After heading","End of section":"End of section","Enable text mark in source mode":"Enable text mark in source mode","Make the text mark in source mode follow the task status cycle when clicked.":"Make the text mark in source mode follow the task status cycle when clicked.","Status name":"Status name","Progress display mode":"Progress display mode","Choose how to display task progress":"Choose how to display task progress","No progress indicators":"No progress indicators","Graphical progress bar":"Graphical progress bar","Text progress indicator":"Text progress indicator","Both graphical and text":"Both graphical and text","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Toggle this to allow this plugin to count sub tasks when generating progress bar.","Progress format":"Progress format","Choose how to display the task progress":"Choose how to display the task progress","Percentage (75%)":"Percentage (75%)","Bracketed percentage ([75%])":"Bracketed percentage ([75%])","Fraction (3/4)":"Fraction (3/4)","Bracketed fraction ([3/4])":"Bracketed fraction ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Custom format","Range-based text":"Range-based text","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Preview:","Available placeholders":"Available placeholders","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Expression examples","Examples of advanced formats using expressions":"Examples of advanced formats using expressions","Text Progress Bar":"Text Progress Bar","Emoji Progress Bar":"Emoji Progress Bar","Color-coded Status":"Color-coded Status","Status with Icons":"Status with Icons",Preview:"Preview",Use:"Use","Toggle this to show percentage instead of completed/total count.":"Toggle this to show percentage instead of completed/total count.","Customize progress ranges":"Customize progress ranges","Toggle this to customize the text for different progress ranges.":"Toggle this to customize the text for different progress ranges.","Apply Theme":"Apply Theme","Back to main settings":"Back to main settings","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.","Target File:":"Target File:","Task Properties":"Task Properties","Start Date":"Start Date","Due Date":"Due Date","Scheduled Date":"Scheduled Date",Priority:"Priority",None:"None",Highest:"Highest",High:"High",Medium:"Medium",Low:"Low",Lowest:"Lowest",Project:"Project","Project name":"Project name",Context:"Context",Recurrence:"Recurrence","e.g., every day, every week":"e.g., every day, every week","Task Content":"Task Content","Task Details":"Task Details",File:"File","Edit in File":"Edit in File","Mark Incomplete":"Mark Incomplete","Mark Complete":"Mark Complete","Task Title":"Task Title",Tags:"Tags","e.g. every day, every 2 weeks":"e.g. every day, every 2 weeks",Forecast:"Forecast","0 actions, 0 projects":"0 actions, 0 projects","Toggle list/tree view":"Toggle list/tree view","Focusing on Work":"Focusing on Work",Unfocus:"Unfocus","Past Due":"Past Due",Today:"Today",Future:"Future",actions:"actions",project:"project","Coming Up":"Coming Up",Task:"Task",Tasks:"Tasks","No upcoming tasks":"No upcoming tasks","No tasks scheduled":"No tasks scheduled","0 tasks":"0 tasks","Filter tasks...":"Filter tasks...",Projects:"Projects","Toggle multi-select":"Toggle multi-select","No projects found":"No projects found","projects selected":"projects selected",tasks:"tasks","No tasks in the selected projects":"No tasks in the selected projects","Select a project to see related tasks":"Select a project to see related tasks","Configure Review for":"Configure Review for","Review Frequency":"Review Frequency","How often should this project be reviewed":"How often should this project be reviewed","Custom...":"Custom...","e.g., every 3 months":"e.g., every 3 months","Last Reviewed":"Last Reviewed","Please specify a review frequency":"Please specify a review frequency","Review schedule updated for":"Review schedule updated for","Review Projects":"Review Projects","Select a project to review its tasks.":"Select a project to review its tasks.","Configured for Review":"Configured for Review","Not Configured":"Not Configured","No projects available.":"No projects available.","Select a project to review.":"Select a project to review.","Show all tasks":"Show all tasks","Showing all tasks, including completed tasks from previous reviews.":"Showing all tasks, including completed tasks from previous reviews.","Show only new and in-progress tasks":"Show only new and in-progress tasks","No tasks found for this project.":"No tasks found for this project.","Review every":"Review every",never:"never","Last reviewed":"Last reviewed","Mark as Reviewed":"Mark as Reviewed","No review schedule configured for this project":"No review schedule configured for this project","Configure Review Schedule":"Configure Review Schedule","Project Review":"Project Review","Select a project from the left sidebar to review its tasks.":"Select a project from the left sidebar to review its tasks.",Inbox:"Inbox",Flagged:"Flagged",Review:"Review","tags selected":"tags selected","No tasks with the selected tags":"No tasks with the selected tags","Select a tag to see related tasks":"Select a tag to see related tasks","Open Task Genius view":"Open Task Genius view","Task capture with metadata":"Task capture with metadata","Refresh task index":"Refresh task index","Refreshing task index...":"Refreshing task index...","Task index refreshed":"Task index refreshed","Failed to refresh task index":"Failed to refresh task index","Force reindex all tasks":"Force reindex all tasks","Clearing task cache and rebuilding index...":"Clearing task cache and rebuilding index...","Task index completely rebuilt":"Task index completely rebuilt","Failed to force reindex tasks":"Failed to force reindex tasks","Task Genius View":"Task Genius View","Toggle Sidebar":"Toggle Sidebar",Details:"Details",View:"View","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.","Enable task genius view":"Enable task genius view","Select a task to view details":"Select a task to view details",Status:"Status","Comma separated":"Comma separated",Focus:"Focus","Loading more...":"Loading more...",projects:"projects","No tasks for this section.":"No tasks for this section.","No tasks found.":"No tasks found.",Complete:"Complete","Switch status":"Switch status","Rebuild index":"Rebuild index",Rebuild:"Rebuild","0 tasks, 0 projects":"0 tasks, 0 projects","New Custom View":"New Custom View","Create Custom View":"Create Custom View","Edit View: ":"Edit View: ","View Name":"View Name","My Custom Task View":"My Custom Task View","Icon Name":"Icon Name","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Enter any Lucide icon name (e.g., list-checks, filter, inbox)","Filter Rules":"Filter Rules","Hide Completed and Abandoned Tasks":"Hide Completed and Abandoned Tasks","Hide completed and abandoned tasks in this view.":"Hide completed and abandoned tasks in this view.","Text Contains":"Text Contains","Filter tasks whose content includes this text (case-insensitive).":"Filter tasks whose content includes this text (case-insensitive).","Tags Include":"Tags Include","Task must include ALL these tags (comma-separated).":"Task must include ALL these tags (comma-separated).","Tags Exclude":"Tags Exclude","Task must NOT include ANY of these tags (comma-separated).":"Task must NOT include ANY of these tags (comma-separated).","Project Is":"Project Is","Task must belong to this project (exact match).":"Task must belong to this project (exact match).","Priority Is":"Priority Is","Task must have this priority (e.g., 1, 2, 3).":"Task must have this priority (e.g., 1, 2, 3).","Status Include":"Status Include","Task status must be one of these (comma-separated markers, e.g., /,>).":"Task status must be one of these (comma-separated markers, e.g., /,>).","Status Exclude":"Status Exclude","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"Task status must NOT be one of these (comma-separated markers, e.g., -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.","Due Date Is":"Due Date Is","Start Date Is":"Start Date Is","Scheduled Date Is":"Scheduled Date Is","Path Includes":"Path Includes","Task must contain this path (case-insensitive).":"Task must contain this path (case-insensitive).","Path Excludes":"Path Excludes","Task must NOT contain this path (case-insensitive).":"Task must NOT contain this path (case-insensitive).","Unnamed View":"Unnamed View","View configuration saved.":"View configuration saved.","Hide Details":"Hide Details","Show Details":"Show Details","View Config":"View Config","View Configuration":"View Configuration","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure the Task Genius sidebar views, visibility, order, and create custom views.","Manage Views":"Manage Views","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure sidebar views, order, visibility, and hide/show completed tasks per view.","Show in sidebar":"Show in sidebar","Edit View":"Edit View","Move Up":"Move Up","Move Down":"Move Down","Delete View":"Delete View","Add Custom View":"Add Custom View","Error: View ID already exists.":"Error: View ID already exists.",Events:"Events",Plan:"Plan",Year:"Year",Month:"Month",Week:"Week",Day:"Day",Agenda:"Agenda","Back to categories":"Back to categories","No matching options found":"No matching options found","No matching filters found":"No matching filters found",Tag:"Tag","File Path":"File Path","Add filter":"Add filter","Clear all":"Clear all","Add Card":"Add Card","First Day of Week":"First Day of Week","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"Show checkbox","Show a checkbox for each task in the kanban view.":"Show a checkbox for each task in the kanban view.","Locale Default":"Locale Default","Use custom goal for progress bar":"Use custom goal for progress bar","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.","Prefer metadata format of task":"Prefer metadata format of task","You can choose dataview format or tasks format, that will influence both index and save format.":"You can choose dataview format or tasks format, that will influence both index and save format.","Open in new tab":"Open in new tab","Open settings":"Open settings","Hide in sidebar":"Hide in sidebar","No items found":"No items found","High Priority":"High Priority","Medium Priority":"Medium Priority","Low Priority":"Low Priority","No tasks in the selected items":"No tasks in the selected items","View Type":"View Type","Select the type of view to create":"Select the type of view to create","Standard View":"Standard View","Two Column View":"Two Column View",Items:"Items","selected items":"selected items","No items selected":"No items selected","Two Column View Settings":"Two Column View Settings","Group by Task Property":"Group by Task Property","Select which task property to use for left column grouping":"Select which task property to use for left column grouping",Priorities:"Priorities",Contexts:"Contexts","Due Dates":"Due Dates","Scheduled Dates":"Scheduled Dates","Start Dates":"Start Dates",Files:"Files","Left Column Title":"Left Column Title","Title for the left column (items list)":"Title for the left column (items list)","Right Column Title":"Right Column Title","Default title for the right column (tasks list)":"Default title for the right column (tasks list)","Multi-select Text":"Multi-select Text","Text to show when multiple items are selected":"Text to show when multiple items are selected","Empty State Text":"Empty State Text","Text to show when no items are selected":"Text to show when no items are selected","Filter Blanks":"Filter Blanks","Filter out blank tasks in this view.":"Filter out blank tasks in this view.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"Task must contain this path (case-insensitive). Separate multiple paths with commas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.","You have unsaved changes. Save before closing?":"You have unsaved changes. Save before closing?",Rotate:"Rotate","Are you sure you want to force reindex all tasks?":"Are you sure you want to force reindex all tasks?","Enable progress bar in reading mode":"Enable progress bar in reading mode","Toggle this to allow this plugin to show progress bars in reading mode.":"Toggle this to allow this plugin to show progress bars in reading mode.",Range:"Range","as a placeholder for the percentage value":"as a placeholder for the percentage value","Template text with":"Template text with",placeholder:"placeholder",Reindex:"Reindex","From now":"From now","Complete workflow":"Complete workflow","Move to":"Move to",Settings:"Settings","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow","Standard project management workflow":"Standard project management workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note format":"Daily note format","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled",Rewards:"Rewards","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable Rewards":"Enable Rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence Levels":"Occurrence Levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level Name (e.g., common)":"Level Name (e.g., common)","Chance (%)":"Chance (%)","Delete Level":"Delete Level","Add Occurrence Level":"Add Occurrence Level","New Level":"New Level","Reward Items":"Reward Items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward Name/Text":"Reward Name/Text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image URL (optional)":"Image URL (optional)","Delete Reward Item":"Delete Reward Item","No reward items defined yet.":"No reward items defined yet.","Add Reward Item":"Add Reward Item","New Reward":"New Reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Enable rewards":"Enable rewards","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Occurrence levels":"Occurrence levels","Add occurrence level":"Add occurrence level","Reward items":"Reward items","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","Add reward item":"Add reward item","moved on":"moved on","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task","Save Filter Configuration":"Save Filter Configuration","Filter Configuration Name":"Filter Configuration Name","Enter a name for this filter configuration":"Enter a name for this filter configuration","Filter Configuration Description":"Filter Configuration Description","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","Load Filter Configuration":"Load Filter Configuration","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration",Load:"Load",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","filter group":"filter group",filter:"filter","Root condition":"Root condition","Filter configuration name is required":"Filter configuration name is required","Failed to save filter configuration":"Failed to save filter configuration","Filter configuration saved successfully":"Filter configuration saved successfully","Failed to load filter configuration":"Failed to load filter configuration","Filter configuration loaded successfully":"Filter configuration loaded successfully","Failed to delete filter configuration":"Failed to delete filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration deleted successfully":"Filter configuration deleted successfully",Match:"Match",All:"All","Add filter group":"Add filter group","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Line Number":"Line Number","Clear Date":"Clear Date","Copy view":"Copy view","View copied successfully: ":"View copied successfully: ","Copy of ":"Copy of ","Copy view: ":"Copy view: ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.","Copy View":"Copy View",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},LO=j$});var H$,HO,BO=D(()=>{H$={"File Metadata Inheritance":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u7D99\u627F","Configure how tasks inherit metadata from file frontmatter":"\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable file metadata inheritance":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u7D99\u627F\u3092\u6709\u52B9\u5316","Allow tasks to inherit metadata properties from their file's frontmatter":"\u30BF\u30B9\u30AF\u304C\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF","Inherit from frontmatter":"\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u30BF\u30B9\u30AF\u306B\u660E\u793A\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u30BF\u30B9\u30AF\u306F\u512A\u5148\u5EA6\u3001\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306A\u3069\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Inherit from frontmatter for subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u30B5\u30D6\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF\u3002\u7121\u52B9\u5316\u3057\u305F\u5834\u5408\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u30BF\u30B9\u30AF\u306E\u307F\u304C\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3001\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3001\u9AD8\u5EA6\u306A\u30BF\u30B9\u30AF\u8FFD\u8DE1\u6A5F\u80FD\u3092\u5099\u3048\u305FObsidian\u7528\u306E\u5305\u62EC\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406\u30D7\u30E9\u30B0\u30A4\u30F3\u3002","Show progress bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A","Toggle this to show the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Support hover to show progress info":"\u30DB\u30D0\u30FC\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u60C5\u5831\u3092\u8868\u793A","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u5408\u308F\u305B\u305F\u3068\u304D\u306B\u9032\u6357\u60C5\u5831\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Add progress bar to non-task bullet":"\u975E\u30BF\u30B9\u30AF\u7B87\u6761\u66F8\u304D\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u901A\u5E38\u306E\u30EA\u30B9\u30C8\u30A2\u30A4\u30C6\u30E0\uFF08\u975E\u30BF\u30B9\u30AF\u7B87\u6761\u66F8\u304D\uFF09\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Add progress bar to Heading":"\u898B\u51FA\u3057\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u898B\u51FA\u3057\u306E\u4E0B\u306E\u30BF\u30B9\u30AF\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Enable heading progress bars":"\u898B\u51FA\u3057\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u6709\u52B9\u5316","Add progress bars to headings to show progress of all tasks under that heading.":"\u305D\u306E\u898B\u51FA\u3057\u306E\u4E0B\u306B\u3042\u308B\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306E\u9032\u6357\u72B6\u6CC1\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306B\u3001\u898B\u51FA\u3057\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002","Auto complete parent task":"\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u5B8C\u4E86","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u3059\u3079\u3066\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u7684\u306B\u5B8C\u4E86\u3055\u305B\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Mark parent as 'In Progress' when partially complete":"\u90E8\u5206\u7684\u306B\u5B8C\u4E86\u3057\u305F\u3089\u89AA\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u4E00\u90E8\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304C\u5168\u90E8\u3067\u306F\u306A\u3044\u5834\u5408\u3001\u89AA\u30BF\u30B9\u30AF\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002\u300C\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u5B8C\u4E86\u300D\u304C\u6709\u52B9\u306A\u5834\u5408\u306E\u307F\u6A5F\u80FD\u3057\u307E\u3059\u3002","Count sub children level of current Task":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u30B5\u30D6\u5B50\u30EC\u30D9\u30EB\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to allow this plugin to count sub tasks.":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Checkbox Status Settings":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A","Select a predefined task status collection or customize your own":"\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u72EC\u81EA\u306B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u304F\u3060\u3055\u3044","Completed task markers":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"x|X"',"Planned task markers":"\u8A08\u753B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent planned tasks. Example: "?"':'\u8A08\u753B\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"?"',"In progress task markers":"\u9032\u884C\u4E2D\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A">|/"',"Abandoned task markers":"\u653E\u68C4\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u958B\u59CB\u3055\u308C\u3066\u3044\u306A\u3044\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u30B9\u30DA\u30FC\u30B9 " "',"Count other statuses as":"\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u65B9\u6CD5",'Select the status to count other statuses as. Default is "Not Started".':"\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9078\u629E\u3057\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u300C\u672A\u958B\u59CB\u300D\u3067\u3059\u3002","Task Counting Settings":"\u30BF\u30B9\u30AF\u30AB\u30A6\u30F3\u30C8\u8A2D\u5B9A","Exclude specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u9664\u5916",'Specify task markers to exclude from counting. Example: "?|/"':'\u30AB\u30A6\u30F3\u30C8\u304B\u3089\u9664\u5916\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"?|/"',"Only count specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u306E\u307F\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to only count specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u306E\u307F\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044","Specific task markers to count":"\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Specify which task markers to count. Example: "x|X|>|/"':'\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u6761\u4EF6\u4ED8\u304D\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u8868\u793A","Hide progress bars based on conditions":"\u6761\u4EF6\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u30BF\u30B0\u3001\u30D5\u30A9\u30EB\u30C0\u3001\u307E\u305F\u306F\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Hide by tags":"\u30BF\u30B0\u3067\u975E\u8868\u793A",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30BF\u30B0\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001#\u306A\u3057\uFF09\u3002\u4F8B\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u30D5\u30A9\u30EB\u30C0\u3067\u975E\u8868\u793A",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30D5\u30A9\u30EB\u30C0\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002\u4F8B\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u3067\u975E\u8868\u793A",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC","Enable task status switcher":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u3092\u6709\u52B9\u5316","Enable/disable the ability to cycle through task states by clicking.":"\u30AF\u30EA\u30C3\u30AF\u306B\u3088\u308B\u30BF\u30B9\u30AF\u72B6\u614B\u306E\u5FAA\u74B0\u6A5F\u80FD\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","Enable custom task marks":"\u30AB\u30B9\u30BF\u30E0\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u3092\u6709\u52B9\u5316","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u3001\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3063\u3066\u30B9\u30BF\u30A4\u30EB\u4ED8\u304D\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002","Enable cycle complete status":"\u30B5\u30A4\u30AF\u30EB\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u6709\u52B9\u5316","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u30DE\u30FC\u30AF\u3092\u62BC\u3057\u305F\u3068\u304D\u306B\u81EA\u52D5\u7684\u306B\u30BF\u30B9\u30AF\u72B6\u614B\u3092\u5FAA\u74B0\u3059\u308B\u6A5F\u80FD\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","Always cycle new tasks":"\u5E38\u306B\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u30B5\u30A4\u30AF\u30EB","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u65B0\u3057\u304F\u633F\u5165\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u76F4\u3061\u306B\u6B21\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5FAA\u74B0\u3057\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u6709\u52B9\u306A\u30DE\u30FC\u30AF\u3092\u6301\u3064\u65B0\u3057\u304F\u633F\u5165\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u5143\u306E\u30DE\u30FC\u30AF\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002","Checkbox Status Cycle and Marks":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3068\u30DE\u30FC\u30AF","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u30BF\u30B9\u30AF\u72B6\u614B\u3068\u305D\u308C\u306B\u5BFE\u5FDC\u3059\u308B\u30DE\u30FC\u30AF\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002\u4E0A\u304B\u3089\u4E0B\u3078\u306E\u9806\u5E8F\u304C\u30B5\u30A4\u30AF\u30EB\u306E\u9806\u5E8F\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Add Status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0","Completed Task Mover":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u30C4\u30FC\u30EB","Enable completed task mover":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u30C4\u30FC\u30EB\u3092\u6709\u52B9\u5316","Toggle this to enable commands for moving completed tasks to another file.":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Task marker type":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u30BF\u30A4\u30D7","Choose what type of marker to add to moved tasks":"\u79FB\u52D5\u3057\u305F\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30DE\u30FC\u30AB\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E","Version marker text":"\u30D0\u30FC\u30B8\u30E7\u30F3\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to tasks when moved (e.g., 'version 1.0')":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u3068\u304D\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'version 1.0'\uFF09","Date marker text":"\u65E5\u4ED8\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u3068\u304D\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'archived on 2023-12-31'\uFF09","Custom marker text":"\u30AB\u30B9\u30BF\u30E0\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306B\u306F {{DATE:format}} \u3092\u4F7F\u7528\u3057\u307E\u3059\uFF08\u4F8B\uFF1A{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86\u3068\u3057\u3066\u6271\u3046","If enabled, abandoned tasks will be treated as completed.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u5B8C\u4E86\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","Complete all moved tasks":"\u79FB\u52D5\u3057\u305F\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86","If enabled, all moved tasks will be marked as completed.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u79FB\u52D5\u3057\u305F\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u307E\u3059\u3002","With current file link":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u30EA\u30F3\u30AF\u4ED8\u304D","A link to the current file will be added to the parent task of the moved tasks.":"\u79FB\u52D5\u3057\u305F\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002","Say Thank You":"\u611F\u8B1D\u306E\u8A00\u8449",Donate:"\u5BC4\u4ED8","If you like this plugin, consider donating to support continued development:":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6C17\u306B\u5165\u3063\u305F\u3089\u3001\u7D99\u7D9A\u7684\u306A\u958B\u767A\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u305F\u3081\u306B\u5BC4\u4ED8\u3092\u3054\u691C\u8A0E\u304F\u3060\u3055\u3044\uFF1A","Add number to the Progress Bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u6570\u5B57\u3092\u8FFD\u52A0","Toggle this to allow this plugin to add tasks number to progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30BF\u30B9\u30AF\u6570\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Show percentage":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A","Toggle this to allow this plugin to show percentage in the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Customize progress text":"\u9032\u6357\u30C6\u30AD\u30B9\u30C8\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Toggle this to customize text representation for different progress percentage ranges.":"\u7570\u306A\u308B\u9032\u6357\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u7BC4\u56F2\u306E\u30C6\u30AD\u30B9\u30C8\u8868\u73FE\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Progress Ranges":"\u9032\u6357\u7BC4\u56F2","Define progress ranges and their corresponding text representations.":"\u9032\u6357\u7BC4\u56F2\u3068\u305D\u308C\u306B\u5BFE\u5FDC\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u8868\u73FE\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Add new range":"\u65B0\u3057\u3044\u7BC4\u56F2\u3092\u8FFD\u52A0","Add a new progress percentage range with custom text":"\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u3067\u65B0\u3057\u3044\u9032\u6357\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u7BC4\u56F2\u3092\u8FFD\u52A0","Min percentage (0-100)":"\u6700\u5C0F\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\uFF080-100\uFF09","Max percentage (0-100)":"\u6700\u5927\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\uFF080-100\uFF09","Text template (use {{PROGRESS}})":"\u30C6\u30AD\u30B9\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\uFF08{{PROGRESS}}\u3092\u4F7F\u7528\uFF09","Reset to defaults":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Reset progress ranges to default values":"\u9032\u6357\u7BC4\u56F2\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306B\u30EA\u30BB\u30C3\u30C8",Reset:"\u30EA\u30BB\u30C3\u30C8","Priority Picker Settings":"\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u8A2D\u5B9A","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u7D75\u6587\u5B57\u3068\u6587\u5B57\u5F62\u5F0F\u306E\u512A\u5148\u5EA6\u306E\u305F\u3081\u306E\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Enable priority picker":"\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u5316","Enable priority keyboard shortcuts":"\u512A\u5148\u5EA6\u30AD\u30FC\u30DC\u30FC\u30C9\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u6709\u52B9\u5316","Toggle to enable keyboard shortcuts for setting task priorities.":"\u30BF\u30B9\u30AF\u306E\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\u3059\u308B\u305F\u3081\u306E\u30AD\u30FC\u30DC\u30FC\u30C9\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC","Enable date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306B\u3088\u308A\u3001\u30BF\u30B9\u30AF\u306E\u8FD1\u304F\u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u30A2\u30A4\u30B3\u30F3\u304C\u8FFD\u52A0\u3055\u308C\u3001\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65E5\u4ED8\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002","Date mark":"\u65E5\u4ED8\u30DE\u30FC\u30AF","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u65E5\u4ED8\u3092\u8B58\u5225\u3059\u308B\u7D75\u6587\u5B57\u30DE\u30FC\u30AF\u3002\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u8907\u6570\u306E\u7D75\u6587\u5B57\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Quick capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Enable quick capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u6709\u52B9\u5316","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Org-mode\u30B9\u30BF\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002Alt+C\u3092\u62BC\u3057\u3066\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u958B\u304D\u307E\u3059\u3002","Target file":"\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A1\u30A4\u30EB","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u3002\u30D1\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u4F8B\uFF1A'folder/Quick Capture.md'","Placeholder text":"\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u30C6\u30AD\u30B9\u30C8","Placeholder text to display in the capture panel":"\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u306B\u8868\u793A\u3059\u308B\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u30C6\u30AD\u30B9\u30C8","Append to file":"\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u306F\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u304C\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3059\u3002","Task Filter":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC","Enable Task Filter":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable the task filter panel":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044","Preset Filters":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC","Create and manage preset filters for quick access to commonly used task filters.":"\u3088\u304F\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u306B\u3059\u3070\u3084\u304F\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u305F\u3081\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u4F5C\u6210\u304A\u3088\u3073\u7BA1\u7406\u3057\u307E\u3059\u3002","Edit Filter: ":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6\uFF1A","Filter name":"\u30D5\u30A3\u30EB\u30BF\u30FC\u540D","Checkbox Status":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9","Include or exclude tasks based on their status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u57FA\u3065\u3044\u3066\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B\u304B\u9664\u5916\u3059\u308B","Include Completed Tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include In Progress Tasks":"\u9032\u884C\u4E2D\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Abandoned Tasks":"\u653E\u68C4\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Not Started Tasks":"\u672A\u958B\u59CB\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Planned Tasks":"\u8A08\u753B\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Related Tasks":"\u95A2\u9023\u30BF\u30B9\u30AF","Include parent, child, and sibling tasks in the filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u306B\u89AA\u3001\u5B50\u3001\u304A\u3088\u3073\u5144\u5F1F\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Parent Tasks":"\u89AA\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Child Tasks":"\u5B50\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Sibling Tasks":"\u5144\u5F1F\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Advanced Filter":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30FC","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u30D6\u30FC\u30EB\u6F14\u7B97\u3092\u4F7F\u7528\uFF1AAND\u3001OR\u3001NOT\u3002\u4F8B\uFF1A'text content AND #tag1'","Filter query":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30AF\u30A8\u30EA","Filter out tasks":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30AF\u30A8\u30EA\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306F\u975E\u8868\u793A\u306B\u306A\u308A\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u8868\u793A\u3055\u308C\u307E\u3059",Save:"\u4FDD\u5B58",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB","Hide filter panel":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u975E\u8868\u793A","Show filter panel":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u8868\u793A","Filter Tasks":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC","Preset filters":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC","Select a saved filter preset to apply":"\u9069\u7528\u3059\u308B\u4FDD\u5B58\u6E08\u307F\u30D5\u30A3\u30EB\u30BF\u30FC\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u9078\u629E","Select a preset...":"\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u9078\u629E...",Query:"\u30AF\u30A8\u30EA","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u30D6\u30FC\u30EB\u6F14\u7B97\u3092\u4F7F\u7528\uFF1AAND\u3001OR\u3001NOT\u3002\u4F8B\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - PRIORITY\u3068DATE\u306B\u306F >\u3001<\u3001=\u3001>=\u3001<=\u3001!= \u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"true\u306E\u5834\u5408\u3001\u30AF\u30A8\u30EA\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306F\u975E\u8868\u793A\u306B\u306A\u308A\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u8868\u793A\u3055\u308C\u307E\u3059",Completed:"\u5B8C\u4E86","In Progress":"\u9032\u884C\u4E2D",Abandoned:"\u653E\u68C4","Not Started":"\u672A\u958B\u59CB",Planned:"\u8A08\u753B\u6E08\u307F","Include Related Tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Parent Tasks":"\u89AA\u30BF\u30B9\u30AF","Child Tasks":"\u5B50\u30BF\u30B9\u30AF","Sibling Tasks":"\u5144\u5F1F\u30BF\u30B9\u30AF",Apply:"\u9069\u7528","New Preset":"\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8","Preset saved":"\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F","No changes to save":"\u4FDD\u5B58\u3059\u308B\u5909\u66F4\u306F\u3042\u308A\u307E\u305B\u3093",Close:"\u9589\u3058\u308B","Capture to":"\u30AD\u30E3\u30D7\u30C1\u30E3\u5148",Capture:"\u30AD\u30E3\u30D7\u30C1\u30E3","Capture thoughts, tasks, or ideas...":"\u8003\u3048\u3001\u30BF\u30B9\u30AF\u3001\u30A2\u30A4\u30C7\u30A2\u3092\u30AD\u30E3\u30D7\u30C1\u30E3...",Tomorrow:"\u660E\u65E5","In 2 days":"2\u65E5\u5F8C","In 3 days":"3\u65E5\u5F8C","In 5 days":"5\u65E5\u5F8C","In 1 week":"1\u9031\u9593\u5F8C","In 10 days":"10\u65E5\u5F8C","In 2 weeks":"2\u9031\u9593\u5F8C","In 1 month":"1\u30F6\u6708\u5F8C","In 2 months":"2\u30F6\u6708\u5F8C","In 3 months":"3\u30F6\u6708\u5F8C","In 6 months":"6\u30F6\u6708\u5F8C","In 1 year":"1\u5E74\u5F8C","In 5 years":"5\u5E74\u5F8C","In 10 years":"10\u5E74\u5F8C","Highest priority":"\u6700\u9AD8\u512A\u5148\u5EA6","High priority":"\u9AD8\u512A\u5148\u5EA6","Medium priority":"\u4E2D\u512A\u5148\u5EA6","No priority":"\u7121\u512A\u5148\u5EA6","Low priority":"\u4F4E\u512A\u5148\u5EA6","Lowest priority":"\u6700\u4F4E\u512A\u5148\u5EA6","Priority A":"\u512A\u5148\u5EA6A","Priority B":"\u512A\u5148\u5EA6B","Priority C":"\u512A\u5148\u5EA6C","Task Priority":"\u30BF\u30B9\u30AF\u512A\u5148\u5EA6","Remove Priority":"\u512A\u5148\u5EA6\u3092\u524A\u9664","Cycle task status forward":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524D\u306B\u5FAA\u74B0","Cycle task status backward":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5F8C\u308D\u306B\u5FAA\u74B0","Remove priority":"\u512A\u5148\u5EA6\u3092\u524A\u9664","Move task to another file":"\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move all completed subtasks to another file":"\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move direct completed subtasks to another file":"\u76F4\u63A5\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move all subtasks to another file":"\u3059\u3079\u3066\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Set priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A","Toggle quick capture panel":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Quick capture (Global)":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\uFF09","Toggle task filter panel":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Filter Mode":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30E2\u30FC\u30C9","Choose whether to include or exclude tasks that match the filters":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Show matching tasks":"\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u3092\u8868\u793A","Hide matching tasks":"\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Choose whether to show or hide tasks that match the filters":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Create new file:":"\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\uFF1A","Completed tasks moved to":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u5148","Failed to create file:":"\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Beginning of file":"\u30D5\u30A1\u30A4\u30EB\u306E\u5148\u982D","Failed to move tasks:":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","No active file found":"\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Task moved to":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u5148","Failed to move task:":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Nothing to capture":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3059\u308B\u3082\u306E\u304C\u3042\u308A\u307E\u305B\u3093","Captured successfully":"\u30AD\u30E3\u30D7\u30C1\u30E3\u306B\u6210\u529F\u3057\u307E\u3057\u305F","Failed to save:":"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Captured successfully to":"\u30AD\u30E3\u30D7\u30C1\u30E3\u5148",Total:"\u5408\u8A08",Workflow:"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Add as workflow root":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u30EB\u30FC\u30C8\u3068\u3057\u3066\u8FFD\u52A0","Move to stage":"\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5","Complete stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u5B8C\u4E86","Add child task with same stage":"\u540C\u3058\u30B9\u30C6\u30FC\u30B8\u306E\u5B50\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Could not open quick capture panel in the current editor":"\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F","Just started {{PROGRESS}}%":"\u958B\u59CB\u3057\u305F\u3070\u304B\u308A {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u9032\u884C\u4E2D {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u534A\u5206\u307E\u3067 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u9806\u8ABF\u306B\u9032\u884C\u4E2D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u3082\u3046\u5C11\u3057\u3067\u5B8C\u4E86 {{PROGRESS}}%","Progress bar":"\u9032\u6357\u30D0\u30FC","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u89AA\u30BF\u30B9\u30AF\u306E\u5F8C\u308D\u306E\u9032\u6357\u30D0\u30FC\uFF08\u901A\u5E38\u306F\u30BF\u30B9\u30AF\u306E\u6700\u5F8C\uFF09\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002\u307E\u305F\u3001\u898B\u51FA\u3057\u306E\u4E0B\u306E\u30BF\u30B9\u30AF\u306E\u9032\u6357\u30D0\u30FC\u3082\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002","Hide progress bars":"\u9032\u6357\u30D0\u30FC\u3092\u975E\u8868\u793A","Parent task changer":"\u89AA\u30BF\u30B9\u30AF\u5909\u66F4\u30C4\u30FC\u30EB","Change the parent task of the current task.":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u3092\u5909\u66F4\u3057\u307E\u3059\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC\u304C\u307E\u3060\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u300C\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Configure task workflows for project and process management":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3068\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u305F\u3081\u306E\u30BF\u30B9\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8A2D\u5B9A","Enable workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u6709\u52B9\u5316","Toggle to enable the workflow system for tasks":"\u30BF\u30B9\u30AF\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B7\u30B9\u30C6\u30E0\u3092\u6709\u52B9\u306B\u3059\u308B\u5207\u308A\u66FF\u3048","Auto-add timestamp":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically add a timestamp to the task when it is created":"\u30BF\u30B9\u30AF\u4F5C\u6210\u6642\u306B\u81EA\u52D5\u7684\u306B\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u8FFD\u52A0","Timestamp format:":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5F62\u5F0F\uFF1A","Timestamp format":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5F62\u5F0F","Remove timestamp when moving to next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u524A\u9664","Remove the timestamp from the current task when moving to the next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u304B\u3089\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u524A\u9664","Calculate spent time":"\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Calculate and display the time spent on the task when moving to the next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u30BF\u30B9\u30AF\u306B\u304B\u304B\u3063\u305F\u6642\u9593\u3092\u8A08\u7B97\u3057\u3066\u8868\u793A","Format for spent time:":"\u7D4C\u904E\u6642\u9593\u306E\u5F62\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97\u3057\u307E\u3059\u3002","Spent time format":"\u7D4C\u904E\u6642\u9593\u306E\u5F62\u5F0F","Calculate full spent time":"\u5168\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Calculate the full spent time from the start of the task to the last stage":"\u30BF\u30B9\u30AF\u306E\u958B\u59CB\u304B\u3089\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u307E\u3067\u306E\u5168\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Auto remove last stage marker":"\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u30DE\u30FC\u30AB\u30FC\u3092\u81EA\u52D5\u524A\u9664","Automatically remove the last stage marker when a task is completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u30DE\u30FC\u30AB\u30FC\u3092\u81EA\u52D5\u7684\u306B\u524A\u9664","Auto-add next task":"\u6B21\u306E\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically create a new task with the next stage when completing a task":"\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86\u3059\u308B\u969B\u306B\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u7684\u306B\u4F5C\u6210","Workflow definitions":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9","Configure workflow templates for different types of processes":"\u7570\u306A\u308B\u30BF\u30A4\u30D7\u306E\u30D7\u30ED\u30BB\u30B9\u7528\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u8A2D\u5B9A","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9\u304C\u307E\u3060\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u300C\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8FFD\u52A0\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Edit workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u7DE8\u96C6","Remove workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u524A\u9664","Delete workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u524A\u9664",Delete:"\u524A\u9664","Add New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8FFD\u52A0","New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Create New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D","A descriptive name for the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Workflow ID":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FCID","A unique identifier for the workflow (used in tags)":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u4E00\u610F\u306E\u8B58\u5225\u5B50\uFF08\u30BF\u30B0\u3067\u4F7F\u7528\uFF09",Description:"\u8AAC\u660E","Optional description for the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u8AAC\u660E","Describe the purpose and use of this workflow...":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u76EE\u7684\u3068\u4F7F\u7528\u65B9\u6CD5\u3092\u8AAC\u660E...","Workflow Stages":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8","No stages defined yet. Add a stage to get started.":"\u30B9\u30C6\u30FC\u30B8\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u59CB\u3081\u307E\u3057\u3087\u3046\u3002",Edit:"\u7DE8\u96C6","Move up":"\u4E0A\u306B\u79FB\u52D5","Move down":"\u4E0B\u306B\u79FB\u52D5","Sub-stage":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Sub-stage name":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u540D","Sub-stage ID":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8ID","Next: ":"\u6B21\uFF1A","Add Sub-stage":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0","New Sub-stage":"\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Edit Stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u7DE8\u96C6","Stage name":"\u30B9\u30C6\u30FC\u30B8\u540D","A descriptive name for this workflow stage":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Stage ID":"\u30B9\u30C6\u30FC\u30B8ID","A unique identifier for the stage (used in tags)":"\u30B9\u30C6\u30FC\u30B8\u306E\u4E00\u610F\u306E\u8B58\u5225\u5B50\uFF08\u30BF\u30B0\u3067\u4F7F\u7528\uFF09","Stage type":"\u30B9\u30C6\u30FC\u30B8\u30BF\u30A4\u30D7","The type of this workflow stage":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u30BF\u30A4\u30D7","Linear (sequential)":"\u7DDA\u5F62\uFF08\u9806\u6B21\uFF09","Cycle (repeatable)":"\u30B5\u30A4\u30AF\u30EB\uFF08\u7E70\u308A\u8FD4\u3057\u53EF\u80FD\uFF09","Terminal (end stage)":"\u7D42\u7AEF\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30B8\uFF09","Next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8","The stage to proceed to after this one":"\u3053\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u5F8C\u306B\u9032\u3080\u30B9\u30C6\u30FC\u30B8","Sub-stages":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Define cycle sub-stages (optional)":"\u30B5\u30A4\u30AF\u30EB\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u5B9A\u7FA9\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","No sub-stages defined yet.":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Can proceed to":"\u9032\u3080\u3053\u3068\u304C\u3067\u304D\u308B\u5148","Additional stages that can follow this one (for right-click menu)":"\u3053\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u5F8C\u306B\u7D9A\u304F\u8FFD\u52A0\u306E\u30B9\u30C6\u30FC\u30B8\uFF08\u53F3\u30AF\u30EA\u30C3\u30AF\u30E1\u30CB\u30E5\u30FC\u7528\uFF09","No additional destination stages defined.":"\u8FFD\u52A0\u306E\u76EE\u7684\u5730\u30B9\u30C6\u30FC\u30B8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",Remove:"\u524A\u9664",Add:"\u8FFD\u52A0","Name and ID are required.":"\u540D\u524D\u3068ID\u304C\u5FC5\u8981\u3067\u3059\u3002","End of file":"\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A","Include in cycle":"\u30B5\u30A4\u30AF\u30EB\u306B\u542B\u3081\u308B",Preset:"\u30D7\u30EA\u30BB\u30C3\u30C8","Preset name":"\u30D7\u30EA\u30BB\u30C3\u30C8\u540D","Edit Filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6","Add New Preset":"\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0","New Filter":"\u65B0\u3057\u3044\u30D5\u30A3\u30EB\u30BF\u30FC","Reset to Default Presets":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","This will replace all your current presets with the default set. Are you sure?":"\u3053\u308C\u306B\u3088\u308A\u3001\u73FE\u5728\u306E\u3059\u3079\u3066\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u304C\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30BB\u30C3\u30C8\u306B\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3059\u3002\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Edit Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u7DE8\u96C6",General:"\u4E00\u822C","Progress Bar":"\u9032\u6357\u30D0\u30FC","Task Mover":"\u30BF\u30B9\u30AF\u79FB\u52D5","Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Date & Priority":"\u65E5\u4ED8\u3068\u512A\u5148\u5EA6",About:"\u306B\u3064\u3044\u3066","Count sub children of current Task":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u30B5\u30D6\u5B50\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u9032\u6357\u30D0\u30FC\u3092\u751F\u6210\u3059\u308B\u969B\u306B\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u305F\u3081\u306B\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8A31\u53EF\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Configure task status settings":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u3092\u69CB\u6210","Configure which task markers to count or exclude":"\u30AB\u30A6\u30F3\u30C8\u307E\u305F\u306F\u9664\u5916\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u69CB\u6210","Task status cycle and marks":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3068\u30DE\u30FC\u30AF","About Task Genius":"Task Genius\u306B\u3064\u3044\u3066",Version:"\u30D0\u30FC\u30B8\u30E7\u30F3",Documentation:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","View the documentation for this plugin":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8868\u793A","Open Documentation":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u958B\u304F","Incomplete tasks":"\u672A\u5B8C\u4E86\u306E\u30BF\u30B9\u30AF","In progress tasks":"\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF","Completed tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF","All tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF","After heading":"\u898B\u51FA\u3057\u306E\u5F8C","End of section":"\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A","Enable text mark in source mode":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u3067\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u6709\u52B9\u5316","Make the text mark in source mode follow the task status cycle when clicked.":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u3067\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3046","Status name":"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D","Progress display mode":"\u9032\u6357\u8868\u793A\u30E2\u30FC\u30C9","Choose how to display task progress":"\u30BF\u30B9\u30AF\u9032\u6357\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E","No progress indicators":"\u9032\u6357\u30A4\u30F3\u30B8\u30B1\u30FC\u30BF\u30FC\u306A\u3057","Graphical progress bar":"\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u9032\u6357\u30D0\u30FC","Text progress indicator":"\u30C6\u30AD\u30B9\u30C8\u9032\u6357\u30A4\u30F3\u30B8\u30B1\u30FC\u30BF\u30FC","Both graphical and text":"\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u3068\u30C6\u30AD\u30B9\u30C8\u306E\u4E21\u65B9","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u9032\u6357\u30D0\u30FC\u3092\u751F\u6210\u3059\u308B\u969B\u306B\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u305F\u3081\u306B\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8A31\u53EF\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Progress format":"\u9032\u6357\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Choose how to display the task progress":"\u30BF\u30B9\u30AF\u9032\u6357\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E","Percentage (75%)":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 (75%)","Bracketed percentage ([75%])":"\u62EC\u5F27\u4ED8\u304D\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 ([75%])","Fraction (3/4)":"\u5206\u6570 (3/4)","Bracketed fraction ([3/4])":"\u62EC\u5F27\u4ED8\u304D\u5206\u6570 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8A73\u7D30 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u30AB\u30B9\u30BF\u30E0\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Range-based text":"\u7BC4\u56F2\u30D9\u30FC\u30B9\u306E\u30C6\u30AD\u30B9\u30C8","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"{{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}}\u306A\u3069\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3092\u4F7F\u7528","Preview:":"\u30D7\u30EC\u30D3\u30E5\u30FC\uFF1A","Available placeholders":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u73FE\u4F8B","Examples of advanced formats using expressions":"\u8868\u73FE\u3092\u4F7F\u7528\u3057\u305F\u9AD8\u5EA6\u306A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4F8B","Text Progress Bar":"\u30C6\u30AD\u30B9\u30C8\u9032\u6357\u30D0\u30FC","Emoji Progress Bar":"\u7D75\u6587\u5B57\u9032\u6357\u30D0\u30FC","Color-coded Status":"\u8272\u5206\u3051\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30BF\u30B9","Status with Icons":"\u30A2\u30A4\u30B3\u30F3\u4ED8\u304D\u30B9\u30C6\u30FC\u30BF\u30B9",Preview:"\u30D7\u30EC\u30D3\u30E5\u30FC",Use:"\u4F7F\u7528","Toggle this to show percentage instead of completed/total count.":"\u5B8C\u4E86/\u5408\u8A08\u30AB\u30A6\u30F3\u30C8\u306E\u4EE3\u308F\u308A\u306B\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Customize progress ranges":"\u9032\u6357\u7BC4\u56F2\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Toggle this to customize the text for different progress ranges.":"\u7570\u306A\u308B\u9032\u6357\u7BC4\u56F2\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Apply Theme":"\u30C6\u30FC\u30DE\u3092\u9069\u7528","Back to main settings":"\u30E1\u30A4\u30F3\u8A2D\u5B9A\u306B\u623B\u308B","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u5F0F\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u3001\u4F8B\u3048\u3070data.percentages\u3092\u4F7F\u7528\u3057\u3066\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u306E\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B\u3002\u307E\u305F\u3001\u6570\u5B66\u3084\u7E70\u308A\u8FD4\u3057\u95A2\u6570\u3092\u4F7F\u7528\u3057\u3066\u7D50\u679C\u3092\u53D6\u5F97\u3059\u308B\u3002","Target File:":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\uFF1A","Task Properties":"\u30BF\u30B9\u30AF\u306E\u30D7\u30ED\u30D1\u30C6\u30A3","Start Date":"\u958B\u59CB\u65E5","Due Date":"\u671F\u9650\u65E5","Scheduled Date":"\u4E88\u5B9A\u65E5",Priority:"\u512A\u5148\u5EA6",None:"\u306A\u3057",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D",Context:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8",Recurrence:"\u7E70\u308A\u8FD4\u3057","e.g., every day, every week":"\u4F8B\uFF1A\u6BCE\u65E5\u3001\u6BCE\u9031","Task Content":"\u30BF\u30B9\u30AF\u5185\u5BB9","Task Details":"\u30BF\u30B9\u30AF\u306E\u8A73\u7D30",File:"\u30D5\u30A1\u30A4\u30EB","Edit in File":"\u30D5\u30A1\u30A4\u30EB\u3067\u7DE8\u96C6","Mark Incomplete":"\u672A\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF","Mark Complete":"\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF","Task Title":"\u30BF\u30B9\u30AF\u30BF\u30A4\u30C8\u30EB",Tags:"\u30BF\u30B0","e.g. every day, every 2 weeks":"\u4F8B\uFF1A\u6BCE\u65E5\u30012\u9031\u9593\u3054\u3068",Forecast:"\u4E88\u6E2C","0 actions, 0 projects":"0\u30A2\u30AF\u30B7\u30E7\u30F3\u30010\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Toggle list/tree view":"\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u306E\u5207\u308A\u66FF\u3048","Focusing on Work":"\u4F5C\u696D\u306B\u96C6\u4E2D",Unfocus:"\u96C6\u4E2D\u89E3\u9664","Past Due":"\u671F\u9650\u8D85\u904E",Today:"\u4ECA\u65E5",Future:"\u5C06\u6765",actions:"\u30A2\u30AF\u30B7\u30E7\u30F3",project:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Coming Up":"\u4ECA\u5F8C\u306E\u4E88\u5B9A",Task:"\u30BF\u30B9\u30AF",Tasks:"\u30BF\u30B9\u30AF","No upcoming tasks":"\u4ECA\u5F8C\u306E\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093","No tasks scheduled":"\u4E88\u5B9A\u3055\u308C\u3066\u3044\u308B\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093","0 tasks":"0\u30BF\u30B9\u30AF","Filter tasks...":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC...",Projects:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Toggle multi-select":"\u8907\u6570\u9078\u629E\u306E\u5207\u308A\u66FF\u3048","No projects found":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","projects selected":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F",tasks:"\u30BF\u30B9\u30AF","No tasks in the selected projects":"\u9078\u629E\u3057\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Select a project to see related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Configure Review for":"\u30EC\u30D3\u30E5\u30FC\u306E\u8A2D\u5B9A\uFF1A","Review Frequency":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6","How often should this project be reviewed":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u3069\u306E\u304F\u3089\u3044\u306E\u983B\u5EA6\u3067\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u304B","Custom...":"\u30AB\u30B9\u30BF\u30E0...","e.g., every 3 months":"\u4F8B\uFF1A3\u30F6\u6708\u3054\u3068","Last Reviewed":"\u6700\u7D42\u30EC\u30D3\u30E5\u30FC\u65E5","Please specify a review frequency":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","Review schedule updated for":"\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\uFF1A","Review Projects":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30EC\u30D3\u30E5\u30FC","Select a project to review its tasks.":"\u30BF\u30B9\u30AF\u3092\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Configured for Review":"\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A\u6E08\u307F","Not Configured":"\u672A\u8A2D\u5B9A","No projects available.":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\u3002","Select a project to review.":"\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Show all tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u8868\u793A","Showing all tasks, including completed tasks from previous reviews.":"\u4EE5\u524D\u306E\u30EC\u30D3\u30E5\u30FC\u3067\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002","Show only new and in-progress tasks":"\u65B0\u898F\u304A\u3088\u3073\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF\u306E\u307F\u8868\u793A","No tasks found for this project.":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","Review every":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6",never:"\u306A\u3057","Last reviewed":"\u6700\u7D42\u30EC\u30D3\u30E5\u30FC\u65E5","Mark as Reviewed":"\u30EC\u30D3\u30E5\u30FC\u6E08\u307F\u3068\u3057\u3066\u30DE\u30FC\u30AF","No review schedule configured for this project":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u306F\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Configure Review Schedule":"\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3092\u8A2D\u5B9A","Project Review":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EC\u30D3\u30E5\u30FC","Select a project from the left sidebar to review its tasks.":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u30BF\u30B9\u30AF\u3092\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044\u3002",Inbox:"\u53D7\u4FE1\u30C8\u30EC\u30A4",Flagged:"\u30D5\u30E9\u30B0\u4ED8\u304D",Review:"\u30EC\u30D3\u30E5\u30FC","tags selected":"\u30BF\u30B0\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F","No tasks with the selected tags":"\u9078\u629E\u3057\u305F\u30BF\u30B0\u306E\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Select a tag to see related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Open Task Genius view":"Task Genius\u30D3\u30E5\u30FC\u3092\u958B\u304F","Task capture with metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D\u30BF\u30B9\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Refresh task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u66F4\u65B0","Refreshing task index...":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u66F4\u65B0\u4E2D...","Task index refreshed":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F","Failed to refresh task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u66F4\u65B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Force reindex all tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5F37\u5236\u7684\u306B\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Clearing task cache and rebuilding index...":"\u30BF\u30B9\u30AF\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u30AF\u30EA\u30A2\u3057\u3066\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9\u4E2D...","Task index completely rebuilt":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5B8C\u5168\u306B\u518D\u69CB\u7BC9\u3055\u308C\u307E\u3057\u305F","Failed to force reindex tasks":"\u30BF\u30B9\u30AF\u306E\u5F37\u5236\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Task Genius View":"Task Genius\u30D3\u30E5\u30FC","Toggle Sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306E\u5207\u308A\u66FF\u3048",Details:"\u8A73\u7D30",View:"\u30D3\u30E5\u30FC","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius\u30D3\u30E5\u30FC\u306F\u3001\u30BF\u30B9\u30AF\u3092\u3088\u308A\u52B9\u7387\u7684\u306B\u7BA1\u7406\u3067\u304D\u308B\u5305\u62EC\u7684\u306A\u30D3\u30E5\u30FC\u3067\u3059\u3002","Enable task genius view":"Task Genius\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Select a task to view details":"\u30BF\u30B9\u30AF\u3092\u9078\u629E\u3057\u3066\u8A73\u7D30\u3092\u8868\u793A",Status:"\u30B9\u30C6\u30FC\u30BF\u30B9","Comma separated":"\u30AB\u30F3\u30DE\u533A\u5207\u308A",Focus:"\u96C6\u4E2D","Loading more...":"\u8AAD\u307F\u8FBC\u307F\u4E2D...",projects:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","No tasks for this section.":"\u3053\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u306B\u306F\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093\u3002","No tasks found.":"\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",Complete:"\u5B8C\u4E86","Switch status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5207\u308A\u66FF\u3048\u308B","Rebuild index":"\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9",Rebuild:"\u518D\u69CB\u7BC9","0 tasks, 0 projects":"0\u30BF\u30B9\u30AF, 0\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","New Custom View":"\u65B0\u3057\u3044\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC","Create Custom View":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u4F5C\u6210","Edit View: ":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6\uFF1A","View Name":"\u30D3\u30E5\u30FC\u540D","My Custom Task View":"\u30DE\u30A4\u30AB\u30B9\u30BF\u30E0\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC","Icon Name":"\u30A2\u30A4\u30B3\u30F3\u540D","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Lucide\u30A2\u30A4\u30B3\u30F3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB","Hide Completed and Abandoned Tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3057\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Hide completed and abandoned tasks in this view.":"\u3053\u306E\u30D3\u30E5\u30FC\u3067\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3057\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A\u306B\u3057\u307E\u3059\u3002","Text Contains":"\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080","Filter tasks whose content includes this text (case-insensitive).":"\u3053\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3057\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Tags Include":"\u30BF\u30B0\u3092\u542B\u3080","Task must include ALL these tags (comma-separated).":"\u30BF\u30B9\u30AF\u306F\u3053\u308C\u3089\u306E\u30BF\u30B0\u3092\u3059\u3079\u3066\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002","Tags Exclude":"\u30BF\u30B0\u3092\u9664\u5916","Task must NOT include ANY of these tags (comma-separated).":"\u30BF\u30B9\u30AF\u306F\u3053\u308C\u3089\u306E\u30BF\u30B0\u306E\u3044\u305A\u308C\u3082\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002","Project Is":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F","Task must belong to this project (exact match).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u5C5E\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09\u3002","Priority Is":"\u512A\u5148\u5EA6\u306F","Task must have this priority (e.g., 1, 2, 3).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u512A\u5148\u5EA6\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u542B\u3080","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306F\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30DE\u30FC\u30AB\u30FC\u3001\u4F8B\uFF1A/,>\uFF09\u3002","Status Exclude":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9664\u5916","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306F\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u3067\u3082\u3042\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30DE\u30FC\u30AB\u30FC\u3001\u4F8B\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"YYYY-MM-DD\u5F62\u5F0F\u307E\u305F\u306F\u300C\u4ECA\u65E5\u300D\u3001\u300C\u660E\u65E5\u300D\u3001\u300C\u6765\u9031\u300D\u3001\u300C\u5148\u6708\u300D\u306A\u3069\u306E\u76F8\u5BFE\u7684\u306A\u7528\u8A9E\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Due Date Is":"\u671F\u9650\u65E5\u306F","Start Date Is":"\u958B\u59CB\u65E5\u306F","Scheduled Date Is":"\u4E88\u5B9A\u65E5\u306F","Path Includes":"\u30D1\u30B9\u3092\u542B\u3080","Task must contain this path (case-insensitive).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Path Excludes":"\u30D1\u30B9\u3092\u9664\u5916","Task must NOT contain this path (case-insensitive).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Unnamed View":"\u540D\u524D\u306E\u306A\u3044\u30D3\u30E5\u30FC","View configuration saved.":"\u30D3\u30E5\u30FC\u8A2D\u5B9A\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F\u3002","Hide Details":"\u8A73\u7D30\u3092\u975E\u8868\u793A","Show Details":"\u8A73\u7D30\u3092\u8868\u793A","View Config":"\u30D3\u30E5\u30FC\u8A2D\u5B9A","View Configuration":"\u30D3\u30E5\u30FC\u8A2D\u5B9A","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Task Genius\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u306E\u8868\u793A\u3001\u9806\u5E8F\u3001\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u306E\u4F5C\u6210\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Manage Views":"\u30D3\u30E5\u30FC\u3092\u7BA1\u7406","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3001\u9806\u5E8F\u3001\u8868\u793A\u3001\u30D3\u30E5\u30FC\u3054\u3068\u306E\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u8868\u793A/\u975E\u8868\u793A\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Show in sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306B\u8868\u793A","Edit View":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6","Move Up":"\u4E0A\u306B\u79FB\u52D5","Move Down":"\u4E0B\u306B\u79FB\u52D5","Delete View":"\u30D3\u30E5\u30FC\u3092\u524A\u9664","Add Custom View":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u8FFD\u52A0","Error: View ID already exists.":"\u30A8\u30E9\u30FC\uFF1A\u30D3\u30E5\u30FCID\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002",Events:"\u30A4\u30D9\u30F3\u30C8",Plan:"\u30D7\u30E9\u30F3",Year:"\u5E74",Month:"\u6708",Week:"\u9031",Day:"\u65E5",Agenda:"\u30A2\u30B8\u30A7\u30F3\u30C0","Back to categories":"\u30AB\u30C6\u30B4\u30EA\u30FC\u306B\u623B\u308B","No matching options found":"\u4E00\u81F4\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","No matching filters found":"\u4E00\u81F4\u3059\u308B\u30D5\u30A3\u30EB\u30BF\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",Tag:"\u30BF\u30B0","File Path":"\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9","Add filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u8FFD\u52A0","Clear all":"\u3059\u3079\u3066\u30AF\u30EA\u30A2","Add Card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","First Day of Week":"\u9031\u306E\u6700\u521D\u306E\u65E5","Overrides the locale default for calendar views.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u306E\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","Show checkbox":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","Show a checkbox for each task in the kanban view.":"\u304B\u3093\u3070\u3093\u30D3\u30E5\u30FC\u306E\u5404\u30BF\u30B9\u30AF\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A\u3057\u307E\u3059\u3002","Locale Default":"\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8","Use custom goal for progress bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30AB\u30B9\u30BF\u30E0\u76EE\u6A19\u3092\u4F7F\u7528","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u89AA\u30BF\u30B9\u30AF\u306E\u76EE\u6A19\u3068\u3057\u3066 g::number \u30D1\u30BF\u30FC\u30F3\u3092\u898B\u3064\u3051\u3089\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Prefer metadata format of task":"\u30BF\u30B9\u30AF\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\u3092\u512A\u5148","You can choose dataview format or tasks format, that will influence both index and save format.":"dataview\u5F62\u5F0F\u307E\u305F\u306Ftasks\u5F62\u5F0F\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u306F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3068\u4FDD\u5B58\u5F62\u5F0F\u306E\u4E21\u65B9\u306B\u5F71\u97FF\u3057\u307E\u3059\u3002","Open in new tab":"\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304F","Open settings":"\u8A2D\u5B9A\u3092\u958B\u304F","Hide in sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306B\u975E\u8868\u793A","No items found":"\u9805\u76EE\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","High Priority":"\u9AD8\u512A\u5148\u5EA6","Medium Priority":"\u4E2D\u512A\u5148\u5EA6","Low Priority":"\u4F4E\u512A\u5148\u5EA6","No tasks in the selected items":"\u9078\u629E\u3057\u305F\u9805\u76EE\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","View Type":"\u30D3\u30E5\u30FC\u30BF\u30A4\u30D7","Select the type of view to create":"\u4F5C\u6210\u3059\u308B\u30D3\u30E5\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E","Standard View":"\u6A19\u6E96\u30D3\u30E5\u30FC","Two Column View":"2\u5217\u30D3\u30E5\u30FC",Items:"\u9805\u76EE","selected items":"\u9078\u629E\u3055\u308C\u305F\u9805\u76EE","No items selected":"\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Two Column View Settings":"2\u5217\u30D3\u30E5\u30FC\u8A2D\u5B9A","Group by Task Property":"\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u30B0\u30EB\u30FC\u30D7\u5316","Select which task property to use for left column grouping":"\u5DE6\u5217\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u9078\u629E",Priorities:"\u512A\u5148\u5EA6",Contexts:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8","Due Dates":"\u671F\u9650\u65E5","Scheduled Dates":"\u4E88\u5B9A\u65E5","Start Dates":"\u958B\u59CB\u65E5",Files:"\u30D5\u30A1\u30A4\u30EB","Left Column Title":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Title for the left column (items list)":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB\uFF08\u9805\u76EE\u30EA\u30B9\u30C8\uFF09","Right Column Title":"\u53F3\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Default title for the right column (tasks list)":"\u53F3\u5217\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30BF\u30A4\u30C8\u30EB\uFF08\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\uFF09","Multi-select Text":"\u8907\u6570\u9078\u629E\u30C6\u30AD\u30B9\u30C8","Text to show when multiple items are selected":"\u8907\u6570\u306E\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u305F\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u30C6\u30AD\u30B9\u30C8","Empty State Text":"\u7A7A\u306E\u72B6\u614B\u30C6\u30AD\u30B9\u30C8","Text to show when no items are selected":"\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u306A\u3044\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u30C6\u30AD\u30B9\u30C8","Filter Blanks":"\u7A7A\u767D\u3092\u30D5\u30A3\u30EB\u30BF\u30FC","Filter out blank tasks in this view.":"\u3053\u306E\u30D3\u30E5\u30FC\u3067\u7A7A\u767D\u306E\u30BF\u30B9\u30AF\u3092\u9664\u5916\u3057\u307E\u3059\u3002","Task sorting is disabled or no sort criteria are defined in settings.":"\u30BF\u30B9\u30AF\u306E\u4E26\u3079\u66FF\u3048\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u304B\u3001\u8A2D\u5B9A\u3067\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\uFF1A#tag1, #tag2, #tag3",Overdue:"\u671F\u9650\u5207\u308C","No tasks found for this tag.":"\u3053\u306E\u30BF\u30B0\u306E\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","New custom view":"\u65B0\u3057\u3044\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC","Create custom view":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u4F5C\u6210","Edit view: ":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6\uFF1A","Icon name":"\u30A2\u30A4\u30B3\u30F3\u540D","First day of week":"\u9031\u306E\u6700\u521D\u306E\u65E5","Overrides the locale default for forecast views.":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u306E\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","View type":"\u30D3\u30E5\u30FC\u30BF\u30A4\u30D7","Standard view":"\u6A19\u6E96\u30D3\u30E5\u30FC","Two column view":"2\u5217\u30D3\u30E5\u30FC","Two column view settings":"2\u5217\u30D3\u30E5\u30FC\u8A2D\u5B9A","Group by task property":"\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u30B0\u30EB\u30FC\u30D7\u5316","Left column title":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Right column title":"\u53F3\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Empty state text":"\u7A7A\u306E\u72B6\u614B\u30C6\u30AD\u30B9\u30C8","Hide completed and abandoned tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Filter blanks":"\u7A7A\u767D\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","Text contains":"\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080","Tags include":"\u30BF\u30B0\u3092\u542B\u3080","Tags exclude":"\u30BF\u30B0\u3092\u9664\u5916","Project is":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F","Priority is":"\u512A\u5148\u5EA6\u306F","Status include":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u542B\u3080","Status exclude":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9664\u5916","Due date is":"\u671F\u9650\u65E5\u306F","Start date is":"\u958B\u59CB\u65E5\u306F","Scheduled date is":"\u4E88\u5B9A\u65E5\u306F","Path includes":"\u30D1\u30B9\u3092\u542B\u3080","Path excludes":"\u30D1\u30B9\u3092\u9664\u5916","Sort Criteria":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048\u308B\u9806\u5E8F\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002\u6761\u4EF6\u306F\u9806\u756A\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002","No sort criteria defined. Add criteria below.":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4EE5\u4E0B\u306B\u6761\u4EF6\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",Content:"\u5185\u5BB9",Ascending:"\u6607\u9806",Descending:"\u964D\u9806","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u6607\u9806\uFF1A\u9AD8 -> \u4F4E -> \u306A\u3057\u3002\u964D\u9806\uFF1A\u306A\u3057 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u6607\u9806\uFF1A\u65E9\u3044 -> \u9045\u3044 -> \u306A\u3057\u3002\u964D\u9806\uFF1A\u306A\u3057 -> \u9045\u3044 -> \u65E9\u3044","Ascending respects status order (Overdue first). Descending reverses it.":"\u6607\u9806\u306F\u30B9\u30C6\u30FC\u30BF\u30B9\u9806\uFF08\u671F\u9650\u5207\u308C\u304C\u6700\u521D\uFF09\u3092\u5C0A\u91CD\u3057\u307E\u3059\u3002\u964D\u9806\u306F\u305D\u308C\u3092\u9006\u306B\u3057\u307E\u3059\u3002","Ascending: A-Z. Descending: Z-A":"\u6607\u9806\uFF1AA-Z\u3002\u964D\u9806\uFF1AZ-A","Remove Criterion":"\u6761\u4EF6\u3092\u524A\u9664","Add Sort Criterion":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u3092\u8FFD\u52A0","Reset to Defaults":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Has due date":"\u671F\u9650\u65E5\u3042\u308A","Has date":"\u65E5\u4ED8\u3042\u308A","No date":"\u65E5\u4ED8\u306A\u3057",Any:"\u4EFB\u610F","Has start date":"\u958B\u59CB\u65E5\u3042\u308A","Has scheduled date":"\u4E88\u5B9A\u65E5\u3042\u308A","Has created date":"\u4F5C\u6210\u65E5\u3042\u308A","Has completed date":"\u5B8C\u4E86\u65E5\u3042\u308A","Only show tasks that match the completed date.":"\u5B8C\u4E86\u65E5\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306E\u307F\u3092\u8868\u793A\u3057\u307E\u3059\u3002","Has recurrence":"\u7E70\u308A\u8FD4\u3057\u3042\u308A","Has property":"\u30D7\u30ED\u30D1\u30C6\u30A3\u3042\u308A","No property":"\u30D7\u30ED\u30D1\u30C6\u30A3\u306A\u3057","Unsaved Changes":"\u672A\u4FDD\u5B58\u306E\u5909\u66F4","Sort Tasks in Section":"\u30BB\u30AF\u30B7\u30E7\u30F3\u5185\u306E\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048","Tasks sorted (using settings). Change application needs refinement.":"\u30BF\u30B9\u30AF\u304C\u4E26\u3079\u66FF\u3048\u3089\u308C\u307E\u3057\u305F\uFF08\u8A2D\u5B9A\u3092\u4F7F\u7528\uFF09\u3002\u5909\u66F4\u306E\u9069\u7528\u306B\u306F\u6539\u826F\u304C\u5FC5\u8981\u3067\u3059\u3002","Sort Tasks in Entire Document":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5168\u4F53\u306E\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048","Entire document sorted (using settings).":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5168\u4F53\u304C\u4E26\u3079\u66FF\u3048\u3089\u308C\u307E\u3057\u305F\uFF08\u8A2D\u5B9A\u3092\u4F7F\u7528\uFF09\u3002","Tasks already sorted or no tasks found.":"\u30BF\u30B9\u30AF\u306F\u3059\u3067\u306B\u4E26\u3079\u66FF\u3048\u3089\u308C\u3066\u3044\u308B\u304B\u3001\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","Task Handler":"\u30BF\u30B9\u30AF\u30CF\u30F3\u30C9\u30E9\u30FC","Show progress bars based on heading":"\u898B\u51FA\u3057\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A","Toggle this to enable showing progress bars based on heading.":"\u898B\u51FA\u3057\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","# heading":"# \u898B\u51FA\u3057","Task Sorting":"\u30BF\u30B9\u30AF\u4E26\u3079\u66FF\u3048","Configure how tasks are sorted in the document.":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067\u30BF\u30B9\u30AF\u304C\u3069\u306E\u3088\u3046\u306B\u4E26\u3079\u66FF\u3048\u3089\u308C\u308B\u304B\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Enable Task Sorting":"\u30BF\u30B9\u30AF\u4E26\u3079\u66FF\u3048\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable commands for sorting tasks.":"\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Use relative time for date":"\u65E5\u4ED8\u306B\u76F8\u5BFE\u6642\u9593\u3092\u4F7F\u7528","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u30A2\u30A4\u30C6\u30E0\u306E\u65E5\u4ED8\u306B\u76F8\u5BFE\u6642\u9593\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u4F8B\uFF1A'\u6628\u65E5'\u3001'\u4ECA\u65E5'\u3001'\u660E\u65E5'\u3001'2\u65E5\u5F8C'\u3001'3\u30F6\u6708\u524D'\u306A\u3069\u3002","Ignore all tasks behind heading":"\u898B\u51FA\u3057\u306E\u5F8C\u306E\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u7121\u8996","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u7121\u8996\u3059\u308B\u898B\u51FA\u3057\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B\uFF1A'## \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8'\u3001'## \u53D7\u4FE1\u7BB1'\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059","Focus all tasks behind heading":"\u898B\u51FA\u3057\u306E\u5F8C\u306E\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B\u898B\u51FA\u3057\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B\uFF1A'## \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8'\u3001'## \u53D7\u4FE1\u7BB1'\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059","Enable rewards":"\u5831\u916C\u3092\u6709\u52B9\u306B\u3059\u308B","Reward display type":"\u5831\u916C\u8868\u793A\u30BF\u30A4\u30D7","Choose how rewards are displayed when earned.":"\u7372\u5F97\u6642\u306B\u5831\u916C\u304C\u3069\u306E\u3088\u3046\u306B\u8868\u793A\u3055\u308C\u308B\u304B\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Modal dialog":"\u30E2\u30FC\u30C0\u30EB\u30C0\u30A4\u30A2\u30ED\u30B0","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52D5\u53D7\u3051\u5165\u308C\uFF09","Occurrence levels":"\u51FA\u73FE\u30EC\u30D9\u30EB","Add occurrence level":"\u51FA\u73FE\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0","Reward items":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0","Image url (optional)":"\u753B\u50CFURL\uFF08\u4EFB\u610F\uFF09","Delete reward item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664","Add reward item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u8FFD\u52A0","(Optional) Trigger a notification when this value is reached":"\uFF08\u4EFB\u610F\uFF09\u3053\u306E\u5024\u306B\u9054\u3057\u305F\u3068\u304D\u306B\u901A\u77E5\u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B","The property name in daily note front matter to store mapping values":"\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Value mapping":"\u5024\u306E\u30DE\u30C3\u30D4\u30F3\u30B0","Define mappings from numeric values to display text":"\u6570\u5024\u304B\u3089\u8868\u793A\u30C6\u30AD\u30B9\u30C8\u3078\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u5B9A\u7FA9","Add new mapping":"\u65B0\u3057\u3044\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Scheduled events":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u305F\u30A4\u30D9\u30F3\u30C8","Add multiple events that need to be completed":"\u5B8C\u4E86\u3059\u308B\u5FC5\u8981\u306E\u3042\u308B\u8907\u6570\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0","Event name":"\u30A4\u30D9\u30F3\u30C8\u540D","Event details":"\u30A4\u30D9\u30F3\u30C8\u306E\u8A73\u7D30","Add new event":"\u65B0\u3057\u3044\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0","Please enter a property name":"\u30D7\u30ED\u30D1\u30C6\u30A3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one mapping value":"\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Mapping key must be a number":"\u30DE\u30C3\u30D4\u30F3\u30B0\u30AD\u30FC\u306F\u6570\u5B57\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059","Please enter text for all mapping values":"\u3059\u3079\u3066\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u306B\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one event":"\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Event name cannot be empty":"\u30A4\u30D9\u30F3\u30C8\u540D\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093","Add new habit":"\u65B0\u3057\u3044\u7FD2\u6163\u3092\u8FFD\u52A0","No habits yet":"\u307E\u3060\u7FD2\u6163\u304C\u3042\u308A\u307E\u305B\u3093","Click the button above to add your first habit":"\u4E0A\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6700\u521D\u306E\u7FD2\u6163\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Habit updated":"\u7FD2\u6163\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F","Habit added":"\u7FD2\u6163\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F","Delete habit":"\u7FD2\u6163\u3092\u524A\u9664","This action cannot be undone.":"\u3053\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3002","Habit deleted":"\u7FD2\u6163\u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F","You've Earned a Reward!":"\u5831\u916C\u3092\u7372\u5F97\u3057\u307E\u3057\u305F\uFF01","Your reward:":"\u3042\u306A\u305F\u306E\u5831\u916C\uFF1A","Image not found:":"\u753B\u50CF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF1A","Claim Reward":"\u5831\u916C\u3092\u53D7\u3051\u53D6\u308B",Skip:"\u30B9\u30AD\u30C3\u30D7",Reward:"\u5831\u916C","View & Index Configuration":"\u30D3\u30E5\u30FC\uFF06\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u8A2D\u5B9A","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Task Genius \u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001Task Genius \u30A4\u30F3\u30C7\u30AF\u30B5\u30FC\u3082\u6709\u52B9\u306B\u306A\u308A\u3001\u4FDD\u7BA1\u5EAB\u5168\u4F53\u304B\u3089 Task Genius \u30D3\u30E5\u30FC\u306E\u7D50\u679C\u304C\u63D0\u4F9B\u3055\u308C\u307E\u3059\u3002","Use daily note path as date":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u3092\u65E5\u4ED8\u3068\u3057\u3066\u4F7F\u7528","If enabled, the daily note path will be used as the date for tasks.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u304C\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u306Fmoment.js\u3068\u3053\u306E\u5F62\u5F0F\u3092\u4F7F\u7528\u3057\u3066\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u3092\u89E3\u6790\u3057\u307E\u3059\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5F62\u5F0F\u6587\u5B57\u5217\u3067\u306F `YYYY` \u306E\u4EE3\u308F\u308A\u306B `yyyy` \u3092\u3001`DD` \u306E\u4EE3\u308F\u308A\u306B `dd` \u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Daily note format":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u5F62\u5F0F","Daily note path":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u30D1\u30B9","Select the folder that contains the daily note.":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u3092\u542B\u3080\u30D5\u30A9\u30EB\u30C0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Use as date type":"\u65E5\u4ED8\u30BF\u30A4\u30D7\u3068\u3057\u3066\u4F7F\u7528","You can choose due, start, or scheduled as the date type for tasks.":"\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u30BF\u30A4\u30D7\u3068\u3057\u3066\u3001\u671F\u9650\u3001\u958B\u59CB\u3001\u307E\u305F\u306F\u4E88\u5B9A\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002",Due:"\u671F\u9650",Start:"\u958B\u59CB",Scheduled:"\u4E88\u5B9A",Rewards:"\u5831\u916C","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u30BF\u30B9\u30AF\u5B8C\u4E86\u306E\u5831\u916C\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30A2\u30A4\u30C6\u30E0\u3001\u51FA\u73FE\u78BA\u7387\u3001\u6761\u4EF6\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Enable Rewards":"\u5831\u916C\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle to enable or disable the reward system.":"\u5831\u916C\u30B7\u30B9\u30C6\u30E0\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Occurrence Levels":"\u51FA\u73FE\u30EC\u30D9\u30EB","Define different levels of reward rarity and their probability.":"\u5831\u916C\u306E\u30EC\u30A2\u5EA6\u3068\u305D\u306E\u78BA\u7387\u306E\u7570\u306A\u308B\u30EC\u30D9\u30EB\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Chance must be between 0 and 100.":"\u78BA\u7387\u306F0\u304B\u3089100\u306E\u9593\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Level Name (e.g., common)":"\u30EC\u30D9\u30EB\u540D\uFF08\u4F8B\uFF1A\u4E00\u822C\uFF09","Chance (%)":"\u78BA\u7387\uFF08%\uFF09","Delete Level":"\u30EC\u30D9\u30EB\u3092\u524A\u9664","Add Occurrence Level":"\u51FA\u73FE\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0","New Level":"\u65B0\u3057\u3044\u30EC\u30D9\u30EB","Reward Items":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0","Manage the specific rewards that can be obtained.":"\u7372\u5F97\u3067\u304D\u308B\u7279\u5B9A\u306E\u5831\u916C\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002","No levels defined":"\u30EC\u30D9\u30EB\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Reward Name/Text":"\u5831\u916C\u540D/\u30C6\u30AD\u30B9\u30C8","Inventory (-1 for \u221E)":"\u5728\u5EAB\uFF08-1\u3067\u221E\uFF09","Invalid inventory number.":"\u7121\u52B9\u306A\u5728\u5EAB\u6570\u3067\u3059\u3002","Condition (e.g., #tag AND project)":"\u6761\u4EF6\uFF08\u4F8B\uFF1A#\u30BF\u30B0 AND \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09","Image URL (optional)":"\u753B\u50CFURL\uFF08\u4EFB\u610F\uFF09","Delete Reward Item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664","No reward items defined yet.":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Add Reward Item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u8FFD\u52A0","New Reward":"\u65B0\u3057\u3044\u5831\u916C","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u7FD2\u6163\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002\u65B0\u3057\u3044\u7FD2\u6163\u306E\u8FFD\u52A0\u3001\u65E2\u5B58\u306E\u7FD2\u6163\u306E\u7DE8\u96C6\u3001\u7FD2\u6163\u306E\u5B8C\u4E86\u7BA1\u7406\u3092\u542B\u307F\u307E\u3059\u3002","Enable habits":"\u7FD2\u6163\u3092\u6709\u52B9\u306B\u3059\u308B","Just started":"\u958B\u59CB\u3057\u305F\u3070\u304B\u308A","Making progress":"\u9032\u884C\u4E2D","Half way":"\u534A\u5206\u5B8C\u4E86","Good progress":"\u9806\u8ABF\u306B\u9032\u884C","Almost there":"\u3082\u3046\u3059\u3050\u5B8C\u4E86","archived on":"\u30A2\u30FC\u30AB\u30A4\u30D6\u65E5",moved:"\u79FB\u52D5\u6E08\u307F","moved on":"\u79FB\u52D5\u65E5","Capture your thoughts...":"\u601D\u8003\u3092\u8A18\u9332...","Project Workflow":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Standard project management workflow":"\u6A19\u6E96\u7684\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",Planning:"\u8A08\u753B",Development:"\u958B\u767A",Testing:"\u30C6\u30B9\u30C8",Cancelled:"\u30AD\u30E3\u30F3\u30BB\u30EB",Habit:"\u7FD2\u6163","Drink a cup of good tea":"\u7F8E\u5473\u3057\u3044\u304A\u8336\u3092\u4E00\u676F\u98F2\u3080","Watch an episode of a favorite series":"\u304A\u6C17\u306B\u5165\u308A\u306E\u30B7\u30EA\u30FC\u30BA\u3092\u4E00\u8A71\u898B\u308B","Play a game":"\u30B2\u30FC\u30E0\u3092\u3059\u308B","Eat a piece of chocolate":"\u30C1\u30E7\u30B3\u30EC\u30FC\u30C8\u3092\u4E00\u53E3\u98DF\u3079\u308B",common:"\u4E00\u822C",rare:"\u30EC\u30A2",legendary:"\u30EC\u30B8\u30A7\u30F3\u30C0\u30EA\u30FC","No Habits Yet":"\u7FD2\u6163\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093","Click the open habit button to create a new habit.":"\u7FD2\u6163\u3092\u958B\u304F\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65B0\u3057\u3044\u7FD2\u6163\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Please enter details":"\u8A73\u7D30\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Goal reached":"\u76EE\u6A19\u9054\u6210","Exceeded goal":"\u76EE\u6A19\u8D85\u904E",Active:"\u30A2\u30AF\u30C6\u30A3\u30D6",today:"\u4ECA\u65E5",Inactive:"\u975E\u30A2\u30AF\u30C6\u30A3\u30D6","All Done!":"\u3059\u3079\u3066\u5B8C\u4E86\uFF01","Select event...":"\u30A4\u30D9\u30F3\u30C8\u3092\u9078\u629E...","Create new habit":"\u65B0\u3057\u3044\u7FD2\u6163\u3092\u4F5C\u6210","Edit habit":"\u7FD2\u6163\u3092\u7DE8\u96C6","Habit type":"\u7FD2\u6163\u30BF\u30A4\u30D7","Daily habit":"\u65E5\u6B21\u7FD2\u6163","Simple daily check-in habit":"\u30B7\u30F3\u30D7\u30EB\u306A\u65E5\u6B21\u30C1\u30A7\u30C3\u30AF\u30A4\u30F3\u7FD2\u6163","Count habit":"\u30AB\u30A6\u30F3\u30C8\u7FD2\u6163","Record numeric values, e.g., how many cups of water":"\u6570\u5024\u3092\u8A18\u9332\u3001\u4F8B\uFF1A\u6C34\u3092\u4F55\u676F\u98F2\u3093\u3060\u304B","Mapping habit":"\u30DE\u30C3\u30D4\u30F3\u30B0\u7FD2\u6163","Use different values to map, e.g., emotion tracking":"\u7570\u306A\u308B\u5024\u3092\u30DE\u30C3\u30D4\u30F3\u30B0\u3001\u4F8B\uFF1A\u611F\u60C5\u8FFD\u8DE1","Scheduled habit":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u7FD2\u6163","Habit with multiple events":"\u8907\u6570\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u6301\u3064\u7FD2\u6163","Habit name":"\u7FD2\u6163\u540D","Display name of the habit":"\u7FD2\u6163\u306E\u8868\u793A\u540D","Optional habit description":"\u7FD2\u6163\u306E\u8AAC\u660E\uFF08\u4EFB\u610F\uFF09",Icon:"\u30A2\u30A4\u30B3\u30F3","Please enter a habit name":"\u7FD2\u6163\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Property name":"\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","The property name of the daily note front matter":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Completion text":"\u5B8C\u4E86\u30C6\u30AD\u30B9\u30C8","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u4EFB\u610F\uFF09\u5B8C\u4E86\u3092\u8868\u3059\u7279\u5B9A\u306E\u30C6\u30AD\u30B9\u30C8\u3001\u7A7A\u767D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u7A7A\u3067\u306A\u3044\u5024\u304C\u5B8C\u4E86\u3068\u307F\u306A\u3055\u308C\u307E\u3059","The property name in daily note front matter to store count values":"\u30AB\u30A6\u30F3\u30C8\u5024\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Minimum value":"\u6700\u5C0F\u5024","(Optional) Minimum value for the count":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u6700\u5C0F\u5024","Maximum value":"\u6700\u5927\u5024","(Optional) Maximum value for the count":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u6700\u5927\u5024",Unit:"\u5358\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u5358\u4F4D\u3001\u4F8B\uFF1A\u300C\u676F\u300D\u3001\u300C\u56DE\u300D\u306A\u3069","Notice threshold":"\u901A\u77E5\u3057\u304D\u3044\u5024","Priority (High to Low)":"\u512A\u5148\u5EA6\uFF08\u9AD8\u304B\u3089\u4F4E\uFF09","Priority (Low to High)":"\u512A\u5148\u5EA6\uFF08\u4F4E\u304B\u3089\u9AD8\uFF09","Due Date (Earliest First)":"\u671F\u9650\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Due Date (Latest First)":"\u671F\u9650\u65E5\uFF08\u9045\u3044\u9806\uFF09","Scheduled Date (Earliest First)":"\u4E88\u5B9A\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Scheduled Date (Latest First)":"\u4E88\u5B9A\u65E5\uFF08\u9045\u3044\u9806\uFF09","Start Date (Earliest First)":"\u958B\u59CB\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Start Date (Latest First)":"\u958B\u59CB\u65E5\uFF08\u9045\u3044\u9806\uFF09","Created Date":"\u4F5C\u6210\u65E5",Overview:"\u6982\u8981",Dates:"\u65E5\u4ED8","e.g. #tag1, #tag2":"\u4F8B\uFF1A#\u30BF\u30B01, #\u30BF\u30B02","e.g. @home, @work":"\u4F8B\uFF1A@\u5BB6, @\u8077\u5834","Recurrence Rule":"\u7E70\u308A\u8FD4\u3057\u30EB\u30FC\u30EB","e.g. every day, every week":"\u4F8B\uFF1A\u6BCE\u65E5\u3001\u6BCE\u9031","Edit Task":"\u30BF\u30B9\u30AF\u3092\u7DE8\u96C6","Save Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u4FDD\u5B58","Filter Configuration Name":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u540D","Enter a name for this filter configuration":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Filter Configuration Description":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAC\u660E","Enter a description for this filter configuration (optional)":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4EFB\u610F\uFF09","Load Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u8AAD\u307F\u8FBC\u307F","No saved filter configurations":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093","Select a saved filter configuration":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",Load:"\u8AAD\u307F\u8FBC\u307F",Created:"\u4F5C\u6210\u6E08\u307F",Updated:"\u66F4\u65B0\u6E08\u307F","Filter Summary":"\u30D5\u30A3\u30EB\u30BF\u30FC\u6982\u8981","filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC","Root condition":"\u30EB\u30FC\u30C8\u6761\u4EF6","Filter configuration name is required":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u540D\u306F\u5FC5\u9808\u3067\u3059","Failed to save filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Filter configuration saved successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F","Failed to load filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Filter configuration loaded successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F","Failed to delete filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Delete Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u524A\u9664","Are you sure you want to delete this filter configuration?":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Filter configuration deleted successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F",Match:"\u4E00\u81F4",All:"\u3059\u3079\u3066","Add filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u8FFD\u52A0","Save Current Filter":"\u73FE\u5728\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u4FDD\u5B58","Load Saved Filter":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u8AAD\u307F\u8FBC\u307F","filter in this group":"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u30D5\u30A3\u30EB\u30BF\u30FC","Duplicate filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u8907\u88FD","Remove filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664",OR:"\u307E\u305F\u306F","AND NOT":"\u304B\u3064\u301C\u3067\u306A\u3044",AND:"\u304B\u3064","Remove filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u524A\u9664",contains:"\u542B\u3080","does not contain":"\u542B\u307E\u306A\u3044",is:"\u3067\u3042\u308B","is not":"\u3067\u306A\u3044","starts with":"\u3067\u59CB\u307E\u308B","ends with":"\u3067\u7D42\u308F\u308B","is empty":"\u7A7A\u3067\u3042\u308B","is not empty":"\u7A7A\u3067\u306A\u3044","is true":"\u771F\u3067\u3042\u308B","is false":"\u507D\u3067\u3042\u308B","is set":"\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B","is not set":"\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044",equals:"\u7B49\u3057\u3044",NOR:"\u3069\u3061\u3089\u3067\u3082\u306A\u3044","Group by":"\u30B0\u30EB\u30FC\u30D7\u5316","Select which task property to use for creating columns":"\u5217\u3092\u4F5C\u6210\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Hide empty columns":"\u7A7A\u306E\u5217\u3092\u975E\u8868\u793A","Hide columns that have no tasks.":"\u30BF\u30B9\u30AF\u304C\u306A\u3044\u5217\u3092\u975E\u8868\u793A\u306B\u3057\u307E\u3059\u3002","Default sort field":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BD\u30FC\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9","Default field to sort tasks by within each column.":"\u5404\u5217\u5185\u3067\u30BF\u30B9\u30AF\u3092\u30BD\u30FC\u30C8\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9\u3002","Default sort order":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BD\u30FC\u30C8\u9806","Default order to sort tasks within each column.":"\u5404\u5217\u5185\u3067\u30BF\u30B9\u30AF\u3092\u30BD\u30FC\u30C8\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u9806\u5E8F\u3002","Custom Columns":"\u30AB\u30B9\u30BF\u30E0\u5217","Configure custom columns for the selected grouping property":"\u9078\u629E\u3057\u305F\u30B0\u30EB\u30FC\u30D7\u5316\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u30AB\u30B9\u30BF\u30E0\u5217\u3092\u8A2D\u5B9A","No custom columns defined. Add columns below.":"\u30AB\u30B9\u30BF\u30E0\u5217\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4E0B\u306B\u5217\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Column Title":"\u5217\u30BF\u30A4\u30C8\u30EB",Value:"\u5024","Remove Column":"\u5217\u3092\u524A\u9664","Add Column":"\u5217\u3092\u8FFD\u52A0","New Column":"\u65B0\u3057\u3044\u5217","Reset Columns":"\u5217\u3092\u30EA\u30BB\u30C3\u30C8","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u512A\u5148\u5EA6\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B\uFF1A1\u30012\u30013\uFF09\u3002\u512A\u5148\u5EA6\u306E\u306A\u3044\u30BF\u30B9\u30AF\u3092\u9664\u5916\u3059\u308B\u305F\u3081\u306B\u300Cnone\u300D\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09\u3002\u8907\u6570\u306E\u30D1\u30B9\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09\u3002\u8907\u6570\u306E\u30D1\u30B9\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044\u3002","You have unsaved changes. Save before closing?":"\u672A\u4FDD\u5B58\u306E\u5909\u66F4\u304C\u3042\u308A\u307E\u3059\u3002\u9589\u3058\u308B\u524D\u306B\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F","From now":"\u4ECA\u304B\u3089","Complete workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u5B8C\u4E86","Move to":"\u79FB\u52D5\u5148","Move all incomplete subtasks to another file":"\u3059\u3079\u3066\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move direct incomplete subtasks to another file":"\u76F4\u63A5\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5",Filter:"\u30D5\u30A3\u30EB\u30BF\u30FC","Reset Filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30EA\u30BB\u30C3\u30C8",Settings:"\u8A2D\u5B9A","Saved Filters":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC","Manage Saved Filters":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7BA1\u7406",Reindex:"\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Are you sure you want to force reindex all tasks?":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5F37\u5236\u7684\u306B\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Filter applied: ":"\u9069\u7528\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\uFF1A","Enable progress bar in reading mode":"\u8AAD\u307F\u53D6\u308A\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to allow this plugin to show progress bars in reading mode.":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u8AAD\u307F\u53D6\u308A\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002",Range:"\u7BC4\u56F2","as a placeholder for the percentage value":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u5024\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3068\u3057\u3066","Template text with":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30C6\u30AD\u30B9\u30C8",placeholder:"\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC","Recurrence date calculation":"\u7E70\u308A\u8FD4\u3057\u65E5\u4ED8\u8A08\u7B97","Choose how to calculate the next date for recurring tasks":"\u7E70\u308A\u8FD4\u3057\u30BF\u30B9\u30AF\u306E\u6B21\u306E\u65E5\u4ED8\u306E\u8A08\u7B97\u65B9\u6CD5\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Based on due date":"\u671F\u9650\u65E5\u306B\u57FA\u3065\u304F","Based on scheduled date":"\u4E88\u5B9A\u65E5\u306B\u57FA\u3065\u304F","Based on current date":"\u73FE\u5728\u306E\u65E5\u4ED8\u306B\u57FA\u3065\u304F","Task Gutter":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC","Configure the task gutter.":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Enable task gutter":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable the task gutter.":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Incomplete Task Mover":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u6A5F\u80FD","Enable incomplete task mover":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable commands for moving incomplete tasks to another file.":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Incomplete task marker type":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u30BF\u30A4\u30D7","Choose what type of marker to add to moved incomplete tasks":"\u79FB\u52D5\u3057\u305F\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30DE\u30FC\u30AB\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Incomplete version marker text":"\u672A\u5B8C\u4E86\u30D0\u30FC\u30B8\u30E7\u30F3\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u6642\u306B\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u4E86\u65E5\u4ED8\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52D5\u6642\u306B\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u4E86\u30AB\u30B9\u30BF\u30E0\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","With current file link for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u30EA\u30F3\u30AF\u3092\u4ED8\u3051\u308B","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u79FB\u52D5\u3057\u305F\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002","Line Number":"\u884C\u756A\u53F7","Clear Date":"\u65E5\u4ED8\u3092\u30AF\u30EA\u30A2","Copy view":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC","View copied successfully: ":"\u30D3\u30E5\u30FC\u306E\u30B3\u30D4\u30FC\u304C\u6210\u529F\u3057\u307E\u3057\u305F\uFF1A","Copy of ":"\u30B3\u30D4\u30FC ","Copy view: ":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC\uFF1A","Creating a copy based on: ":"\u4EE5\u4E0B\u306B\u57FA\u3065\u3044\u3066\u30B3\u30D4\u30FC\u3092\u4F5C\u6210\u4E2D\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u4EE5\u4E0B\u306E\u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u5909\u66F4\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u30D3\u30E5\u30FC\u306F\u5909\u66F4\u3055\u308C\u307E\u305B\u3093\u3002","Tasks Plugin Detected":"Tasks\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u73FE\u5728\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u7BA1\u7406\u3068\u65E5\u4ED8\u7BA1\u7406\u306FTasks\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u7AF6\u5408\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","compatibility documentation":"\u4E92\u63DB\u6027\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8"," for more information.":"\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Auto Date Manager":"\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406","Automatically manage dates based on task status changes":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u306B\u57FA\u3065\u3044\u3066\u65E5\u4ED8\u3092\u81EA\u52D5\u7BA1\u7406","Enable auto date manager":"\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306E\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002\u65E5\u4ED8\u306F\u3001\u304A\u597D\u307F\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\uFF08Tasks\u7D75\u6587\u5B57\u5F62\u5F0F\u307E\u305F\u306FDataview\u5F62\u5F0F\uFF09\u306B\u57FA\u3065\u3044\u3066\u8FFD\u52A0/\u524A\u9664\u3055\u308C\u307E\u3059\u3002","Manage completion dates":"\u5B8C\u4E86\u65E5\u3092\u7BA1\u7406","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u5B8C\u4E86\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Manage start dates":"\u958B\u59CB\u65E5\u3092\u7BA1\u7406","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u9032\u884C\u4E2D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u958B\u59CB\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Manage cancelled dates":"\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5\u3092\u7BA1\u7406","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u653E\u68C4\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Copy View":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC",Beta:"\u30D9\u30FC\u30BF","Beta Test Features":"\u30D9\u30FC\u30BF\u30C6\u30B9\u30C8\u6A5F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u73FE\u5728\u30C6\u30B9\u30C8\u6BB5\u968E\u306B\u3042\u308B\u5B9F\u9A13\u7684\u6A5F\u80FD\u3067\u3059\u3002\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306F\u4E0D\u5B89\u5B9A\u3067\u3001\u5C06\u6765\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u5909\u66F4\u307E\u305F\u306F\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Beta Features Warning":"\u30D9\u30FC\u30BF\u6A5F\u80FD\u306E\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306F\u5B9F\u9A13\u7684\u3067\u4E0D\u5B89\u5B9A\u306A\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002Obsidian API\u306E\u5909\u66F4\u3084\u305D\u306E\u4ED6\u306E\u8981\u56E0\u306B\u3088\u308A\u3001\u5C06\u6765\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u5927\u5E45\u306B\u5909\u66F4\u307E\u305F\u306F\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u6CE8\u610F\u3057\u3066\u3054\u4F7F\u7528\u3044\u305F\u3060\u304D\u3001\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306E\u6539\u5584\u306B\u3054\u5354\u529B\u304F\u3060\u3055\u3044\u3002","Base View":"\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306ETask Genius\u30D3\u30E5\u30FC\u3092\u8FFD\u52A0\u6A5F\u80FD\u3067\u62E1\u5F35\u3059\u308B\u9AD8\u5EA6\u306A\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3067\u3059\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u5B9F\u9A13\u7684\u306A\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002\u3053\u306E\u6A5F\u80FD\u306F\u5F37\u5316\u3055\u308C\u305F\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3092\u63D0\u4F9B\u3057\u307E\u3059\u304C\u3001\u5C06\u6765\u306EObsidian API\u306E\u5909\u66F4\u306B\u3088\u308A\u5F71\u97FF\u3092\u53D7\u3051\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u5909\u66F4\u3092\u78BA\u8A8D\u3059\u308B\u305F\u3081\u306BObsidian\u306E\u518D\u8D77\u52D5\u304C\u5FC5\u8981\u306A\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u3053\u306E\u6A5F\u80FD\u3092\u7121\u52B9\u306B\u3059\u308B\u969B\u3001\u65E2\u306B\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3092\u4F5C\u6210\u3057\u3066\u3044\u308B\u5834\u5408\u306F\u3001\u3059\u3079\u3066\u306E\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u3092\u9589\u3058\u3001\u624B\u52D5\u3067\u7DE8\u96C6\u3057\u3066\u672A\u4F7F\u7528\u306E\u30D3\u30E5\u30FC\u3092\u524A\u9664\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Enable Base View":"\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u5B9F\u9A13\u7684\u306A\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002\u3053\u306E\u6A5F\u80FD\u306F\u5F37\u5316\u3055\u308C\u305F\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3092\u63D0\u4F9B\u3057\u307E\u3059\u304C\u3001\u5C06\u6765\u306EObsidian API\u306E\u5909\u66F4\u306B\u3088\u308A\u5F71\u97FF\u3092\u53D7\u3051\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",Enable:"\u6709\u52B9\u306B\u3059\u308B","Beta Feedback":"\u30D9\u30FC\u30BF\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF","Help improve these features by providing feedback on your experience.":"\u3054\u5229\u7528\u4F53\u9A13\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u63D0\u4F9B\u3057\u3066\u3001\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306E\u6539\u5584\u306B\u3054\u5354\u529B\u304F\u3060\u3055\u3044\u3002","Report Issues":"\u554F\u984C\u3092\u5831\u544A","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u30D9\u30FC\u30BF\u6A5F\u80FD\u3067\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u306F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u6539\u5584\u306E\u305F\u3081\u306B\u5831\u544A\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Report Issue":"\u554F\u984C\u3092\u5831\u544A",Table:"\u30C6\u30FC\u30D6\u30EB","No Priority":"\u512A\u5148\u5EA6\u306A\u3057","Click to select date":"\u65E5\u4ED8\u3092\u9078\u629E\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","Enter tags separated by commas":"\u30BF\u30B0\u3092\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u5165\u529B","Enter project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u5165\u529B","Enter context":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B","Invalid value":"\u7121\u52B9\u306A\u5024","No tasks":"\u30BF\u30B9\u30AF\u306A\u3057","1 task":"1\u3064\u306E\u30BF\u30B9\u30AF",Columns:"\u5217","Toggle column visibility":"\u5217\u306E\u8868\u793A\u3092\u5207\u308A\u66FF\u3048","Switch to List Mode":"\u30EA\u30B9\u30C8\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048","Switch to Tree Mode":"\u30C4\u30EA\u30FC\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048",Collapse:"\u6298\u308A\u305F\u305F\u3080",Expand:"\u5C55\u958B","Collapse subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u6298\u308A\u305F\u305F\u3080","Expand subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5C55\u958B","Click to change status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","Click to set priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF",Yesterday:"\u6628\u65E5","Click to edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","No tags":"\u30BF\u30B0\u306A\u3057","Click to open file":"\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u306B\u306F\u30AF\u30EA\u30C3\u30AF","No tasks found":"\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Completed Date":"\u5B8C\u4E86\u65E5","Loading...":"\u8AAD\u307F\u8FBC\u307F\u4E2D...","Advanced Filtering":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","Use advanced multi-group filtering with complex conditions":"\u8907\u96D1\u306A\u6761\u4EF6\u306B\u3088\u308B\u9AD8\u5EA6\u306A\u30DE\u30EB\u30C1\u30B0\u30EB\u30FC\u30D7\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3092\u4F7F\u7528","Auto-moved":"\u81EA\u52D5\u79FB\u52D5\u6E08\u307F","tasks to":"\u4EF6\u306E\u30BF\u30B9\u30AF\u3092","Failed to auto-move tasks:":"\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u306B\u5931\u6557\uFF1A","Workflow created successfully":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u6B63\u5E38\u306B\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","No task structure found at cursor position":"\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306B\u30BF\u30B9\u30AF\u69CB\u9020\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Use similar existing workflow":"\u985E\u4F3C\u306E\u65E2\u5B58\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F7F\u7528","Create new workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","No workflows defined. Create a workflow first.":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u307E\u305A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Workflow task created":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30BF\u30B9\u30AF\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Task converted to workflow root":"\u30BF\u30B9\u30AF\u304C\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB\u3055\u308C\u307E\u3057\u305F","Failed to convert task":"\u30BF\u30B9\u30AF\u306E\u5909\u63DB\u306B\u5931\u6557\u3057\u307E\u3057\u305F","No workflows to duplicate":"\u8907\u88FD\u3059\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u3042\u308A\u307E\u305B\u3093",Duplicate:"\u8907\u88FD","Workflow duplicated and saved":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u8907\u88FD\u3055\u308C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F","Workflow created from task structure":"\u30BF\u30B9\u30AF\u69CB\u9020\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Create Quick Workflow":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Convert Task to Workflow":"\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u5909\u63DB","Convert to Workflow Root":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB","Start Workflow Here":"\u3053\u3053\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB","Duplicate Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8907\u88FD","Simple Linear Workflow":"\u30B7\u30F3\u30D7\u30EB\u306A\u7DDA\u5F62\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","A basic linear workflow with sequential stages":"\u9806\u6B21\u30B9\u30C6\u30FC\u30B8\u3092\u6301\u3064\u57FA\u672C\u7684\u306A\u7DDA\u5F62\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","To Do":"ToDo",Done:"\u5B8C\u4E86","Project Management":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406",Coding:"\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0","Research Process":"\u7814\u7A76\u30D7\u30ED\u30BB\u30B9","Academic or professional research workflow":"\u5B66\u8853\u307E\u305F\u306F\u5C02\u9580\u7814\u7A76\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Literature Review":"\u6587\u732E\u30EC\u30D3\u30E5\u30FC","Data Collection":"\u30C7\u30FC\u30BF\u53CE\u96C6",Analysis:"\u5206\u6790",Writing:"\u57F7\u7B46",Published:"\u516C\u958B\u6E08\u307F","Custom Workflow":"\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Create a custom workflow from scratch":"\u30BC\u30ED\u304B\u3089\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Quick Workflow Creation":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4F5C\u6210","Workflow Template":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","Choose a template to start with or create a custom workflow":"\u958B\u59CB\u3059\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow Name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D","A descriptive name for your workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Enter workflow name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D\u3092\u5165\u529B","Unique identifier (auto-generated from name)":"\u4E00\u610F\u8B58\u5225\u5B50\uFF08\u540D\u524D\u304B\u3089\u81EA\u52D5\u751F\u6210\uFF09","Optional description of the workflow purpose":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u76EE\u7684\u306E\u8AAC\u660E\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Describe your workflow...":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8AAC\u660E\u3057\u3066\u304F\u3060\u3055\u3044...","Preview of workflow stages (edit after creation for advanced options)":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\uFF08\u9AD8\u5EA6\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u4F5C\u6210\u5F8C\u306B\u7DE8\u96C6\uFF09","Add Stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0","No stages defined. Choose a template or add stages manually.":"\u30B9\u30C6\u30FC\u30B8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u624B\u52D5\u3067\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Remove stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u524A\u9664","Create Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Please provide a workflow name and ID":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D\u3068ID\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one stage to the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044",Discord:"Discord","Chat with us":"\u30C1\u30E3\u30C3\u30C8\u3067\u304A\u8A71\u3057\u3057\u307E\u3057\u3087\u3046","Open Discord":"Discord \u3092\u958B\u304F","Task Genius icons are designed by":"Task Genius \u30A2\u30A4\u30B3\u30F3\u306F\u30C7\u30B6\u30A4\u30F3\uFF1A","Task Genius Icons":"Task Genius \u30A2\u30A4\u30B3\u30F3","ICS Calendar Integration":"ICS \u30AB\u30EC\u30F3\u30C0\u30FC\u7D71\u5408","Configure external calendar sources to display events in your task views.":"\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3067\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u5916\u90E8\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u3002","Add New Calendar Source":"\u65B0\u3057\u3044\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0","Global Settings":"\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A","Enable Background Refresh":"\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u66F4\u65B0\u3092\u6709\u52B9\u5316","Automatically refresh calendar sources in the background":"\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u81EA\u52D5\u7684\u306B\u66F4\u65B0","Global Refresh Interval":"\u30B0\u30ED\u30FC\u30D0\u30EB\u66F4\u65B0\u9593\u9694","Default refresh interval for all sources (minutes)":"\u3059\u3079\u3066\u306E\u30BD\u30FC\u30B9\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u66F4\u65B0\u9593\u9694\uFF08\u5206\uFF09","Maximum Cache Age":"\u6700\u5927\u30AD\u30E3\u30C3\u30B7\u30E5\u671F\u9593","How long to keep cached data (hours)":"\u30AD\u30E3\u30C3\u30B7\u30E5\u30C7\u30FC\u30BF\u306E\u4FDD\u5B58\u671F\u9593\uFF08\u6642\u9593\uFF09","Network Timeout":"\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","Request timeout in seconds":"\u30EA\u30AF\u30A8\u30B9\u30C8\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u79D2\uFF09","Max Events Per Source":"\u30BD\u30FC\u30B9\u3042\u305F\u308A\u306E\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Maximum number of events to load from each source":"\u5404\u30BD\u30FC\u30B9\u304B\u3089\u8AAD\u307F\u8FBC\u3080\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Default Event Color":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A4\u30D9\u30F3\u30C8\u8272","Default color for events without a specific color":"\u7279\u5B9A\u306E\u8272\u304C\u306A\u3044\u30A4\u30D9\u30F3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u8272","Calendar Sources":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9","No calendar sources configured. Add a source to get started.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0\u3057\u3066\u958B\u59CB\u3057\u3066\u304F\u3060\u3055\u3044\u3002","ICS Enabled":"ICS \u6709\u52B9","ICS Disabled":"ICS \u7121\u52B9",URL:"URL",Refresh:"\u66F4\u65B0",min:"\u5206",Color:"\u8272","Edit this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u7DE8\u96C6",Sync:"\u540C\u671F","Sync this calendar source now":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u4ECA\u3059\u3050\u540C\u671F","Syncing...":"\u540C\u671F\u4E2D...","Sync completed successfully":"\u540C\u671F\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3057\u307E\u3057\u305F","Sync failed: ":"\u540C\u671F\u5931\u6557\uFF1A",Disable:"\u7121\u52B9\u5316","Disable this source":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u7121\u52B9\u5316","Enable this source":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u6709\u52B9\u5316","Delete this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u524A\u9664","Are you sure you want to delete this calendar source?":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Edit ICS Source":"ICS \u30BD\u30FC\u30B9\u3092\u7DE8\u96C6","Add ICS Source":"ICS \u30BD\u30FC\u30B9\u3092\u8FFD\u52A0","ICS Source Name":"ICS \u30BD\u30FC\u30B9\u540D","Display name for this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u306E\u8868\u793A\u540D","My Calendar":"\u30DE\u30A4\u30AB\u30EC\u30F3\u30C0\u30FC","ICS URL":"ICS URL","URL to the ICS/iCal file":"ICS/iCal \u30D5\u30A1\u30A4\u30EB\u306E URL","Whether this source is active":"\u3053\u306E\u30BD\u30FC\u30B9\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u304B\u3069\u3046\u304B","Refresh Interval":"\u66F4\u65B0\u9593\u9694","How often to refresh this source (minutes)":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u66F4\u65B0\u3059\u308B\u983B\u5EA6\uFF08\u5206\uFF09","Color for events from this source (optional)":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u8272\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Show Type":"\u8868\u793A\u30BF\u30A4\u30D7","How to display events from this source in calendar views":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u65B9\u6CD5",Event:"\u30A4\u30D9\u30F3\u30C8",Badge:"\u30D0\u30C3\u30B8","Show All-Day Events":"\u7D42\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Include all-day events from this source":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u7D42\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u542B\u3081\u308B","Show Timed Events":"\u6642\u9593\u6307\u5B9A\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Include timed events from this source":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u6642\u9593\u6307\u5B9A\u30A4\u30D9\u30F3\u30C8\u3092\u542B\u3081\u308B","Authentication (Optional)":"\u8A8D\u8A3C\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Authentication Type":"\u8A8D\u8A3C\u30BF\u30A4\u30D7","Type of authentication required":"\u5FC5\u8981\u306A\u8A8D\u8A3C\u306E\u30BF\u30A4\u30D7","ICS Auth None":"\u8A8D\u8A3C\u306A\u3057","Basic Auth":"\u30D9\u30FC\u30B7\u30C3\u30AF\u8A8D\u8A3C","Bearer Token":"\u30D9\u30A2\u30E9\u30FC\u30C8\u30FC\u30AF\u30F3","Custom Headers":"\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC","Text Replacements":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB","Configure rules to modify event text using regular expressions":"\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u7528\u3057\u3066\u30A4\u30D9\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\u3092\u5909\u66F4\u3059\u308B\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A","No text replacement rules configured":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",Enabled:"\u6709\u52B9",Disabled:"\u7121\u52B9",Target:"\u5BFE\u8C61",Pattern:"\u30D1\u30BF\u30FC\u30F3",Replacement:"\u7F6E\u63DB","Are you sure you want to delete this text replacement rule?":"\u3053\u306E\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Add Text Replacement Rule":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","ICS Username":"ICS \u30E6\u30FC\u30B6\u30FC\u540D","ICS Password":"ICS \u30D1\u30B9\u30EF\u30FC\u30C9","ICS Bearer Token":"ICS \u30D9\u30A2\u30E9\u30FC\u30C8\u30FC\u30AF\u30F3","JSON object with custom headers":"\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC\u3092\u542B\u3080JSON\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","Holiday Configuration":"\u795D\u65E5\u8A2D\u5B9A","Configure how holiday events are detected and displayed":"\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u306E\u691C\u51FA\u3068\u8868\u793A\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable Holiday Detection":"\u795D\u65E5\u691C\u51FA\u3092\u6709\u52B9\u5316","Automatically detect and group holiday events":"\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u81EA\u52D5\u691C\u51FA\u3057\u3066\u30B0\u30EB\u30FC\u30D7\u5316","Status Mapping":"\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0","Configure how ICS events are mapped to task statuses":"ICS\u30A4\u30D9\u30F3\u30C8\u3092\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u30DE\u30C3\u30D4\u30F3\u30B0\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable Status Mapping":"\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u6709\u52B9\u5316","Automatically map ICS events to specific task statuses":"ICS\u30A4\u30D9\u30F3\u30C8\u3092\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u81EA\u52D5\u30DE\u30C3\u30D4\u30F3\u30B0","Grouping Strategy":"\u30B0\u30EB\u30FC\u30D7\u5316\u6226\u7565","How to handle consecutive holiday events":"\u9023\u7D9A\u3059\u308B\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u306E\u51E6\u7406\u65B9\u6CD5","Show All Events":"\u3059\u3079\u3066\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Show First Day Only":"\u6700\u521D\u306E\u65E5\u306E\u307F\u8868\u793A","Show Summary":"\u30B5\u30DE\u30EA\u30FC\u3092\u8868\u793A","Show First and Last":"\u6700\u521D\u3068\u6700\u5F8C\u3092\u8868\u793A","Maximum Gap Days":"\u6700\u5927\u9593\u9694\u65E5\u6570","Maximum days between events to consider them consecutive":"\u30A4\u30D9\u30F3\u30C8\u3092\u9023\u7D9A\u3068\u307F\u306A\u3059\u305F\u3081\u306E\u6700\u5927\u9593\u9694\u65E5\u6570","Show in Forecast":"\u4E88\u6E2C\u3067\u8868\u793A","Whether to show holiday events in forecast view":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u3067\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","Show in Calendar":"\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u8868\u793A","Whether to show holiday events in calendar view":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","Detection Patterns":"\u691C\u51FA\u30D1\u30BF\u30FC\u30F3","Summary Patterns":"\u30B5\u30DE\u30EA\u30FC\u30D1\u30BF\u30FC\u30F3","Regex patterns to match in event titles (one per line)":"\u30A4\u30D9\u30F3\u30C8\u30BF\u30A4\u30C8\u30EB\u3068\u30DE\u30C3\u30C1\u3059\u308B\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09",Keywords:"\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords to detect in event text (one per line)":"\u30A4\u30D9\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\u3067\u691C\u51FA\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09",Categories:"\u30AB\u30C6\u30B4\u30EA\u30FC","Event categories that indicate holidays (one per line)":"\u795D\u65E5\u3092\u793A\u3059\u30A4\u30D9\u30F3\u30C8\u30AB\u30C6\u30B4\u30EA\u30FC\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09","Group Display Format":"\u30B0\u30EB\u30FC\u30D7\u8868\u793A\u5F62\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u30B0\u30EB\u30FC\u30D7\u5316\u3055\u308C\u305F\u795D\u65E5\u8868\u793A\u306E\u5F62\u5F0F\u3002{title}, {count}, {startDate}, {endDate}\u3092\u4F7F\u7528","Override ICS Status":"ICS\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E0A\u66F8\u304D","Override original ICS event status with mapped status":"\u5143\u306EICS\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30DE\u30C3\u30D4\u30F3\u30B0\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u4E0A\u66F8\u304D","Timing Rules":"\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB","Past Events Status":"\u904E\u53BB\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events that have already ended":"\u3059\u3067\u306B\u7D42\u4E86\u3057\u305F\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Status Incomplete":"\u672A\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","Status Complete":"\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","Status Cancelled":"\u30AD\u30E3\u30F3\u30BB\u30EB\u30B9\u30C6\u30FC\u30BF\u30B9","Status In Progress":"\u9032\u884C\u4E2D\u30B9\u30C6\u30FC\u30BF\u30B9","Status Question":"\u554F\u3044\u5408\u308F\u305B\u30B9\u30C6\u30FC\u30BF\u30B9","Current Events Status":"\u73FE\u5728\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events happening today":"\u4ECA\u65E5\u767A\u751F\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Future Events Status":"\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events in the future":"\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Property Rules":"\u30D7\u30ED\u30D1\u30C6\u30A3\u30EB\u30FC\u30EB","Optional rules based on event properties (higher priority than timing rules)":"\u30A4\u30D9\u30F3\u30C8\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u57FA\u3065\u304F\u30AA\u30D7\u30B7\u30E7\u30F3\u30EB\u30FC\u30EB\uFF08\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB\u3088\u308A\u9AD8\u512A\u5148\u5EA6\uFF09","Holiday Status":"\u795D\u65E5\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events detected as holidays":"\u795D\u65E5\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u305F\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Use timing rules":"\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB\u3092\u4F7F\u7528","Category Mapping":"\u30AB\u30C6\u30B4\u30EA\u30FC\u30DE\u30C3\u30D4\u30F3\u30B0","Map specific categories to statuses (format: category:status, one per line)":"\u7279\u5B9A\u306E\u30AB\u30C6\u30B4\u30EA\u30FC\u3092\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u30DE\u30C3\u30D4\u30F3\u30B0\uFF08\u5F62\u5F0F\uFF1Acategory:status\u3001\u4E00\u884C\u306B\u4E00\u3064\uFF09","Please enter a name for the source":"\u30BD\u30FC\u30B9\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a URL for the source":"\u30BD\u30FC\u30B9\u306EURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a valid URL":"\u6709\u52B9\u306AURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Edit Text Replacement Rule":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6","Rule Name":"\u30EB\u30FC\u30EB\u540D","Descriptive name for this replacement rule":"\u3053\u306E\u7F6E\u63DB\u30EB\u30FC\u30EB\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Remove Meeting Prefix":"\u4F1A\u8B70\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u524A\u9664","Whether this rule is active":"\u3053\u306E\u30EB\u30FC\u30EB\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u304B\u3069\u3046\u304B","Target Field":"\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9","Which field to apply the replacement to":"\u7F6E\u63DB\u3092\u9069\u7528\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9","Summary/Title":"\u30B5\u30DE\u30EA\u30FC/\u30BF\u30A4\u30C8\u30EB",Location:"\u5834\u6240","All Fields":"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30FC\u30EB\u30C9","Pattern (Regular Expression)":"\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u30DE\u30C3\u30C1\u3059\u308B\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3\u3002\u30AD\u30E3\u30D7\u30C1\u30E3\u30B0\u30EB\u30FC\u30D7\u306B\u306F\u62EC\u5F27\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u30DE\u30C3\u30C1\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u7F6E\u63DB\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u3002\u30AD\u30E3\u30D7\u30C1\u30E3\u30B0\u30EB\u30FC\u30D7\u306B\u306F$1\u3001$2\u306A\u3069\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Regex Flags":"\u6B63\u898F\u8868\u73FE\u30D5\u30E9\u30B0","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u898F\u8868\u73FE\u30D5\u30E9\u30B0\uFF08\u4F8B\uFF1A\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5834\u5408\u306F'g'\u3001\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u306E\u533A\u5225\u306A\u3057\u306E\u5834\u5408\u306F'i'\uFF09",Examples:"\u4F8B","Remove prefix":"\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u524A\u9664","Replace room numbers":"\u90E8\u5C4B\u756A\u53F7\u3092\u7F6E\u63DB","Swap words":"\u5358\u8A9E\u3092\u5165\u308C\u66FF\u3048","Test Rule":"\u30EB\u30FC\u30EB\u3092\u30C6\u30B9\u30C8","Output: ":"\u51FA\u529B\uFF1A","Test Input":"\u30C6\u30B9\u30C8\u5165\u529B","Enter text to test the replacement rule":"\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u30C6\u30B9\u30C8\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B","Please enter a name for the rule":"\u30EB\u30FC\u30EB\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a pattern":"\u30D1\u30BF\u30FC\u30F3\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Invalid regular expression pattern":"\u7121\u52B9\u306A\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3","Enhanced Project Configuration":"\u62E1\u5F35\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A","Configure advanced project detection and management features":"\u9AD8\u5EA6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3068\u7BA1\u7406\u6A5F\u80FD\u3092\u8A2D\u5B9A","Enable enhanced project features":"\u62E1\u5F35\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u3092\u6709\u52B9\u5316","Enable path-based, metadata-based, and config file-based project detection":"\u30D1\u30B9\u30D9\u30FC\u30B9\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3001\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30D9\u30FC\u30B9\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Path-based Project Mappings":"\u30D1\u30B9\u30D9\u30FC\u30B9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30DE\u30C3\u30D4\u30F3\u30B0","Configure project names based on file paths":"\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306B\u57FA\u3065\u3044\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u8A2D\u5B9A","No path mappings configured yet.":"\u30D1\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u306F\u307E\u3060\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",Mapping:"\u30DE\u30C3\u30D4\u30F3\u30B0","Path pattern (e.g., Projects/Work)":"\u30D1\u30B9\u30D1\u30BF\u30FC\u30F3\uFF08\u4F8B\uFF1AProjects/Work\uFF09","Add Path Mapping":"\u30D1\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Metadata-based Project Configuration":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A","Configure project detection from file frontmatter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u8A2D\u5B9A","Enable metadata project detection":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Detect project from file frontmatter metadata":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u51FA","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30AD\u30FC","The frontmatter key to use for project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u306B\u4F7F\u7528\u3059\u308B\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30AD\u30FC","Inherit other metadata fields from file frontmatter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u4ED6\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u7D99\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u30B5\u30D6\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u30BF\u30B9\u30AF\u306E\u307F\u304C\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3057\u307E\u3059\u3002","Project Configuration File":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB","Configure project detection from project config files":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u8A2D\u5B9A","Enable config file project detection":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Detect project from project configuration files":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u51FA","Config file name":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u540D","Name of the project configuration file":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D","Search recursively":"\u518D\u5E30\u7684\u306B\u691C\u7D22","Search for config files in parent directories":"\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22","Metadata Mappings":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0","Configure how metadata fields are mapped and transformed":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u3068\u5909\u63DB\u65B9\u6CD5\u3092\u8A2D\u5B9A","No metadata mappings configured yet.":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0\u306F\u307E\u3060\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Source key (e.g., proj)":"\u30BD\u30FC\u30B9\u30AD\u30FC\uFF08\u4F8B\uFF1Aproj\uFF09","Select target field":"\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E","Add Metadata Mapping":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Default Project Naming":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u660E\u793A\u7684\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u306E\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D\u3092\u8A2D\u5B9A","Enable default project naming":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D\u3092\u6709\u52B9\u5316","Use default naming strategy when no project is explicitly defined":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u660E\u793A\u7684\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u30C7\u30D5\u30A9\u30EB\u30C8\u547D\u540D\u6226\u7565\u3092\u4F7F\u7528","Naming strategy":"\u547D\u540D\u6226\u7565","Strategy for generating default project names":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u751F\u6210\u3059\u308B\u6226\u7565","Use filename":"\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u4F7F\u7528","Use folder name":"\u30D5\u30A9\u30EB\u30C0\u30FC\u540D\u3092\u4F7F\u7528","Use metadata field":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F7F\u7528","Metadata field to use as project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9","Enter metadata key (e.g., project-name)":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30AD\u30FC\u3092\u5165\u529B\uFF08\u4F8B\uFF1Aproject-name\uFF09","Strip file extension":"\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u3092\u524A\u9664","Remove file extension from filename when using as project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u969B\u306B\u30D5\u30A1\u30A4\u30EB\u540D\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u3092\u524A\u9664","Target type":"\u5BFE\u8C61\u30BF\u30A4\u30D7","Choose whether to capture to a fixed file or daily note":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u3069\u3061\u3089\u306B\u30AD\u30E3\u30D7\u30C1\u30E3\u3059\u308B\u304B\u9078\u629E","Fixed file":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB","Daily note":"\u65E5\u5831\u30CE\u30FC\u30C8","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u3002\u30D1\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u4F8B\uFF1A'folder/Quick Capture.md'\u3002{{DATE:YYYY-MM-DD}}\u3084{{date:YYYY-MM-DD-HHmm}}\u306A\u3069\u306E\u65E5\u4ED8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5BFE\u5FDC","Sync with Daily Notes plugin":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u540C\u671F","Automatically sync settings from the Daily Notes plugin":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u304B\u3089\u8A2D\u5B9A\u3092\u81EA\u52D5\u540C\u671F","Sync now":"\u4ECA\u3059\u3050\u540C\u671F","Daily notes settings synced successfully":"\u65E5\u5831\u30CE\u30FC\u30C8\u8A2D\u5B9A\u306E\u540C\u671F\u304C\u6210\u529F\u3057\u307E\u3057\u305F","Daily Notes plugin is not enabled":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Failed to sync daily notes settings":"\u65E5\u5831\u30CE\u30FC\u30C8\u8A2D\u5B9A\u306E\u540C\u671F\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Date format for daily notes (e.g., YYYY-MM-DD)":"\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u65E5\u4ED8\u5F62\u5F0F\uFF08\u4F8B\uFF1AYYYY-MM-DD\uFF09","Daily note folder":"\u65E5\u5831\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC","Folder path for daily notes (leave empty for root)":"\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u30D1\u30B9\uFF08\u30EB\u30FC\u30C8\u306E\u5834\u5408\u306F\u7A7A\u767D\uFF09","Daily note template":"\u65E5\u5831\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","Template file path for new daily notes (optional)":"\u65B0\u3057\u3044\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Target heading":"\u5BFE\u8C61\u898B\u51FA\u3057","Optional heading to append content under (leave empty to append to file)":"\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8FFD\u52A0\u3059\u308B\u898B\u51FA\u3057\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\u3001\u7A7A\u767D\u306E\u5834\u5408\u306F\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\uFF09","How to add captured content to the target location":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u5BFE\u8C61\u4F4D\u7F6E\u306B\u8FFD\u52A0\u3059\u308B\u65B9\u6CD5",Append:"\u8FFD\u52A0",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0",Replace:"\u7F6E\u63DB","Enable auto-move for completed tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u3092\u6709\u52B9\u5316","Automatically move completed tasks to a default file without manual selection.":"\u624B\u52D5\u9078\u629E\u306A\u3057\u3067\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5\u3002","Default target file":"\u30C7\u30D5\u30A9\u30EB\u30C8\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Default file to move completed tasks to (e.g., 'Archive.md')":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\uFF08\u4F8B\uFF1A'Archive.md'\uFF09","Default insertion mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u633F\u5165\u30E2\u30FC\u30C9","Where to insert completed tasks in the target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u3067\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u5834\u6240","Default heading name":"\u30C7\u30D5\u30A9\u30EB\u30C8\u898B\u51FA\u3057\u540D","Heading name to insert tasks after (will be created if it doesn't exist)":"\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u898B\u51FA\u3057\u540D\uFF08\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u4F5C\u6210\u3055\u308C\u307E\u3059\uFF09","Enable auto-move for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u3092\u6709\u52B9\u5316","Automatically move incomplete tasks to a default file without manual selection.":"\u624B\u52D5\u9078\u629E\u306A\u3057\u3067\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\uFF08\u4F8B\uFF1A'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u633F\u5165\u30E2\u30FC\u30C9","Where to insert incomplete tasks in the target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u3067\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u5834\u6240","Default heading name for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u898B\u51FA\u3057\u540D","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u898B\u51FA\u3057\u540D\uFF08\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u4F5C\u6210\u3055\u308C\u307E\u3059\uFF09","Other settings":"\u305D\u306E\u4ED6\u306E\u8A2D\u5B9A","Use Task Genius icons":"Task Genius\u30A2\u30A4\u30B3\u30F3\u3092\u4F7F\u7528","Use Task Genius icons for task statuses":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306BTask Genius\u30A2\u30A4\u30B3\u30F3\u3092\u4F7F\u7528","Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC","Enable Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u65E5\u5E38\u306E\u30A4\u30D9\u30F3\u30C8\u3084\u30BF\u30B9\u30AF\u306B\u7D20\u65E9\u304F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u308B\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Auto-open on startup":"\u8D77\u52D5\u6642\u306B\u81EA\u52D5\u30AA\u30FC\u30D7\u30F3","Automatically open the timeline sidebar when Obsidian starts.":"Obsidian\u8D77\u52D5\u6642\u306B\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u81EA\u52D5\u3067\u958B\u304F\u3002","Show completed tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u8868\u793A","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30D3\u30E5\u30FC\u306B\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Focus mode by default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u30E2\u30FC\u30C9","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3057\u3001\u4ECA\u65E5\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u30CF\u30A4\u30E9\u30A4\u30C8\u3057\u3001\u904E\u53BB/\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u6697\u304F\u3057\u307E\u3059\u3002","Maximum events to show":"\u8868\u793A\u3059\u308B\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u306B\u8868\u793A\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u6700\u5927\u6570\u3002\u6570\u304C\u5927\u304D\u3044\u3068\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u306B\u5F71\u97FF\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Open Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u304F","Click to open the timeline sidebar view.":"\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3092\u958B\u304F\u3002","Open Timeline":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3092\u958B\u304F","Timeline sidebar opened":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u304C\u958B\u304B\u308C\u307E\u3057\u305F","Task Parser Configuration":"\u30BF\u30B9\u30AF\u30D1\u30FC\u30B5\u30FC\u8A2D\u5B9A","Configure how task metadata is parsed and recognized.":"\u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u89E3\u6790\u3068\u8A8D\u8B58\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Project tag prefix":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[project:: myproject]\u306E'project'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A#project/myproject\u306E'project'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Context tag prefix":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[context:: home]\u306E'context'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A@home\u306E'@home'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Area tag prefix":"\u30A8\u30EA\u30A2\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30A8\u30EA\u30A2\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[area:: work]\u306E'area'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u30A8\u30EA\u30A2\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A#area/work\u306E'area'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Format Examples:":"\u5F62\u5F0F\u306E\u4F8B\uFF1A",Area:"\u30A8\u30EA\u30A2","always uses @ prefix":"\u5E38\u306B@\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u4F7F\u7528","File Parsing Configuration":"\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u8A2D\u5B9A","Configure how to extract tasks from file metadata and tags.":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3068\u30BF\u30B0\u304B\u3089\u30BF\u30B9\u30AF\u3092\u62BD\u51FA\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Enable file metadata parsing":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u89E3\u6790\u3092\u6709\u52B9\u5316","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u304B\u3089\u30BF\u30B9\u30AF\u3092\u89E3\u6790\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u7279\u5B9A\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u304C\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","File metadata parsing enabled. Rebuilding task index...":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u89E3\u6790\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F\u3002\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9\u4E2D...","Task index rebuilt successfully":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u518D\u69CB\u7BC9\u304C\u6210\u529F\u3057\u307E\u3057\u305F","Failed to rebuild task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u518D\u69CB\u7BC9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Metadata fields to parse as tasks":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u89E3\u6790\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u308B\u3079\u304D\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\uFF08\u4F8B\uFF1AdueDate, todo, complete, task\uFF09","Task content from metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u306E\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4","Which metadata field to use as task content. If not found, will use filename.":"\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3002\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u306F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","Default task status":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9\uFF08\u672A\u5B8C\u4E86\u306F\u30B9\u30DA\u30FC\u30B9\u3001\u5B8C\u4E86\u306Fx\uFF09","Enable tag-based task parsing":"\u30BF\u30B0\u30D9\u30FC\u30B9\u30BF\u30B9\u30AF\u89E3\u6790\u3092\u6709\u52B9\u5316","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u30D5\u30A1\u30A4\u30EB\u30BF\u30B0\u304B\u3089\u30BF\u30B9\u30AF\u3092\u89E3\u6790\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u7279\u5B9A\u306E\u30BF\u30B0\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u304C\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","Tags to parse as tasks":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u89E3\u6790\u3059\u308B\u30BF\u30B0","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u308B\u3079\u304D\u30BF\u30B0\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\uFF08\u4F8B\uFF1A#todo, #task, #action, #due\uFF09","Enable worker processing":"\u30EF\u30FC\u30AB\u30FC\u51E6\u7406\u3092\u6709\u52B9\u5316","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u5411\u4E0A\u306E\u305F\u3081\u306B\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u306B\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30EF\u30FC\u30AB\u30FC\u3092\u4F7F\u7528\u3002\u5927\u304D\u306A\u30F4\u30A9\u30EB\u30C8\u306B\u63A8\u5968\u3002","Enable inline editor":"\u30A4\u30F3\u30E9\u30A4\u30F3\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u6709\u52B9\u5316","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3067\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u3068\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u3092\u6709\u52B9\u5316\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30BF\u30B9\u30AF\u306F\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3067\u306E\u307F\u7DE8\u96C6\u3067\u304D\u307E\u3059\u3002","Auto-assigned from path":"\u30D1\u30B9\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned from file metadata":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned from config file":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned":"\u81EA\u52D5\u5272\u308A\u5F53\u3066","This project is automatically assigned and cannot be changed":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u81EA\u52D5\u7684\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u304A\u308A\u3001\u5909\u66F4\u3067\u304D\u307E\u305B\u3093","You can override the auto-assigned project by entering a different value":"\u7570\u306A\u308B\u5024\u3092\u5165\u529B\u3059\u308B\u3053\u3068\u3067\u81EA\u52D5\u5272\u308A\u5F53\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059","Auto from path":"\u30D1\u30B9\u304B\u3089\u81EA\u52D5","Auto from metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u81EA\u52D5","Auto from config":"\u8A2D\u5B9A\u304B\u3089\u81EA\u52D5","You can override the auto-assigned project":"\u81EA\u52D5\u5272\u308A\u5F53\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059",Timeline:"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3","Go to today":"\u4ECA\u65E5\u306B\u79FB\u52D5","Focus on today":"\u4ECA\u65E5\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","What do you want to do today?":"\u4ECA\u65E5\u306F\u4F55\u3092\u3057\u307E\u3059\u304B\uFF1F","More options":"\u305D\u306E\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3","No events to display":"\u8868\u793A\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Go to task":"\u30BF\u30B9\u30AF\u306B\u79FB\u52D5",to:"\u304B\u3089","Hide weekends":"\u9031\u672B\u3092\u975E\u8868\u793A","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u9031\u672B\u306E\u5217\uFF08\u571F\u66DC\u65E5\u3068\u65E5\u66DC\u65E5\uFF09\u3092\u975E\u8868\u793A\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u4E88\u6E2C\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u9031\u672B\u306E\u5217\uFF08\u571F\u66DC\u65E5\u3068\u65E5\u66DC\u65E5\uFF09\u3092\u975E\u8868\u793A\u3002",Repeatable:"\u7E70\u308A\u8FD4\u3057\u53EF\u80FD",Final:"\u6700\u7D42",Sequential:"\u9806\u6B21","Current: ":"\u73FE\u5728\uFF1A",completed:"\u5B8C\u4E86","Convert to workflow template":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5909\u63DB","Start workflow here":"\u3053\u3053\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB","Create quick workflow":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow not found":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Stage not found":"\u30B9\u30C6\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Current stage":"\u73FE\u5728\u306E\u30B9\u30C6\u30FC\u30B8",Type:"\u30BF\u30A4\u30D7",Next:"\u6B21\u3078","Start workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB",Continue:"\u7D9A\u884C","Complete substage and move to":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u5B8C\u4E86\u3057\u3066\u79FB\u52D5","Add new task":"\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Add new sub-task":"\u65B0\u3057\u3044\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Auto-move completed subtasks to default file":"\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move direct completed subtasks to default file":"\u76F4\u63A5\u306E\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move all subtasks to default file":"\u3059\u3079\u3066\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move incomplete subtasks to default file":"\u672A\u5B8C\u4E86\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move direct incomplete subtasks to default file":"\u76F4\u63A5\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Convert task to workflow template":"\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5909\u63DB","Convert current task to workflow root":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB","Duplicate workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8907\u88FD","Workflow quick actions":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30AF\u30A4\u30C3\u30AF\u30A2\u30AF\u30B7\u30E7\u30F3","Views & Index":"\u30D3\u30E5\u30FC\u3068\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Progress Display":"\u9032\u6357\u8868\u793A",Workflows:"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Dates & Priority":"\u65E5\u4ED8\u3068\u512A\u5148\u5EA6",Habits:"\u7FD2\u6163","Calendar Sync":"\u30AB\u30EC\u30F3\u30C0\u30FC\u540C\u671F","Beta Features":"\u30D9\u30FC\u30BF\u6A5F\u80FD","Core Settings":"\u57FA\u672C\u8A2D\u5B9A","Display & Progress":"\u8868\u793A\u3068\u9032\u6357","Task Management":"\u30BF\u30B9\u30AF\u7BA1\u7406","Workflow & Automation":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3068\u81EA\u52D5\u5316",Gamification:"\u30B2\u30FC\u30DF\u30D5\u30A3\u30B1\u30FC\u30B7\u30E7\u30F3",Integration:"\u7D71\u5408",Advanced:"\u9AD8\u5EA6",Information:"\u60C5\u5831","Workflow generated from task structure":"\u30BF\u30B9\u30AF\u69CB\u9020\u304B\u3089\u751F\u6210\u3055\u308C\u305F\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Workflow based on existing pattern":"\u65E2\u5B58\u30D1\u30BF\u30FC\u30F3\u306B\u57FA\u3065\u304F\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",Matrix:"\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9","More actions":"\u305D\u306E\u4ED6\u306E\u30A2\u30AF\u30B7\u30E7\u30F3","Open in file":"\u30D5\u30A1\u30A4\u30EB\u3067\u958B\u304F","Copy task":"\u30BF\u30B9\u30AF\u3092\u30B3\u30D4\u30FC","Mark as urgent":"\u7DCA\u6025\u3068\u3057\u3066\u30DE\u30FC\u30AF","Mark as important":"\u91CD\u8981\u3068\u3057\u3066\u30DE\u30FC\u30AF","Overdue by {days} days":"{days}\u65E5\u9045\u308C","Due today":"\u4ECA\u65E5\u671F\u9650","Due tomorrow":"\u660E\u65E5\u671F\u9650","Due in {days} days":"{days}\u65E5\u5F8C\u671F\u9650","Loading tasks...":"\u30BF\u30B9\u30AF\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...",task:"\u30BF\u30B9\u30AF","No crisis tasks - great job!":"\u7DCA\u6025\u30BF\u30B9\u30AF\u306A\u3057 - \u7D20\u6674\u3089\u3057\u3044\uFF01","No planning tasks - consider adding some goals":"\u8A08\u753B\u30BF\u30B9\u30AF\u306A\u3057 - \u3044\u304F\u3064\u304B\u306E\u76EE\u6A19\u306E\u8FFD\u52A0\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044","No interruptions - focus time!":"\u4E2D\u65AD\u306A\u3057 - \u96C6\u4E2D\u30BF\u30A4\u30E0\uFF01","No time wasters - excellent focus!":"\u6642\u9593\u306E\u7121\u99C4\u306A\u3057 - \u7D20\u6674\u3089\u3057\u3044\u96C6\u4E2D\u529B\uFF01","No tasks in this quadrant":"\u3053\u306E\u8C61\u9650\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Handle immediately. These are critical tasks that need your attention now.":"\u5373\u5EA7\u306B\u5BFE\u51E6\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306F\u4ECA\u3059\u3050\u3042\u306A\u305F\u306E\u6CE8\u610F\u304C\u5FC5\u8981\u306A\u91CD\u8981\u306A\u30BF\u30B9\u30AF\u3067\u3059\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3068\u8A08\u753B\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u9577\u671F\u7684\u306A\u6210\u529F\u306E\u9375\u3067\u3059\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u53EF\u80FD\u3067\u3042\u308C\u3070\u59D4\u4EFB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3067\u3059\u304C\u3001\u3042\u306A\u305F\u306E\u7279\u5B9A\u306E\u30B9\u30AD\u30EB\u3092\u5FC5\u8981\u3068\u3057\u307E\u305B\u3093\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6392\u9664\u307E\u305F\u306F\u6700\u5C0F\u5316\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u6642\u9593\u306E\u7121\u99C4\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002","Review and categorize these tasks appropriately.":"\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u3092\u9069\u5207\u306B\u78BA\u8A8D\u3057\u3066\u5206\u985E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Urgent & Important":"\u7DCA\u6025\u304B\u3064\u91CD\u8981","Do First - Crisis & emergencies":"\u6700\u512A\u5148 - \u5371\u6A5F\u3068\u7DCA\u6025\u4E8B\u614B","Not Urgent & Important":"\u7DCA\u6025\u3067\u306F\u306A\u3044\u304C\u91CD\u8981","Schedule - Planning & development":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB - \u8A08\u753B\u3068\u958B\u767A","Urgent & Not Important":"\u7DCA\u6025\u3060\u304C\u91CD\u8981\u3067\u306F\u306A\u3044","Delegate - Interruptions & distractions":"\u59D4\u4EFB - \u4E2D\u65AD\u3068\u6C17\u6674\u3089\u3057","Not Urgent & Not Important":"\u7DCA\u6025\u3067\u3082\u91CD\u8981\u3067\u3082\u306A\u3044","Eliminate - Time wasters":"\u524A\u9664 - \u6642\u9593\u306E\u7121\u99C4","Task Priority Matrix":"\u30BF\u30B9\u30AF\u512A\u5148\u5EA6\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9","Created Date (Newest First)":"\u4F5C\u6210\u65E5\uFF08\u65B0\u3057\u3044\u9806\uFF09","Created Date (Oldest First)":"\u4F5C\u6210\u65E5\uFF08\u53E4\u3044\u9806\uFF09","Toggle empty columns":"\u7A7A\u306E\u5217\u3092\u5207\u308A\u66FF\u3048","Failed to update task":"\u30BF\u30B9\u30AF\u306E\u66F4\u65B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Remove urgent tag":"\u7DCA\u6025\u30BF\u30B0\u3092\u524A\u9664","Remove important tag":"\u91CD\u8981\u30BF\u30B0\u3092\u524A\u9664","Loading more tasks...":"\u3055\u3089\u306B\u30BF\u30B9\u30AF\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...","Action Type":"\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7","Select action type...":"\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u3092\u9078\u629E...","Delete task":"\u30BF\u30B9\u30AF\u3092\u524A\u9664","Keep task":"\u30BF\u30B9\u30AF\u3092\u4FDD\u6301","Complete related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86","Move task":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5","Archive task":"\u30BF\u30B9\u30AF\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Duplicate task":"\u30BF\u30B9\u30AF\u3092\u8907\u88FD","Task IDs":"\u30BF\u30B9\u30AFID","Enter task IDs separated by commas":"\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u30BF\u30B9\u30AFID\u3092\u5165\u529B","Comma-separated list of task IDs to complete when this task is completed":"\u3053\u306E\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u5B8C\u4E86\u3059\u308B\u30BF\u30B9\u30AFID\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8","Target File":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Path to target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9","Target Section (Optional)":"\u5BFE\u8C61\u30BB\u30AF\u30B7\u30E7\u30F3\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Section name in target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u5185\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u540D","Archive File (Optional)":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: Archive/Completed Tasks.md":"\u30C7\u30D5\u30A9\u30EB\u30C8: Archive/Completed Tasks.md","Archive Section (Optional)":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30BB\u30AF\u30B7\u30E7\u30F3\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: Completed Tasks":"\u30C7\u30D5\u30A9\u30EB\u30C8: \u5B8C\u4E86\u6E08\u307F\u30BF\u30B9\u30AF","Target File (Optional)":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: same file":"\u30C7\u30D5\u30A9\u30EB\u30C8: \u540C\u3058\u30D5\u30A1\u30A4\u30EB","Preserve Metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4FDD\u6301","Keep completion dates and other metadata in the duplicated task":"\u8907\u88FD\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306B\u5B8C\u4E86\u65E5\u3068\u305D\u306E\u4ED6\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4FDD\u6301","Overdue by":"\u671F\u9650\u3092\u904E\u304E\u3066\u3044\u308B",days:"\u65E5","Due in":"\u671F\u9650\u307E\u3067","File Filter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC","Enable File Filter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4F5C\u6210\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306B\u3088\u308A\u5927\u304D\u306A\u4FDD\u5EAB\u306E\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u304C\u5927\u5E45\u306B\u5411\u4E0A\u3057\u307E\u3059\u3002","File Filter Mode":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30E2\u30FC\u30C9","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB/\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u307F\u3092\u542B\u3081\u308B\uFF08\u30DB\u30EF\u30A4\u30C8\u30EA\u30B9\u30C8\uFF09\u304B\u3001\u305D\u308C\u3089\u3092\u9664\u5916\u3059\u308B\uFF08\u30D6\u30E9\u30C3\u30AF\u30EA\u30B9\u30C8\uFF09\u304B\u3092\u9078\u629E","Whitelist (Include only)":"\u30DB\u30EF\u30A4\u30C8\u30EA\u30B9\u30C8\uFF08\u542B\u3081\u308B\u306E\u307F\uFF09","Blacklist (Exclude)":"\u30D6\u30E9\u30C3\u30AF\u30EA\u30B9\u30C8\uFF08\u9664\u5916\uFF09","File Filter Rules":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB","Configure which files and folders to include or exclude from task indexing":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304B\u3089\u542B\u3081\u308B\u307E\u305F\u306F\u9664\u5916\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8A2D\u5B9A","Type:":"\u30BF\u30A4\u30D7:",Folder:"\u30D5\u30A9\u30EB\u30C0\u30FC","Path:":"\u30D1\u30B9:","Enabled:":"\u6709\u52B9:","Delete rule":"\u30EB\u30FC\u30EB\u3092\u524A\u9664","Add Filter Rule":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add File Rule":"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add Folder Rule":"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add Pattern Rule":"\u30D1\u30BF\u30FC\u30F3\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Refresh Statistics":"\u7D71\u8A08\u3092\u66F4\u65B0","Manually refresh filter statistics to see current data":"\u73FE\u5728\u306E\u30C7\u30FC\u30BF\u3092\u898B\u308B\u305F\u3081\u306B\u30D5\u30A3\u30EB\u30BF\u30FC\u7D71\u8A08\u3092\u624B\u52D5\u3067\u66F4\u65B0","Refreshing...":"\u66F4\u65B0\u4E2D...","Active Rules":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30EB\u30FC\u30EB","Cache Size":"\u30AD\u30E3\u30C3\u30B7\u30E5\u30B5\u30A4\u30BA","No filter data available":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093","Error loading statistics":"\u7D71\u8A08\u306E\u8AAD\u307F\u8FBC\u307F\u30A8\u30E9\u30FC","On Completion":"\u5B8C\u4E86\u6642","Enable OnCompletion":"\u5B8C\u4E86\u6642\u52D5\u4F5C\u3092\u6709\u52B9\u5316","Enable automatic actions when tasks are completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306E\u81EA\u52D5\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u5316","Default Archive File":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB","Default file for archive action":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB","Default Archive Section":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30FC\u30AB\u30A4\u30D6\u30BB\u30AF\u30B7\u30E7\u30F3","Default section for archive action":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30BB\u30AF\u30B7\u30E7\u30F3","Show Advanced Options":"\u9AD8\u5EA6\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A","Show advanced configuration options in task editors":"\u30BF\u30B9\u30AF\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u9AD8\u5EA6\u306A\u8A2D\u5B9A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A","Configure checkbox status settings":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u3092\u69CB\u6210","Auto complete parent checkbox":"\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u5B8C\u4E86","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u3059\u3079\u3066\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u5B8C\u4E86\u3055\u305B\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u4E00\u90E8\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304C\u3059\u3079\u3066\u3067\u306F\u306A\u3044\u5834\u5408\u3001\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002\u300C\u89AA\u3092\u81EA\u52D5\u5B8C\u4E86\u300D\u304C\u6709\u52B9\u306A\u5834\u5408\u306E\u307F\u6A5F\u80FD\u3057\u307E\u3059\u3002","Select a predefined checkbox status collection or customize your own":"\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u72EC\u81EA\u306B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u304F\u3060\u3055\u3044","Checkbox Switcher":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC","Enable checkbox status switcher":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u3092\u6709\u52B9\u5316","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u3001\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3046\u30B9\u30BF\u30A4\u30EB\u4ED8\u304D\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u306E\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u308F\u305B\u307E\u3059\u3002","Automatically manage dates based on checkbox status changes":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u306B\u57FA\u3065\u3044\u3066\u65E5\u4ED8\u3092\u81EA\u52D5\u7BA1\u7406","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306E\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u65E5\u4ED8\u306F\u304A\u597D\u307F\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\uFF08Tasks\u7D75\u6587\u5B57\u5F62\u5F0F\u307E\u305F\u306FDataview\u5F62\u5F0F\uFF09\u306B\u57FA\u3065\u3044\u3066\u8FFD\u52A0/\u524A\u9664\u3055\u308C\u307E\u3059\u3002","Default view mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D3\u30E5\u30FC\u30E2\u30FC\u30C9","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u8868\u793A\u30E2\u30FC\u30C9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306F\u30D3\u30E5\u30FC\u3092\u521D\u3081\u3066\u958B\u3044\u305F\u308A\u65B0\u3057\u3044\u30D3\u30E5\u30FC\u3092\u4F5C\u6210\u3057\u305F\u308A\u3059\u308B\u3068\u304D\u306E\u30BF\u30B9\u30AF\u306E\u8868\u793A\u65B9\u6CD5\u306B\u5F71\u97FF\u3057\u307E\u3059\u3002","List View":"\u30EA\u30B9\u30C8\u30D3\u30E5\u30FC","Tree View":"\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC","Global Filter Configuration":"\u30B0\u30ED\u30FC\u30D0\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u306B\u9069\u7528\u3055\u308C\u308B\u30B0\u30ED\u30FC\u30D0\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u500B\u5225\u306E\u30D3\u30E5\u30FC\u3067\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Cancelled Date":"\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5","Configuration is valid":"\u8A2D\u5B9A\u304C\u6709\u52B9\u3067\u3059","Action to execute on completion":"\u5B8C\u4E86\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3","Depends On":"\u4F9D\u5B58","Task IDs separated by commas":"\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30BF\u30B9\u30AFID","Task ID":"\u30BF\u30B9\u30AFID","Unique task identifier":"\u4E00\u610F\u306E\u30BF\u30B9\u30AF\u8B58\u5225\u5B50","Action to execute when task is completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3","Comma-separated list of task IDs this task depends on":"\u3053\u306E\u30BF\u30B9\u30AF\u304C\u4F9D\u5B58\u3059\u308B\u30BF\u30B9\u30AFID\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8","Unique identifier for this task":"\u3053\u306E\u30BF\u30B9\u30AF\u306E\u4E00\u610F\u8B58\u5225\u5B50","Quadrant Classification Method":"\u8C61\u9650\u5206\u985E\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u30BF\u30B9\u30AF\u3092\u8C61\u9650\u306B\u5206\u985E\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E","Urgent Priority Threshold":"\u7DCA\u6025\u512A\u5148\u5EA6\u95FE\u5024","Tasks with priority >= this value are considered urgent (1-5)":"\u512A\u5148\u5EA6 >= \u3053\u306E\u5024\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3068\u307F\u306A\u3055\u308C\u307E\u3059\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u512A\u5148\u5EA6\u95FE\u5024","Tasks with priority >= this value are considered important (1-5)":"\u512A\u5148\u5EA6 >= \u3053\u306E\u5024\u306E\u30BF\u30B9\u30AF\u306F\u91CD\u8981\u3068\u307F\u306A\u3055\u308C\u307E\u3059\uFF081-5\uFF09","Urgent Tag":"\u7DCA\u6025\u30BF\u30B0","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u7DCA\u6025\u30BF\u30B9\u30AF\u3092\u8B58\u5225\u3059\u308B\u30BF\u30B0\uFF08\u4F8B\uFF1A#urgent\u3001#fire\uFF09","Important Tag":"\u91CD\u8981\u30BF\u30B0","Tag to identify important tasks (e.g., #important, #key)":"\u91CD\u8981\u30BF\u30B9\u30AF\u3092\u8B58\u5225\u3059\u308B\u30BF\u30B0\uFF08\u4F8B\uFF1A#important\u3001#key\uFF09","Urgent Threshold Days":"\u7DCA\u6025\u95FE\u5024\u65E5\u6570","Tasks due within this many days are considered urgent":"\u3053\u306E\u65E5\u6570\u4EE5\u5185\u306B\u671F\u9650\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3068\u307F\u306A\u3055\u308C\u307E\u3059","Auto Update Priority":"\u512A\u5148\u5EA6\u81EA\u52D5\u66F4\u65B0","Automatically update task priority when moved between quadrants":"\u8C61\u9650\u9593\u3067\u79FB\u52D5\u3057\u305F\u3068\u304D\u306B\u30BF\u30B9\u30AF\u512A\u5148\u5EA6\u3092\u81EA\u52D5\u66F4\u65B0","Auto Update Tags":"\u30BF\u30B0\u81EA\u52D5\u66F4\u65B0","Automatically add/remove urgent/important tags when moved between quadrants":"\u8C61\u9650\u9593\u3067\u79FB\u52D5\u3057\u305F\u3068\u304D\u306B\u7DCA\u6025/\u91CD\u8981\u30BF\u30B0\u3092\u81EA\u52D5\u8FFD\u52A0/\u524A\u9664","Hide Empty Quadrants":"\u7A7A\u306E\u8C61\u9650\u3092\u975E\u8868\u793A","Hide quadrants that have no tasks":"\u30BF\u30B9\u30AF\u304C\u306A\u3044\u8C61\u9650\u3092\u975E\u8868\u793A\u306B\u3059\u308B","Configure On Completion Action":"\u5B8C\u4E86\u6642\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8A2D\u5B9A","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal\u30D5\u30A1\u30A4\u30EB\u306EURL\uFF08http://\u3001https://\u3001webcal://\u30D7\u30ED\u30C8\u30B3\u30EB\u306B\u5BFE\u5FDC\uFF09","Task mark display style":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u8868\u793A\u30B9\u30BF\u30A4\u30EB","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E\uFF1A\u30C7\u30D5\u30A9\u30EB\u30C8\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3001\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3001\u307E\u305F\u306FTask Genius\u30A2\u30A4\u30B3\u30F3\u3002","Default checkboxes":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9","Custom text marks":"\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF","Task Genius icons":"Task Genius\u30A2\u30A4\u30B3\u30F3","Time Parsing Settings":"\u6642\u523B\u89E3\u6790\u8A2D\u5B9A","Enable Time Parsing":"\u6642\u523B\u89E3\u6790\u3092\u6709\u52B9\u5316","Automatically parse natural language time expressions in Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3067\u81EA\u7136\u8A00\u8A9E\u306E\u6642\u9593\u8868\u73FE\u3092\u81EA\u52D5\u89E3\u6790","Remove Original Time Expressions":"\u5143\u306E\u6642\u9593\u8868\u73FE\u3092\u524A\u9664","Remove parsed time expressions from the task text":"\u30BF\u30B9\u30AF\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u89E3\u6790\u3055\u308C\u305F\u6642\u9593\u8868\u73FE\u3092\u524A\u9664","Supported Languages":"\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u8A00\u8A9E","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u73FE\u5728\u3001\u82F1\u8A9E\u3068\u4E2D\u56FD\u8A9E\u306E\u6642\u9593\u8868\u73FE\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u3002\u4ECA\u5F8C\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u3055\u3089\u306B\u591A\u304F\u306E\u8A00\u8A9E\u304C\u8FFD\u52A0\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Date Keywords Configuration":"\u65E5\u4ED8\u30AD\u30FC\u30EF\u30FC\u30C9\u8A2D\u5B9A","Start Date Keywords":"\u958B\u59CB\u65E5\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate start dates (comma-separated)":"\u958B\u59CB\u65E5\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Due Date Keywords":"\u671F\u9650\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate due dates (comma-separated)":"\u671F\u9650\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Scheduled Date Keywords":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate scheduled dates (comma-separated)":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Configure...":"\u8A2D\u5B9A...","Collapse quick input":"\u30AF\u30A4\u30C3\u30AF\u5165\u529B\u3092\u6298\u308A\u305F\u305F\u307F","Expand quick input":"\u30AF\u30A4\u30C3\u30AF\u5165\u529B\u3092\u5C55\u958B","Set Priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A","Clear Flags":"\u30D5\u30E9\u30B0\u3092\u30AF\u30EA\u30A2","Filter by Priority":"\u512A\u5148\u5EA6\u3067\u30D5\u30A3\u30EB\u30BF\u30FC","New Project":"\u65B0\u3057\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Archive Completed":"\u5B8C\u4E86\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Project Statistics":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7D71\u8A08","Manage Tags":"\u30BF\u30B0\u7BA1\u7406","Time Parsing":"\u6642\u523B\u89E3\u6790","Minimal Quick Capture":"\u30DF\u30CB\u30DE\u30EB\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Enter your task...":"\u30BF\u30B9\u30AF\u3092\u5165\u529B...","Set date":"\u65E5\u4ED8\u3092\u8A2D\u5B9A","Set location":"\u5834\u6240\u3092\u8A2D\u5B9A","Add tags":"\u30BF\u30B0\u3092\u8FFD\u52A0","Day after tomorrow":"\u660E\u5F8C\u65E5","Next week":"\u6765\u9031","Next month":"\u6765\u6708","Choose date...":"\u65E5\u4ED8\u3092\u9078\u629E...","Fixed location":"\u56FA\u5B9A\u5834\u6240",Date:"\u65E5\u4ED8","Add date (triggers ~)":"\u65E5\u4ED8\u3092\u8FFD\u52A0\uFF08\u30C8\u30EA\u30AC\u30FC ~\uFF09","Set priority (triggers !)":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\uFF08\u30C8\u30EA\u30AC\u30FC !\uFF09","Target Location":"\u5BFE\u8C61\u5834\u6240","Set target location (triggers *)":"\u5BFE\u8C61\u5834\u6240\u3092\u8A2D\u5B9A\uFF08\u30C8\u30EA\u30AC\u30FC *\uFF09","Add tags (triggers #)":"\u30BF\u30B0\u3092\u8FFD\u52A0\uFF08\u30C8\u30EA\u30AC\u30FC #\uFF09","Minimal Mode":"\u30DF\u30CB\u30DE\u30EB\u30E2\u30FC\u30C9","Enable minimal mode":"\u30DF\u30CB\u30DE\u30EB\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u5316","Enable simplified single-line quick capture with inline suggestions":"\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u4ED8\u304D\u306E\u7C21\u7565\u5316\u3055\u308C\u305F\u5358\u4E00\u884C\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u6709\u52B9\u5316","Suggest trigger character":"\u63D0\u6848\u30C8\u30EA\u30AC\u30FC\u6587\u5B57","Character to trigger the suggestion menu":"\u63D0\u6848\u30E1\u30CB\u30E5\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u6587\u5B57","Highest Priority":"\u6700\u9AD8\u512A\u5148\u5EA6","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"\u6700\u9AD8\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u23EB High priority task":"\u23EB High priority task","High priority set":"\u9AD8\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"\u4E2D\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u512A\u5148\u5EA6\u30BF\u30B9\u30AF","Low priority set":"\u4F4E\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Lowest Priority":"\u6700\u4F4E\u512A\u5148\u5EA6","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u512A\u5148\u5EA6\u30BF\u30B9\u30AF","Lowest priority set":"\u6700\u4F4E\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Set due date to today":"\u671F\u9650\u3092\u4ECA\u65E5\u306B\u8A2D\u5B9A","Due date set to today":"\u671F\u9650\u3092\u4ECA\u65E5\u306B\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Set due date to tomorrow":"\u671F\u9650\u3092\u660E\u65E5\u306B\u8A2D\u5B9A","Due date set to tomorrow":"\u671F\u9650\u3092\u660E\u65E5\u306B\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Pick Date":"\u65E5\u4ED8\u3092\u9078\u629E","Open date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Set scheduled date":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u8A2D\u5B9A","Scheduled date set":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Save to inbox":"\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u306B\u4FDD\u5B58","Target set to Inbox":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u306B\u8A2D\u5B9A","Daily Note":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8","Save to today's daily note":"\u4ECA\u65E5\u306E\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u4FDD\u5B58","Target set to Daily Note":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u8A2D\u5B9A","Current File":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB","Save to current file":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","Target set to Current File":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u8A2D\u5B9A","Choose File":"\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E","Open file picker":"\u30D5\u30A1\u30A4\u30EB\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Save to recent file":"\u6700\u8FD1\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","Target set to":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8A2D\u5B9A:",Important:"\u91CD\u8981","Tagged as important":"\u91CD\u8981\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Urgent:"\u7DCA\u6025","Tagged as urgent":"\u7DCA\u6025\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Work:"\u4ED5\u4E8B","Work related task":"\u4ED5\u4E8B\u95A2\u9023\u306E\u30BF\u30B9\u30AF","Tagged as work":"\u4ED5\u4E8B\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Personal:"\u500B\u4EBA","Personal task":"\u500B\u4EBA\u30BF\u30B9\u30AF","Tagged as personal":"\u500B\u4EBA\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051","Choose Tag":"\u30BF\u30B0\u3092\u9078\u629E","Open tag picker":"\u30BF\u30B0\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Existing tag":"\u65E2\u5B58\u306E\u30BF\u30B0","Tagged with":"\u30BF\u30B0\u4ED8\u3051:","Toggle quick capture panel in editor":"\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Toggle quick capture panel in editor (Globally)":"\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048\uFF08\u5168\u4F53\uFF09","Selected Mode":"\u9078\u629E\u30E2\u30FC\u30C9","Features that will be enabled":"\u6709\u52B9\u306B\u306A\u308B\u6A5F\u80FD","Don't worry! You can customize any of these settings later in the plugin settings.":"\u3054\u5B89\u5FC3\u304F\u3060\u3055\u3044\uFF01\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30D7\u30E9\u30B0\u30A4\u30F3\u8A2D\u5B9A\u3067\u5F8C\u304B\u3089\u3044\u3064\u3067\u3082\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002","Available views":"\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC","Key settings":"\u4E3B\u8981\u8A2D\u5B9A","Progress bars":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC","Enabled (both graphical and text)":"\u6709\u52B9\uFF08\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u3068\u30C6\u30AD\u30B9\u30C8\u4E21\u65B9\uFF09","Task status switching":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u5207\u308A\u66FF\u3048","Workflow management":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u7BA1\u7406","Reward system":"\u5831\u916C\u30B7\u30B9\u30C6\u30E0","Habit tracking":"\u7FD2\u6163\u30C8\u30E9\u30C3\u30AD\u30F3\u30B0","Performance optimization":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u6700\u9069\u5316","Configuration Changes":"\u8A2D\u5B9A\u5909\u66F4","Your custom views will be preserved":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u306F\u4FDD\u6301\u3055\u308C\u307E\u3059","New views to be added":"\u8FFD\u52A0\u3055\u308C\u308B\u65B0\u3057\u3044\u30D3\u30E5\u30FC","Existing views to be updated":"\u66F4\u65B0\u3055\u308C\u308B\u65E2\u5B58\u306E\u30D3\u30E5\u30FC","Feature changes":"\u6A5F\u80FD\u5909\u66F4","Only template settings will be applied. Your existing custom configurations will be preserved.":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u65E2\u5B58\u306E\u30AB\u30B9\u30BF\u30E0\u8A2D\u5B9A\u306F\u4FDD\u6301\u3055\u308C\u307E\u3059\u3002","Congratulations!":"\u304A\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307E\u3059\uFF01","Task Genius has been configured with your selected preferences":"Task Genius \u304C\u3042\u306A\u305F\u306E\u9078\u629E\u3057\u305F\u8A2D\u5B9A\u3067\u69CB\u6210\u3055\u308C\u307E\u3057\u305F","Your Configuration":"\u3042\u306A\u305F\u306E\u8A2D\u5B9A","Quick Start Guide":"\u30AF\u30A4\u30C3\u30AF\u30B9\u30BF\u30FC\u30C8\u30AC\u30A4\u30C9","What's next?":"\u6B21\u306B\u3059\u3079\u304D\u3053\u3068\u306F\uFF1F","Open Task Genius view from the left ribbon":"\u5DE6\u30EA\u30DC\u30F3\u304B\u3089 Task Genius \u30D3\u30E5\u30FC\u3092\u958B\u304F","Create your first task using Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u4F7F\u7528\u3057\u3066\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Explore different views to organize your tasks":"\u3055\u307E\u3056\u307E\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22\u3057\u3066\u30BF\u30B9\u30AF\u3092\u6574\u7406","Customize settings anytime in plugin settings":"\u30D7\u30E9\u30B0\u30A4\u30F3\u8A2D\u5B9A\u3067\u3044\u3064\u3067\u3082\u8A2D\u5B9A\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Helpful Resources":"\u5F79\u7ACB\u3064\u30EA\u30BD\u30FC\u30B9","Complete guide to all features":"\u3059\u3079\u3066\u306E\u6A5F\u80FD\u306E\u5B8C\u5168\u30AC\u30A4\u30C9",Community:"\u30B3\u30DF\u30E5\u30CB\u30C6\u30A3","Get help and share tips":"\u30D8\u30EB\u30D7\u3092\u53D7\u3051\u3066\u30D2\u30F3\u30C8\u3092\u5171\u6709","Customize Task Genius":"Task Genius \u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Click the Task Genius icon in the left sidebar":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u306E Task Genius \u30A2\u30A4\u30B3\u30F3\u3092\u30AF\u30EA\u30C3\u30AF","Start with the Inbox view to see all your tasks":"\u53D7\u4FE1\u7BB1\u30D3\u30E5\u30FC\u304B\u3089\u59CB\u3081\u3066\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u78BA\u8A8D","Use quick capture panel to quickly add your first task":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u4F7F\u7528\u3057\u3066\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u7D20\u65E9\u304F\u8FFD\u52A0","Try the Forecast view to see tasks by date":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u3092\u8A66\u3057\u3066\u65E5\u4ED8\u5225\u306B\u30BF\u30B9\u30AF\u3092\u78BA\u8A8D","Open Task Genius and explore the available views":"Task Genius \u3092\u958B\u3044\u3066\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22","Set up a project using the Projects view":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A","Try the Kanban board for visual task management":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u8A66\u3057\u3066\u8996\u899A\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406","Use workflow stages to track task progress":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30B9\u30AF\u306E\u9032\u6357\u3092\u8FFD\u8DE1","Explore all available views and their configurations":"\u3059\u3079\u3066\u306E\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC\u3068\u305D\u306E\u8A2D\u5B9A\u3092\u63A2\u7D22","Set up complex workflows for your projects":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u8907\u96D1\u306A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8A2D\u5B9A","Configure habits and rewards to stay motivated":"\u7FD2\u6163\u3068\u5831\u916C\u3092\u8A2D\u5B9A\u3057\u3066\u30E2\u30C1\u30D9\u30FC\u30B7\u30E7\u30F3\u3092\u7DAD\u6301","Integrate with external calendars and systems":"\u5916\u90E8\u30AB\u30EC\u30F3\u30C0\u30FC\u3068\u30B7\u30B9\u30C6\u30E0\u3068\u7D71\u5408","Open Task Genius from the left sidebar":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u304B\u3089 Task Genius \u3092\u958B\u304F","Create your first task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Explore the different views available":"\u5229\u7528\u53EF\u80FD\u306A\u3055\u307E\u3056\u307E\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22","Customize settings as needed":"\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u8A2D\u5B9A\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Thank you for your positive feedback!":"\u80AF\u5B9A\u7684\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u4F53\u9A13\u306E\u6539\u5584\u3092\u7D9A\u3051\u3066\u3044\u304D\u307E\u3059\u3002","Share detailed feedback":"\u8A73\u7D30\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u5171\u6709","Skip onboarding":"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u30B9\u30AD\u30C3\u30D7",Back:"\u623B\u308B","Welcome to Task Genius":"Task Genius \u3078\u3088\u3046\u3053\u305D","Transform your task management with advanced progress tracking and workflow automation":"\u9AD8\u5EA6\u306A\u9032\u6357\u8FFD\u8DE1\u3068\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316\u3067\u30BF\u30B9\u30AF\u7BA1\u7406\u3092\u5909\u9769","Progress Tracking":"\u9032\u6357\u8FFD\u8DE1","Visual progress bars and completion tracking for all your tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306E\u8996\u899A\u7684\u306A\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3068\u5B8C\u4E86\u8FFD\u8DE1","Organize tasks by projects with advanced filtering and sorting":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3068\u30BD\u30FC\u30C8\u3067\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u306B\u30BF\u30B9\u30AF\u3092\u6574\u7406","Workflow Automation":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316","Automate task status changes and improve your productivity":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u3092\u81EA\u52D5\u5316\u3057\u3066\u751F\u7523\u6027\u3092\u5411\u4E0A","Multiple Views":"\u8907\u6570\u306E\u30D3\u30E5\u30FC","Kanban boards, calendars, Gantt charts, and more visualization options":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u3001\u30AC\u30F3\u30C8\u30C1\u30E3\u30FC\u30C8\u306A\u3069\u306E\u8996\u899A\u5316\u30AA\u30D7\u30B7\u30E7\u30F3","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u3053\u306E\u30AF\u30A4\u30C3\u30AF\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u306F\u3001\u3042\u306A\u305F\u306E\u7D4C\u9A13\u30EC\u30D9\u30EB\u3068\u30CB\u30FC\u30BA\u306B\u57FA\u3065\u3044\u3066 Task Genius \u3092\u8A2D\u5B9A\u3059\u308B\u306E\u306B\u5F79\u7ACB\u3061\u307E\u3059\u3002\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u3044\u3064\u3067\u3082\u5F8C\u3067\u5909\u66F4\u3067\u304D\u307E\u3059\u3002","Choose Your Usage Mode":"\u4F7F\u7528\u30E2\u30FC\u30C9\u3092\u9078\u629E","Select the configuration that best matches your task management experience":"\u3042\u306A\u305F\u306E\u30BF\u30B9\u30AF\u7BA1\u7406\u7D4C\u9A13\u306B\u6700\u3082\u9069\u3057\u305F\u8A2D\u5B9A\u3092\u9078\u629E","Configuration Preview":"\u8A2D\u5B9A\u30D7\u30EC\u30D3\u30E5\u30FC","Review the settings that will be applied for your selected mode":"\u9078\u629E\u3057\u305F\u30E2\u30FC\u30C9\u306B\u9069\u7528\u3055\u308C\u308B\u8A2D\u5B9A\u3092\u78BA\u8A8D","Include task creation guide":"\u30BF\u30B9\u30AF\u4F5C\u6210\u30AC\u30A4\u30C9\u3092\u542B\u3080","Show a quick tutorial on creating your first task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u4F5C\u6210\u306E\u30AF\u30A4\u30C3\u30AF\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB\u3092\u8868\u793A","Create Your First Task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Learn how to create and format tasks in Task Genius":"Task Genius \u3067\u30BF\u30B9\u30AF\u3092\u4F5C\u6210\u3057\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u65B9\u6CD5\u3092\u5B66\u3076","Setup Complete!":"\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5B8C\u4E86\uFF01","Task Genius is now configured and ready to use":"Task Genius \u306E\u8A2D\u5B9A\u304C\u5B8C\u4E86\u3057\u3001\u4F7F\u7528\u6E96\u5099\u304C\u6574\u3044\u307E\u3057\u305F","Start Using Task Genius":"Task Genius \u3092\u4F7F\u3044\u59CB\u3081\u308B","Task Genius Setup":"Task Genius \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7","Skip setup":"\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u30B9\u30AD\u30C3\u30D7","We noticed you've already configured Task Genius":"Task Genius \u306F\u3059\u3067\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u3088\u3046\u3067\u3059","Your current configuration includes:":"\u73FE\u5728\u306E\u8A2D\u5B9A\u5185\u5BB9\uFF1A","Would you like to run the setup wizard anyway?":"\u305D\u308C\u3067\u3082\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F","Yes, show me the setup wizard":"\u306F\u3044\u3001\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u8868\u793A","No, I'm happy with my current setup":"\u3044\u3044\u3048\u3001\u73FE\u5728\u306E\u8A2D\u5B9A\u3067\u6E80\u8DB3\u3057\u3066\u3044\u307E\u3059","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Task Genius \u3067\u30BF\u30B9\u30AF\u3092\u4F5C\u6210\u3057\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3055\u307E\u3056\u307E\u306A\u65B9\u6CD5\u3092\u5B66\u3073\u307E\u3059\u3002\u7D75\u6587\u5B57\u30D9\u30FC\u30B9\u307E\u305F\u306F Dataview \u30B9\u30BF\u30A4\u30EB\u306E\u69CB\u6587\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Task Format Examples":"\u30BF\u30B9\u30AF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4F8B","Basic Task":"\u57FA\u672C\u30BF\u30B9\u30AF","With Emoji Metadata":"\u7D75\u6587\u5B57\u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u671F\u9650\u3001\u{1F53A} = \u9AD8\u512A\u5148\u5EA6\u3001#project/ = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0","With Dataview Metadata":"Dataview \u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D","Mixed Format":"\u6DF7\u5408\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Combine emoji and dataview syntax as needed":"\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u7D75\u6587\u5B57\u3068 Dataview \u69CB\u6587\u3092\u7D44\u307F\u5408\u308F\u305B","Task Status Markers":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30FC\u30AB\u30FC","Not started":"\u672A\u958B\u59CB","In progress":"\u9032\u884C\u4E2D","Common Metadata Symbols":"\u4E00\u822C\u7684\u306A\u30E1\u30BF\u30C7\u30FC\u30BF\u30B7\u30F3\u30DC\u30EB","Due date":"\u671F\u9650","Start date":"\u958B\u59CB\u65E5","Scheduled date":"\u4E88\u5B9A\u65E5","Higher priority":"\u9AD8\u512A\u5148\u5EA6","Lower priority":"\u4F4E\u512A\u5148\u5EA6","Recurring task":"\u7E70\u308A\u8FD4\u3057\u30BF\u30B9\u30AF","Project/tag":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8/\u30BF\u30B0","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Obsidian \u306E\u3069\u3053\u304B\u3089\u3067\u3082\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u4F7F\u7528\u3057\u3066\u7D20\u65E9\u304F\u30BF\u30B9\u30AF\u3092\u30AD\u30E3\u30D7\u30C1\u30E3\u3002","Try Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u8A66\u3059","Quick capture is now enabled in your configuration!":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u304C\u8A2D\u5B9A\u3067\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\uFF01","Failed to open quick capture. Please try again later.":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5F8C\u3067\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002","Try It Yourself":"\u81EA\u5206\u3067\u8A66\u3057\u3066\u307F\u308B","Practice creating a task with the format you prefer:":"\u597D\u307F\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u30BF\u30B9\u30AF\u4F5C\u6210\u3092\u7DF4\u7FD2\uFF1A","Practice Task":"\u7DF4\u7FD2\u30BF\u30B9\u30AF","Enter a task using any of the formats shown above":"\u4E0A\u8A18\u306E\u4EFB\u610F\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30B9\u30AF\u3092\u5165\u529B","- [ ] Your task here":"- [ ] \u3053\u3053\u306B\u30BF\u30B9\u30AF\u3092\u5165\u529B","Validate Task":"\u30BF\u30B9\u30AF\u3092\u691C\u8A3C","Please enter a task to validate":"\u691C\u8A3C\u3059\u308B\u30BF\u30B9\u30AF\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u3053\u308C\u306F\u6709\u52B9\u306A\u30BF\u30B9\u30AF\u3067\u306F\u306A\u3044\u3088\u3046\u3067\u3059\u3002\u30BF\u30B9\u30AF\u306F '- [ ]' \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059","Valid task format!":"\u6709\u52B9\u306A\u30BF\u30B9\u30AF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\uFF01","Emoji metadata":"\u7D75\u6587\u5B57\u30E1\u30BF\u30C7\u30FC\u30BF","Dataview metadata":"Dataview \u30E1\u30BF\u30C7\u30FC\u30BF","Project tags":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0","Detected features: ":"\u691C\u51FA\u3055\u308C\u305F\u6A5F\u80FD\uFF1A",Onboarding:"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0","Restart the welcome guide and setup wizard":"\u30A6\u30A7\u30EB\u30AB\u30E0\u30AC\u30A4\u30C9\u3068\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u518D\u8D77\u52D5","Restart Onboarding":"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u518D\u8D77\u52D5",Copy:"\u30B3\u30D4\u30FC","Copied!":"\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F\uFF01","MCP integration is only available on desktop":"MCP \u7D71\u5408\u306F\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u7248\u3067\u306E\u307F\u5229\u7528\u53EF\u80FD","MCP Server Status":"MCP \u30B5\u30FC\u30D0\u30FC\u30B9\u30C6\u30FC\u30BF\u30B9","Enable MCP Server":"MCP \u30B5\u30FC\u30D0\u30FC\u3092\u6709\u52B9\u5316","Start the MCP server to allow external tool connections":"\u5916\u90E8\u30C4\u30FC\u30EB\u63A5\u7D9A\u3092\u8A31\u53EF\u3059\u308B\u305F\u3081\u306B MCP \u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1AMCP \u30B5\u30FC\u30D0\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u5916\u90E8\u306E AI \u30C4\u30FC\u30EB\u3084\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u30BF\u30B9\u30AF\u30C7\u30FC\u30BF\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u5909\u66F4\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306B\u306F\u6B21\u304C\u542B\u307E\u308C\u307E\u3059\uFF1A \u2022 \u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3068\u305D\u306E\u8A73\u7D30\u306E\u8AAD\u307F\u53D6\u308A \u2022 \u65B0\u3057\u3044\u30BF\u30B9\u30AF\u306E\u4F5C\u6210 \u2022 \u65E2\u5B58\u306E\u30BF\u30B9\u30AF\u306E\u66F4\u65B0 \u2022 \u30BF\u30B9\u30AF\u306E\u524A\u9664 \u2022 \u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u3068\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u30A2\u30AF\u30BB\u30B9 MCP \u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3059\u308B\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u4FE1\u983C\u3057\u3066\u3044\u308B\u5834\u5408\u306E\u307F\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\u3002 \u7D9A\u884C\u3057\u307E\u3059\u304B\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\u3002\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\uFF01","Server Configuration":"\u30B5\u30FC\u30D0\u30FC\u8A2D\u5B9A",Host:"\u30DB\u30B9\u30C8","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u30B5\u30FC\u30D0\u30FC\u30DB\u30B9\u30C8\u30A2\u30C9\u30EC\u30B9\u3002\u30ED\u30FC\u30AB\u30EB\u306E\u307F\u306E\u5834\u5408\u306F 127.0.0.1\u3001\u3059\u3079\u3066\u306E\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u306E\u5834\u5408\u306F 0.0.0.0 \u3092\u4F7F\u7528","Security Warning":"\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A0.0.0.0 \u306B\u5207\u308A\u66FF\u3048\u308B\u3068\u3001MCP \u30B5\u30FC\u30D0\u30FC\u304C\u5916\u90E8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308A\u307E\u3059\u3002 \u3053\u308C\u306B\u3088\u308A\u3001Obsidian \u30C7\u30FC\u30BF\u304C\u6B21\u306B\u516C\u958B\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF1A - \u30ED\u30FC\u30AB\u30EB\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u4E0A\u306E\u4ED6\u306E\u30C7\u30D0\u30A4\u30B9 - \u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u304C\u6B63\u3057\u304F\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u30A4\u30F3\u30BF\u30FC\u30CD\u30C3\u30C8 **\u6B21\u306E\u5834\u5408\u306E\u307F\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A** - \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u4E0A\u306E\u5F71\u97FF\u3092\u7406\u89E3\u3057\u3066\u3044\u308B - \u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u3092\u9069\u5207\u306B\u8A2D\u5B9A\u3057\u3066\u3044\u308B - \u6B63\u5F53\u306A\u7406\u7531\u3067\u5916\u90E8\u30A2\u30AF\u30BB\u30B9\u304C\u5FC5\u8981 \u672C\u5F53\u306B\u7D9A\u884C\u3057\u307E\u3059\u304B\uFF1F`,"Yes, I understand the risks":"\u306F\u3044\u3001\u30EA\u30B9\u30AF\u3092\u7406\u89E3\u3057\u3066\u3044\u307E\u3059","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u30DB\u30B9\u30C8\u304C 0.0.0.0 \u306B\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002\u30B5\u30FC\u30D0\u30FC\u306F\u5916\u90E8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308A\u307E\u3057\u305F\u3002",Port:"\u30DD\u30FC\u30C8","Server port number (default: 7777)":"\u30B5\u30FC\u30D0\u30FC\u30DD\u30FC\u30C8\u756A\u53F7\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8\uFF1A7777\uFF09",Authentication:"\u8A8D\u8A3C","Authentication Token":"\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3","Bearer token for authenticating MCP requests (keep this secret)":"MCP \u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u8A8D\u8A3C\u3059\u308B\u305F\u3081\u306E Bearer \u30C8\u30FC\u30AF\u30F3\uFF08\u79D8\u5BC6\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",Show:"\u8868\u793A",Hide:"\u975E\u8868\u793A","Token copied to clipboard":"\u30C8\u30FC\u30AF\u30F3\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",Regenerate:"\u518D\u751F\u6210","New token generated":"\u65B0\u3057\u3044\u30C8\u30FC\u30AF\u30F3\u304C\u751F\u6210\u3055\u308C\u307E\u3057\u305F","Advanced Settings":"\u9AD8\u5EA6\u306A\u8A2D\u5B9A","Enable CORS":"CORS \u3092\u6709\u52B9\u5316","Allow cross-origin requests (required for web clients)":"\u30AF\u30ED\u30B9\u30AA\u30EA\u30B8\u30F3\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u8A31\u53EF\uFF08Web \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306B\u5FC5\u8981\uFF09","Log Level":"\u30ED\u30B0\u30EC\u30D9\u30EB","Logging verbosity for debugging":"\u30C7\u30D0\u30C3\u30B0\u7528\u306E\u30ED\u30B0\u8A73\u7D30\u5EA6",Error:"\u30A8\u30E9\u30FC",Warning:"\u8B66\u544A",Info:"\u60C5\u5831",Debug:"\u30C7\u30D0\u30C3\u30B0","Server Actions":"\u30B5\u30FC\u30D0\u30FC\u30A2\u30AF\u30B7\u30E7\u30F3","Test Connection":"\u63A5\u7D9A\u30C6\u30B9\u30C8","Test the MCP server connection":"MCP \u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3092\u30C6\u30B9\u30C8",Test:"\u30C6\u30B9\u30C8","Testing...":"\u30C6\u30B9\u30C8\u4E2D...","Connection test successful! MCP server is working.":"\u63A5\u7D9A\u30C6\u30B9\u30C8\u6210\u529F\uFF01MCP \u30B5\u30FC\u30D0\u30FC\u306F\u52D5\u4F5C\u4E2D\u3067\u3059\u3002","Connection test failed: ":"\u63A5\u7D9A\u30C6\u30B9\u30C8\u5931\u6557\uFF1A","Restart Server":"\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5","Stop and restart the MCP server":"MCP \u30B5\u30FC\u30D0\u30FC\u3092\u505C\u6B62\u3057\u3066\u518D\u8D77\u52D5",Restart:"\u518D\u8D77\u52D5","MCP server restarted":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u518D\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F","Failed to restart server: ":"\u30B5\u30FC\u30D0\u30FC\u306E\u518D\u8D77\u52D5\u306B\u5931\u6557\uFF1A","Use Next Available Port":"\u6B21\u306E\u5229\u7528\u53EF\u80FD\u306A\u30DD\u30FC\u30C8\u3092\u4F7F\u7528","Port updated to ":"\u30DD\u30FC\u30C8\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\uFF1A","No available port found in range":"\u7BC4\u56F2\u5185\u306B\u5229\u7528\u53EF\u80FD\u306A\u30DD\u30FC\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Client Configuration":"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u8A2D\u5B9A","Authentication Method":"\u8A8D\u8A3C\u65B9\u6CD5","Choose the authentication method for client configurations":"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u8A2D\u5B9A\u306E\u8A8D\u8A3C\u65B9\u6CD5\u3092\u9078\u629E","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7D71\u5408 Bearer\uFF08\u63A8\u5968\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC","Supported Authentication Methods:":"\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u8A8D\u8A3C\u65B9\u6CD5\uFF1A","API Documentation":"API \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","Server Endpoint":"\u30B5\u30FC\u30D0\u30FC\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8","Copy URL":"URL \u3092\u30B3\u30D4\u30FC","Available Tools":"\u5229\u7528\u53EF\u80FD\u306A\u30C4\u30FC\u30EB","Loading tools...":"\u30C4\u30FC\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...","No tools available":"\u5229\u7528\u53EF\u80FD\u306A\u30C4\u30FC\u30EB\u304C\u3042\u308A\u307E\u305B\u3093","Failed to load tools. Is the MCP server running?":"\u30C4\u30FC\u30EB\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002MCP \u30B5\u30FC\u30D0\u30FC\u306F\u5B9F\u884C\u4E2D\u3067\u3059\u304B\uFF1F","Example Request":"\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u4F8B","MCP Server not initialized":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093",Running:"\u5B9F\u884C\u4E2D",Stopped:"\u505C\u6B62\u4E2D",Uptime:"\u7A3C\u50CD\u6642\u9593",Requests:"\u30EA\u30AF\u30A8\u30B9\u30C8\u6570","Toggle this to enable Org-mode style quick capture panel.":"Org-mode \u30B9\u30BF\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002","Auto-add task prefix":"\u30BF\u30B9\u30AF\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically add task checkbox prefix to captured content":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u30BF\u30B9\u30AF\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0","Task prefix format":"\u30BF\u30B9\u30AF\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u524D\u306B\u8FFD\u52A0\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\uFF08\u4F8B\uFF1A\u30BF\u30B9\u30AF\u306E\u5834\u5408\u306F '- [ ]'\u3001\u30EA\u30B9\u30C8\u9805\u76EE\u306E\u5834\u5408\u306F '- '\uFF09","Search settings...":"\u8A2D\u5B9A\u3092\u691C\u7D22...","Search settings":"\u8A2D\u5B9A\u3092\u691C\u7D22","Clear search":"\u691C\u7D22\u3092\u30AF\u30EA\u30A2","Search results":"\u691C\u7D22\u7D50\u679C","No settings found":"\u8A2D\u5B9A\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Project Tree View Settings":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u8A2D\u5B9A","Configure how projects are displayed in tree view.":"\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u3067\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8868\u793A\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Default project view mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u30E2\u30FC\u30C9","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30E9\u30C3\u30C8\u30EA\u30B9\u30C8\u307E\u305F\u306F\u968E\u5C64\u30C4\u30EA\u30FC\u3068\u3057\u3066\u8868\u793A\u3059\u308B\u304B\u3092\u9078\u629E\u3002","Auto-expand project tree":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C4\u30EA\u30FC\u3092\u81EA\u52D5\u5C55\u958B","Automatically expand all project nodes when opening the project view in tree mode.":"\u30C4\u30EA\u30FC\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u3092\u958B\u304F\u3068\u304D\u306B\u3001\u3059\u3079\u3066\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30CE\u30FC\u30C9\u3092\u81EA\u52D5\u7684\u306B\u5C55\u958B\u3002","Show empty project folders":"\u7A7A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8868\u793A","Display project folders even if they don't contain any tasks.":"\u30BF\u30B9\u30AF\u304C\u542B\u307E\u308C\u3066\u3044\u306A\u304F\u3066\u3082\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8868\u793A\u3002","Project path separator":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D1\u30B9\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u968E\u5C64\u30EC\u30D9\u30EB\u3092\u533A\u5207\u308B\u6587\u5B57\uFF08\u4F8B\uFF1A'Project/SubProject' \u306E '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u52D5\u7684\u30E1\u30BF\u30C7\u30FC\u30BF\u4F4D\u7F6E\u6C7A\u3081\u3092\u6709\u52B9\u5316","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u306B\u914D\u7F6E\u3057\u307E\u3059\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u306F\u77ED\u3044\u30BF\u30B9\u30AF\u3068\u540C\u3058\u884C\u306B\u8868\u793A\u3055\u308C\u3001\u9577\u3044\u30BF\u30B9\u30AF\u306E\u5834\u5408\u306F\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u306F\u5E38\u306B\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Toggle tree/list view":"\u30C4\u30EA\u30FC/\u30EA\u30B9\u30C8\u30D3\u30E5\u30FC\u3092\u5207\u308A\u66FF\u3048","Clear date":"\u65E5\u4ED8\u3092\u30AF\u30EA\u30A2","Clear priority":"\u512A\u5148\u5EA6\u3092\u30AF\u30EA\u30A2","Clear all tags":"\u3059\u3079\u3066\u306E\u30BF\u30B0\u3092\u30AF\u30EA\u30A2","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u5EA6","\u23EB High priority":"\u23EB \u9AD8\u512A\u5148\u5EA6","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u512A\u5148\u5EA6","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u512A\u5148\u5EA6","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u512A\u5148\u5EA6","Fixed File":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB","Save to Inbox.md":"Inbox.md \u306B\u4FDD\u5B58","Open Task Genius Setup":"Task Genius \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u958B\u304F","MCP Integration":"MCP \u7D71\u5408",Beginner:"\u521D\u7D1A\u8005","Basic task management with essential features":"\u57FA\u672C\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406\u3068\u5FC5\u9808\u6A5F\u80FD","Basic progress bars":"\u57FA\u672C\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u9808\u30D3\u30E5\u30FC\uFF08\u53D7\u4FE1\u7BB1\u3001\u4E88\u6E2C\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09","Simple task status tracking":"\u30B7\u30F3\u30D7\u30EB\u306A\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8FFD\u8DE1","Quick task capture":"\u30AF\u30A4\u30C3\u30AF\u30BF\u30B9\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Date picker functionality":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u6A5F\u80FD","Project management with enhanced workflows":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u3068\u5F37\u5316\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Full progress bar customization":"\u5B8C\u5168\u306A\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Extended views (Kanban, Calendar, Table)":"\u62E1\u5F35\u30D3\u30E5\u30FC\uFF08\u30AB\u30F3\u30D0\u30F3\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u3001\u30C6\u30FC\u30D6\u30EB\uFF09","Project management features":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u6A5F\u80FD","Basic workflow automation":"\u57FA\u672C\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316","Advanced filtering and sorting":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3068\u30BD\u30FC\u30C8","Power User":"\u30D1\u30EF\u30FC\u30E6\u30FC\u30B6\u30FC","Full-featured experience with all capabilities":"\u3059\u3079\u3066\u306E\u6A5F\u80FD\u3092\u5099\u3048\u305F\u30D5\u30EB\u6A5F\u80FD\u4F53\u9A13","All views and advanced configurations":"\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u3068\u9AD8\u5EA6\u306A\u8A2D\u5B9A","Complex workflow definitions":"\u8907\u96D1\u306A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9","Reward and habit tracking systems":"\u5831\u916C\u3068\u7FD2\u6163\u8FFD\u8DE1\u30B7\u30B9\u30C6\u30E0","Performance optimizations":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u6700\u9069\u5316","Advanced integrations":"\u9AD8\u5EA6\u306A\u7D71\u5408","Experimental features":"\u5B9F\u9A13\u7684\u6A5F\u80FD","Timeline and calendar sync":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3068\u30AB\u30EC\u30F3\u30C0\u30FC\u540C\u671F","Not configured":"\u672A\u8A2D\u5B9A",Custom:"\u30AB\u30B9\u30BF\u30E0","Custom views created":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Progress bar settings modified":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u8A2D\u5B9A\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F","Task status settings configured":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u304C\u69CB\u6210\u3055\u308C\u307E\u3057\u305F","Quick capture configured":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Workflow settings enabled":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u8A2D\u5B9A\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F","Advanced features enabled":"\u9AD8\u5EA6\u306A\u6A5F\u80FD\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F","File parsing customized":"\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u304C\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3055\u308C\u307E\u3057\u305F"},HO=H$});var B$,VO,WO=D(()=>{B$={"File Metadata Inheritance":"Heran\xE7a de Metadados de Arquivo","Configure how tasks inherit metadata from file frontmatter":"Configure como as tarefas herdam metadados do frontmatter do arquivo","Enable file metadata inheritance":"Habilitar heran\xE7a de metadados de arquivo","Allow tasks to inherit metadata properties from their file's frontmatter":"Permitir que as tarefas herdem propriedades de metadados do frontmatter de seu arquivo","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"As tarefas herdam propriedades de metadados como prioridade, contexto, etc. do frontmatter do arquivo quando n\xE3o explicitamente definidas na tarefa","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Permitir que subtarefas herdem metadados do frontmatter do arquivo. Quando desabilitado, apenas tarefas de n\xEDvel superior herdam metadados do arquivo","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Plugin abrangente de gerenciamento de tarefas para Obsidian com barras de progresso, ciclo de status de tarefas e recursos avan\xE7ados de acompanhamento de tarefas.","Show progress bar":"Mostrar barra de progresso","Toggle this to show the progress bar.":"Ative para mostrar a barra de progresso.","Support hover to show progress info":"Suporte para mostrar informa\xE7\xF5es de progresso ao passar o mouse","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Ative para permitir que este plugin mostre informa\xE7\xF5es de progresso ao passar o mouse sobre a barra de progresso.","Add progress bar to non-task bullet":"Adicionar barra de progresso a itens de lista comuns","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Ative para permitir adicionar barras de progresso a itens de lista regulares (marcadores n\xE3o relacionados a tarefas).","Add progress bar to Heading":"Adicionar barra de progresso ao Cabe\xE7alho","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Ative para permitir que este plugin adicione uma barra de progresso para Tarefas abaixo dos cabe\xE7alhos.","Enable heading progress bars":"Ativar barras de progresso em cabe\xE7alhos","Add progress bars to headings to show progress of all tasks under that heading.":"Adicione barras de progresso aos cabe\xE7alhos para mostrar o progresso de todas as tarefas sob esse cabe\xE7alho.","Auto complete parent task":"Completar tarefa pai automaticamente","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Ative para permitir que este plugin complete automaticamente a tarefa pai quando todas as tarefas filhas forem conclu\xEDdas.","Mark parent as 'In Progress' when partially complete":"Marcar pai como 'Em Andamento' quando parcialmente conclu\xEDdo","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"Quando algumas, mas n\xE3o todas as tarefas filhas estiverem conclu\xEDdas, marque a tarefa pai como 'Em Andamento'. S\xF3 funciona quando 'Completar tarefa pai automaticamente' est\xE1 ativado.","Count sub children level of current Task":"Contar n\xEDveis de sub-tarefas da Tarefa atual","Toggle this to allow this plugin to count sub tasks.":"Ative para permitir que este plugin conte sub-tarefas.","Checkbox Status Settings":"Configura\xE7\xF5es de Status da Tarefa","Select a predefined task status collection or customize your own":"Selecione uma cole\xE7\xE3o predefinida de status de tarefa ou personalize a sua","Completed task markers":"Marcadores de tarefa conclu\xEDda",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Caracteres entre colchetes que representam tarefas conclu\xEDdas. Exemplo: "x|X"',"Planned task markers":"Marcadores de tarefa planejada",'Characters in square brackets that represent planned tasks. Example: "?"':'Caracteres entre colchetes que representam tarefas planejadas. Exemplo: "?"',"In progress task markers":"Marcadores de tarefa em andamento",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Caracteres entre colchetes que representam tarefas em andamento. Exemplo: ">|/"',"Abandoned task markers":"Marcadores de tarefa abandonada",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Caracteres entre colchetes que representam tarefas abandonadas. Exemplo: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Caracteres entre colchetes que representam tarefas n\xE3o iniciadas. O padr\xE3o \xE9 espa\xE7o " "',"Count other statuses as":"Contar outros status como",'Select the status to count other statuses as. Default is "Not Started".':'Selecione o status para o qual outros status devem ser contados. O padr\xE3o \xE9 "N\xE3o Iniciada".',"Task Counting Settings":"Configura\xE7\xF5es de Contagem de Tarefas","Exclude specific task markers":"Excluir marcadores de tarefa espec\xEDficos",'Specify task markers to exclude from counting. Example: "?|/"':'Especifique marcadores de tarefa a serem exclu\xEDdos da contagem. Exemplo: "?|/"',"Only count specific task markers":"Contar apenas marcadores de tarefa espec\xEDficos","Toggle this to only count specific task markers":"Ative para contar apenas marcadores de tarefa espec\xEDficos","Specific task markers to count":"Marcadores de tarefa espec\xEDficos para contar",'Specify which task markers to count. Example: "x|X|>|/"':'Especifique quais marcadores de tarefa contar. Exemplo: "x|X|>|/"',"Conditional Progress Bar Display":"Exibi\xE7\xE3o Condicional da Barra de Progresso","Hide progress bars based on conditions":"Ocultar barras de progresso com base em condi\xE7\xF5es","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Ative para habilitar a oculta\xE7\xE3o de barras de progresso com base em tags, pastas ou metadados.","Hide by tags":"Ocultar por tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Especifique tags que ocultar\xE3o barras de progresso (separadas por v\xEDrgula, sem #). Exemplo: "sem-barra-progresso,ocultar-progresso"',"Hide by folders":"Ocultar por pastas",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Especifique caminhos de pasta que ocultar\xE3o barras de progresso (separados por v\xEDrgula). Exemplo: "Notas Di\xE1rias,Projetos/Ocultos"',"Hide by metadata":"Ocultar por metadados",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Especifique metadados do frontmatter que ocultar\xE3o barras de progresso. Exemplo: "ocultar-barra-progresso: true"',"Checkbox Status Switcher":"Alternador de Status da Tarefa","Enable task status switcher":"Ativar alternador de status da tarefa","Enable/disable the ability to cycle through task states by clicking.":"Ativar/desativar a capacidade de alternar entre os status da tarefa clicando.","Enable custom task marks":"Ativar marcadores de tarefa personalizados","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Substitua as caixas de sele\xE7\xE3o padr\xE3o por marcadores de texto estilizados que seguem o ciclo de status da sua tarefa ao serem clicados.","Enable cycle complete status":"Permitir que o status 'Conclu\xEDda' fa\xE7a parte do ciclo de status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Ativar/desativar a capacidade de alternar automaticamente entre os status da tarefa ao pressionar um marcador.","Always cycle new tasks":"Sempre ciclar novas tarefas","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"Quando ativado, tarefas rec\xE9m-inseridas ir\xE3o imediatamente para o pr\xF3ximo status. Quando desativado, tarefas rec\xE9m-inseridas com marcadores v\xE1lidos manter\xE3o seu marcador original.","Checkbox Status Cycle and Marks":"Ciclo de Status da Tarefa e Marcadores","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Defina os status da tarefa e seus marcadores correspondentes. A ordem de cima para baixo define a sequ\xEAncia de ciclo.","Add Status":"Adicionar Status","Completed Task Mover":"Mover Tarefas Conclu\xEDdas","Enable completed task mover":"Ativar mover tarefas conclu\xEDdas","Toggle this to enable commands for moving completed tasks to another file.":"Ative para habilitar comandos para mover tarefas conclu\xEDdas para outro arquivo.","Task marker type":"Tipo de marcador de tarefa","Choose what type of marker to add to moved tasks":"Escolha que tipo de marcador adicionar \xE0s tarefas movidas","Version marker text":"Texto do marcador de vers\xE3o","Text to append to tasks when moved (e.g., 'version 1.0')":"Texto a ser anexado \xE0s tarefas quando movidas (ex.: 'vers\xE3o 1.0')","Date marker text":"Texto do marcador de data","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Texto a ser anexado \xE0s tarefas quando movidas (ex.: 'arquivado em 2023-12-31')","Custom marker text":"Texto do marcador personalizado","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:formato}} para formata\xE7\xE3o de data (ex.: {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Tratar tarefas abandonadas como conclu\xEDdas","If enabled, abandoned tasks will be treated as completed.":"Se ativado, tarefas abandonadas ser\xE3o tratadas como conclu\xEDdas.","Complete all moved tasks":"Concluir todas as tarefas movidas","If enabled, all moved tasks will be marked as completed.":"Se ativado, todas as tarefas movidas ser\xE3o marcadas como conclu\xEDdas.","With current file link":"Com link do arquivo atual","A link to the current file will be added to the parent task of the moved tasks.":"Um link para o arquivo atual ser\xE1 adicionado \xE0 tarefa pai das tarefas movidas.","Say Thank You":"Agrade\xE7a",Donate:"Doar","If you like this plugin, consider donating to support continued development:":"Se voc\xEA gosta deste plugin, considere doar para apoiar o desenvolvimento cont\xEDnuo:","Add number to the Progress Bar":"Adicionar n\xFAmero \xE0 Barra de Progresso","Toggle this to allow this plugin to add tasks number to progress bar.":"Ative para permitir que este plugin adicione o n\xFAmero de tarefas \xE0 barra de progresso.","Show percentage":"Mostrar porcentagem","Toggle this to allow this plugin to show percentage in the progress bar.":"Ative para permitir que este plugin mostre a porcentagem na barra de progresso.","Customize progress text":"Personalizar texto de progresso","Toggle this to customize text representation for different progress percentage ranges.":"Ative para personalizar a representa\xE7\xE3o de texto para diferentes intervalos de porcentagem de progresso.","Progress Ranges":"Intervalos de Progresso","Define progress ranges and their corresponding text representations.":"Defina intervalos de progresso e suas representa\xE7\xF5es textuais correspondentes.","Add new range":"Adicionar novo intervalo","Add a new progress percentage range with custom text":"Adicionar um novo intervalo de porcentagem de progresso com texto personalizado","Min percentage (0-100)":"Porcentagem m\xEDnima (0-100)","Max percentage (0-100)":"Porcentagem m\xE1xima (0-100)","Text template (use {{PROGRESS}})":"Modelo de texto (use {{PROGRESS}})","Reset to defaults":"Restaurar padr\xF5es",Reset:"Redefinir","Priority Picker Settings":"Configura\xE7\xF5es do Seletor de Prioridade","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Ative para habilitar o seletor de prioridade suspenso para prioridades em formato de emoji e letra.","Enable priority picker":"Ativar seletor de prioridade","Enable priority keyboard shortcuts":"Ativar atalhos de teclado para prioridade","Toggle to enable keyboard shortcuts for setting task priorities.":"Ative para habilitar atalhos de teclado para definir prioridades de tarefas.","Date picker":"Seletor de Data","Enable date picker":"Ativar seletor de data","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Ative para habilitar o seletor de data para tarefas. Isso adicionar\xE1 um \xEDcone de calend\xE1rio perto de suas tarefas, no qual voc\xEA pode clicar para selecionar uma data.","Date mark":"Marcador de data","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Marcador de emoji para identificar datas. Voc\xEA pode usar m\xFAltiplos emojis separados por v\xEDrgulas.","Quick capture":"Captura r\xE1pida","Enable quick capture":"Ativar captura r\xE1pida","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Ative para habilitar o painel de captura r\xE1pida no estilo Org-mode. Pressione Alt+C para abrir o painel de captura.","Target file":"Arquivo de destino","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"O arquivo onde o texto capturado ser\xE1 salvo. Voc\xEA pode incluir um caminho, ex.: 'pasta/Captura R\xE1pida.md'","Placeholder text":"Texto de espa\xE7o reservado","Placeholder text to display in the capture panel":"Texto de espa\xE7o reservado para exibir no painel de captura","Append to file":"Anexar ao arquivo","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"Se ativado, o texto capturado ser\xE1 anexado ao arquivo de destino. Se desativado, substituir\xE1 o conte\xFAdo do arquivo.","Task Filter":"Filtro de Tarefas","Enable Task Filter":"Ativar Filtro de Tarefas","Toggle this to enable the task filter panel":"Ative para habilitar o painel de filtro de tarefas","Preset Filters":"Filtros Predefinidos","Create and manage preset filters for quick access to commonly used task filters.":"Crie e gerencie filtros predefinidos para acesso r\xE1pido a filtros de tarefas usados comumente.","Edit Filter: ":"Editar Filtro: ","Filter name":"Nome do filtro","Checkbox Status":"Status da Tarefa","Include or exclude tasks based on their status":"Incluir ou excluir tarefas com base em seu status","Include Completed Tasks":"Incluir Tarefas Conclu\xEDdas","Include In Progress Tasks":"Incluir Tarefas em Andamento","Include Abandoned Tasks":"Incluir Tarefas Abandonadas","Include Not Started Tasks":"Incluir Tarefas N\xE3o Iniciadas","Include Planned Tasks":"Incluir Tarefas Planejadas","Related Tasks":"Tarefas Relacionadas","Include parent, child, and sibling tasks in the filter":"Incluir tarefas pai, filha e irm\xE3s no filtro","Include Parent Tasks":"Incluir Tarefas Pai","Include Child Tasks":"Incluir Tarefas Filhas","Include Sibling Tasks":"Incluir Tarefas Irm\xE3s","Advanced Filter":"Filtro Avan\xE7ado","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use opera\xE7\xF5es booleanas: AND, OR, NOT. Exemplo: 'conte\xFAdo do texto AND #tag1'","Filter query":"Consulta de filtro","Filter out tasks":"Ocultar tarefas correspondentes","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"Se ativado, tarefas que correspondem \xE0 consulta ser\xE3o ocultadas; caso contr\xE1rio, ser\xE3o mostradas.",Save:"Salvar",Cancel:"Cancelar","Hide filter panel":"Ocultar painel de filtro","Show filter panel":"Mostrar painel de filtro","Filter Tasks":"Filtrar Tarefas","Preset filters":"Filtros predefinidos","Select a saved filter preset to apply":"Selecione uma predefini\xE7\xE3o de filtro salva para aplicar","Select a preset...":"Selecione uma predefini\xE7\xE3o...",Query:"Consulta","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use opera\xE7\xF5es booleanas: AND, OR, NOT. Exemplo: 'conte\xFAdo do texto AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Suporta >, <, =, >=, <=, != para PRIORITY e DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"Se verdadeiro, tarefas que correspondem \xE0 consulta ser\xE3o ocultadas; caso contr\xE1rio, ser\xE3o mostradas.",Completed:"Conclu\xEDda","In Progress":"Em Andamento",Abandoned:"Abandonada","Not Started":"N\xE3o Iniciada",Planned:"Planejada","Include Related Tasks":"Incluir Tarefas Relacionadas","Parent Tasks":"Tarefas Pai","Child Tasks":"Tarefas Filhas","Sibling Tasks":"Tarefas Irm\xE3s",Apply:"Aplicar","New Preset":"Nova Predefini\xE7\xE3o","Preset saved":"Predefini\xE7\xE3o salva","No changes to save":"Nenhuma altera\xE7\xE3o para salvar",Close:"Fechar","Capture to":"Capturar para",Capture:"Capturar","Capture thoughts, tasks, or ideas...":"Capture pensamentos, tarefas ou ideias...",Tomorrow:"Amanh\xE3","In 2 days":"Em 2 dias","In 3 days":"Em 3 dias","In 5 days":"Em 5 dias","In 1 week":"Em 1 semana","In 10 days":"Em 10 dias","In 2 weeks":"Em 2 semanas","In 1 month":"Em 1 m\xEAs","In 2 months":"Em 2 meses","In 3 months":"Em 3 meses","In 6 months":"Em 6 meses","In 1 year":"Em 1 ano","In 5 years":"Em 5 anos","In 10 years":"Em 10 anos","Highest priority":"Prioridade m\xE1xima","High priority":"Prioridade alta","Medium priority":"Prioridade m\xE9dia","No priority":"Sem prioridade","Low priority":"Prioridade baixa","Lowest priority":"Prioridade m\xEDnima","Priority A":"Prioridade A","Priority B":"Prioridade B","Priority C":"Prioridade C","Task Priority":"Prioridade da Tarefa","Remove Priority":"Remover Prioridade","Cycle task status forward":"Avan\xE7ar status da tarefa","Cycle task status backward":"Retroceder status da tarefa","Remove priority":"Remover prioridade","Move task to another file":"Mover tarefa para outro arquivo","Move all completed subtasks to another file":"Mover todas as sub-tarefas conclu\xEDdas para outro arquivo","Move direct completed subtasks to another file":"Mover sub-tarefas conclu\xEDdas diretas para outro arquivo","Move all subtasks to another file":"Mover todas as sub-tarefas para outro arquivo","Set priority":"Definir prioridade","Toggle quick capture panel":"Alternar painel de captura r\xE1pida","Quick capture (Global)":"Captura r\xE1pida (Global)","Toggle task filter panel":"Alternar painel de filtro de tarefas","Filter Mode":"Modo de Filtro","Choose whether to include or exclude tasks that match the filters":"Escolha se deseja incluir ou excluir tarefas que correspondem aos filtros","Show matching tasks":"Mostrar tarefas correspondentes","Hide matching tasks":"Ocultar tarefas correspondentes","Choose whether to show or hide tasks that match the filters":"Escolha se deseja mostrar ou ocultar tarefas que correspondem aos filtros","Create new file:":"Criar novo arquivo:","Completed tasks moved to":"Tarefas conclu\xEDdas movidas para","Failed to create file:":"Falha ao criar arquivo:","Beginning of file":"In\xEDcio do arquivo","Failed to move tasks:":"Falha ao mover tarefas:","No active file found":"Nenhum arquivo ativo encontrado","Task moved to":"Tarefa movida para","Failed to move task:":"Falha ao mover tarefa:","Nothing to capture":"Nada para capturar","Captured successfully":"Capturado com sucesso","Failed to save:":"Falha ao salvar:","Captured successfully to":"Capturado com sucesso para",Total:"Total",Workflow:"Fluxo de Trabalho","Add as workflow root":"Adicionar como raiz do fluxo de trabalho","Move to stage":"Mover para etapa","Complete stage":"Concluir etapa","Add child task with same stage":"Adicionar tarefa filha com a mesma etapa","Could not open quick capture panel in the current editor":"N\xE3o foi poss\xEDvel abrir o painel de captura r\xE1pida no editor atual","Just started {{PROGRESS}}%":"Rec\xE9m iniciado {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Progredindo {{PROGRESS}}%","Half way {{PROGRESS}}%":"Na metade {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Bom progresso {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Quase l\xE1 {{PROGRESS}}%","Progress bar":"Barra de progresso","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"Voc\xEA pode personalizar a barra de progresso atr\xE1s da tarefa pai (geralmente no final da tarefa). Voc\xEA tamb\xE9m pode personalizar a barra de progresso para a tarefa abaixo do cabe\xE7alho.","Hide progress bars":"Ocultar barras de progresso","Parent task changer":"Modificador de tarefa pai","Change the parent task of the current task.":"Altere a tarefa pai da tarefa atual.","No preset filters created yet. Click 'Add New Preset' to create one.":"Nenhum filtro predefinido criado ainda. Clique em 'Adicionar Nova Predefini\xE7\xE3o' para criar um.","Configure task workflows for project and process management":"Configurar fluxos de trabalho de tarefas para gerenciamento de projetos e processos","Enable workflow":"Ativar fluxo de trabalho","Toggle to enable the workflow system for tasks":"Ative para habilitar o sistema de fluxo de trabalho para tarefas","Auto-add timestamp":"Adicionar carimbo de tempo automaticamente","Automatically add a timestamp to the task when it is created":"Adicionar automaticamente um carimbo de tempo \xE0 tarefa quando ela \xE9 criada","Timestamp format:":"Formato do carimbo de tempo:","Timestamp format":"Formato do carimbo de tempo","Remove timestamp when moving to next stage":"Remover carimbo de tempo ao mover para a pr\xF3xima etapa","Remove the timestamp from the current task when moving to the next stage":"Remover o carimbo de tempo da tarefa atual ao mover para a pr\xF3xima etapa","Calculate spent time":"Calcular tempo gasto","Calculate and display the time spent on the task when moving to the next stage":"Calcular e exibir o tempo gasto na tarefa ao mover para a pr\xF3xima etapa","Format for spent time:":"Formato para tempo gasto:","Calculate spent time when move to next stage.":"Calcular tempo gasto ao mover para a pr\xF3xima etapa.","Spent time format":"Formato do tempo gasto","Calculate full spent time":"Calcular tempo gasto total","Calculate the full spent time from the start of the task to the last stage":"Calcular o tempo gasto total desde o in\xEDcio da tarefa at\xE9 a \xFAltima etapa","Auto remove last stage marker":"Remover automaticamente marcador da \xFAltima etapa","Automatically remove the last stage marker when a task is completed":"Remover automaticamente o marcador da \xFAltima etapa quando uma tarefa \xE9 conclu\xEDda","Auto-add next task":"Adicionar automaticamente pr\xF3xima tarefa","Automatically create a new task with the next stage when completing a task":"Criar automaticamente uma nova tarefa com a pr\xF3xima etapa ao concluir uma tarefa","Workflow definitions":"Defini\xE7\xF5es de fluxo de trabalho","Configure workflow templates for different types of processes":"Configure modelos de fluxo de trabalho para diferentes tipos de processos","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"Nenhuma defini\xE7\xE3o de fluxo de trabalho criada ainda. Clique em 'Adicionar Novo Fluxo de Trabalho' para criar uma.","Edit workflow":"Editar fluxo de trabalho","Remove workflow":"Remover fluxo de trabalho","Delete workflow":"Excluir fluxo de trabalho",Delete:"Excluir","Add New Workflow":"Adicionar Novo Fluxo de Trabalho","New Workflow":"Novo Fluxo de Trabalho","Create New Workflow":"Criar Novo Fluxo de Trabalho","Workflow name":"Nome do fluxo de trabalho","A descriptive name for the workflow":"Um nome descritivo para o fluxo de trabalho","Workflow ID":"ID do fluxo de trabalho","A unique identifier for the workflow (used in tags)":"Um identificador \xFAnico para o fluxo de trabalho (usado em tags)",Description:"Descri\xE7\xE3o","Optional description for the workflow":"Descri\xE7\xE3o opcional para o fluxo de trabalho","Describe the purpose and use of this workflow...":"Descreva o prop\xF3sito e uso deste fluxo de trabalho...","Workflow Stages":"Etapas do Fluxo de Trabalho","No stages defined yet. Add a stage to get started.":"Nenhuma etapa definida ainda. Adicione uma etapa para come\xE7ar.",Edit:"Editar","Move up":"Mover para cima","Move down":"Mover para baixo","Sub-stage":"Subetapa","Sub-stage name":"Nome da subetapa","Sub-stage ID":"ID da subetapa","Next: ":"Pr\xF3xima: ","Add Sub-stage":"Adicionar Subetapa","New Sub-stage":"Nova Subetapa","Edit Stage":"Editar Etapa","Stage name":"Nome da etapa","A descriptive name for this workflow stage":"Um nome descritivo para esta etapa do fluxo de trabalho","Stage ID":"ID da etapa","A unique identifier for the stage (used in tags)":"Um identificador \xFAnico para a etapa (usado em tags)","Stage type":"Tipo de etapa","The type of this workflow stage":"O tipo desta etapa do fluxo de trabalho","Linear (sequential)":"Linear (sequencial)","Cycle (repeatable)":"Ciclo (repet\xEDvel)","Terminal (end stage)":"Terminal (etapa final)","Next stage":"Pr\xF3xima etapa","The stage to proceed to after this one":"A etapa para a qual prosseguir ap\xF3s esta","Sub-stages":"Subetapas","Define cycle sub-stages (optional)":"Definir subetapas do ciclo (opcional)","No sub-stages defined yet.":"Nenhuma subetapa definida ainda.","Can proceed to":"Pode prosseguir para","Additional stages that can follow this one (for right-click menu)":"Etapas adicionais que podem seguir esta (para o menu de clique com o bot\xE3o direito)","No additional destination stages defined.":"Nenhuma etapa de destino adicional definida.",Remove:"Remover",Add:"Adicionar","Name and ID are required.":"Nome e ID s\xE3o obrigat\xF3rios.","End of file":"Fim do arquivo","Include in cycle":"Incluir no ciclo",Preset:"Predefini\xE7\xE3o","Preset name":"Nome da predefini\xE7\xE3o","Edit Filter":"Editar Filtro","Add New Preset":"Adicionar Nova Predefini\xE7\xE3o","New Filter":"Novo Filtro","Reset to Default Presets":"Restaurar Predefini\xE7\xF5es Padr\xE3o","This will replace all your current presets with the default set. Are you sure?":"Isso substituir\xE1 todas as suas predefini\xE7\xF5es atuais pelo conjunto padr\xE3o. Tem certeza?","Edit Workflow":"Editar Fluxo de Trabalho",General:"Geral","Progress Bar":"Barra de Progresso","Task Mover":"Mover Tarefas","Quick Capture":"Captura R\xE1pida","Date & Priority":"Data e Prioridade",About:"Sobre","Count sub children of current Task":"Contar sub-tarefas da Tarefa atual","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Ative para permitir que este plugin conte sub-tarefas ao gerar a barra de progresso.","Configure task status settings":"Configurar defini\xE7\xF5es de status da tarefa","Configure which task markers to count or exclude":"Configurar quais marcadores de tarefa contar ou excluir","Task status cycle and marks":"Ciclo de status da tarefa e marcadores","About Task Genius":"Sobre o Task Genius",Version:"Vers\xE3o",Documentation:"Documenta\xE7\xE3o","View the documentation for this plugin":"Veja a documenta\xE7\xE3o para este plugin","Open Documentation":"Abrir Documenta\xE7\xE3o","Incomplete tasks":"Tarefas incompletas","In progress tasks":"Tarefas em andamento","Completed tasks":"Tarefas conclu\xEDdas","All tasks":"Todas as tarefas","After heading":"Ap\xF3s o cabe\xE7alho","End of section":"Fim da se\xE7\xE3o","Enable text mark in source mode":"Ativar marcador de texto no modo de edi\xE7\xE3o","Make the text mark in source mode follow the task status cycle when clicked.":"Fazer com que o marcador de texto no modo de edi\xE7\xE3o siga o ciclo de status da tarefa ao ser clicado.","Status name":"Nome do status","Progress display mode":"Modo de exibi\xE7\xE3o do progresso","Choose how to display task progress":"Escolha como exibir o progresso da tarefa","No progress indicators":"Sem indicadores de progresso","Graphical progress bar":"Barra de progresso gr\xE1fica","Text progress indicator":"Indicador de progresso textual","Both graphical and text":"Gr\xE1fico e textual","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Ative para permitir que este plugin conte sub-tarefas ao gerar a barra de progresso.","Progress format":"Formato do progresso","Choose how to display the task progress":"Escolha como exibir o progresso da tarefa","Percentage (75%)":"Porcentagem (75%)","Bracketed percentage ([75%])":"Porcentagem entre colchetes ([75%])","Fraction (3/4)":"Fra\xE7\xE3o (3/4)","Bracketed fraction ([3/4])":"Fra\xE7\xE3o entre colchetes ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detalhado ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Formato personalizado","Range-based text":"Texto baseado em intervalo","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use marcadores como {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Visualiza\xE7\xE3o:","Available placeholders":"Marcadores dispon\xEDveis","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Marcadores dispon\xEDveis: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Exemplos de express\xE3o","Examples of advanced formats using expressions":"Exemplos de formatos avan\xE7ados usando express\xF5es","Text Progress Bar":"Barra de Progresso Textual","Emoji Progress Bar":"Barra de Progresso com Emoji","Color-coded Status":"Status Codificado por Cores","Status with Icons":"Status com \xCDcones",Preview:"Visualizar",Use:"Usar","Toggle this to show percentage instead of completed/total count.":"Ative para mostrar porcentagem em vez da contagem de conclu\xEDdas/total.","Customize progress ranges":"Personalizar intervalos de progresso","Toggle this to customize the text for different progress ranges.":"Ative para personalizar o texto para diferentes intervalos de progresso.","Apply Theme":"Aplicar Tema","Back to main settings":"Voltar para configura\xE7\xF5es principais","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Suporte a express\xF5es no formato, como usar data.percentages para obter a porcentagem de tarefas conclu\xEDdas. E usar matem\xE1tica ou at\xE9 opera\xE7\xF5es de repeti\xE7\xE3o para obter o resultado.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Suporte a express\xF5es no formato, como usar data.percentages para obter a porcentagem de tarefas conclu\xEDdas. E usar matem\xE1tica ou at\xE9 fun\xE7\xF5es de repeti\xE7\xE3o para obter o resultado.","Target File:":"Arquivo de Destino:","Task Properties":"Propriedades da Tarefa","Start Date":"Data de In\xEDcio","Due Date":"Data de Vencimento","Scheduled Date":"Data Agendada",Priority:"Prioridade",None:"Nenhuma",Highest:"M\xE1xima",High:"Alta",Medium:"M\xE9dia",Low:"Baixa",Lowest:"M\xEDnima",Project:"Projeto","Project name":"Nome do projeto",Context:"Contexto",Recurrence:"Recorr\xEAncia","e.g., every day, every week":"ex.: todo dia, toda semana","Task Content":"Conte\xFAdo da Tarefa","Task Details":"Detalhes da Tarefa",File:"Arquivo","Edit in File":"Editar no Arquivo","Mark Incomplete":"Marcar como Incompleta","Mark Complete":"Marcar como Conclu\xEDda","Task Title":"T\xEDtulo da Tarefa",Tags:"Tags","e.g. every day, every 2 weeks":"ex.: todo dia, a cada 2 semanas",Forecast:"Previs\xE3o","0 actions, 0 projects":"0 a\xE7\xF5es, 0 projetos","Toggle list/tree view":"Alternar visualiza\xE7\xE3o em lista/\xE1rvore","Focusing on Work":"Focando no Trabalho",Unfocus:"Desfocar","Past Due":"Atrasada",Today:"Hoje",Future:"Futuro",actions:"a\xE7\xF5es",project:"projeto","Coming Up":"Em breve",Task:"Tarefa",Tasks:"Tarefas","No upcoming tasks":"Nenhuma tarefa futura","No tasks scheduled":"Nenhuma tarefa agendada","0 tasks":"0 tarefas","Filter tasks...":"Filtrar tarefas...",Projects:"Projetos","Toggle multi-select":"Alternar multissele\xE7\xE3o","No projects found":"Nenhum projeto encontrado","projects selected":"projetos selecionados",tasks:"tarefas","No tasks in the selected projects":"Nenhuma tarefa nos projetos selecionados","Select a project to see related tasks":"Selecione um projeto para ver tarefas relacionadas","Configure Review for":"Configurar Revis\xE3o para","Review Frequency":"Frequ\xEAncia de Revis\xE3o","How often should this project be reviewed":"Com que frequ\xEAncia este projeto deve ser revisado","Custom...":"Personalizado...","e.g., every 3 months":"ex.: a cada 3 meses","Last Reviewed":"\xDAltima Revis\xE3o","Please specify a review frequency":"Por favor, especifique uma frequ\xEAncia de revis\xE3o","Review schedule updated for":"Agenda de revis\xE3o atualizada para","Review Projects":"Revisar Projetos","Select a project to review its tasks.":"Selecione um projeto para revisar suas tarefas.","Configured for Review":"Configurado para Revis\xE3o","Not Configured":"N\xE3o Configurado","No projects available.":"Nenhum projeto dispon\xEDvel.","Select a project to review.":"Selecione um projeto para revisar.","Show all tasks":"Mostrar todas as tarefas","Showing all tasks, including completed tasks from previous reviews.":"Mostrando todas as tarefas, incluindo tarefas conclu\xEDdas de revis\xF5es anteriores.","Show only new and in-progress tasks":"Mostrar apenas tarefas novas e em andamento","No tasks found for this project.":"Nenhuma tarefa encontrada para este projeto.","Review every":"Revisar a cada",never:"nunca","Last reviewed":"\xDAltima revis\xE3o","Mark as Reviewed":"Marcar como Revisado","No review schedule configured for this project":"Nenhuma agenda de revis\xE3o configurada para este projeto","Configure Review Schedule":"Configurar Agenda de Revis\xE3o","Project Review":"Revis\xE3o de Projeto","Select a project from the left sidebar to review its tasks.":"Selecione um projeto na barra lateral esquerda para revisar suas tarefas.",Inbox:"Caixa de Entrada",Flagged:"Sinalizadas",Review:"Revis\xE3o","tags selected":"tags selecionadas","No tasks with the selected tags":"Nenhuma tarefa com as tags selecionadas","Select a tag to see related tasks":"Selecione uma tag para ver tarefas relacionadas","Open Task Genius view":"Abrir visualiza\xE7\xE3o Task Genius","Task capture with metadata":"Captura de tarefa com metadados","Refresh task index":"Atualizar \xEDndice de tarefas","Refreshing task index...":"Atualizando \xEDndice de tarefas...","Task index refreshed":"\xCDndice de tarefas atualizado","Failed to refresh task index":"Falha ao atualizar \xEDndice de tarefas","Force reindex all tasks":"For\xE7ar reindexa\xE7\xE3o de todas as tarefas","Clearing task cache and rebuilding index...":"Limpando cache de tarefas e reconstruindo \xEDndice...","Task index completely rebuilt":"\xCDndice de tarefas completamente reconstru\xEDdo","Failed to force reindex tasks":"Falha ao for\xE7ar reindexa\xE7\xE3o de tarefas","Task Genius View":"Visualiza\xE7\xE3o Task Genius","Toggle Sidebar":"Alternar Barra Lateral",Details:"Detalhes",View:"Visualiza\xE7\xE3o","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"A visualiza\xE7\xE3o Task Genius \xE9 uma visualiza\xE7\xE3o abrangente que permite gerenciar suas tarefas de forma mais eficiente.","Enable task genius view":"Ativar visualiza\xE7\xE3o Task Genius","Select a task to view details":"Selecione uma tarefa para ver detalhes",Status:"Status","Comma separated":"Separado por v\xEDrgula",Focus:"Foco","Loading more...":"Carregando mais...",projects:"projetos","No tasks for this section.":"Nenhuma tarefa para esta se\xE7\xE3o.","No tasks found.":"Nenhuma tarefa encontrada.",Complete:"Concluir","Switch status":"Mudar status","Rebuild index":"Reconstruir \xEDndice",Rebuild:"Reconstruir","0 tasks, 0 projects":"0 tarefas, 0 projetos","New Custom View":"Nova Visualiza\xE7\xE3o Personalizada","Create Custom View":"Criar Visualiza\xE7\xE3o Personalizada","Edit View: ":"Editar Visualiza\xE7\xE3o: ","View Name":"Nome da Visualiza\xE7\xE3o","My Custom Task View":"Minha Visualiza\xE7\xE3o de Tarefas Personalizada","Icon Name":"Nome do \xCDcone","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Insira qualquer nome de \xEDcone Lucide (ex.: list-checks, filter, inbox)","Filter Rules":"Regras de Filtro","Hide Completed and Abandoned Tasks":"Ocultar Tarefas Conclu\xEDdas e Abandonadas","Hide completed and abandoned tasks in this view.":"Ocultar tarefas conclu\xEDdas e abandonadas nesta visualiza\xE7\xE3o.","Text Contains":"Texto Cont\xE9m","Filter tasks whose content includes this text (case-insensitive).":"Filtrar tarefas cujo conte\xFAdo inclua este texto (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Tags Include":"Tags Incluem","Task must include ALL these tags (comma-separated).":"A tarefa deve incluir TODAS estas tags (separadas por v\xEDrgula).","Tags Exclude":"Tags Excluem","Task must NOT include ANY of these tags (comma-separated).":"A tarefa N\xC3O deve incluir NENHUMA destas tags (separadas por v\xEDrgula).","Project Is":"Projeto \xC9","Task must belong to this project (exact match).":"A tarefa deve pertencer a este projeto (correspond\xEAncia exata).","Priority Is":"Prioridade \xC9","Task must have this priority (e.g., 1, 2, 3).":"A tarefa deve ter esta prioridade (ex.: 1, 2, 3).","Status Include":"Status Inclui","Task status must be one of these (comma-separated markers, e.g., /,>).":"O status da tarefa deve ser um destes (marcadores separados por v\xEDrgula, ex.: /,>).","Status Exclude":"Status Exclui","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"O status da tarefa N\xC3O deve ser um destes (marcadores separados por v\xEDrgula, ex.: -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use AAAA-MM-DD ou termos relativos como 'hoje', 'amanh\xE3', 'pr\xF3xima semana', 'm\xEAs passado'.","Due Date Is":"Data de Vencimento \xC9","Start Date Is":"Data de In\xEDcio \xC9","Scheduled Date Is":"Data Agendada \xC9","Path Includes":"Caminho Inclui","Task must contain this path (case-insensitive).":"A tarefa deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Path Excludes":"Caminho Exclui","Task must NOT contain this path (case-insensitive).":"A tarefa N\xC3O deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Unnamed View":"Visualiza\xE7\xE3o Sem Nome","View configuration saved.":"Configura\xE7\xE3o da visualiza\xE7\xE3o salva.","Hide Details":"Ocultar Detalhes","Show Details":"Mostrar Detalhes","View Config":"Config. da Visualiza\xE7\xE3o","View Configuration":"Configura\xE7\xE3o da Visualiza\xE7\xE3o","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure as visualiza\xE7\xF5es da barra lateral do Task Genius, visibilidade, ordem e crie visualiza\xE7\xF5es personalizadas.","Manage Views":"Gerenciar Visualiza\xE7\xF5es","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure as visualiza\xE7\xF5es da barra lateral, ordem, visibilidade e oculte/mostre tarefas conclu\xEDdas por visualiza\xE7\xE3o.","Show in sidebar":"Mostrar na barra lateral","Edit View":"Editar Visualiza\xE7\xE3o","Move Up":"Mover Para Cima","Move Down":"Mover Para Baixo","Delete View":"Excluir Visualiza\xE7\xE3o","Add Custom View":"Adicionar Visualiza\xE7\xE3o Personalizada","Error: View ID already exists.":"Erro: ID da visualiza\xE7\xE3o j\xE1 existe.",Events:"Eventos",Plan:"Plano",Year:"Ano",Month:"M\xEAs",Week:"Semana",Day:"Dia",Agenda:"Agenda","Back to categories":"Voltar para categorias","No matching options found":"Nenhuma op\xE7\xE3o correspondente encontrada","No matching filters found":"Nenhum filtro correspondente encontrado",Tag:"Tag","File Path":"Caminho do Arquivo","Add filter":"Adicionar filtro","Clear all":"Limpar tudo","Add Card":"Adicionar Cart\xE3o","First Day of Week":"Primeiro Dia da Semana","Overrides the locale default for calendar views.":"Substitui o padr\xE3o da localidade para visualiza\xE7\xF5es de calend\xE1rio.","Show checkbox":"Mostrar caixa de sele\xE7\xE3o","Show a checkbox for each task in the kanban view.":"Mostrar uma caixa de sele\xE7\xE3o para cada tarefa na visualiza\xE7\xE3o kanban.","Locale Default":"Padr\xE3o da Localidade","Use custom goal for progress bar":"Usar meta personalizada para barra de progresso","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Ative para permitir que este plugin encontre o padr\xE3o g::n\xFAmero como meta da tarefa pai.","Prefer metadata format of task":"Preferir formato de metadados da tarefa","You can choose dataview format or tasks format, that will influence both index and save format.":"Voc\xEA pode escolher o formato dataview ou o formato tasks, o que influenciar\xE1 tanto o \xEDndice quanto o formato de salvamento.","Open in new tab":"Abrir em nova aba","Open settings":"Abrir configura\xE7\xF5es","Hide in sidebar":"Ocultar na barra lateral","No items found":"Nenhum item encontrado","High Priority":"Prioridade Alta","Medium Priority":"Prioridade M\xE9dia","Low Priority":"Prioridade Baixa","No tasks in the selected items":"Nenhuma tarefa nos itens selecionados","View Type":"Tipo de Visualiza\xE7\xE3o","Select the type of view to create":"Selecione o tipo de visualiza\xE7\xE3o a criar","Standard View":"Visualiza\xE7\xE3o Padr\xE3o","Two Column View":"Visualiza\xE7\xE3o em Duas Colunas",Items:"Itens","selected items":"itens selecionados","No items selected":"Nenhum item selecionado","Two Column View Settings":"Configura\xE7\xF5es da Visualiza\xE7\xE3o em Duas Colunas","Group by Task Property":"Agrupar por Propriedade da Tarefa","Select which task property to use for left column grouping":"Selecione qual propriedade da tarefa usar para agrupamento na coluna esquerda",Priorities:"Prioridades",Contexts:"Contextos","Due Dates":"Datas de Vencimento","Scheduled Dates":"Datas Agendadas","Start Dates":"Datas de In\xEDcio",Files:"Arquivos","Left Column Title":"T\xEDtulo da Coluna Esquerda","Title for the left column (items list)":"T\xEDtulo para a coluna esquerda (lista de itens)","Right Column Title":"T\xEDtulo da Coluna Direita","Default title for the right column (tasks list)":"T\xEDtulo padr\xE3o para a coluna direita (lista de tarefas)","Multi-select Text":"Texto da Multissele\xE7\xE3o","Text to show when multiple items are selected":"Texto a ser mostrado quando m\xFAltiplos itens s\xE3o selecionados","Empty State Text":"Texto de Estado Vazio","Text to show when no items are selected":"Texto a ser mostrado quando nenhum item \xE9 selecionado","Filter Blanks":"Filtrar Itens em Branco","Filter out blank tasks in this view.":"Filtrar tarefas em branco nesta visualiza\xE7\xE3o.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"A tarefa deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas). Separe m\xFAltiplos caminhos com v\xEDrgulas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"A tarefa N\xC3O deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas). Separe m\xFAltiplos caminhos com v\xEDrgulas.","You have unsaved changes. Save before closing?":"Voc\xEA tem altera\xE7\xF5es n\xE3o salvas. Salvar antes de fechar?",Rotate:"Girar","Are you sure you want to force reindex all tasks?":"Tem certeza de que deseja for\xE7ar a reindexa\xE7\xE3o de todas as tarefas?","Enable progress bar in reading mode":"Ativar barra de progresso no modo de leitura","Toggle this to allow this plugin to show progress bars in reading mode.":"Ative para permitir que este plugin mostre barras de progresso no modo de leitura.",Range:"Intervalo","as a placeholder for the percentage value":"como um marcador para o valor da porcentagem","Template text with":"Texto do modelo com",placeholder:"marcador de posi\xE7\xE3o",Reindex:"Reindexar","From now":"A partir de agora","Complete workflow":"Concluir fluxo de trabalho","Move to":"Mover para",Settings:"Configura\xE7\xF5es","Just started":"Rec\xE9m iniciado","Making progress":"Progredindo","Half way":"Na metade","Good progress":"Bom progresso","Almost there":"Quase l\xE1","archived on":"arquivado em",moved:"movido","Capture your thoughts...":"Capture seus pensamentos...","Project Workflow":"Fluxo de Trabalho do Projeto","Standard project management workflow":"Fluxo de trabalho padr\xE3o de gerenciamento de projetos",Planning:"Planejamento",Development:"Desenvolvimento",Testing:"Teste",Cancelled:"Cancelada",Habit:"H\xE1bito","Drink a cup of good tea":"Beber uma x\xEDcara de um bom ch\xE1","Watch an episode of a favorite series":"Assistir a um epis\xF3dio de uma s\xE9rie favorita","Play a game":"Jogar um jogo","Eat a piece of chocolate":"Comer um peda\xE7o de chocolate",common:"comum",rare:"raro",legendary:"lend\xE1rio","No Habits Yet":"Nenhum H\xE1bito Ainda","Click the open habit button to create a new habit.":"Clique no bot\xE3o abrir h\xE1bito para criar um novo h\xE1bito.","Please enter details":"Por favor, insira os detalhes","Goal reached":"Meta alcan\xE7ada","Exceeded goal":"Meta excedida",Active:"Ativo",today:"hoje",Inactive:"Inativo","All Done!":"Tudo Conclu\xEDdo!","Select event...":"Selecionar evento...","Create new habit":"Criar novo h\xE1bito","Edit habit":"Editar h\xE1bito","Habit type":"Tipo de h\xE1bito","Daily habit":"H\xE1bito di\xE1rio","Simple daily check-in habit":"H\xE1bito simples de check-in di\xE1rio","Count habit":"H\xE1bito de contagem","Record numeric values, e.g., how many cups of water":"Registrar valores num\xE9ricos, ex.: quantos copos de \xE1gua","Mapping habit":"H\xE1bito de mapeamento","Use different values to map, e.g., emotion tracking":"Usar valores diferentes para mapear, ex.: acompanhamento de emo\xE7\xF5es","Scheduled habit":"H\xE1bito agendado","Habit with multiple events":"H\xE1bito com m\xFAltiplos eventos","Habit name":"Nome do h\xE1bito","Display name of the habit":"Nome de exibi\xE7\xE3o do h\xE1bito","Optional habit description":"Descri\xE7\xE3o opcional do h\xE1bito",Icon:"\xCDcone","Please enter a habit name":"Por favor, insira um nome para o h\xE1bito","Property name":"Nome da propriedade","The property name of the daily note front matter":"O nome da propriedade no front matter da nota di\xE1ria","Completion text":"Texto de conclus\xE3o","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Opcional) Texto espec\xEDfico representando conclus\xE3o, deixe em branco para que qualquer valor n\xE3o vazio seja considerado conclu\xEDdo","The property name in daily note front matter to store count values":"O nome da propriedade no front matter da nota di\xE1ria para armazenar valores de contagem","Minimum value":"Valor m\xEDnimo","(Optional) Minimum value for the count":"(Opcional) Valor m\xEDnimo para a contagem","Maximum value":"Valor m\xE1ximo","(Optional) Maximum value for the count":"(Opcional) Valor m\xE1ximo para a contagem",Unit:"Unidade","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Opcional) Unidade para a contagem, como 'copos', 'vezes', etc.","Notice threshold":"Limite de aviso","(Optional) Trigger a notification when this value is reached":"(Opcional) Acionar uma notifica\xE7\xE3o quando este valor for atingido","The property name in daily note front matter to store mapping values":"O nome da propriedade no front matter da nota di\xE1ria para armazenar valores de mapeamento","Value mapping":"Mapeamento de valor","Define mappings from numeric values to display text":"Definir mapeamentos de valores num\xE9ricos para texto de exibi\xE7\xE3o","Add new mapping":"Adicionar novo mapeamento","Scheduled events":"Eventos agendados","Add multiple events that need to be completed":"Adicionar m\xFAltiplos eventos que precisam ser conclu\xEDdos","Event name":"Nome do evento","Event details":"Detalhes do evento","Add new event":"Adicionar novo evento","Please enter a property name":"Por favor, insira um nome de propriedade","Please add at least one mapping value":"Por favor, adicione pelo menos um valor de mapeamento","Mapping key must be a number":"A chave de mapeamento deve ser um n\xFAmero","Please enter text for all mapping values":"Por favor, insira texto para todos os valores de mapeamento","Please add at least one event":"Por favor, adicione pelo menos um evento","Event name cannot be empty":"O nome do evento n\xE3o pode estar vazio","Add new habit":"Adicionar novo h\xE1bito","No habits yet":"Nenhum h\xE1bito ainda","Click the button above to add your first habit":"Clique no bot\xE3o acima para adicionar seu primeiro h\xE1bito","Habit updated":"H\xE1bito atualizado","Habit added":"H\xE1bito adicionado","Delete habit":"Excluir h\xE1bito","This action cannot be undone.":"Esta a\xE7\xE3o n\xE3o pode ser desfeita.","Habit deleted":"H\xE1bito exclu\xEDdo","You've Earned a Reward!":"Voc\xEA Ganhou uma Recompensa!","Your reward:":"Sua recompensa:","Image not found:":"Imagem n\xE3o encontrada:","Claim Reward":"Resgatar Recompensa",Skip:"Pular",Reward:"Recompensa","View & Index Configuration":"Configura\xE7\xE3o de Visualiza\xE7\xE3o e \xCDndice","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Ativar a visualiza\xE7\xE3o Task Genius tamb\xE9m ativar\xE1 o indexador Task Genius, que fornecer\xE1 os resultados da visualiza\xE7\xE3o Task Genius de todo o cofre.","Use daily note path as date":"Usar caminho da nota di\xE1ria como data","If enabled, the daily note path will be used as the date for tasks.":"Se ativado, o caminho da nota di\xE1ria ser\xE1 usado como data para as tarefas.","Task Genius will use moment.js and also this format to parse the daily note path.":"O Task Genius usar\xE1 moment.js e tamb\xE9m este formato para analisar o caminho da nota di\xE1ria.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"Voc\xEA precisa definir `yyyy` em vez de `YYYY` na string de formato. E `dd` em vez de `DD`.","Daily note format":"Formato da nota di\xE1ria","Daily note path":"Caminho da nota di\xE1ria","Select the folder that contains the daily note.":"Selecione a pasta que cont\xE9m a nota di\xE1ria.","Use as date type":"Usar como tipo de data","You can choose due, start, or scheduled as the date type for tasks.":"Voc\xEA pode escolher vencimento, in\xEDcio ou agendada como o tipo de data para as tarefas.",Due:"Vencimento",Start:"In\xEDcio",Scheduled:"Agendada",Rewards:"Recompensas","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure recompensas por concluir tarefas. Defina itens, suas chances de ocorr\xEAncia e condi\xE7\xF5es.","Enable Rewards":"Ativar Recompensas","Toggle to enable or disable the reward system.":"Ative para habilitar ou desabilitar o sistema de recompensas.","Occurrence Levels":"N\xEDveis de Ocorr\xEAncia","Define different levels of reward rarity and their probability.":"Defina diferentes n\xEDveis de raridade de recompensa e sua probabilidade.","Chance must be between 0 and 100.":"A chance deve estar entre 0 e 100.","Level Name (e.g., common)":"Nome do N\xEDvel (ex.: comum)","Chance (%)":"Chance (%)","Delete Level":"Excluir N\xEDvel","Add Occurrence Level":"Adicionar N\xEDvel de Ocorr\xEAncia","New Level":"Novo N\xEDvel","Reward Items":"Itens de Recompensa","Manage the specific rewards that can be obtained.":"Gerencie as recompensas espec\xEDficas que podem ser obtidas.","No levels defined":"Nenhum n\xEDvel definido","Reward Name/Text":"Nome/Texto da Recompensa","Inventory (-1 for \u221E)":"Invent\xE1rio (-1 para \u221E)","Invalid inventory number.":"N\xFAmero de invent\xE1rio inv\xE1lido.","Condition (e.g., #tag AND project)":"Condi\xE7\xE3o (ex.: #tag E projeto)","Image URL (optional)":"URL da Imagem (opcional)","Delete Reward Item":"Excluir Item de Recompensa","No reward items defined yet.":"Nenhum item de recompensa definido ainda.","Add Reward Item":"Adicionar Item de Recompensa","New Reward":"Nova Recompensa","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure as defini\xE7\xF5es de h\xE1bitos, incluindo adicionar novos h\xE1bitos, editar h\xE1bitos existentes e gerenciar a conclus\xE3o de h\xE1bitos.","Enable habits":"Ativar h\xE1bitos","Task sorting is disabled or no sort criteria are defined in settings.":"A ordena\xE7\xE3o de tarefas est\xE1 desativada ou nenhum crit\xE9rio de ordena\xE7\xE3o est\xE1 definido nas configura\xE7\xF5es.","e.g. #tag1, #tag2, #tag3":"ex.: #tag1, #tag2, #tag3",Overdue:"Atrasadas","No tasks found for this tag.":"Nenhuma tarefa encontrada para esta tag.","New custom view":"Nova visualiza\xE7\xE3o personalizada","Create custom view":"Criar visualiza\xE7\xE3o personalizada","Edit view: ":"Editar visualiza\xE7\xE3o: ","Icon name":"Nome do \xEDcone","First day of week":"Primeiro dia da semana","Overrides the locale default for forecast views.":"Substitui o padr\xE3o da localidade para visualiza\xE7\xF5es de previs\xE3o.","View type":"Tipo de visualiza\xE7\xE3o","Standard view":"Visualiza\xE7\xE3o padr\xE3o","Two column view":"Visualiza\xE7\xE3o em duas colunas","Two column view settings":"Configura\xE7\xF5es da visualiza\xE7\xE3o em duas colunas","Group by task property":"Agrupar por propriedade da tarefa","Left column title":"T\xEDtulo da coluna esquerda","Right column title":"T\xEDtulo da coluna direita","Empty state text":"Texto de estado vazio","Hide completed and abandoned tasks":"Ocultar tarefas conclu\xEDdas e abandonadas","Filter blanks":"Filtrar itens em branco","Text contains":"Texto cont\xE9m","Tags include":"Tags incluem","Tags exclude":"Tags excluem","Project is":"Projeto \xE9","Priority is":"Prioridade \xE9","Status include":"Status inclui","Status exclude":"Status exclui","Due date is":"Data de vencimento \xE9","Start date is":"Data de in\xEDcio \xE9","Scheduled date is":"Data agendada \xE9","Path includes":"Caminho inclui","Path excludes":"Caminho exclui","Sort Criteria":"Crit\xE9rios de Ordena\xE7\xE3o","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Defina a ordem em que as tarefas devem ser ordenadas. Os crit\xE9rios s\xE3o aplicados sequencialmente.","No sort criteria defined. Add criteria below.":"Nenhum crit\xE9rio de ordena\xE7\xE3o definido. Adicione crit\xE9rios abaixo.",Content:"Conte\xFAdo",Ascending:"Ascendente",Descending:"Descendente","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascendente: Alta -> Baixa -> Nenhuma. Descendente: Nenhuma -> Baixa -> Alta","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascendente: Mais Cedo -> Mais Tarde -> Nenhuma. Descendente: Nenhuma -> Mais Tarde -> Mais Cedo","Ascending respects status order (Overdue first). Descending reverses it.":"Ascendente respeita a ordem do status (Atrasadas primeiro). Descendente a inverte.","Ascending: A-Z. Descending: Z-A":"Ascendente: A-Z. Descendente: Z-A","Remove Criterion":"Remover Crit\xE9rio","Add Sort Criterion":"Adicionar Crit\xE9rio de Ordena\xE7\xE3o","Reset to Defaults":"Restaurar Padr\xF5es","Has due date":"Possui data de vencimento","Has date":"Possui data","No date":"Sem data",Any:"Qualquer","Has start date":"Possui data de in\xEDcio","Has scheduled date":"Possui data agendada","Has created date":"Possui data de cria\xE7\xE3o","Has completed date":"Possui data de conclus\xE3o","Only show tasks that match the completed date.":"Mostrar apenas tarefas que correspondem \xE0 data de conclus\xE3o.","Has recurrence":"Possui recorr\xEAncia","Has property":"Possui propriedade","No property":"Sem propriedade","Unsaved Changes":"Altera\xE7\xF5es N\xE3o Salvas","Sort Tasks in Section":"Ordenar Tarefas na Se\xE7\xE3o","Tasks sorted (using settings). Change application needs refinement.":"Tarefas ordenadas (usando configura\xE7\xF5es). A aplica\xE7\xE3o da altera\xE7\xE3o precisa de refinamento.","Sort Tasks in Entire Document":"Ordenar Tarefas no Documento Inteiro","Entire document sorted (using settings).":"Documento inteiro ordenado (usando configura\xE7\xF5es).","Tasks already sorted or no tasks found.":"Tarefas j\xE1 ordenadas ou nenhuma tarefa encontrada.","Task Handler":"Manipulador de Tarefas","Show progress bars based on heading":"Mostrar barras de progresso com base no cabe\xE7alho","Toggle this to enable showing progress bars based on heading.":"Ative para habilitar a exibi\xE7\xE3o de barras de progresso com base no cabe\xE7alho.","# heading":"# cabe\xE7alho","Task Sorting":"Ordena\xE7\xE3o de Tarefas","Configure how tasks are sorted in the document.":"Configure como as tarefas s\xE3o ordenadas no documento.","Enable Task Sorting":"Ativar Ordena\xE7\xE3o de Tarefas","Toggle this to enable commands for sorting tasks.":"Ative para habilitar comandos para ordenar tarefas.","Use relative time for date":"Usar tempo relativo para data","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Usar tempo relativo para data no item da lista de tarefas, ex.: 'ontem', 'hoje', 'amanh\xE3', 'em 2 dias', 'h\xE1 3 meses', etc.","Ignore all tasks behind heading":"Ignorar todas as tarefas ap\xF3s o cabe\xE7alho","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Insira o cabe\xE7alho a ser ignorado, ex.: '## Projeto', '## Caixa de Entrada', separado por v\xEDrgula","Focus all tasks behind heading":"Focar todas as tarefas ap\xF3s o cabe\xE7alho","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Insira o cabe\xE7alho para focar, ex.: '## Projeto', '## Caixa de Entrada', separado por v\xEDrgula","Enable rewards":"Ativar recompensas","Reward display type":"Tipo de exibi\xE7\xE3o da recompensa","Choose how rewards are displayed when earned.":"Escolha como as recompensas s\xE3o exibidas ao serem ganhas.","Modal dialog":"Caixa de di\xE1logo modal","Notice (Auto-accept)":"Aviso (Aceitar automaticamente)","Occurrence levels":"N\xEDveis de ocorr\xEAncia","Add occurrence level":"Adicionar n\xEDvel de ocorr\xEAncia","Reward items":"Itens de recompensa","Image url (optional)":"URL da imagem (opcional)","Delete reward item":"Excluir item de recompensa","Add reward item":"Adicionar item de recompensa","moved on":"movida em","Priority (High to Low)":"Prioridade (Alta para Baixa)","Priority (Low to High)":"Prioridade (Baixa para Alta)","Due Date (Earliest First)":"Data de Vencimento (Mais Cedo Primeiro)","Due Date (Latest First)":"Data de Vencimento (Mais Tarde Primeiro)","Scheduled Date (Earliest First)":"Data Agendada (Mais Cedo Primeiro)","Scheduled Date (Latest First)":"Data Agendada (Mais Tarde Primeiro)","Start Date (Earliest First)":"Data de In\xEDcio (Mais Cedo Primeiro)","Start Date (Latest First)":"Data de In\xEDcio (Mais Tarde Primeiro)","Created Date":"Data de Cria\xE7\xE3o",Overview:"Vis\xE3o Geral",Dates:"Datas","e.g. #tag1, #tag2":"ex.: #tag1, #tag2","e.g. @home, @work":"ex.: @casa, @trabalho","Recurrence Rule":"Regra de Recorr\xEAncia","Edit Task":"Editar Tarefa","Save Filter Configuration":"Salvar Configura\xE7\xE3o de Filtro","Filter Configuration Name":"Nome da Configura\xE7\xE3o de Filtro","Enter a name for this filter configuration":"Insira um nome para esta configura\xE7\xE3o de filtro","Filter Configuration Description":"Descri\xE7\xE3o da Configura\xE7\xE3o de Filtro","Enter a description for this filter configuration (optional)":"Insira uma descri\xE7\xE3o para esta configura\xE7\xE3o de filtro (opcional)","Load Filter Configuration":"Carregar Configura\xE7\xE3o de Filtro","No saved filter configurations":"Nenhuma configura\xE7\xE3o de filtro salva","Select a saved filter configuration":"Selecione uma configura\xE7\xE3o de filtro salva",Load:"Carregar",Created:"Criado",Updated:"Atualizado","Filter Summary":"Resumo do Filtro","filter group":"grupo de filtros",filter:"filtro","Root condition":"Condi\xE7\xE3o raiz","Filter configuration name is required":"O nome da configura\xE7\xE3o do filtro \xE9 obrigat\xF3rio","Failed to save filter configuration":"Falha ao salvar configura\xE7\xE3o do filtro","Filter configuration saved successfully":"Configura\xE7\xE3o do filtro salva com sucesso","Failed to load filter configuration":"Falha ao carregar configura\xE7\xE3o do filtro","Filter configuration loaded successfully":"Configura\xE7\xE3o do filtro carregada com sucesso","Failed to delete filter configuration":"Falha ao excluir configura\xE7\xE3o do filtro","Delete Filter Configuration":"Excluir Configura\xE7\xE3o de Filtro","Are you sure you want to delete this filter configuration?":"Tem certeza de que deseja excluir esta configura\xE7\xE3o de filtro?","Filter configuration deleted successfully":"Configura\xE7\xE3o do filtro exclu\xEDda com sucesso",Match:"Corresponder a",All:"Todos","Add filter group":"Adicionar grupo de filtros","Save Current Filter":"Salvar Filtro Atual","Load Saved Filter":"Carregar Filtro Salvo","filter in this group":"filtro neste grupo","Duplicate filter group":"Duplicar grupo de filtros","Remove filter group":"Remover grupo de filtros",OR:"OU","AND NOT":"E N\xC3O",AND:"E","Remove filter":"Remover filtro",contains:"cont\xE9m","does not contain":"n\xE3o cont\xE9m",is:"\xE9","is not":"n\xE3o \xE9","starts with":"come\xE7a com","ends with":"termina com","is empty":"est\xE1 vazio","is not empty":"n\xE3o est\xE1 vazio","is true":"\xE9 verdadeiro","is false":"\xE9 falso","is set":"est\xE1 definido","is not set":"n\xE3o est\xE1 definido",equals:"\xE9 igual a",NOR:"NEM","Group by":"Agrupar por","Select which task property to use for creating columns":"Selecione qual propriedade da tarefa usar para criar colunas","Hide empty columns":"Ocultar colunas vazias","Hide columns that have no tasks.":"Ocultar colunas que n\xE3o t\xEAm tarefas.","Default sort field":"Campo de ordena\xE7\xE3o padr\xE3o","Default field to sort tasks by within each column.":"Campo padr\xE3o para ordenar tarefas dentro de cada coluna.","Default sort order":"Ordem de ordena\xE7\xE3o padr\xE3o","Default order to sort tasks within each column.":"Ordem padr\xE3o para ordenar tarefas dentro de cada coluna.","Custom Columns":"Colunas Personalizadas","Configure custom columns for the selected grouping property":"Configure colunas personalizadas para a propriedade de agrupamento selecionada","No custom columns defined. Add columns below.":"Nenhuma coluna personalizada definida. Adicione colunas abaixo.","Column Title":"T\xEDtulo da Coluna",Value:"Valor","Remove Column":"Remover Coluna","Add Column":"Adicionar Coluna","New Column":"Nova Coluna","Reset Columns":"Redefinir Colunas","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"A tarefa deve ter esta prioridade (ex.: 1, 2, 3). Voc\xEA tamb\xE9m pode usar 'nenhuma' para filtrar tarefas sem prioridade.","Move all incomplete subtasks to another file":"Mover todas as sub-tarefas incompletas para outro arquivo","Move direct incomplete subtasks to another file":"Mover sub-tarefas incompletas diretas para outro arquivo",Filter:"Filtro","Reset Filter":"Redefinir Filtro","Saved Filters":"Filtros Salvos","Manage Saved Filters":"Gerenciar Filtros Salvos","Filter applied: ":"Filtro aplicado: ","Recurrence date calculation":"C\xE1lculo da data de recorr\xEAncia","Choose how to calculate the next date for recurring tasks":"Escolha como calcular a pr\xF3xima data para tarefas recorrentes","Based on due date":"Com base na data de vencimento","Based on scheduled date":"Com base na data agendada","Based on current date":"Com base na data atual","Task Gutter":"Margem da Tarefa","Configure the task gutter.":"Configure a margem da tarefa.","Enable task gutter":"Ativar margem da tarefa","Toggle this to enable the task gutter.":"Ative para habilitar a margem da tarefa.","Incomplete Task Mover":"Mover Tarefas Incompletas","Enable incomplete task mover":"Ativar mover tarefas incompletas","Toggle this to enable commands for moving incomplete tasks to another file.":"Ative para habilitar comandos para mover tarefas incompletas para outro arquivo.","Incomplete task marker type":"Tipo de marcador de tarefa incompleta","Choose what type of marker to add to moved incomplete tasks":"Escolha que tipo de marcador adicionar \xE0s tarefas incompletas movidas","Incomplete version marker text":"Texto do marcador de vers\xE3o incompleta","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Texto a ser anexado \xE0s tarefas incompletas quando movidas (ex.: 'vers\xE3o 1.0')","Incomplete date marker text":"Texto do marcador de data incompleta","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Texto a ser anexado \xE0s tarefas incompletas quando movidas (ex.: 'movida em 2023-12-31')","Incomplete custom marker text":"Texto do marcador personalizado incompleto","With current file link for incomplete tasks":"Com link do arquivo atual para tarefas incompletas","A link to the current file will be added to the parent task of the moved incomplete tasks.":"Um link para o arquivo atual ser\xE1 adicionado \xE0 tarefa pai das tarefas incompletas movidas.","Line Number":"N\xFAmero da Linha","Clear Date":"Limpar Data","Copy view":"Copiar visualiza\xE7\xE3o","View copied successfully: ":"Visualiza\xE7\xE3o copiada com sucesso: ","Copy of ":"C\xF3pia de ","Copy view: ":"Copiar visualiza\xE7\xE3o: ","Creating a copy based on: ":"Criando uma c\xF3pia baseada em: ","You can modify all settings below. The original view will remain unchanged.":"Voc\xEA pode modificar todas as configura\xE7\xF5es abaixo. A visualiza\xE7\xE3o original permanecer\xE1 inalterada.","Tasks Plugin Detected":"Plugin 'Tasks' Detectado","Current status management and date management may conflict with the Tasks plugin. Please check the ":"O gerenciamento de status atual e o gerenciamento de datas podem entrar em conflito com o plugin Tasks. Por favor, verifique a ","compatibility documentation":"documenta\xE7\xE3o de compatibilidade"," for more information.":" para mais informa\xE7\xF5es.","Auto Date Manager":"Gerenciador Autom\xE1tico de Datas","Automatically manage dates based on task status changes":"Gerenciar datas automaticamente com base nas altera\xE7\xF5es de status da tarefa","Enable auto date manager":"Ativar gerenciador autom\xE1tico de datas","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Ative para habilitar o gerenciamento autom\xE1tico de datas quando o status da tarefa mudar. Datas ser\xE3o adicionadas/removidas com base no seu formato de metadados preferido (formato emoji do Tasks ou formato Dataview).","Manage completion dates":"Gerenciar datas de conclus\xE3o","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Adicionar automaticamente datas de conclus\xE3o quando as tarefas s\xE3o marcadas como conclu\xEDdas e remov\xEA-las quando alteradas para outros status.","Manage start dates":"Gerenciar datas de in\xEDcio","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Adicionar automaticamente datas de in\xEDcio quando as tarefas s\xE3o marcadas como em andamento e remov\xEA-las quando alteradas para outros status.","Manage cancelled dates":"Gerenciar datas de cancelamento","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Adicionar automaticamente datas de cancelamento quando as tarefas s\xE3o marcadas como abandonadas e remov\xEA-las quando alteradas para outros status.","Copy View":"Copiar Visualiza\xE7\xE3o",Beta:"Beta","Beta Test Features":"Recursos em Teste Beta","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Recursos experimentais que est\xE3o atualmente em fase de teste. Estes recursos podem ser inst\xE1veis e podem mudar ou ser removidos em atualiza\xE7\xF5es futuras.","Beta Features Warning":"Aviso sobre Recursos Beta","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"Estes recursos s\xE3o experimentais e podem ser inst\xE1veis. Eles podem mudar significativamente ou ser removidos em atualiza\xE7\xF5es futuras devido a altera\xE7\xF5es na API do Obsidian ou outros fatores. Use com cautela e forne\xE7a feedback para ajudar a melhorar esses recursos.","Base View":"Visualiza\xE7\xE3o Base","Advanced view management features that extend the default Task Genius views with additional functionality.":"Recursos avan\xE7ados de gerenciamento de visualiza\xE7\xE3o que estendem as visualiza\xE7\xF5es padr\xE3o do Task Genius com funcionalidades adicionais.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Ativar funcionalidade experimental de Visualiza\xE7\xE3o Base. Este recurso oferece capacidades aprimoradas de gerenciamento de visualiza\xE7\xE3o, mas pode ser afetado por futuras altera\xE7\xF5es na API do Obsidian. Pode ser necess\xE1rio reiniciar o Obsidian para ver as altera\xE7\xF5es.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"Voc\xEA precisa fechar todas as visualiza\xE7\xF5es base se j\xE1 criou visualiza\xE7\xF5es de tarefas nelas e remover visualiza\xE7\xF5es n\xE3o utilizadas editando-as manualmente ao desabilitar este recurso.","Enable Base View":"Ativar Visualiza\xE7\xE3o Base","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Ativar funcionalidade experimental de Visualiza\xE7\xE3o Base. Este recurso oferece capacidades aprimoradas de gerenciamento de visualiza\xE7\xE3o, mas pode ser afetado por futuras altera\xE7\xF5es na API do Obsidian.",Enable:"Ativar","Beta Feedback":"Feedback Beta","Help improve these features by providing feedback on your experience.":"Ajude a melhorar estes recursos fornecendo feedback sobre sua experi\xEAncia.","Report Issues":"Relatar Problemas","If you encounter any issues with beta features, please report them to help improve the plugin.":"Se voc\xEA encontrar quaisquer problemas com os recursos beta, por favor, relate-os para ajudar a melhorar o plugin.","Report Issue":"Relatar Problema",Table:"Tabela","No Priority":"Sem Prioridade","Click to select date":"Clique para selecionar data","Enter tags separated by commas":"Insira tags separadas por v\xEDrgulas","Enter project name":"Insira o nome do projeto","Enter context":"Insira o contexto","Invalid value":"Valor inv\xE1lido","No tasks":"Nenhuma tarefa","1 task":"1 tarefa",Columns:"Colunas","Toggle column visibility":"Alternar visibilidade da coluna","Switch to List Mode":"Alternar para Modo Lista","Switch to Tree Mode":"Alternar para Modo \xC1rvore",Collapse:"Recolher",Expand:"Expandir","Collapse subtasks":"Recolher sub-tarefas","Expand subtasks":"Expandir sub-tarefas","Click to change status":"Clique para mudar status","Click to set priority":"Clique para definir prioridade",Yesterday:"Ontem","Click to edit date":"Clique para editar data","No tags":"Nenhuma tag","Click to open file":"Clique para abrir arquivo","No tasks found":"Nenhuma tarefa encontrada","Completed Date":"Data de Conclus\xE3o","Loading...":"Carregando...","Advanced Filtering":"Filtragem Avan\xE7ada","Use advanced multi-group filtering with complex conditions":"Use filtragem avan\xE7ada multi-grupo com condi\xE7\xF5es complexas","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Reset progress ranges to default values":"Reset progress ranges to default values","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","e.g. every day, every week":"e.g. every day, every week","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},VO=B$});var V$,zO,$O=D(()=>{V$={"File Metadata Inheritance":"\u041D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0444\u0430\u0439\u043B\u0430","Configure how tasks inherit metadata from file frontmatter":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435, \u043A\u0430\u043A \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430","Enable file metadata inheritance":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0444\u0430\u0439\u043B\u0430","Allow tasks to inherit metadata properties from their file's frontmatter":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0438\u0437 frontmatter \u0441\u0432\u043E\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u0417\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442, \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0438 \u0442.\u0434., \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u044B \u044F\u0432\u043D\u043E \u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0435","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430. \u041F\u0440\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u0430","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u041C\u043D\u043E\u0433\u043E\u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438 \u0432 Obsidian \u0441 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430\u043C\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430, \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u043C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u043C\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u043C\u0438 \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447.","Show progress bar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to show the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0437\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Support hover to show progress info":"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0435 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u043B \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0435 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440.","Add progress bar to non-task bullet":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u043E\u0431\u044B\u0447\u043D\u044B\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C \u0441\u043F\u0438\u0441\u043A\u0430","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u043E\u0431\u044B\u0447\u043D\u044B\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C \u0441\u043F\u0438\u0441\u043A\u0430 (\u043D\u0435 \u0437\u0430\u0434\u0430\u0447\u0430\u043C).","Add progress bar to Heading":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u043B \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Enable heading progress bars":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432","Add progress bars to headings to show progress of all tasks under that heading.":"\u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u044D\u0442\u0438\u043C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Auto complete parent task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043B \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443, \u043A\u043E\u0433\u0434\u0430 \u0432\u0441\u0435 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u044B.","Mark parent as 'In Progress' when partially complete":"\u041E\u0442\u043C\u0435\u0447\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u043A\u0430\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435', \u0435\u0441\u043B\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u0415\u0441\u043B\u0438 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435, \u043D\u043E \u043D\u0435 \u0432\u0441\u0435 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u044B, \u043E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u043A\u0430\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435'. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u043E\u0439 \u043E\u043F\u0446\u0438\u0438 '\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443'.","Count sub children level of current Task":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Toggle this to allow this plugin to count sub tasks.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.","Checkbox Status Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Select a predefined task status collection or customize your own":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u043D\u0430\u0431\u043E\u0440 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438\u043B\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0441\u0432\u043E\u0439 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439","Completed task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "x|X"',"Planned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent planned tasks. Example: "?"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "?"',"In progress task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435. \u041F\u0440\u0438\u043C\u0435\u0440: ">|/"',"Abandoned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u043D\u0435 \u043D\u0430\u0447\u0430\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u0440\u043E\u0431\u0435\u043B " "',"Count other statuses as":"\u0421\u0447\u0438\u0442\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044B \u043A\u0430\u043A",'Select the status to count other statuses as. Default is "Not Started".':'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441, \u0432 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044B. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 "\u041D\u0435 \u043D\u0430\u0447\u0430\u0442\u043E".',"Task Counting Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430 \u0437\u0430\u0434\u0430\u0447","Exclude specific task markers":"\u0418\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447",'Specify task markers to exclude from counting. Example: "?|/"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0443\u0436\u043D\u043E \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u0437 \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: "?|/"',"Only count specific task markers":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Toggle this to only count specific task markers":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Specific task markers to count":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430",'Specify which task markers to count. Example: "x|X|>|/"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435, \u043A\u0430\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C. \u041F\u0440\u0438\u043C\u0435\u0440: "x|X|>|/"',"Conditional Progress Bar Display":"\u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Hide progress bars based on conditions":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043F\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u043C","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0442\u0435\u0433\u043E\u0432, \u043F\u0430\u043F\u043E\u043A \u0438\u043B\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445.","Hide by tags":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u0442\u0435\u0433\u0430\u043C",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u0433\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E, \u0431\u0435\u0437 #). \u041F\u0440\u0438\u043C\u0435\u0440: "no-progress-bar,hide-progress"',"Hide by folders":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u043F\u0430\u043F\u043A\u0430\u043C",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043F\u0443\u0442\u0438 \u043A \u043F\u0430\u043F\u043A\u0430\u043C, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E). \u041F\u0440\u0438\u043C\u0435\u0440: "Daily Notes,Projects/Hidden"',"Hide by metadata":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u043C",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 frontmatter, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: "hide-progress-bar: true"',"Checkbox Status Switcher":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Enable task status switcher":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Enable/disable the ability to cycle through task states by clicking.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E \u043A\u043B\u0438\u043A\u0443.","Enable custom task marks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u0435 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0435 \u0444\u043B\u0430\u0436\u043A\u0438 \u043D\u0430 \u0441\u0442\u0438\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u0432\u0430\u0448\u0435\u043C\u0443 \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u0440\u0438 \u043A\u043B\u0438\u043A\u0435.","Enable cycle complete status":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u043C\u0430\u0440\u043A\u0435\u0440.","Always cycle new tasks":"\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441. \u0415\u0441\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u043C\u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u0430\u043C\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442 \u0441\u0432\u043E\u0439 \u0438\u0437\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440.","Checkbox Status Cycle and Marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u044B","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 \u0438 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0438\u043C \u043C\u0430\u0440\u043A\u0435\u0440\u044B. \u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043D\u0438\u0437 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F.","Add Status":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441","Completed Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","Enable completed task mover":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","Toggle this to enable commands for moving completed tasks to another file.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B.","Task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0438","Choose what type of marker to add to moved tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043A \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u043C \u0437\u0430\u0434\u0430\u0447\u0430\u043C","Version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0438","Text to append to tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, '\u0432\u0435\u0440\u0441\u0438\u044F 1.0')","Date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0434\u0430\u0442\u044B","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, '\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043E 2023-12-31')","Custom marker text":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {{DATE:format}} \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u0430\u0442\u044B (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, {{DATE:YYYY-MM-DD}})","Treat abandoned tasks as completed":"\u0421\u0447\u0438\u0442\u0430\u0442\u044C \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u043C\u0438","If enabled, abandoned tasks will be treated as completed.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u043C\u0438.","Complete all moved tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0432\u0441\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","If enabled, all moved tasks will be marked as completed.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0432\u0441\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u044B \u043A\u0430\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435.","With current file link":"\u0421 \u0441\u0441\u044B\u043B\u043A\u043E\u0439 \u043D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043B","A link to the current file will be added to the parent task of the moved tasks.":"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u043A \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447.","Say Thank You":"\u0421\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043F\u0430\u0441\u0438\u0431\u043E",Donate:"\u041F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u0442\u044C","If you like this plugin, consider donating to support continued development:":"\u0415\u0441\u043B\u0438 \u0432\u0430\u043C \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F \u044D\u0442\u043E\u0442 \u043F\u043B\u0430\u0433\u0438\u043D, \u043F\u043E\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043E \u043F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u043D\u0438\u0438 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438:","Add number to the Progress Bar":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0447\u0438\u0441\u043B\u043E \u043A \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to allow this plugin to add tasks number to progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u043B \u0447\u0438\u0441\u043B\u043E \u0437\u0430\u0434\u0430\u0447 \u043A \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Show percentage":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u043D\u0442","Toggle this to allow this plugin to show percentage in the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u043B \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Customize progress text":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to customize text representation for different progress percentage ranges.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0440\u0430\u0437\u043D\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Progress Ranges":"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Define progress ranges and their corresponding text representations.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0438 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F.","Add new range":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D","Add a new progress percentage range with custom text":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0441 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u043C","Min percentage (0-100)":"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 (0-100)","Max percentage (0-100)":"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 (0-100)","Text template (use {{PROGRESS}})":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {{PROGRESS}})","Reset to defaults":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043D\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","Reset progress ranges to default values":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043D\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",Reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C","Priority Picker Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430 \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u0432 \u0441 \u044D\u043C\u043E\u0434\u0437\u0438 \u0438 \u0431\u0443\u043A\u0432\u0430\u043C\u0438.","Enable priority picker":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Enable priority keyboard shortcuts":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0433\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0434\u043B\u044F \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Toggle to enable keyboard shortcuts for setting task priorities.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0433\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0434\u043B\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u043E\u0432 \u0437\u0430\u0434\u0430\u0447.","Date picker":"\u0412\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B","Enable date picker":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447. \u042D\u0442\u043E \u0434\u043E\u0431\u0430\u0432\u0438\u0442 \u0438\u043A\u043E\u043D\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u0440\u044F\u0434\u043E\u043C \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0436\u0430\u0442\u044C \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u0430\u0442\u044B.","Date mark":"\u041C\u0430\u0440\u043A\u0435\u0440 \u0434\u0430\u0442\u044B","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u042D\u043C\u043E\u0434\u0437\u0438-\u043C\u0430\u0440\u043A\u0435\u0440 \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u0430\u0442. \u041C\u043E\u0436\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u044D\u043C\u043E\u0434\u0437\u0438, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","Quick capture":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Enable quick capture":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0432 \u0441\u0442\u0438\u043B\u0435 Org-mode. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 Alt+C, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0445\u0432\u0430\u0442\u0430.","Target file":"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u0424\u0430\u0439\u043B, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442. \u041C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0443\u0442\u044C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 'folder/Quick Capture.md'","Placeholder text":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C","Placeholder text to display in the capture panel":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u0432 \u043F\u0430\u043D\u0435\u043B\u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0430","Append to file":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u0444\u0430\u0439\u043B","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0432 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B. \u0415\u0441\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043E\u043D \u0437\u0430\u043C\u0435\u043D\u0438\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0444\u0430\u0439\u043B\u0430.","Task Filter":"\u0424\u0438\u043B\u044C\u0442\u0440 \u0437\u0430\u0434\u0430\u0447","Enable Task Filter":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440 \u0437\u0430\u0434\u0430\u0447","Toggle this to enable the task filter panel":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0447","Preset Filters":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B","Create and manage preset filters for quick access to commonly used task filters.":"\u0421\u043E\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0439\u0442\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u043C\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C\u0438 \u0434\u043B\u044F \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C \u0437\u0430\u0434\u0430\u0447.","Edit Filter: ":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440: ","Filter name":"\u0418\u043C\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Checkbox Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","Include or exclude tasks based on their status":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0438\u0445 \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Include Completed Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include In Progress Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","Include Abandoned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Not Started Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0435 \u043D\u0430\u0447\u0430\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Planned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Related Tasks":"\u0421\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include parent, child, and sibling tasks in the filter":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435, \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0438 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0444\u0438\u043B\u044C\u0442\u0440","Include Parent Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Child Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Sibling Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Advanced Filter":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u044B \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438: AND, OR, NOT. \u041F\u0440\u0438\u043C\u0435\u0440: 'text content AND #tag1'","Filter query":"\u0417\u0430\u043F\u0440\u043E\u0441 \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Filter out tasks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u0443, \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0442\u044B, \u0438\u043D\u0430\u0447\u0435 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u044B",Save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",Cancel:"\u041E\u0442\u043C\u0435\u043D\u0430","Hide filter panel":"\u0421\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Show filter panel":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Filter Tasks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","Preset filters":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B","Select a saved filter preset to apply":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0439 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440 \u0434\u043B\u044F \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u044F","Select a preset...":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443...",Query:"\u0417\u0430\u043F\u0440\u043E\u0441","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u044B \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438: AND, OR, NOT. \u041F\u0440\u0438\u043C\u0435\u0440: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 >, <, =, >=, <=, != \u0434\u043B\u044F PRIORITY \u0438 DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u0443, \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0442\u044B, \u0438\u043D\u0430\u0447\u0435 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u044B",Completed:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","In Progress":"\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435",Abandoned:"\u0417\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043E","Not Started":"\u041D\u0435 \u043D\u0430\u0447\u0430\u0442\u043E",Planned:"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043E","Include Related Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Parent Tasks":"\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Child Tasks":"\u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Sibling Tasks":"\u0421\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",Apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C","New Preset":"\u041D\u043E\u0432\u0430\u044F \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430","Preset saved":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430","No changes to save":"\u041D\u0435\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0434\u043B\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F",Close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C","Capture to":"\u0417\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C \u0432",Capture:"\u0417\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C","Capture thoughts, tasks, or ideas...":"\u0417\u0430\u0445\u0432\u0430\u0442\u044B\u0432\u0430\u0439\u0442\u0435 \u043C\u044B\u0441\u043B\u0438, \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u043B\u0438 \u0438\u0434\u0435\u0438...",Tomorrow:"\u0417\u0430\u0432\u0442\u0440\u0430","In 2 days":"\u0427\u0435\u0440\u0435\u0437 2 \u0434\u043D\u044F","In 3 days":"\u0427\u0435\u0440\u0435\u0437 3 \u0434\u043D\u044F","In 5 days":"\u0427\u0435\u0440\u0435\u0437 5 \u0434\u043D\u0435\u0439","In 1 week":"\u0427\u0435\u0440\u0435\u0437 1 \u043D\u0435\u0434\u0435\u043B\u044E","In 10 days":"\u0427\u0435\u0440\u0435\u0437 10 \u0434\u043D\u0435\u0439","In 2 weeks":"\u0427\u0435\u0440\u0435\u0437 2 \u043D\u0435\u0434\u0435\u043B\u0438","In 1 month":"\u0427\u0435\u0440\u0435\u0437 1 \u043C\u0435\u0441\u044F\u0446","In 2 months":"\u0427\u0435\u0440\u0435\u0437 2 \u043C\u0435\u0441\u044F\u0446\u0430","In 3 months":"\u0427\u0435\u0440\u0435\u0437 3 \u043C\u0435\u0441\u044F\u0446\u0430","In 6 months":"\u0427\u0435\u0440\u0435\u0437 6 \u043C\u0435\u0441\u044F\u0446\u0435\u0432","In 1 year":"\u0427\u0435\u0440\u0435\u0437 1 \u0433\u043E\u0434","In 5 years":"\u0427\u0435\u0440\u0435\u0437 5 \u043B\u0435\u0442","In 10 years":"\u0427\u0435\u0440\u0435\u0437 10 \u043B\u0435\u0442","Highest priority":"\u041D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","High priority":"\u0412\u044B\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Medium priority":"\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","No priority":"\u0411\u0435\u0437 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Low priority":"\u041D\u0438\u0437\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Lowest priority":"\u041D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Priority A":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 A","Priority B":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 B","Priority C":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 C","Task Priority":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438","Remove Priority":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Cycle task status forward":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043F\u0435\u0440\u0435\u0434","Cycle task status backward":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0437\u0430\u0434","Remove priority":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Move task to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move all completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move direct completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043F\u0440\u044F\u043C\u044B\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move all subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Set priority":"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Toggle quick capture panel":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430","Quick capture (Global)":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442 (\u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439)","Toggle task filter panel":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0447","Filter Mode":"\u0420\u0435\u0436\u0438\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438","Choose whether to include or exclude tasks that match the filters":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C","Show matching tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Hide matching tasks":"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Choose whether to show or hide tasks that match the filters":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C","Create new file:":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B:","Completed tasks moved to":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u044B \u0432","Failed to create file:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0444\u0430\u0439\u043B:","Beginning of file":"\u041D\u0430\u0447\u0430\u043B\u043E \u0444\u0430\u0439\u043B\u0430","Failed to move tasks:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438:","No active file found":"\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0444\u0430\u0439\u043B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D","Task moved to":"\u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0430 \u0432","Failed to move task:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0443:","Nothing to capture":"\u041D\u0435\u0447\u0435\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C","Captured successfully":"\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043E","Failed to save:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C:","Captured successfully to":"\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043E \u0432",Total:"\u0412\u0441\u0435\u0433\u043E",Workflow:"\u0420\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Add as workflow root":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u043A \u043A\u043E\u0440\u0435\u043D\u044C \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Move to stage":"\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u044D\u0442\u0430\u043F\u0443","Complete stage":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u044D\u0442\u0430\u043F","Add child task with same stage":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u044E\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0442\u0435\u043C \u0436\u0435 \u044D\u0442\u0430\u043F\u043E\u043C","Could not open quick capture panel in the current editor":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0432 \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","Just started {{PROGRESS}}%":"\u0422\u043E\u043B\u044C\u043A\u043E \u043D\u0430\u0447\u0430\u0442\u043E {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u041D\u0430 \u043F\u043E\u043B\u043F\u0443\u0442\u0438 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u0425\u043E\u0440\u043E\u0448\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u041F\u043E\u0447\u0442\u0438 \u0433\u043E\u0442\u043E\u0432\u043E {{PROGRESS}}%","Progress bar":"\u0418\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0437\u0430 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 (\u043E\u0431\u044B\u0447\u043D\u043E \u0432 \u043A\u043E\u043D\u0446\u0435 \u0437\u0430\u0434\u0430\u0447\u0438). \u0422\u0430\u043A\u0436\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Hide progress bars":"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Parent task changer":"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Change the parent task of the current task.":"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.","No preset filters created yet. Click 'Add New Preset' to create one.":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B \u0435\u0449\u0435 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u044B. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443', \u0447\u0442\u043E\u0431\u044B \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0434\u043D\u0443.","Configure task workflows for project and process management":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0440\u0430\u0431\u043E\u0447\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C\u0438 \u0438 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430\u043C\u0438","Enable workflow":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Toggle to enable the workflow system for tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447","Auto-add timestamp":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443","Automatically add a timestamp to the task when it is created":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u043A \u0437\u0430\u0434\u0430\u0447\u0435 \u043F\u0440\u0438 \u0435\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438","Timestamp format:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u043C\u0435\u0442\u043A\u0438:","Timestamp format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u043C\u0435\u0442\u043A\u0438","Remove timestamp when moving to next stage":"\u0423\u0434\u0430\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Remove the timestamp from the current task when moving to the next stage":"\u0423\u0434\u0430\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u0438\u0437 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Calculate spent time":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F","Calculate and display the time spent on the task when moving to the next stage":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0440\u0435\u043C\u044F, \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0443, \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Format for spent time:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438:","Calculate spent time when move to next stage.":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443.","Spent time format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438","Calculate full spent time":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u043E\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F","Calculate the full spent time from the start of the task to the last stage":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u043E\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0442 \u043D\u0430\u0447\u0430\u043B\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430","Auto remove last stage marker":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430","Automatically remove the last stage marker when a task is completed":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430, \u043A\u043E\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430","Auto-add next task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443","Automatically create a new task with the next stage when completing a task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u044D\u0442\u0430\u043F\u043E\u043C \u043F\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438","Workflow definitions":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432","Configure workflow templates for different types of processes":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0448\u0430\u0431\u043B\u043E\u043D\u044B \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0434\u043B\u044F \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0442\u0438\u043F\u043E\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0435\u0449\u0435 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u044B. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441', \u0447\u0442\u043E\u0431\u044B \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0434\u0438\u043D.","Edit workflow":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Remove workflow":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Delete workflow":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441",Delete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C","Add New Workflow":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","New Workflow":"\u041D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Create New Workflow":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Workflow name":"\u0418\u043C\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","A descriptive name for the workflow":"\u041E\u043F\u0438\u0441\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Workflow ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","A unique identifier for the workflow (used in tags)":"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0433\u0430\u0445)",Description:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435","Optional description for the workflow":"\u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Describe the purpose and use of this workflow...":"\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u044D\u0442\u043E\u0433\u043E \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430...","Workflow Stages":"\u042D\u0442\u0430\u043F\u044B \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","No stages defined yet. Add a stage to get started.":"\u042D\u0442\u0430\u043F\u044B \u0435\u0449\u0435 \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B. \u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u044D\u0442\u0430\u043F, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C.",Edit:"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C","Move up":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0432\u0435\u0440\u0445","Move down":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043D\u0438\u0437","Sub-stage":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F","Sub-stage name":"\u0418\u043C\u044F \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u0430","Sub-stage ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u0430","Next: ":"\u0414\u0430\u043B\u0435\u0435: ","Add Sub-stage":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u044D\u0442\u0430\u043F","New Sub-stage":"\u041D\u043E\u0432\u044B\u0439 \u043F\u043E\u0434\u044D\u0442\u0430\u043F","Edit Stage":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u0430\u043F","Stage name":"\u0418\u043C\u044F \u044D\u0442\u0430\u043F\u0430","A descriptive name for this workflow stage":"\u041E\u043F\u0438\u0441\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u044D\u0442\u0430\u043F\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Stage ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u044D\u0442\u0430\u043F\u0430","A unique identifier for the stage (used in tags)":"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u044D\u0442\u0430\u043F\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0433\u0430\u0445)","Stage type":"\u0422\u0438\u043F \u044D\u0442\u0430\u043F\u0430","The type of this workflow stage":"\u0422\u0438\u043F \u044D\u0442\u043E\u0433\u043E \u044D\u0442\u0430\u043F\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Linear (sequential)":"\u041B\u0438\u043D\u0435\u0439\u043D\u044B\u0439 (\u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439)","Cycle (repeatable)":"\u0426\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u0439 (\u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u043C\u044B\u0439)","Terminal (end stage)":"\u0422\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0439 (\u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 \u044D\u0442\u0430\u043F)","Next stage":"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u044D\u0442\u0430\u043F","The stage to proceed to after this one":"\u042D\u0442\u0430\u043F, \u043A \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E","Sub-stages":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F\u044B","Define cycle sub-stages (optional)":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u044B (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)","No sub-stages defined yet.":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F\u044B \u0435\u0449\u0435 \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B.","Can proceed to":"\u041C\u043E\u0436\u0435\u0442 \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A","Additional stages that can follow this one (for right-click menu)":"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044D\u0442\u0430\u043F\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u0437\u0430 \u044D\u0442\u0438\u043C (\u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u043E\u0433\u043E \u043C\u0435\u043D\u044E)","No additional destination stages defined.":"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0446\u0435\u043B\u0435\u0432\u044B\u0435 \u044D\u0442\u0430\u043F\u044B \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B.",Remove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",Add:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C","Name and ID are required.":"\u0418\u043C\u044F \u0438 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B.","End of file":"\u041A\u043E\u043D\u0435\u0446 \u0444\u0430\u0439\u043B\u0430","Include in cycle":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432 \u0446\u0438\u043A\u043B",Preset:"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430","Preset name":"\u0418\u043C\u044F \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438","Edit Filter":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440","Add New Preset":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443","New Filter":"\u041D\u043E\u0432\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440","Reset to Default Presets":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043D\u0430 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","This will replace all your current presets with the default set. Are you sure?":"\u042D\u0442\u043E \u0437\u0430\u043C\u0435\u043D\u0438\u0442 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043D\u0430 \u043D\u0430\u0431\u043E\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. \u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B?","Edit Workflow":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441",General:"\u041E\u0431\u0449\u0438\u0435","Progress Bar":"\u0418\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447","Quick Capture":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Date & Priority":"\u0414\u0430\u0442\u0430 \u0438 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",About:"\u041E \u043F\u043B\u0430\u0433\u0438\u043D\u0435","Count sub children of current Task":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Configure task status settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Configure which task markers to count or exclude":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C, \u043A\u0430\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C","Task status cycle and marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u044B","About Task Genius":"\u041E Task Genius",Version:"\u0412\u0435\u0440\u0441\u0438\u044F",Documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F","View the documentation for this plugin":"\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u043B\u0430\u0433\u0438\u043D\u0430","Open Documentation":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E","Incomplete tasks":"\u041D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","In progress tasks":"\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","Completed tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","All tasks":"\u0412\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","After heading":"\u041F\u043E\u0441\u043B\u0435 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430","End of section":"\u041A\u043E\u043D\u0435\u0446 \u0440\u0430\u0437\u0434\u0435\u043B\u0430","Enable text mark in source mode":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435","Make the text mark in source mode follow the task status cycle when clicked.":"\u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0442\u0430\u043A, \u0447\u0442\u043E\u0431\u044B \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435 \u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043B \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u043A\u043B\u0438\u043A\u0435.","Status name":"\u0418\u043C\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Progress display mode":"\u0420\u0435\u0436\u0438\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Choose how to display task progress":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043A\u0430\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","No progress indicators":"\u0411\u0435\u0437 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Graphical progress bar":"\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Text progress indicator":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Both graphical and text":"\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Progress format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Choose how to display the task progress":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043A\u0430\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","Percentage (75%)":"\u041F\u0440\u043E\u0446\u0435\u043D\u0442 (75%)","Bracketed percentage ([75%])":"\u041F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432 \u0441\u043A\u043E\u0431\u043A\u0430\u0445 ([75%])","Fraction (3/4)":"\u0414\u0440\u043E\u0431\u044C (3/4)","Bracketed fraction ([3/4])":"\u0414\u0440\u043E\u0431\u044C \u0432 \u0441\u043A\u043E\u0431\u043A\u0430\u0445 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442","Range-based text":"\u0422\u0435\u043A\u0441\u0442 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A {{COMPLETED}}, {{TOTAL}}, {{PERCENT}} \u0438 \u0442.\u0434.","Preview:":"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440:","Available placeholders":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"\u041F\u0440\u0438\u043C\u0435\u0440\u044B \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439","Examples of advanced formats using expressions":"\u041F\u0440\u0438\u043C\u0435\u0440\u044B \u043F\u0440\u043E\u0434\u0432\u0438\u043D\u0443\u0442\u044B\u0445 \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u0432 \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439","Text Progress Bar":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Emoji Progress Bar":"\u042D\u043C\u043E\u0434\u0437\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Color-coded Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0441 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u043E\u0439","Status with Icons":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0441 \u0438\u043A\u043E\u043D\u043A\u0430\u043C\u0438",Preview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",Use:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C","Toggle this to show percentage instead of completed/total count.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432\u043C\u0435\u0441\u0442\u043E \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445/\u0432\u0441\u0435\u0433\u043E.","Customize progress ranges":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to customize the text for different progress ranges.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0440\u0430\u0437\u043D\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Apply Theme":"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0442\u0435\u043C\u0443","Back to main settings":"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u043C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u043C","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 data.percentages \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0410 \u0442\u0430\u043A\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 data.percentages \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0410 \u0442\u0430\u043A\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043B\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430.","Target File:":"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B:","Task Properties":"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0438","Start Date":"\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430","Due Date":"\u0421\u0440\u043E\u043A \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Scheduled Date":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430",Priority:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",None:"\u041D\u0435\u0442",Highest:"\u041D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439",High:"\u0412\u044B\u0441\u043E\u043A\u0438\u0439",Medium:"\u0421\u0440\u0435\u0434\u043D\u0438\u0439",Low:"\u041D\u0438\u0437\u043A\u0438\u0439",Lowest:"\u041D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0438\u0439",Project:"\u041F\u0440\u043E\u0435\u043A\u0442","Project name":"\u0418\u043C\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430",Context:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442",Recurrence:"\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435","e.g., every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0435\u043D\u044C, \u043A\u0430\u0436\u0434\u0443\u044E \u043D\u0435\u0434\u0435\u043B\u044E","Task Content":"\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Task Details":"\u0414\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0430\u0447\u0438",File:"\u0424\u0430\u0439\u043B","Edit in File":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432 \u0444\u0430\u0439\u043B\u0435","Mark Incomplete":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0435","Mark Complete":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0435","Task Title":"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",Tags:"\u0422\u0435\u0433\u0438","e.g. every day, every 2 weeks":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0435\u043D\u044C, \u043A\u0430\u0436\u0434\u044B\u0435 2 \u043D\u0435\u0434\u0435\u043B\u0438",Forecast:"\u041F\u0440\u043E\u0433\u043D\u043E\u0437","0 actions, 0 projects":"0 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, 0 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","Toggle list/tree view":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0438\u0434 \u0441\u043F\u0438\u0441\u043A\u0430/\u0434\u0435\u0440\u0435\u0432\u0430","Focusing on Work":"\u0421\u043E\u0441\u0440\u0435\u0434\u043E\u0442\u043E\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0435",Unfocus:"\u0421\u043D\u044F\u0442\u044C \u0444\u043E\u043A\u0443\u0441","Past Due":"\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E",Today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",Future:"\u0411\u0443\u0434\u0443\u0449\u0435\u0435",actions:"\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",project:"\u043F\u0440\u043E\u0435\u043A\u0442","Coming Up":"\u041F\u0440\u0435\u0434\u0441\u0442\u043E\u044F\u0449\u0438\u0435",Task:"\u0417\u0430\u0434\u0430\u0447\u0430",Tasks:"\u0417\u0430\u0434\u0430\u0447\u0438","No upcoming tasks":"\u041D\u0435\u0442 \u043F\u0440\u0435\u0434\u0441\u0442\u043E\u044F\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447","No tasks scheduled":"\u041D\u0435\u0442 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","0 tasks":"0 \u0437\u0430\u0434\u0430\u0447","Filter tasks...":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438...",Projects:"\u041F\u0440\u043E\u0435\u043A\u0442\u044B","Toggle multi-select":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440","No projects found":"\u041F\u0440\u043E\u0435\u043A\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","projects selected":"\u0432\u044B\u0431\u0440\u0430\u043D\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432",tasks:"\u0437\u0430\u0434\u0430\u0447\u0438","No tasks in the selected projects":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445","Select a project to see related tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Configure Review for":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043E\u0431\u0437\u043E\u0440 \u0434\u043B\u044F","Review Frequency":"\u0427\u0430\u0441\u0442\u043E\u0442\u0430 \u043E\u0431\u0437\u043E\u0440\u0430","How often should this project be reviewed":"\u041A\u0430\u043A \u0447\u0430\u0441\u0442\u043E \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0440\u043E\u0435\u043A\u0442","Custom...":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439...","e.g., every 3 months":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0435 3 \u043C\u0435\u0441\u044F\u0446\u0430","Last Reviewed":"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u043E\u0431\u0437\u043E\u0440","Please specify a review frequency":"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u043E\u0442\u0443 \u043E\u0431\u0437\u043E\u0440\u0430","Review schedule updated for":"\u0413\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D \u0434\u043B\u044F","Review Projects":"\u041E\u0431\u0437\u043E\u0440 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","Select a project to review its tasks.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430 \u0435\u0433\u043E \u0437\u0430\u0434\u0430\u0447.","Configured for Review":"\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430","Not Configured":"\u041D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E","No projects available.":"\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432.","Select a project to review.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430.","Show all tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Showing all tasks, including completed tasks from previous reviews.":"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0445 \u043E\u0431\u0437\u043E\u0440\u043E\u0432.","Show only new and in-progress tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u043E\u0432\u044B\u0435 \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","No tasks found for this project.":"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0437\u0430\u0434\u0430\u0447 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Review every":"\u041E\u0431\u0437\u043E\u0440 \u043A\u0430\u0436\u0434\u044B\u0435",never:"\u043D\u0438\u043A\u043E\u0433\u0434\u0430","Last reviewed":"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u043E\u0431\u0437\u043E\u0440","Mark as Reviewed":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u043E\u0435","No review schedule configured for this project":"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D \u0433\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430","Configure Review Schedule":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0433\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430","Project Review":"\u041E\u0431\u0437\u043E\u0440 \u043F\u0440\u043E\u0435\u043A\u0442\u0430","Select a project from the left sidebar to review its tasks.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0432 \u043B\u0435\u0432\u043E\u0439 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0435\u0433\u043E \u0437\u0430\u0434\u0430\u0447\u0438.",Inbox:"\u0412\u0445\u043E\u0434\u044F\u0449\u0438\u0435",Flagged:"\u041F\u043E\u043C\u0435\u0447\u0435\u043D\u043D\u044B\u0435",Review:"\u041E\u0431\u0437\u043E\u0440","tags selected":"\u0432\u044B\u0431\u0440\u0430\u043D\u043E \u0442\u0435\u0433\u043E\u0432","No tasks with the selected tags":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0441 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C\u0438 \u0442\u0435\u0433\u0430\u043C\u0438","Select a tag to see related tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0433, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Open Task Genius view":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432\u0438\u0434 Task Genius","Task capture with metadata":"\u0417\u0430\u0445\u0432\u0430\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u043C\u0438","Refresh task index":"\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447","Refreshing task index...":"\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0438\u043D\u0434\u0435\u043A\u0441\u0430 \u0437\u0430\u0434\u0430\u0447...","Task index refreshed":"\u0418\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D","Failed to refresh task index":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447","Force reindex all tasks":"\u041F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Clearing task cache and rebuilding index...":"\u041E\u0447\u0438\u0441\u0442\u043A\u0430 \u043A\u044D\u0448\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0438\u043D\u0434\u0435\u043A\u0441\u0430...","Task index completely rebuilt":"\u0418\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0435\u043D","Failed to force reindex tasks":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","Task Genius View":"\u0412\u0438\u0434 Task Genius","Toggle Sidebar":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043A\u043E\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",Details:"\u0414\u0435\u0442\u0430\u043B\u0438",View:"\u0412\u0438\u0434","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"\u0412\u0438\u0434 Task Genius \u2014 \u044D\u0442\u043E \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0439 \u0432\u0438\u0434, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0431\u043E\u043B\u0435\u0435 \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438.","Enable task genius view":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0438\u0434 Task Genius","Select a task to view details":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438",Status:"\u0421\u0442\u0430\u0442\u0443\u0441","Comma separated":"\u0420\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438",Focus:"\u0424\u043E\u043A\u0443\u0441","Loading more...":"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0435\u0449\u0435...",projects:"\u043F\u0440\u043E\u0435\u043A\u0442\u044B","No tasks for this section.":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430.","No tasks found.":"\u0417\u0430\u0434\u0430\u0447\u0438 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.",Complete:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C","Switch status":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441","Rebuild index":"\u041F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441",Rebuild:"\u041F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C","0 tasks, 0 projects":"0 \u0437\u0430\u0434\u0430\u0447, 0 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","New Custom View":"\u041D\u043E\u0432\u044B\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Create Custom View":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Edit View: ":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0438\u0434: ","View Name":"\u0418\u043C\u044F \u0432\u0438\u0434\u0430","My Custom Task View":"\u041C\u043E\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434 \u0437\u0430\u0434\u0430\u0447","Icon Name":"\u0418\u043C\u044F \u0438\u043A\u043E\u043D\u043A\u0438","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043B\u044E\u0431\u043E\u0435 \u0438\u043C\u044F \u0438\u043A\u043E\u043D\u043A\u0438 Lucide (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, list-checks, filter, inbox)","Filter Rules":"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438","Hide Completed and Abandoned Tasks":"\u0421\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0438 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Hide completed and abandoned tasks in this view.":"\u0421\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0438 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u044D\u0442\u043E\u043C \u0432\u0438\u0434\u0435.","Text Contains":"\u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","Filter tasks whose content includes this text (case-insensitive).":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u044D\u0442\u043E\u0442 \u0442\u0435\u043A\u0441\u0442 (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Tags Include":"\u0422\u0435\u0433\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442","Task must include ALL these tags (comma-separated).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0412\u0421\u0415 \u044D\u0442\u0438 \u0442\u0435\u0433\u0438 (\u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438).","Tags Exclude":"\u0422\u0435\u0433\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u044E\u0442","Task must NOT include ANY of these tags (comma-separated).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u041D\u0418 \u041E\u0414\u0418\u041D \u0438\u0437 \u044D\u0442\u0438\u0445 \u0442\u0435\u0433\u043E\u0432 (\u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438).","Project Is":"\u041F\u0440\u043E\u0435\u043A\u0442","Task must belong to this project (exact match).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u043E\u0435\u043A\u0442\u0443 (\u0442\u043E\u0447\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435).","Priority Is":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Task must have this priority (e.g., 1, 2, 3).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u043C\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 1, 2, 3).","Status Include":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u044D\u0442\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, /,>).","Status Exclude":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u041D\u0415 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u044D\u0442\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 YYYY-MM-DD \u0438\u043B\u0438 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0442\u0435\u0440\u043C\u0438\u043D\u044B, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A '\u0441\u0435\u0433\u043E\u0434\u043D\u044F', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u043D\u0435\u0434\u0435\u043B\u0435', '\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C \u043C\u0435\u0441\u044F\u0446\u0435'.","Due Date Is":"\u0421\u0440\u043E\u043A \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Start Date Is":"\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430","Scheduled Date Is":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430","Path Includes":"\u041F\u0443\u0442\u044C \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task must contain this path (case-insensitive).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Path Excludes":"\u041F\u0443\u0442\u044C \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task must NOT contain this path (case-insensitive).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Unnamed View":"\u0411\u0435\u0437\u044B\u043C\u044F\u043D\u043D\u044B\u0439 \u0432\u0438\u0434","View configuration saved.":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430.","Hide Details":"\u0421\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438","Show Details":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438","View Config":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430","View Configuration":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0432\u0438\u0434\u044B \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438 Task Genius, \u0438\u0445 \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C, \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0438 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0432\u0438\u0434\u044B.","Manage Views":"\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0432\u0438\u0434\u0430\u043C\u0438","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0432\u0438\u0434\u044B \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438, \u0438\u0445 \u043F\u043E\u0440\u044F\u0434\u043E\u043A, \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C \u0438 \u0441\u043A\u0440\u044B\u0442\u0438\u0435/\u043F\u043E\u043A\u0430\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0432\u0438\u0434\u0430.","Show in sidebar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438","Edit View":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0438\u0434","Move Up":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0432\u0435\u0440\u0445","Move Down":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043D\u0438\u0437","Delete View":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0438\u0434","Add Custom View":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Error: View ID already exists.":"\u041E\u0448\u0438\u0431\u043A\u0430: \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0432\u0438\u0434\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.",Events:"\u0421\u043E\u0431\u044B\u0442\u0438\u044F",Plan:"\u041F\u043B\u0430\u043D",Year:"\u0413\u043E\u0434",Month:"\u041C\u0435\u0441\u044F\u0446",Week:"\u041D\u0435\u0434\u0435\u043B\u044F",Day:"\u0414\u0435\u043D\u044C",Agenda:"\u041F\u043E\u0432\u0435\u0441\u0442\u043A\u0430 \u0434\u043D\u044F","Back to categories":"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F\u043C","No matching options found":"\u0421\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E","No matching filters found":"\u0421\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0445 \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",Tag:"\u0422\u0435\u0433","File Path":"\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443","Add filter":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440","Clear all":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435","Add Card":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0443","First Day of Week":"\u041F\u0435\u0440\u0432\u044B\u0439 \u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438","Overrides the locale default for calendar views.":"\u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043B\u043E\u043A\u0430\u043B\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u0432\u0438\u0434\u043E\u0432 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F.","Show checkbox":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0444\u043B\u0430\u0436\u043E\u043A","Show a checkbox for each task in the kanban view.":"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0444\u043B\u0430\u0436\u043E\u043A \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043A\u0430\u043D\u0431\u0430\u043D.","Locale Default":"\u041B\u043E\u043A\u0430\u043B\u044C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","Use custom goal for progress bar":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0446\u0435\u043B\u044C \u0434\u043B\u044F \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0438\u0441\u043A\u0430\u043B \u0448\u0430\u0431\u043B\u043E\u043D g::number \u043A\u0430\u043A \u0446\u0435\u043B\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.","Prefer metadata format of task":"\u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0444\u043E\u0440\u043C\u0430\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447\u0438","You can choose dataview format or tasks format, that will influence both index and save format.":"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u043E\u0440\u043C\u0430\u0442 dataview \u0438\u043B\u0438 tasks, \u0447\u0442\u043E \u043F\u043E\u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0444\u043E\u0440\u043C\u0430\u0442 \u0438\u043D\u0434\u0435\u043A\u0441\u0430 \u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F.","Open in new tab":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432 \u043D\u043E\u0432\u043E\u0439 \u0432\u043A\u043B\u0430\u0434\u043A\u0435","Open settings":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438","Hide in sidebar":"\u0421\u043A\u0440\u044B\u0442\u044C \u0432 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438","No items found":"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","High Priority":"\u0412\u044B\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Medium Priority":"\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Low Priority":"\u041D\u0438\u0437\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","No tasks in the selected items":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u0445","View Type":"\u0422\u0438\u043F \u0432\u0438\u0434\u0430","Select the type of view to create":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u0432\u0438\u0434\u0430 \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F","Standard View":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u0432\u0438\u0434","Two Column View":"\u0414\u0432\u0443\u0445\u043A\u043E\u043B\u043E\u043D\u043E\u0447\u043D\u044B\u0439 \u0432\u0438\u0434",Items:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B","selected items":"\u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B","No items selected":"\u041D\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432","Two Column View Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u0432\u0443\u0445\u043A\u043E\u043B\u043E\u043D\u043E\u0447\u043D\u043E\u0433\u043E \u0432\u0438\u0434\u0430","Group by Task Property":"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0443 \u0437\u0430\u0434\u0430\u0447\u0438","Select which task property to use for left column grouping":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 \u0432 \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0435",Priorities:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u044B",Contexts:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u044B","Due Dates":"\u0421\u0440\u043E\u043A\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Scheduled Dates":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0434\u0430\u0442\u044B","Start Dates":"\u0414\u0430\u0442\u044B \u043D\u0430\u0447\u0430\u043B\u0430",Files:"\u0424\u0430\u0439\u043B\u044B","Left Column Title":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438","Title for the left column (items list)":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0434\u043B\u044F \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (\u0441\u043F\u0438\u0441\u043E\u043A \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432)","Right Column Title":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u0440\u0430\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438","Default title for the right column (tasks list)":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u043F\u0440\u0430\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (\u0441\u043F\u0438\u0441\u043E\u043A \u0437\u0430\u0434\u0430\u0447)","Multi-select Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0440\u0438 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u043C \u0432\u044B\u0431\u043E\u0440\u0435","Text to show when multiple items are selected":"\u0422\u0435\u043A\u0441\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432","Empty State Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0443\u0441\u0442\u043E\u0433\u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F","Text to show when no items are selected":"\u0422\u0435\u043A\u0441\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043A\u043E\u0433\u0434\u0430 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E","Filter Blanks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u0435","Filter out blank tasks in this view.":"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u044D\u0442\u043E\u043C \u0432\u0438\u0434\u0435.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430). \u0420\u0430\u0437\u0434\u0435\u043B\u044F\u0439\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0442\u0435\u0439 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430). \u0420\u0430\u0437\u0434\u0435\u043B\u044F\u0439\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0442\u0435\u0439 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","You have unsaved changes. Save before closing?":"\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043D\u0435\u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F. \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u0435\u043C?",Rotate:"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C","Are you sure you want to force reindex all tasks?":"\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438?","Enable progress bar in reading mode":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0447\u0442\u0435\u043D\u0438\u044F","Toggle this to allow this plugin to show progress bars in reading mode.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u043B \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0447\u0442\u0435\u043D\u0438\u044F.",Range:"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D","as a placeholder for the percentage value":"\u043A\u0430\u043A \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430","Template text with":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0430 \u0441",placeholder:"\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0435\u043C",Reindex:"\u041F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C","From now":"\u0421\u0435\u0439\u0447\u0430\u0441","Complete workflow":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Move to":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432",Settings:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow","Standard project management workflow":"Standard project management workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note format":"Daily note format","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled",Rewards:"Rewards","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable Rewards":"Enable Rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence Levels":"Occurrence Levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level Name (e.g., common)":"Level Name (e.g., common)","Chance (%)":"Chance (%)","Delete Level":"Delete Level","Add Occurrence Level":"Add Occurrence Level","New Level":"New Level","Reward Items":"Reward Items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward Name/Text":"Reward Name/Text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image URL (optional)":"Image URL (optional)","Delete Reward Item":"Delete Reward Item","No reward items defined yet.":"No reward items defined yet.","Add Reward Item":"Add Reward Item","New Reward":"New Reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Enable rewards":"Enable rewards","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Occurrence levels":"Occurrence levels","Add occurrence level":"Add occurrence level","Reward items":"Reward items","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","Add reward item":"Add reward item","moved on":"moved on","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task","Save Filter Configuration":"Save Filter Configuration","Filter Configuration Name":"Filter Configuration Name","Enter a name for this filter configuration":"Enter a name for this filter configuration","Filter Configuration Description":"Filter Configuration Description","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","Load Filter Configuration":"Load Filter Configuration","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration",Load:"Load",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","filter group":"filter group",filter:"filter","Root condition":"Root condition","Filter configuration name is required":"Filter configuration name is required","Failed to save filter configuration":"Failed to save filter configuration","Filter configuration saved successfully":"Filter configuration saved successfully","Failed to load filter configuration":"Failed to load filter configuration","Filter configuration loaded successfully":"Filter configuration loaded successfully","Failed to delete filter configuration":"Failed to delete filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration deleted successfully":"Filter configuration deleted successfully",Match:"Match",All:"All","Add filter group":"Add filter group","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Line Number":"Line Number","Clear Date":"Clear Date","Copy view":"Copy view","View copied successfully: ":"View copied successfully: ","Copy of ":"Copy of ","Copy view: ":"Copy view: ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.","Copy View":"Copy View",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},zO=V$});var W$,_O,UO=D(()=>{W$={"File Metadata Inheritance":"\u041D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0443","Configure how tasks inherit metadata from file frontmatter":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443","Enable file metadata inheritance":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0443","Allow tasks to inherit metadata properties from their file's frontmatter":"\u0414\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437 frontmatter \u0441\u0432\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445, \u0442\u0430\u043A\u0456 \u044F\u043A \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442, \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0442\u043E\u0449\u043E, \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443, \u043A\u043E\u043B\u0438 \u0432\u043E\u043D\u0438 \u043D\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0456 \u044F\u0432\u043D\u043E \u043D\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u0456","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u0414\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0456 \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443. \u041A\u043E\u043B\u0438 \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0442\u0456\u043B\u044C\u043A\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0435\u0440\u0445\u043D\u044C\u043E\u0433\u043E \u0440\u0456\u0432\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0456 \u0444\u0430\u0439\u043B\u0443","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u041A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u0438\u0439 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0434\u043B\u044F \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u0432 Obsidian \u0437 \u0456\u043D\u0434\u0456\u043A\u0430\u0442\u043E\u0440\u043E\u043C \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F, \u0446\u0438\u043A\u043B\u0456\u0447\u043D\u043E\u044E \u0437\u043C\u0456\u043D\u043E\u044E \u0441\u0442\u0430\u043D\u0456\u0432, \u0442\u0430 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u043C\u0438 \u0444\u0443\u043D\u043A\u0446\u0456\u044F\u043C\u0438 \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F.","Show progress bar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Toggle this to show the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Support hover to show progress info":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u0456","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E\u0457 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u0456 \u043D\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440.","Add progress bar to non-task bullet":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0434\u043E \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432 \u0441\u043F\u0438\u0441\u043A\u0443","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0434\u043E \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432 \u0441\u043F\u0438\u0441\u043A\u0443 (\u043D\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u044C).","Add progress bar to Heading":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0434\u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Enable heading progress bars":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438 \u0434\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432","Add progress bars to headings to show progress of all tasks under that heading.":"\u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438 \u0434\u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432, \u0449\u043E\u0431 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443\u0441\u0456\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0446\u0438\u043C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Auto complete parent task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0432 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0432\u0441\u0456 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456.","Mark parent as 'In Progress' when partially complete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456', \u044F\u043A\u0449\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E \u0447\u0430\u0441\u0442\u043A\u043E\u0432\u043E","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u042F\u043A\u0449\u043E \u0434\u0435\u044F\u043A\u0456, \u0430\u043B\u0435 \u043D\u0435 \u0432\u0441\u0456 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456, \u043F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456'. \u041F\u0440\u0430\u0446\u044E\u0454 \u043B\u0438\u0448\u0435 \u043F\u0440\u0438 \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u0456\u0439 \u043E\u043F\u0446\u0456\u0457 '\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F'.","Count sub children level of current Task":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to count sub tasks.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Checkbox Status Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Select a predefined task status collection or customize your own":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u043D\u0430\u0431\u0456\u0440 \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u0430\u0431\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u043B\u0430\u0441\u043D\u0438\u0439","Completed task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "x|X"',"Planned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent planned tasks. Example: "?"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "?"',"In progress task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: ">|/"',"Abandoned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u043D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u0417\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u2014 \u043F\u0440\u043E\u0431\u0456\u043B " "',"Count other statuses as":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438 \u044F\u043A",'Select the status to count other statuses as. Default is "Not Started".':'\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441, \u0443 \u044F\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u0442\u0438 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438. \u0417\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u2014 "\u041D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E".',"Task Counting Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Exclude specific task markers":"\u0412\u0438\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Specify task markers to exclude from counting. Example: "?|/"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u044F\u043A\u0456 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0437 \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "?|/"',"Only count specific task markers":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to only count specific task markers":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Specific task markers to count":"\u041F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443",'Specify which task markers to count. Example: "x|X|>|/"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C, \u044F\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "x|X|>|/"',"Conditional Progress Bar Display":"\u0423\u043C\u043E\u0432\u043D\u0435 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Hide progress bars based on conditions":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0437\u0430 \u043F\u0435\u0432\u043D\u0438\u0445 \u0443\u043C\u043E\u0432","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u0425\u043E\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0437\u0430 \u0443\u043C\u043E\u0432\u0430\u043C\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u043C\u0456\u0442\u043E\u043A, \u0442\u0435\u043A, \u0430\u0431\u043E \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0435\u0439.","Hide by tags":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u043C\u0456\u0442\u043A\u0430\u043C\u0438",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0438, \u044F\u043A\u0456 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0443\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 (\u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043C\u0443, \u0431\u0435\u0437 #). \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "no-progress-bar,hide-progress"',"Hide by folders":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0442\u0435\u043A\u0430\u043C\u0438",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0448\u043B\u044F\u0445 \u0434\u043E \u0442\u0435\u043A \u0432 \u044F\u043A\u0438\u0445 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 (\u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043C\u0443). \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "Daily Notes,Projects/Hidden"',"Hide by metadata":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044F\u043C\u0438",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C, \u044F\u043A\u0430 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u043D\u043E\u0442\u0430\u0442\u0446\u0456. \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "hide-progress-bar:true"',"Checkbox Status Switcher":"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable task status switcher":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable/disable the ability to cycle through task states by clicking.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438/\u0432\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u043E\u0436\u043B\u0438\u0432\u0456\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u044F\u043C.","Enable custom task marks":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u0417\u0430\u043C\u0456\u043D\u0456\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0456 \u043F\u0440\u0430\u043F\u043E\u0440\u0446\u0456 \u043D\u0430 \u0441\u0442\u0438\u043B\u0456\u0437\u043E\u0432\u0430\u043D\u0456 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u044F\u043A\u0456 \u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u0437\u0430 \u0432\u0430\u0448\u0438\u043C \u0446\u0438\u043A\u043B\u043E\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u0456.","Enable cycle complete status":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0446\u0438\u043A\u043B\u0456\u0447\u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438/\u0432\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0435 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u0456 \u043D\u0430 \u043C\u0430\u0440\u043A\u0435\u0440.","Always cycle new tasks":"\u0417\u0430\u0432\u0436\u0434\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438 \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043E\u0434\u0440\u0430\u0437\u0443 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441. \u042F\u043A\u0449\u043E \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u0434\u0456\u0439\u0441\u043D\u0438\u043C\u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u0430\u043C\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0443\u0442\u044C \u0441\u0432\u0456\u0439 \u043F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440.","Checkbox Status Cycle and Marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0441\u0442\u0430\u043D\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438. \u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0437\u0432\u0435\u0440\u0445\u0443 \u0432\u043D\u0438\u0437 \u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u0456\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F.","Add Status":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441","Completed Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable completed task mover":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for moving completed tasks to another file.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443.","Task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Choose what type of marker to add to moved tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430, \u044F\u043A\u0438\u0439 \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0456\u0457","Text to append to tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0435\u0440\u0441\u0456\u044F 1.0')","Date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0434\u0430\u0442\u0438","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0430\u0440\u0445\u0456\u0432\u043E\u0432\u0430\u043D\u043E 2023-12-31')","Custom marker text":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 {{DATE:format}} \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: {{DATE:YYYY-MM-DD}})","Treat abandoned tasks as completed":"\u0412\u0432\u0430\u0436\u0430\u0442\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438","If enabled, abandoned tasks will be treated as completed.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438.","Complete all moved tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","If enabled, all moved tasks will be marked as completed.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0443\u0441\u0456 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0456 \u044F\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456.","With current file link":"\u0417 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F\u043C \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B","A link to the current file will be added to the parent task of the moved tasks.":"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Say Thank You":"\u041F\u043E\u0434\u044F\u043A\u0443\u0432\u0430\u0442\u0438",Donate:"\u041F\u043E\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u0442\u0438","If you like this plugin, consider donating to support continued development:":"\u042F\u043A\u0449\u043E \u0432\u0430\u043C \u043F\u043E\u0434\u043E\u0431\u0430\u0454\u0442\u044C\u0441\u044F \u0446\u0435\u0439 \u0434\u043E\u0434\u0430\u0442\u043E\u043A, \u043F\u043E\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043F\u0440\u043E \u043F\u043E\u0436\u0435\u0440\u0442\u0432\u0443 \u0434\u043B\u044F \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0438 \u043F\u043E\u0434\u0430\u043B\u044C\u0448\u043E\u0433\u043E \u0440\u043E\u0437\u0432\u0438\u0442\u043A\u0443:","Add number to the Progress Bar":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0447\u0438\u0441\u043B\u043E \u0434\u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Toggle this to allow this plugin to add tasks number to progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0434\u043E\u0434\u0430\u0432\u0430\u0432 \u0447\u0438\u0441\u043B\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Show percentage":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A","Toggle this to allow this plugin to show percentage in the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0432 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0456.","Customize progress text":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Toggle this to customize text representation for different progress percentage ranges.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0456\u0432 \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443.","Progress Ranges":"\u0414\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Define progress ranges and their corresponding text representations.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0442\u0430 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0456 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F.","Add new range":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D","Add a new progress percentage range with custom text":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0437 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u043C","Min percentage (0-100)":"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A (0-100)","Max percentage (0-100)":"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A (0-100)","Text template (use {{PROGRESS}})":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 {{PROGRESS}})","Reset to defaults":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Reset progress ranges to default values":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0434\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C",Reset:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438","Priority Picker Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u043F\u0430\u0434\u0430\u044E\u0447\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0432\u0438\u0431\u043E\u0440\u0443 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443 \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0456\u0432 \u0437 \u0435\u043C\u043E\u0434\u0437\u0456 \u0442\u0430 \u043B\u0456\u0442\u0435\u0440\u0430\u043C\u0438.","Enable priority picker":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Enable priority keyboard shortcuts":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0433\u0430\u0440\u044F\u0447\u0456 \u043A\u043B\u0430\u0432\u0456\u0448\u0456 \u0434\u043B\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Toggle to enable keyboard shortcuts for setting task priorities.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0433\u0430\u0440\u044F\u0447\u0456 \u043A\u043B\u0430\u0432\u0456\u0448\u0456 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Date picker":"\u0412\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438","Enable date picker":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0426\u0435 \u0434\u043E\u0434\u0430\u0441\u0442\u044C \u0456\u043A\u043E\u043D\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u043F\u043E\u0440\u0443\u0447 \u0456\u0437 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438, \u043D\u0430 \u044F\u043A\u0443 \u043C\u043E\u0436\u043D\u0430 \u043D\u0430\u0442\u0438\u0441\u043D\u0443\u0442\u0438 \u0434\u043B\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u0434\u0430\u0442\u0438.","Date mark":"\u041C\u0430\u0440\u043A\u0435\u0440 \u0434\u0430\u0442\u0438","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u0415\u043C\u043E\u0434\u0437\u0456 \u0456\u043A\u043E\u043D\u043A\u0438 \u0434\u043B\u044F \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0434\u0430\u0442. \u041C\u043E\u0436\u043D\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043A\u0456\u043B\u044C\u043A\u0430 \u0435\u043C\u043E\u0434\u0437\u0456, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0438\u0445 \u043A\u043E\u043C\u0430\u043C\u0438.","Quick capture":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Enable quick capture":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0448\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0432 \u0441\u0442\u0438\u043B\u0456 Org-mode. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C Alt+C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F.","Target file":"\u0426\u0456\u043B\u044C\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u0424\u0430\u0439\u043B, \u0443 \u044F\u043A\u043E\u043C\u0443 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442. \u041C\u043E\u0436\u043D\u0430 \u0432\u043A\u0430\u0437\u0430\u0442\u0438 \u0448\u043B\u044F\u0445, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 'folder/Quick Capture.md'","Placeholder text":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447","Placeholder text to display in the capture panel":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447 \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0432 \u043F\u0430\u043D\u0435\u043B\u0456 \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F","Append to file":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0434\u043E \u0444\u0430\u0439\u043B\u0443","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u0434\u043E \u0446\u0456\u043B\u044C\u043E\u0432\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443. \u042F\u043A\u0449\u043E \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0432\u0456\u043D \u0437\u0430\u043C\u0456\u043D\u0438\u0442\u044C \u0432\u043C\u0456\u0441\u0442 \u0444\u0430\u0439\u043B\u0443.","Task Filter":"\u0424\u0456\u043B\u044C\u0442\u0440 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable Task Filter":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable the task filter panel":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0456\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Preset Filters":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Create and manage preset filters for quick access to commonly used task filters.":"\u0421\u0442\u0432\u043E\u0440\u044E\u0439\u0442\u0435 \u0442\u0430 \u043A\u0435\u0440\u0443\u0439\u0442\u0435 \u0442\u0438\u043F\u043E\u0432\u0438\u043C\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C\u0438 \u0434\u043B\u044F \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0443 \u0434\u043E \u0447\u0430\u0441\u0442\u043E \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0454\u043C\u0438\u0445 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Edit Filter: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440: ","Filter name":"\u041D\u0430\u0437\u0432\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Checkbox Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include or exclude tasks based on their status":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438, \u0430\u0431\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u0457\u0445\u043D\u044C\u043E\u0433\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Include Completed Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include In Progress Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","Include Abandoned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Not Started Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u043D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Planned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Related Tasks":"\u041F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include parent, child, and sibling tasks in the filter":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456, \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0442\u0430 \u0441\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0444\u0456\u043B\u044C\u0442\u0440","Include Parent Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Child Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Sibling Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0441\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Advanced Filter":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u0456 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0457: AND, OR, NOT. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0437\u043C\u0456\u0441\u0442 \u0442\u0435\u043A\u0441\u0442\u0443 AND #\u043C\u0456\u0442\u043A\u04301'","Filter query":"\u0417\u0430\u043F\u0438\u0442 \u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u043D\u043D\u044F","Filter out tasks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u0438\u0442\u0443, \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0456, \u0456\u043D\u0430\u043A\u0448\u0435 \u0432\u043E\u043D\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F",Save:"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",Cancel:"\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438","Hide filter panel":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Show filter panel":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Filter Tasks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Preset filters":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Select a saved filter preset to apply":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440 \u0434\u043B\u044F \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F","Select a preset...":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F\u043E\u0432\u0438\u0439...",Query:"\u0417\u0430\u043F\u0438\u0442","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u0456 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0457: AND, OR, NOT. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0437\u043C\u0456\u0441\u0442 \u0442\u0435\u043A\u0441\u0442\u0443 AND #\u043C\u0456\u0442\u043A\u04301 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u041F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454: >, <, =, >=, <=, != \u0434\u043B\u044F PRIORITY \u0442\u0430 DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u0438\u0442\u0443, \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0456, \u0456\u043D\u0430\u043A\u0448\u0435 \u0432\u043E\u043D\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F",Completed:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","In Progress":"\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456",Abandoned:"\u041F\u043E\u043A\u0438\u043D\u0443\u0442\u043E","Not Started":"\u041D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E",Planned:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E","Include Related Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Parent Tasks":"\u0411\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Child Tasks":"\u0414\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Sibling Tasks":"\u0421\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Apply:"\u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u0442\u0438","New Preset":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Preset saved":"\u0422\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043E","No changes to save":"\u041D\u0435\u043C\u0430\u0454 \u0437\u043C\u0456\u043D \u0434\u043B\u044F \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F",Close:"\u0417\u0430\u043A\u0440\u0438\u0442\u0438","Capture to":"\u0417\u0430\u0445\u043E\u043F\u0438\u0442\u0438 \u0434\u043E",Capture:"\u0417\u0430\u0445\u043E\u043F\u0438\u0442\u0438","Capture thoughts, tasks, or ideas...":"\u0417\u0430\u0445\u043E\u043F\u043B\u044E\u0439\u0442\u0435 \u0434\u0443\u043C\u043A\u0438, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0447\u0438 \u0456\u0434\u0435\u0457...",Tomorrow:"\u0417\u0430\u0432\u0442\u0440\u0430","In 2 days":"\u0427\u0435\u0440\u0435\u0437 2 \u0434\u043D\u0456","In 3 days":"\u0427\u0435\u0440\u0435\u0437 3 \u0434\u043D\u0456","In 5 days":"\u0427\u0435\u0440\u0435\u0437 5 \u0434\u043D\u0456\u0432","In 1 week":"\u0427\u0435\u0440\u0435\u0437 1 \u0442\u0438\u0436\u0434\u0435\u043D\u044C","In 10 days":"\u0427\u0435\u0440\u0435\u0437 10 \u0434\u043D\u0456\u0432","In 2 weeks":"\u0427\u0435\u0440\u0435\u0437 2 \u0442\u0438\u0436\u043D\u0456","In 1 month":"\u0427\u0435\u0440\u0435\u0437 1 \u043C\u0456\u0441\u044F\u0446\u044C","In 2 months":"\u0427\u0435\u0440\u0435\u0437 2 \u043C\u0456\u0441\u044F\u0446\u0456","In 3 months":"\u0427\u0435\u0440\u0435\u0437 3 \u043C\u0456\u0441\u044F\u0446\u0456","In 6 months":"\u0427\u0435\u0440\u0435\u0437 6 \u043C\u0456\u0441\u044F\u0446\u0456\u0432","In 1 year":"\u0427\u0435\u0440\u0435\u0437 1 \u0440\u0456\u043A","In 5 years":"\u0427\u0435\u0440\u0435\u0437 5 \u0440\u043E\u043A\u0456\u0432","In 10 years":"\u0427\u0435\u0440\u0435\u0437 10 \u0440\u043E\u043A\u0456\u0432",Today:"\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456","Quick Select":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0432\u0438\u0431\u0456\u0440",Calendar:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440","Clear Date":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0434\u0430\u0442\u0443","Highest priority":"\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","High priority":"\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Medium priority":"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","No priority":"\u0411\u0435\u0437 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Low priority":"\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Lowest priority":"\u041D\u0430\u0439\u043D\u0438\u0436\u0447\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Priority A":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 A","Priority B":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 B","Priority C":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 C","Task Priority":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Remove Priority":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Cycle task status forward":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u043F\u0435\u0440\u0435\u0434","Cycle task status backward":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430\u0437\u0430\u0434","Remove priority":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Move task to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move all completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move direct completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u044F\u043C\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move all subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Incomplete Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable incomplete task mover":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for moving incomplete tasks to another file.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443.","Incomplete task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Choose what type of marker to add to moved incomplete tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A\u0438\u0439 \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0434\u043E\u0434\u0430\u0442\u0438 \u0434\u043E \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Incomplete version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0433\u043E","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0435\u0440\u0441\u0456\u044F 1.0')","Incomplete date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0457 \u0434\u0430\u0442\u0438","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E 2023-12-31')","Incomplete custom marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0433\u043E","With current file link for incomplete tasks":"\u0417 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u043C \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F\u043C \u043D\u0430 \u0444\u0430\u0439\u043B \u0434\u043B\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Move all incomplete subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move direct incomplete subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u044F\u043C\u0456 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","moved on":"\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E","Set priority":"\u0412\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Toggle quick capture panel":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F","Quick capture (Global)":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442 (\u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E)","Toggle task filter panel":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Filter Mode":"\u0420\u0435\u0436\u0438\u043C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457","Choose whether to include or exclude tasks that match the filters":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0447\u0438 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C","Show matching tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Hide matching tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Choose whether to show or hide tasks that match the filters":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0447\u0438 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C","Create new file:":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B:","Completed tasks moved to":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0434\u043E","Failed to create file:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0444\u0430\u0439\u043B:","Beginning of file":"\u041F\u043E\u0447\u0430\u0442\u043E\u043A \u0444\u0430\u0439\u043B\u0443","Failed to move tasks:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F:","No active file found":"\u0410\u043A\u0442\u0438\u0432\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E","Task moved to":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E \u0434\u043E","Failed to move task:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F:","Nothing to capture":"\u041D\u0435\u043C\u0430\u0454 \u0449\u043E \u0437\u0430\u0445\u043E\u043F\u0438\u0442\u0438","Captured successfully":"\u0423\u0441\u043F\u0456\u0448\u043D\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043E","Failed to save:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438:","Captured successfully to":"\u0423\u0441\u043F\u0456\u0448\u043D\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043E \u0434\u043E",Total:"\u0417\u0430\u0433\u0430\u043B\u043E\u043C",Workflow:"\u0420\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Add as workflow root":"\u0414\u043E\u0434\u0430\u0442\u0438 \u044F\u043A \u043A\u043E\u0440\u0456\u043D\u044C \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Move to stage":"\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u0435\u0442\u0430\u043F\u0443","Complete stage":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u0435\u0442\u0430\u043F","Add child task with same stage":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u0442\u0438\u043C \u0441\u0430\u043C\u0438\u043C \u0435\u0442\u0430\u043F\u043E\u043C","Could not open quick capture panel in the current editor":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0432 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u043C\u0443 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0456","Just started {{PROGRESS}}%":"\u0429\u043E\u0439\u043D\u043E \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441 {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u041D\u0430 \u043F\u0456\u0432\u0434\u043E\u0440\u043E\u0437\u0456 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u0413\u0430\u0440\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441 {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u041C\u0430\u0439\u0436\u0435 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u0435 {{PROGRESS}}%","Progress bar":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u043C\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u0456 (\u0437\u0430\u0437\u0432\u0438\u0447\u0430\u0439 \u043D\u0430\u043F\u0440\u0438\u043A\u0456\u043D\u0446\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F). \u0422\u0430\u043A\u043E\u0436 \u043C\u043E\u0436\u043D\u0430 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Hide progress bars":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438","Parent task changer":"\u0417\u043C\u0456\u043D\u0430 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Change the parent task of the current task.":"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","No preset filters created yet. Click 'Add New Preset' to create one.":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 \u0449\u0435 \u043D\u0435 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u0456. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C '\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440', \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u043E\u0434\u0438\u043D.","Configure task workflows for project and process management":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0440\u043E\u0431\u043E\u0447\u0456 \u043F\u0440\u043E\u0446\u0435\u0441\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u043C\u0438 \u0442\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0430\u043C\u0438","Enable workflow":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Toggle to enable the workflow system for tasks":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Auto-add timestamp":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443","Automatically add a timestamp to the task when it is created":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0456\u0434 \u0447\u0430\u0441 \u0439\u043E\u0433\u043E \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Timestamp format:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0447\u0430\u0441\u043E\u0432\u043E\u0457 \u043C\u0456\u0442\u043A\u0438:","Timestamp format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0447\u0430\u0441\u043E\u0432\u043E\u0457 \u043C\u0456\u0442\u043A\u0438","Remove timestamp when moving to next stage":"\u0412\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Remove the timestamp from the current task when moving to the next stage":"\u0412\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u0437 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Calculate spent time":"\u041E\u0431\u0447\u0438\u0441\u043B\u0438\u0442\u0438 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441","Calculate and display the time spent on the task when moving to the next stage":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0430 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u0447\u0430\u0441, \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u043D\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Format for spent time:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0443:","Calculate spent time when move to next stage.":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443.","Spent time format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0443","Calculate full spent time":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0432\u043D\u0438\u0439 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441","Calculate the full spent time from the start of the task to the last stage":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0432\u043D\u0438\u0439 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441 \u0432\u0456\u0434 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Auto remove last stage marker":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u043C\u0430\u0440\u043A\u0435\u0440 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Automatically remove the last stage marker when a task is completed":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u043C\u0430\u0440\u043A\u0435\u0440 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","Auto-add next task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Automatically create a new task with the next stage when completing a task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0441\u0442\u0432\u043E\u0440\u044E\u0432\u0430\u0442\u0438 \u043D\u043E\u0432\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u043C \u0435\u0442\u0430\u043F\u043E\u043C \u043F\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Workflow definitions":"\u0412\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432","Configure workflow templates for different types of processes":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0448\u0430\u0431\u043B\u043E\u043D\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0442\u0438\u043F\u0456\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0449\u0435 \u043D\u0435 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u0456. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C '\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441', \u0449\u043E\u0431 \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043E\u0434\u0438\u043D.","Edit workflow":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Remove workflow":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Delete workflow":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441",Delete:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438","Add New Workflow":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","New Workflow":"\u041D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Create New Workflow":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Workflow name":"\u041D\u0430\u0437\u0432\u0430 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","A descriptive name for the workflow":"\u041E\u043F\u0438\u0441\u043E\u0432\u0430 \u043D\u0430\u0437\u0432\u0430 \u0434\u043B\u044F \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Workflow ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","A unique identifier for the workflow (used in tags)":"\u0423\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u044C\u0441\u044F \u0443 \u043C\u0456\u0442\u043A\u0430\u0445)",Description:"\u041F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456","Optional description for the workflow":"\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u0438\u0439 \u043E\u043F\u0438\u0441 \u0434\u043B\u044F \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Describe the purpose and use of this workflow...":"\u041E\u043F\u0438\u0448\u0456\u0442\u044C \u043F\u0440\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0442\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u0446\u044C\u043E\u0433\u043E \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443...","Workflow Stages":"\u0415\u0442\u0430\u043F\u0438 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","No stages defined yet. Add a stage to get started.":"\u0415\u0442\u0430\u043F\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u0435\u0442\u0430\u043F, \u0449\u043E\u0431 \u043F\u043E\u0447\u0430\u0442\u0438.",Edit:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438","Move up":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0433\u043E\u0440\u0443","Move down":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437","Sub-stage":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F","Sub-stage name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0443","Sub-stage ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0443","Next: ":"\u0414\u0430\u043B\u0456: ","Add Sub-stage":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0456\u0434\u0435\u0442\u0430\u043F","New Sub-stage":"\u041D\u043E\u0432\u0438\u0439 \u043F\u0456\u0434\u0435\u0442\u0430\u043F","Edit Stage":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0435\u0442\u0430\u043F","Stage name":"\u041D\u0430\u0437\u0432\u0430 \u0435\u0442\u0430\u043F\u0443","A descriptive name for this workflow stage":"\u041E\u043F\u0438\u0441\u043E\u0432\u0430 \u043D\u0430\u0437\u0432\u0430 \u0434\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Stage ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0435\u0442\u0430\u043F\u0443","A unique identifier for the stage (used in tags)":"\u0423\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0435\u0442\u0430\u043F\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u044C\u0441\u044F \u0443 \u043C\u0456\u0442\u043A\u0430\u0445)","Stage type":"\u0422\u0438\u043F \u0435\u0442\u0430\u043F\u0443","The type of this workflow stage":"\u0422\u0438\u043F \u0446\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Linear (sequential)":"\u041B\u0456\u043D\u0456\u0439\u043D\u0438\u0439 (\u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u0438\u0439)","Cycle (repeatable)":"\u0426\u0438\u043A\u043B\u0456\u0447\u043D\u0438\u0439 (\u043F\u043E\u0432\u0442\u043E\u0440\u044E\u0432\u0430\u043D\u0438\u0439)","Terminal (end stage)":"\u0422\u0435\u0440\u043C\u0456\u043D\u0430\u043B\u044C\u043D\u0438\u0439 (\u043A\u0456\u043D\u0446\u0435\u0432\u0438\u0439 \u0435\u0442\u0430\u043F)","Next stage":"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0435\u0442\u0430\u043F","The stage to proceed to after this one":"\u0415\u0442\u0430\u043F, \u0434\u043E \u044F\u043A\u043E\u0433\u043E \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043F\u0456\u0441\u043B\u044F \u0446\u044C\u043E\u0433\u043E","Sub-stages":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F\u0438","Define cycle sub-stages (optional)":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0446\u0438\u043A\u043B\u0438 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0456\u0432 (\u043D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E)","No sub-stages defined yet.":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.","Can proceed to":"\u041C\u043E\u0436\u0435 \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E","Additional stages that can follow this one (for right-click menu)":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0456 \u0435\u0442\u0430\u043F\u0438, \u044F\u043A\u0456 \u043C\u043E\u0436\u0443\u0442\u044C \u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0446\u0438\u043C (\u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u043E\u0433\u043E \u043C\u0435\u043D\u044E)","No additional destination stages defined.":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0456 \u0446\u0456\u043B\u044C\u043E\u0432\u0456 \u0435\u0442\u0430\u043F\u0438 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.",Remove:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",Add:"\u0414\u043E\u0434\u0430\u0442\u0438","Name and ID are required.":"\u041D\u0430\u0437\u0432\u0430 \u0442\u0430 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0454 \u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u0438\u043C\u0438.","End of file":"\u041A\u0456\u043D\u0435\u0446\u044C \u0444\u0430\u0439\u043B\u0443","Include in cycle":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0432 \u0446\u0438\u043A\u043B",Preset:"\u0422\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Preset name":"\u041D\u0430\u0437\u0432\u0430 \u0442\u0438\u043F\u043E\u0432\u043E\u0433\u043E \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Edit Filter":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Add New Preset":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","New Filter":"\u041D\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Reset to Default Presets":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0442\u0438\u043F\u043E\u0432\u0438\u0445 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","This will replace all your current presets with the default set. Are you sure?":"\u0426\u0435 \u0437\u0430\u043C\u0456\u043D\u0438\u0442\u044C \u0443\u0441\u0456 \u0432\u0430\u0448\u0456 \u043F\u043E\u0442\u043E\u0447\u043D\u0456 \u0442\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 \u043D\u0430 \u043D\u0430\u0431\u0456\u0440 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C. \u0412\u0438 \u0432\u043F\u0435\u0432\u043D\u0435\u043D\u0456?","Edit Workflow":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441",General:"\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0456","Progress Bar":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Quick Capture":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Date & Priority":"\u0414\u0430\u0442\u0430 \u0442\u0430 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442",About:"\u0414\u043E\u0432\u0456\u0434\u043A\u0430","Count sub children of current Task":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 .","Configure task status settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Configure which task markers to count or exclude":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438, \u044F\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438, \u0430\u0431\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438","Task status cycle and marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0442\u0430 \u043C\u0430\u0440\u043A\u0435\u0440\u0438","About Task Genius":"\u041F\u0440\u043E Task Genius",Version:"\u0412\u0435\u0440\u0441\u0456\u044F",Documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044F","View the documentation for this plugin":"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044E \u0446\u044C\u043E\u0433\u043E \u0434\u043E\u0434\u0430\u0442\u043A\u0443","Open Documentation":"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044E","Incomplete tasks":"\u041D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","In progress tasks":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","Completed tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","All tasks":"\u0423\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","After heading":"\u041F\u0456\u0441\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443","End of section":"\u041A\u0456\u043D\u0435\u0446\u044C \u0440\u043E\u0437\u0434\u0456\u043B\u0443","Enable text mark in source mode":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0443 \u0432\u0438\u0445\u0456\u0434\u043D\u043E\u043C\u0443 \u0440\u0435\u0436\u0438\u043C\u0456","Make the text mark in source mode follow the task status cycle when clicked.":"\u0417\u0440\u043E\u0431\u0438\u0442\u0438 \u0442\u0430\u043A, \u0449\u043E\u0431 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0443 \u0432\u0438\u0445\u0456\u0434\u043D\u043E\u043C\u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0432 \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u0456.","Status name":"\u041D\u0430\u0437\u0432\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Progress display mode":"\u0420\u0435\u0436\u0438\u043C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Choose how to display task progress":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","No progress indicators":"\u0411\u0435\u0437 \u0456\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Graphical progress bar":"\u0413\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Text progress indicator":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Both graphical and text":"\u0413\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439 \u0442\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Progress format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Choose how to display the task progress":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Percentage (75%)":"\u0412\u0456\u0434\u0441\u043E\u0442\u043E\u043A (75%)","Bracketed percentage ([75%])":"\u0412\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0443 \u0434\u0443\u0436\u043A\u0430\u0445 ([75%])","Fraction (3/4)":"\u0414\u0440\u0456\u0431 (3/4)","Bracketed fraction ([3/4])":"\u0414\u0440\u0456\u0431 \u0443 \u0434\u0443\u0436\u043A\u0430\u0445 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u0414\u0435\u0442\u0430\u043B\u044C\u043D\u043E ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442","Range-based text":"\u0422\u0435\u043A\u0441\u0442 \u0437 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0443","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0442\u0430\u043A\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456: {{COMPLETED}}, {{TOTAL}}, {{PERCENT}} \u0442\u043E\u0449\u043E.","Preview:":"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434:","Available placeholders":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438 \u0432\u0438\u0440\u0430\u0437\u0456\u0432","Examples of advanced formats using expressions":"\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u0445 \u0444\u043E\u0440\u043C\u0430\u0442\u0456\u0432 \u0456\u0437 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F\u043C \u0432\u0438\u0440\u0430\u0437\u0456\u0432","Text Progress Bar":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Emoji Progress Bar":"\u0415\u043C\u043E\u0434\u0437\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Color-coded Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0456\u0437 \u043A\u043E\u043B\u044C\u043E\u0440\u043E\u0432\u0438\u043C \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Status with Icons":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0456\u0437 \u0456\u043A\u043E\u043D\u043A\u0430\u043C\u0438",Preview:"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434",Use:"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438","Save Filter Configuration":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Load Filter Configuration":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Save Current Filter":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Load Saved Filter":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Filter Configuration Name":"\u041D\u0430\u0437\u0432\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Filter Configuration Description":"\u041E\u043F\u0438\u0441 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Enter a name for this filter configuration":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0434\u043B\u044F \u0446\u0456\u0454\u0457 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Enter a description for this filter configuration (optional)":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043E\u043F\u0438\u0441 \u0434\u043B\u044F \u0446\u0456\u0454\u0457 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430 (\u043D\u0435\u043E\u0431\u043E\u0432'\u044F\u0437\u043A\u043E\u0432\u043E)","No saved filter configurations":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0439 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Select a saved filter configuration":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0443 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Delete Filter Configuration":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Are you sure you want to delete this filter configuration?":"\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0446\u044E \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430?","Filter configuration saved successfully":"\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration loaded successfully":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration deleted successfully":"\u0412\u0438\u0434\u0430\u043B\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to save filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to load filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to delete filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration name is required":"\u041D\u0430\u0437\u0432\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443 \u043E\u0431\u043E\u0432'\u044F\u0437\u043A\u043E\u0432\u0435","Toggle this to show percentage instead of completed/total count.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0437\u0430\u043C\u0456\u0441\u0442\u044C \u043A\u0456\u043B\u044C\u043A\u043E\u0441\u0442\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445/\u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0445.","Customize progress ranges":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Toggle this to customize the text for different progress ranges.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443.","Apply Theme":"\u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043C\u0443","Back to main settings":"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438\u0441\u044F \u0434\u043E \u043E\u0441\u043D\u043E\u0432\u043D\u0438\u0445 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"\u041F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0430 \u0432\u0438\u0440\u0430\u0437\u0456\u0432 \u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0456, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F data.percentages \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0410 \u0442\u0430\u043A\u043E\u0436 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439, \u0430\u0431\u043E \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u041F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0430 \u0432\u0438\u0440\u0430\u0437\u0456\u0432 \u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0456, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F data.percentages \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0410 \u0442\u0430\u043A\u043E\u0436 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439, \u0430\u0431\u043E \u0444\u0443\u043D\u043A\u0446\u0456\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443.","Target File:":"\u0426\u0456\u043B\u044C\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B:","Task Properties":"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Start Date":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Due Date":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Scheduled Date":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430",Priority:"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442",None:"\u041D\u0435\u043C\u0430\u0454",Highest:"\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439",High:"\u0412\u0438\u0441\u043E\u043A\u0438\u0439",Medium:"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439",Low:"\u041D\u0438\u0437\u044C\u043A\u0438\u0439",Lowest:"\u041D\u0430\u0439\u043D\u0438\u0436\u0447\u0438\u0439",Project:"\u041F\u0440\u043E\u0454\u043A\u0442","Project name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u043E\u0454\u043A\u0442\u0443",Context:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442",Recurrence:"\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","e.g., every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u0449\u043E\u0442\u0438\u0436\u043D\u044F","Task Content":"\u0412\u043C\u0456\u0441\u0442 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Task Details":"\u0414\u0435\u0442\u0430\u043B\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",File:"\u0424\u0430\u0439\u043B","Edit in File":"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0443 \u0444\u0430\u0439\u043B\u0456","Mark Incomplete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","Mark Complete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","Task Title":"\u041D\u0430\u0437\u0432\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Tags:"\u041C\u0456\u0442\u043A\u0438","e.g. every day, every 2 weeks":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u043A\u043E\u0436\u043D\u0456 2 \u0442\u0438\u0436\u043D\u0456",Forecast:"\u041F\u0440\u043E\u0433\u043D\u043E\u0437","0 actions, 0 projects":"0 \u0434\u0456\u0439, 0 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","Toggle list/tree view":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0441\u043F\u0438\u0441\u043A\u0443/\u0434\u0435\u0440\u0435\u0432\u0430","Focusing on Work":"\u0424\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430 \u0440\u043E\u0431\u043E\u0442\u0456",Unfocus:"\u0420\u043E\u0437\u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u0442\u0438","Past Due":"\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u043E",Future:"\u041C\u0430\u0439\u0431\u0443\u0442\u043D\u0454",actions:"\u0434\u0456\u0457",project:"\u043F\u0440\u043E\u0454\u043A\u0442","Coming Up":"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0456",Task:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Tasks:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F","No upcoming tasks":"\u041D\u0435\u043C\u0430\u0454 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","No tasks scheduled":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","0 tasks":"0 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Filter tasks...":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F...",Projects:"\u041F\u0440\u043E\u0454\u043A\u0442\u0438","Toggle multi-select":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u043D\u043E\u0436\u0438\u043D\u043D\u0438\u0439 \u0432\u0438\u0431\u0456\u0440","No projects found":"\u041F\u0440\u043E\u0454\u043A\u0442\u0438 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456","projects selected":"\u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432",tasks:"\u0437\u0430\u0432\u0434\u0430\u043D\u044C","No tasks in the selected projects":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043E\u0431\u0440\u0430\u043D\u0438\u0445 \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u0445","Select a project to see related tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442, \u0449\u043E\u0431 \u043F\u043E\u0431\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Configure Review for":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043E\u0433\u043B\u044F\u0434 \u0434\u043B\u044F","Review Frequency":"\u0427\u0430\u0441\u0442\u043E\u0442\u0430 \u043E\u0433\u043B\u044F\u0434\u0443","How often should this project be reviewed":"\u042F\u043A \u0447\u0430\u0441\u0442\u043E \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u043E\u0454\u043A\u0442","Custom...":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439...","e.g., every 3 months":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u043A\u043E\u0436\u043D\u0456 3 \u043C\u0456\u0441\u044F\u0446\u0456","Last Reviewed":"\u041E\u0441\u0442\u0430\u043D\u043D\u0456\u0439 \u043E\u0433\u043B\u044F\u0434","Please specify a review frequency":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u043A\u0430\u0436\u0456\u0442\u044C \u0447\u0430\u0441\u0442\u043E\u0442\u0443 \u043E\u0433\u043B\u044F\u0434\u0443","Review schedule updated for":"\u0413\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0434\u043B\u044F","Review Projects":"\u041E\u0433\u043B\u044F\u0434 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","Select a project to review its tasks.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443 \u0439\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Configured for Review":"\u041D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u043E \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443","Not Configured":"\u041D\u0435 \u043D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u043E","No projects available.":"\u041D\u0435\u043C\u0430\u0454 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0445 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432.","Select a project to review.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443.","Show all tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Showing all tasks, including completed tasks from previous reviews.":"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u0456 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0432\u043A\u043B\u044E\u0447\u043D\u043E \u0456\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u0437 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0445 \u043E\u0433\u043B\u044F\u0434\u0456\u0432.","Show only new and in-progress tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043D\u043E\u0432\u0456 \u0442\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","No tasks found for this project.":"\u0414\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Review every":"\u041E\u0433\u043B\u044F\u0434\u0443\u0432\u0430\u0442\u0438 \u043A\u043E\u0436\u043D\u0456",never:"\u043D\u0456\u043A\u043E\u043B\u0438","Last reviewed":"\u041E\u0441\u0442\u0430\u043D\u043D\u0456\u0439 \u043E\u0433\u043B\u044F\u0434","Mark as Reviewed":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043E\u0433\u043B\u044F\u043D\u0443\u0442\u0438\u043C","No review schedule configured for this project":"\u041D\u0435 \u043D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u0438\u0439 \u0433\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443 \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Configure Review Schedule":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0433\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443","Project Review":"\u041E\u0433\u043B\u044F\u0434 \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Select a project from the left sidebar to review its tasks.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0443 \u043B\u0456\u0432\u0456\u0439 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456, \u0449\u043E\u0431 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0439\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.",Inbox:"\u0412\u0445\u0456\u0434\u043D\u0456",Flagged:"\u041F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0456",Review:"\u041E\u0433\u043B\u044F\u0434","tags selected":"\u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043C\u0456\u0442\u043E\u043A","No tasks with the selected tags":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456\u0437 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u043C\u0438 \u043C\u0456\u0442\u043A\u0430\u043C\u0438","Select a tag to see related tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0443, \u0449\u043E\u0431 \u043F\u043E\u0431\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Open Task Genius view":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 Task Genius","Task capture with metadata":"\u0417\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u043C\u0438","Refresh task index":"\u041E\u043D\u043E\u0432\u0438\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Refreshing task index...":"\u041E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F \u0456\u043D\u0434\u0435\u043A\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C...","Task index refreshed":"\u0406\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E","Failed to refresh task index":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043E\u043D\u043E\u0432\u0438\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Force reindex all tasks":"\u041F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Clearing task cache and rebuilding index...":"\u041E\u0447\u0438\u0449\u0435\u043D\u043D\u044F \u043A\u0435\u0448\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u043F\u0435\u0440\u0435\u0431\u0443\u0434\u043E\u0432\u0430 \u0456\u043D\u0434\u0435\u043A\u0441\u0443...","Task index completely rebuilt":"\u0406\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u043E\u0432\u043D\u0456\u0441\u0442\u044E \u043F\u0435\u0440\u0435\u0431\u0443\u0434\u043E\u0432\u0430\u043D\u043E","Failed to force reindex tasks":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Task Genius View":"\u0412\u0438\u0433\u043B\u044F\u0434 Task Genius","Toggle Sidebar":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0431\u0456\u0447\u043D\u0443 \u043F\u0430\u043D\u0435\u043B\u044C",Details:"\u0414\u0435\u0442\u0430\u043B\u0456",View:"\u041F\u043E\u0434\u0430\u043D\u043D\u044F","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F Task Genius \u2014 \u0446\u0435 \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u0438\u0439 \u0432\u0438\u0433\u043B\u044F\u0434, \u044F\u043A\u0438\u0439 \u0434\u043E\u0437\u0432\u043E\u043B\u044F\u0454 \u0431\u0456\u043B\u044C\u0448 \u0435\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E \u043A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438.","Enable task genius view":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F Task Genius","Select a task to view details":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E\u0431 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456",Status:"\u0421\u0442\u0430\u043D","Comma separated":"\u0420\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438",Focus:"\u0424\u043E\u043A\u0443\u0441","Loading more...":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0449\u0435...",projects:"\u043F\u0440\u043E\u0454\u043A\u0442\u0438","No tasks for this section.":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u0440\u043E\u0437\u0434\u0456\u043B\u0443.","No tasks found.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456.",Complete:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438","Switch status":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441","Rebuild index":"\u041F\u0435\u0440\u0435\u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441",Rebuild:"\u041F\u0435\u0440\u0435\u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438","0 tasks, 0 projects":"0 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, 0 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","New Custom View":"\u041D\u043E\u0432\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Create Custom View":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Edit View: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F: ","View Name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","My Custom Task View":"\u041C\u043E\u0454 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Icon Name":"\u041D\u0430\u0437\u0432\u0430 \u0456\u043A\u043E\u043D\u043A\u0438","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u0431\u0443\u0434\u044C-\u044F\u043A\u0443 \u043D\u0430\u0437\u0432\u0443 \u0456\u043A\u043E\u043D\u043A\u0438 Lucide (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: list-checks, filter, inbox)","Filter Rules":"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457","Hide Completed and Abandoned Tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Hide completed and abandoned tasks in this view.":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0446\u044C\u043E\u043C\u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456.","Text Contains":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","Filter tasks whose content includes this text (case-insensitive).":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0432\u043C\u0456\u0441\u0442 \u044F\u043A\u0438\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0454 \u0446\u0435\u0439 \u0442\u0435\u043A\u0441\u0442 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Tags Include":"\u041C\u0456\u0442\u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Task must include ALL these tags (comma-separated).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0412\u0421\u0406 \u0446\u0456 \u043C\u0456\u0442\u043A\u0438 (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438).","Tags Exclude":"\u041C\u0456\u0442\u043A\u0438 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Task must NOT include ANY of these tags (comma-separated).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0416\u041E\u0414\u0415\u041D \u0456\u0437 \u0446\u0438\u0445 \u043C\u0456\u0442\u043E\u043A (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438).","Project Is":"\u041F\u0440\u043E\u0454\u043A\u0442","Task must belong to this project (exact match).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043D\u0430\u043B\u0435\u0436\u0430\u0442\u0438 \u0434\u043E \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443 (\u0442\u043E\u0447\u043D\u0430 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456\u0441\u0442\u044C).","Priority Is":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Task must have this priority (e.g., 1, 2, 3).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 1, 2, 3).","Status Include":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u043A\u043B\u044E\u0447\u0430\u0454","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u0431\u0443\u0442\u0438 \u043E\u0434\u043D\u0438\u043C \u0456\u0437 \u0446\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: /,>).","Status Exclude":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0454","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u0431\u0443\u0442\u0438 \u043E\u0434\u043D\u0438\u043C \u0456\u0437 \u0446\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 YYYY-MM-DD, \u0430\u0431\u043E \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0456 \u0442\u0435\u0440\u043C\u0456\u043D\u0438, \u0442\u0430\u043A\u0456 \u044F\u043A '\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0442\u0438\u0436\u0434\u0435\u043D\u044C', '\u043C\u0438\u043D\u0443\u043B\u0438\u0439 \u043C\u0456\u0441\u044F\u0446\u044C'.","Due Date Is":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Start Date Is":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Scheduled Date Is":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430","Path Includes":"\u0428\u043B\u044F\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0454","Task must contain this path (case-insensitive).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Path Excludes":"\u0428\u043B\u044F\u0445 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0454","Task must NOT contain this path (case-insensitive).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Unnamed View":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0431\u0435\u0437 \u043D\u0430\u0437\u0432\u0438","View configuration saved.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456.","Hide Details":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456","Show Details":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456","View Config":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","View Configuration":"\u041A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u0438\u0433\u043B\u044F\u0434\u0438 \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 Task Genius, \u0457\u0445\u043D\u044E \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C, \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0456 \u0441\u0442\u0432\u043E\u0440\u044E\u0439\u0442\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0432\u0438\u0433\u043B\u044F\u0434\u0438.","Manage Views":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0438\u0433\u043B\u044F\u0434\u0430\u043C\u0438","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u0438\u0433\u043B\u044F\u0434\u0438 \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456, \u0457\u0445\u043D\u0456\u0439 \u043F\u043E\u0440\u044F\u0434\u043E\u043A, \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043A\u043E\u0436\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0430\u043D\u043D\u044F.","Show in sidebar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456","Edit View":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Move Up":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0433\u043E\u0440\u0443","Move Down":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437","Delete View":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Add Custom View":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Error: View ID already exists.":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430: ID \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0432\u0436\u0435 \u0456\u0441\u043D\u0443\u0454.",Events:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u043D\u044C",Plan:"\u041F\u043B\u0430\u043D",Year:"\u0420\u0456\u043A",Month:"\u041C\u0456\u0441\u044F\u0446\u044C",Week:"\u0422\u0438\u0436\u0434\u0435\u043D\u044C",Day:"\u0414\u0435\u043D\u044C",Agenda:"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0434\u0435\u043D\u043D\u0438\u0439","Back to categories":"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438\u0441\u044F \u0434\u043E \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0456\u0439","No matching options found":"\u0412\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E","No matching filters found":"\u0412\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E",Tag:"\u041C\u0456\u0442\u043A\u0430","File Path":"\u0428\u043B\u044F\u0445 \u0444\u0430\u0439\u043B\u0443","Add filter":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Clear all":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0435","Add Card":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u0430\u0440\u0442\u043A\u0443","First Day of Week":"\u041F\u0435\u0440\u0448\u0438\u0439 \u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F","Overrides the locale default for calendar views.":"\u041F\u0435\u0440\u0435\u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043B\u043E\u043A\u0430\u043B\u0456 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u0434\u043B\u044F \u0432\u0438\u0433\u043B\u044F\u0434\u0456\u0432 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F.","Show checkbox":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0440\u0430\u043F\u043E\u0440\u0435\u0446\u044C","Show a checkbox for each task in the kanban view.":"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u0430\u043F\u043E\u0440\u0435\u0446\u044C \u043A\u043E\u0436\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456 \u043A\u0430\u043D\u0431\u0430\u043D.","Locale Default":"\u041B\u043E\u043A\u0430\u043B\u044C\u043D\u0430 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Use custom goal for progress bar":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0443 \u043C\u0435\u0442\u0443 \u0434\u043B\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0448\u0443\u043A\u0430\u0432 \u0448\u0430\u0431\u043B\u043E\u043D g::number \u044F\u043A \u043C\u0435\u0442\u0443 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Prefer metadata format of task":"\u0412\u0456\u0434\u0434\u0430\u0432\u0430\u0442\u0438 \u043F\u0435\u0440\u0435\u0432\u0430\u0433\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0444\u043E\u0440\u043C\u0430\u0442 dataview, \u0430\u0431\u043E tasks, \u0449\u043E \u0432\u043F\u043B\u0438\u043D\u0435 \u043D\u0430 \u0444\u043E\u0440\u043C\u0430\u0442 \u0456\u043D\u0434\u0435\u043A\u0441\u0443 \u0442\u0430 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F.","Open in new tab":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0443 \u043D\u043E\u0432\u043E\u043C\u0438\u0439 \u0432\u043A\u043B\u0430\u0434\u0446\u0456","Open settings":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Hide in sidebar":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0443 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456","No items found":"\u041D\u0435\u043C\u0430\u0454 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","High Priority":"\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Medium Priority":"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Low Priority":"\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","No tasks in the selected items":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u0445","View Type":"\u0422\u0438\u043F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Select the type of view to create":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Standard View":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Two Column View":"\u0414\u0432\u043E\u043A\u043E\u043B\u043E\u043D\u043A\u043E\u0432\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F",Items:"\u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0438","selected items":"\u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438","No items selected":"\u041D\u0435\u043C\u0430\u0454 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Two Column View Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0432\u043E\u043A\u043E\u043B\u043E\u043D\u043A\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Group by Task Property":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u043E\u043C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Select which task property to use for left column grouping":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043B\u0456\u0432\u0456\u0439 \u043A\u043E\u043B\u043E\u043D\u0446\u0456",Priorities:"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0438",Contexts:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0438","Due Dates":"\u0422\u0435\u0440\u043C\u0456\u043D\u0438 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Scheduled Dates":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0434\u0430\u0442\u0438","Start Dates":"\u0414\u0430\u0442\u0438 \u043F\u043E\u0447\u0430\u0442\u043A\u0443",Files:"\u0424\u0430\u0439\u043B\u0438","Left Column Title":"\u041B\u0456\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u0431\u0435\u0446\u044C","Title for the left column (items list)":"\u041D\u0430\u0437\u0432\u0430 \u043B\u0456\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F (\u0441\u043F\u0438\u0441\u043E\u043A \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432)","Right Column Title":"\u041F\u0440\u0430\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u0431\u0435\u0446\u044C","Default title for the right column (tasks list)":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F (\u0441\u043F\u0438\u0441\u043E\u043A \u0437\u0430\u0432\u0434\u0430\u043D\u044C)","Multi-select Text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u043D\u043E\u0436\u0438\u043D\u043D\u043E\u0433\u043E \u0432\u0438\u0431\u043E\u0440\u0443","Text to show when multiple items are selected":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0438\u0439 \u0442\u0435\u043A\u0441\u0442, \u043A\u043E\u043B\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043A\u0456\u043B\u044C\u043A\u0430 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Empty State Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u043E\u0440\u043E\u0436\u043D\u044C\u043E\u0433\u043E \u0441\u0442\u0430\u043D\u0443","Text to show when no items are selected":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0438\u0439 \u0442\u0435\u043A\u0441\u0442, \u043A\u043E\u043B\u0438 \u043D\u0435\u043C\u0430\u0454 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Filter Blanks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Filter out blank tasks in this view.":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0446\u044C\u043E\u043C\u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443). \u0420\u043E\u0437\u0434\u0456\u043B\u044F\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u0448\u043B\u044F\u0445\u0456\u0432 \u043A\u043E\u043C\u0430\u043C\u0438.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443). \u0420\u043E\u0437\u0434\u0456\u043B\u044F\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u0448\u043B\u044F\u0445\u0456\u0432 \u043A\u043E\u043C\u0430\u043C\u0438.","You have unsaved changes. Save before closing?":"\u0412\u0438 \u043C\u0430\u0454\u0442\u0435 \u043D\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0437\u043C\u0456\u043D\u0438. \u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u043A\u0440\u0438\u0442\u0442\u044F\u043C?",Rotate:"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438","Are you sure you want to force reindex all tasks?":"\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F?","Enable progress bar in reading mode":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0447\u0438\u0442\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to show progress bars in reading mode.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0447\u0438\u0442\u0430\u043D\u043D\u044F.",Range:"\u0414\u0456\u0430\u043F\u0430\u0437\u043E\u043D","as a placeholder for the percentage value":"\u044F\u043A \u0437\u0430\u043C\u0456\u043D\u043D\u0438\u043A \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430","Template text with":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0443 \u0437",placeholder:"\u0437\u0430\u043C\u0456\u043D\u043D\u0438\u043A\u043E\u043C",Reindex:"\u041F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438","From now":"\u0417 \u0446\u044C\u043E\u0433\u043E \u043C\u043E\u043C\u0435\u043D\u0442\u0443","Complete workflow":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Move to":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0434\u043E",Settings:"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Just started":"\u0429\u043E\u0439\u043D\u043E \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E","Making progress":"\u0414\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Half way":"\u041F\u043E\u043B\u043E\u0432\u0438\u043D\u0430 \u0448\u043B\u044F\u0445\u0443","Good progress":"\u0413\u0430\u0440\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441","Almost there":"\u041C\u0430\u0439\u0436\u0435 \u0433\u043E\u0442\u043E\u0432\u043E","archived on":"\u0430\u0440\u0445\u0456\u0432\u043E\u0432\u0430\u043D\u043E",moved:"\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E","Capture your thoughts...":"\u0417\u0430\u043F\u0438\u0441\u0443\u0439\u0442\u0435 \u0441\u0432\u043E\u0457 \u0434\u0443\u043C\u043A\u0438...","Project Workflow":"\u0420\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441 \u043F\u0440\u043E\u0454\u043A\u0442\u0430","Standard project management workflow":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u043C\u0438",Planning:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E",Development:"\u0420\u043E\u0437\u0440\u043E\u0431\u043A\u0430",Testing:"\u0422\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F",Cancelled:"\u0421\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",Habit:"\u0417\u0432\u0438\u0447\u043A\u0430","Drink a cup of good tea":"\u0412\u0438\u043F\u0438\u0442\u0438 \u0447\u0430\u0448\u043A\u0443 \u0433\u0430\u0440\u043D\u043E\u0433\u043E \u0447\u0430\u044E","Watch an episode of a favorite series":"\u041F\u043E\u0434\u0438\u0432\u0438\u0442\u0438\u0441\u044F \u0441\u0435\u0440\u0456\u044E \u0443\u043B\u044E\u0431\u043B\u0435\u043D\u043E\u0433\u043E \u0441\u0435\u0440\u0456\u0430\u043B\u0443","Play a game":"\u041F\u043E\u0433\u0440\u0430\u0442\u0438 \u0443 \u0433\u0440\u0443","Eat a piece of chocolate":"\u0417\u2019\u0457\u0441\u0442\u0438 \u0448\u043C\u0430\u0442\u043E\u0447\u043E\u043A \u0448\u043E\u043A\u043E\u043B\u0430\u0434\u0443",common:"\u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0430",rare:"\u0440\u0456\u0434\u043A\u0456\u0441\u043D\u0430",legendary:"\u043B\u0435\u0433\u0435\u043D\u0434\u0430\u0440\u043D\u0430","No Habits Yet":"\u0417\u0432\u0438\u0447\u043E\u043A \u0449\u0435 \u043D\u0435\u043C\u0430\u0454","Click the open habit button to create a new habit.":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0442\u044F \u0437\u0432\u0438\u0447\u043A\u0438, \u0449\u043E\u0431 \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443.","Please enter details":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u043A\u0430\u0436\u0456\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456","Goal reached":"\u041C\u0435\u0442\u0430 \u0434\u043E\u0441\u044F\u0433\u043D\u0443\u0442\u0430","Exceeded goal":"\u041C\u0435\u0442\u0430 \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u0430",Active:"\u0410\u043A\u0442\u0438\u0432\u043D\u0430",today:"\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456",Inactive:"\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u0430","All Done!":"\u0412\u0441\u0451 \u0437\u0440\u043E\u0431\u043B\u0435\u043D\u043E!","Select event...":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u0434\u0456\u044E...","Create new habit":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","Edit habit":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0443","Habit type":"\u0422\u0438\u043F \u0437\u0432\u0438\u0447\u043A\u0438","Daily habit":"\u0429\u043E\u0434\u0435\u043D\u043D\u0430","Simple daily check-in habit":"\u041F\u0440\u043E\u0441\u0442\u0430 \u0449\u043E\u0434\u0435\u043D\u043D\u0430 \u0437\u0432\u0438\u0447\u043A\u0430 \u0434\u043B\u044F \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F","Count habit":"\u041A\u0456\u043B\u044C\u043A\u0456\u0441\u043D\u0430","Record numeric values, e.g., how many cups of water":"\u0417\u0430\u043F\u0438\u0441\u0443\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0437\u0440\u043E\u0431\u043B\u0435\u043D\u043E\u0433\u043E, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A \u0447\u0430\u0448\u043E\u043A \u0432\u043E\u0434\u0438","Mapping habit":"\u0417\u0456\u0441\u0442\u0430\u0432\u043D\u0430","Use different values to map, e.g., emotion tracking":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0440\u0456\u0437\u043D\u0456 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F \u0435\u043C\u043E\u0446\u0456\u0439","Scheduled habit":"\u0417\u0430 \u0440\u043E\u0437\u043A\u043B\u0430\u0434\u043E\u043C","Habit with multiple events":"\u0417\u0432\u0438\u0447\u043A\u0430 \u0437 \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u043C\u0430 \u043F\u043E\u0434\u0456\u044F\u043C\u0438","Habit name":"\u041D\u0430\u0437\u0432\u0430 \u0437\u0432\u0438\u0447\u043A\u0438","Display name of the habit":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0430 \u043D\u0430\u0437\u0432\u0430 \u0437\u0432\u0438\u0447\u043A\u0438","Optional habit description":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u043E\u043F\u0438\u0441",Icon:"\u0406\u043A\u043E\u043D\u043A\u0430","Please enter a habit name":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0438","Property name":"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044C","The property name of the daily note front matter":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456","Completion text":"\u0422\u0435\u043A\u0441\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F. \u0417\u0430\u043B\u0438\u0448\u0442\u0435 \u043F\u043E\u0440\u043E\u0436\u043D\u0456\u043C, \u0449\u043E\u0431 \u0431\u0443\u0434\u044C-\u044F\u043A\u0435 \u043D\u0435\u043F\u043E\u0440\u043E\u0436\u043D\u0454 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u043B\u043E\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","The property name in daily note front matter to store count values":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456 \u0434\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0435\u0442\u0438\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443","Minimum value":"\u041C\u0456\u043D \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","(Optional) Minimum value for the count":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A\u0430","Maximum value":"\u041C\u0430\u043A\u0441 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","(Optional) Maximum value for the count":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A\u0430",Unit:"\u041E\u0434\u0438\u043D\u0438\u0446\u044F","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041E\u0434\u0438\u043D\u0438\u0446\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0447\u0430\u0448\u043A\u0438', '\u0440\u0430\u0437\u0438' \u0442\u043E\u0449\u043E.","Notice threshold":"\u041F\u043E\u0440\u0456\u0433 \u0441\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F","(Optional) Trigger a notification when this value is reached":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u0421\u043F\u043E\u0432\u0456\u0449\u0430\u0442\u0438 \u043F\u0440\u0438 \u0434\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u0456 \u0446\u044C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","The property name in daily note front matter to store mapping values":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456 \u0434\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Value mapping":"\u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Define mappings from numeric values to display text":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0437\u0456\u0441\u0442\u0430\u043B\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0447\u0438\u0441\u043B\u043E\u0432\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0442\u0435\u043A\u0441\u0442\u0443","Add new mapping":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0435 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Scheduled events":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u043F\u043E\u0434\u0456\u0457","Add multiple events that need to be completed":"\u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u043F\u043E\u0434\u0456\u0439, \u044F\u043A\u0456 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438","Event name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0456\u0457","Event details":"\u041E\u043F\u0438\u0441 \u043F\u043E\u0434\u0456\u0457","Add new event":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0443 \u043F\u043E\u0434\u0456\u044E","Please enter a property name":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456","Please add at least one mapping value":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0434\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043D\u0430\u0439\u043C\u043D\u0456 \u043E\u0434\u043D\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u043B\u0432\u043B\u0435\u043D\u043D\u044F","Mapping key must be a number":"\u041A\u043B\u044E\u0447 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C","Please enter text for all mapping values":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0432\u0441\u0456\u0445 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u044C","Please add at least one event":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0434\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043D\u0430\u0439\u043C\u043D\u0456 \u043E\u0434\u043D\u0443 \u043F\u043E\u0434\u0456\u044E","Event name cannot be empty":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0456\u0457 \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u044C\u043E\u044E","Add new habit":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","No habits yet":"\u0429\u0435 \u043D\u0435\u043C\u0430\u0454 \u0437\u0432\u0438\u0447\u043E\u043A","Click the button above to add your first habit":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0432\u0438\u0449\u0435 \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u043F\u0435\u0440\u0448\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","Habit updated":"\u0417\u0432\u0438\u0447\u043A\u0443 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E","Habit added":"\u0417\u0432\u0438\u0447\u043A\u0430 \u0434\u043E\u0434\u0430\u043D\u0430","Delete habit":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0443","This action cannot be undone.":"\u0426\u044E \u0434\u0456\u044E \u043D\u0435 \u043C\u043E\u0436\u043D\u0430 \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438.","Habit deleted":"\u0417\u0432\u0438\u0447\u043A\u0443 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043E","You've Earned a Reward!":"\u0412\u0438 \u043E\u0442\u0440\u0438\u043C\u0430\u043B\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443!","Your reward:":"\u0412\u0430\u0448\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430:","Image not found:":"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E:","Claim Reward":"\u041E\u0442\u0440\u0438\u043C\u0430\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443",Skip:"\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u0438",Reward:"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","View & Index Configuration":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0442\u0430 \u0406\u043D\u0434\u0435\u043A\u0441\u0430\u0446\u0456\u0457","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F Task Genius, \u0442\u0430\u043A\u043E\u0436 \u0443\u0432\u0456\u043C\u043A\u043D\u0435 \u0456\u043D\u0434\u0435\u043A\u0441\u0430\u0442\u043E\u0440 task genius, \u044F\u043A\u0438\u0439 \u043D\u0430\u0434\u0430\u0441\u0442\u044C \u0443 \u043F\u043E\u0434\u0430\u043D\u043D\u0456 task genius \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u0437 \u0443\u0441\u044C\u043E\u0433\u043E \u0441\u0445\u043E\u0432\u0438\u0449\u0430.","Use daily note path as date":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0434\u0430\u0442\u0443 \u044F\u043A \u0448\u043B\u044F\u0445 \u0434\u043E \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","If enabled, the daily note path will be used as the date for tasks.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0448\u043B\u044F\u0445 \u0434\u043E \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438 \u0431\u0443\u0434\u0435 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u044F\u043A \u0434\u0430\u0442\u0430 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u0431\u0443\u0434\u0435 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 moment.js \u0442\u0430 \u0446\u0435\u0439 \u0444\u043E\u0440\u043C\u0430\u0442, \u0434\u043B\u044F \u043E\u0431\u0440\u043E\u0431\u043A\u0438 \u0448\u043B\u044F\u0445\u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u0423 \u0440\u044F\u0434\u043A\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0432\u043A\u0430\u0437\u0430\u0442\u0438 `yyyy` \u0437\u0430\u043C\u0456\u0441\u0442\u044C `YYYY`. \u0422\u0430 `dd` \u0437\u0430\u043C\u0456\u0441\u0442\u044C `DD`.","Daily note format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","Daily note path":"\u0428\u043B\u044F\u0445 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","Select the folder that contains the daily note.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0435\u043A\u0443 \u044F\u043A\u0430 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0449\u043E\u0434\u0435\u043D\u043D\u0443 \u043D\u043E\u0442\u0430\u0442\u043A\u0443.","Use as date type":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u044F\u043A \u0442\u0438\u043F \u0434\u0430\u0442\u0438","You can choose due, start, or scheduled as the date type for tasks.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0430\u0442\u0438 \u0442\u0438\u043F \u0434\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A \u0442\u0435\u0440\u043C\u0456\u043D, \u043F\u043E\u0447\u0430\u0442\u043E\u043A, \u0430\u0431\u043E \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E.",Due:"\u0422\u0435\u0440\u043C\u0456\u043D",Start:"\u041F\u043E\u0447\u0430\u0442\u043E\u043A",Scheduled:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E",Rewards:"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0437\u0430 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0412\u0438\u0437\u043D\u0430\u0447\u0430\u0439\u0442\u0435 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438, \u0439\u043C\u043E\u0432\u0456\u0440\u043D\u043E\u0441\u0442\u0456 \u0457\u0445 \u043F\u043E\u044F\u0432\u0438 \u0442\u0430 \u0443\u043C\u043E\u0432\u0438.","Enable rewards":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Toggle to enable or disable the reward system.":"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F/\u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043D\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434.","Occurrence levels":"\u0420\u0456\u0432\u043D\u0456 \u0432\u0438\u043D\u0438\u043A\u043D\u0435\u043D\u043D\u044F","Define different levels of reward rarity and their probability.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0440\u0456\u0437\u043D\u0456 \u0440\u0456\u0432\u043D\u0456 \u0440\u0456\u0434\u043A\u0456\u0441\u043D\u043E\u0441\u0442\u0456 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0442\u0430 \u0457\u0445\u043D\u044E \u0439\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C.","Chance must be between 0 and 100.":"\u0419\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C \u043F\u043E\u0432\u0438\u043D\u043D\u0430 \u0431\u0443\u0442\u0438 \u0432\u0456\u0434 0 \u0434\u043E 100.","Level name (e.g., common)":"\u041D\u0430\u0437\u0432\u0430 \u0440\u0456\u0432\u043D\u044F (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0439)","Chance (%)":"\u0419\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C (%)","Delete level":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","Add occurrence level":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C \u0432\u0438\u043D\u0438\u043A\u043D\u0435\u043D\u043D\u044F","New level":"\u041D\u043E\u0432\u0438\u0439 \u0440\u0456\u0432\u0435\u043D\u044C","Reward items":"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Manage the specific rewards that can be obtained.":"\u041A\u0435\u0440\u0443\u0439\u0442\u0435 \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u0438\u043C\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430\u043C\u0438, \u044F\u043A\u0456 \u043C\u043E\u0436\u043D\u0430 \u043E\u0442\u0440\u0438\u043C\u0430\u0442\u0438.","No levels defined":"\u0420\u0456\u0432\u043D\u0456 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456","Reward name/text":"\u041D\u0430\u0437\u0432\u0430/\u0442\u0435\u043A\u0441\u0442 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Inventory (-1 for \u221E)":"\u0406\u043D\u0432\u0435\u043D\u0442\u0430\u0440 (-1 \u0434\u043B\u044F \u221E)","Invalid inventory number.":"\u041D\u0435\u0432\u0456\u0440\u043D\u0438\u0439 \u043D\u043E\u043C\u0435\u0440 \u0456\u043D\u0432\u0435\u043D\u0442\u0430\u0440\u044F.","Condition (e.g., #tag AND project)":"\u0423\u043C\u043E\u0432\u0430 (#\u043C\u0456\u0442\u043A\u0430 AND \u043F\u0440\u043E\u0454\u043A\u0442)","Image url (optional)":"URL \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F (\u043D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E)","Delete reward item":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443","No reward items defined yet.":"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.","Add reward item":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443","New reward":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438 \u0437\u0432\u0438\u0447\u043E\u043A, \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0447\u0438 \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043D\u043E\u0432\u0438\u0445, \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043D\u043D\u044F \u0456\u0441\u043D\u0443\u044E\u0447\u0438\u0445 \u0442\u0430 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F\u043C \u0437\u0432\u0438\u0447\u043E\u043A.","Enable habits":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0438","Reward display type":"\u0422\u0438\u043F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Choose how rewards are displayed when earned.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u043F\u0456\u0441\u043B\u044F \u0434\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u044F.","Modal dialog":"\u041C\u043E\u0434\u0430\u043B\u044C\u043D\u0435 \u0432\u0456\u043A\u043D\u043E","Notice (Auto-accept)":"\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F (\u0430\u0432\u0442\u043E\u043F\u0440\u0438\u0439\u043D\u044F\u0442\u0442\u044F)","Task sorting is disabled or no sort criteria are defined in settings.":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0430\u0431\u043E \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043D\u0430\u0430\u0448\u0442\u0443\u043D\u043A\u0430\u0445.","e.g. #tag1, #tag2, #tag3":"\u0442\u043E\u0431\u0442\u043E #\u043C\u0456\u0442\u043A\u04301, #\u043C\u0456\u0442\u043A\u04302, #\u043C\u0456\u0442\u043A\u04303",Overdue:"\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u0456","No tasks found for this tag.":"\u0417\u0430 \u0446\u0456\u0454\u044E \u043C\u0456\u0442\u043A\u043E\u044E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","New custom view":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Create custom view":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0432\u043B\u0430\u0441\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Copy view: ":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434: ","Copy View":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434","Copy view":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434","Copy of ":"\u041A\u043E\u043F\u0456\u044F \u0437 ","Creating a copy based on: ":"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u043A\u043E\u043F\u0456\u0457 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456: ","You can modify all settings below. The original view will remain unchanged.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0438\u0436\u0447\u0435. \u041F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u0432\u0438\u0433\u043B\u044F\u0434 \u0437\u0430\u043B\u0438\u0448\u0438\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u043C\u0456\u043D\u043D\u0438\u043C.","View copied successfully: ":"\u0412\u0438\u0433\u043B\u044F\u0434 \u0443\u0441\u043F\u0456\u0448\u043D\u043E \u0441\u043A\u043E\u043F\u0456\u0439\u043E\u0432\u0430\u043D\u043E: ","Edit view: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F: ","Icon name":"\u041D\u0430\u0437\u0432\u0430 \u0456\u043A\u043E\u043D\u043A\u0438","First day of week":"\u041F\u0435\u0440\u0448\u0438\u0439 \u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F","Overrides the locale default for forecast views.":"\u041F\u0435\u0440\u0435\u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u0442\u0438\u043F\u043E\u0432\u0456 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0456 \u0443 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0456 \u041F\u0440\u043E\u0433\u043D\u043E\u0437\u0443.","View type":"\u0422\u0438\u043F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443","Standard view":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Two column view":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0443 \u0434\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438","Two column view settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443 \u0443 \u0434\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438","Group by task property":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Left column title":"\u041D\u0430\u0437\u0432\u0430 \u043B\u0456\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F","Right column title":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F","Empty state text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0443\u0441\u0442\u043E\u0433\u043E \u0441\u0442\u0430\u043D\u0443","Hide completed and abandoned tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Filter blanks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456","Text contains":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","Tags include":"\u041C\u0456\u0442\u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Tags exclude":"\u0417\u0430 \u0432\u0438\u043D\u044F\u0442\u043A\u043E\u043C \u043C\u0456\u0442\u043E\u043A","Project is":"\u041F\u0440\u043E\u0454\u043A\u0442","Priority is":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Status include":"\u041C\u0430\u0454 \u0441\u0442\u0430\u0442\u0443\u0441","Status exclude":"\u0411\u0435\u0437 \u0441\u0442\u0430\u043D\u0443","Due date is":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F - \u0434\u043E","Start date is":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Scheduled date is":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 \u043F\u0440\u043E\u0432\u0435\u0434\u0435\u043D\u043D\u044F","Path includes":"\u0428\u043B\u044F\u0445 \u0441\u043F\u0456\u0432\u043F\u0430\u0434\u0430\u0454","Path excludes":"\u0428\u043B\u044F\u0445 \u043D\u0435 \u0441\u043F\u0456\u0432\u043F\u0430\u0434\u0430\u0454","Sort Criteria":"\u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0439 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0437\u0430\u0441\u0442\u043E\u0441\u043E\u0432\u0443\u044E\u0442\u044C\u0441\u044F \u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u043E.","No sort criteria defined. Add criteria below.":"\u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0421\u0442\u0432\u043E\u0440\u0456\u0442\u044C \u043D\u043E\u0432\u0438\u0439 \u043D\u0438\u0436\u0447\u0435.",Content:"\u0417\u043C\u0456\u0441\u0442",Ascending:"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F",Descending:"\u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0412\u0438\u0441\u043E\u043A\u0438\u0439 -> \u041D\u0438\u0437\u044C\u043A\u0438\u0439 -> \u041D\u0435\u043C\u0430\u0454. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u041D\u0435\u043C\u0430\u0454 -> \u041D\u0438\u0437\u044C\u043A\u0438\u0439 -> \u0412\u0438\u0441\u043E\u043A\u0438\u0439igh","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0420\u0430\u043D\u0456\u0448\u0435 -> \u041F\u0456\u0437\u043D\u0456\u0448\u0435 -> \u041D\u0435\u043C\u0430\u0454. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u041D\u0435\u043C\u0430\u0454 -> \u041F\u0456\u0437\u043D\u0456\u0448\u0435 -> \u0420\u0430\u043D\u0456\u0448\u0435","Ascending respects status order (Overdue first). Descending reverses it.":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F \u0434\u043E\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u043E\u0440\u044F\u0434\u043A\u0443 \u0441\u0442\u0430\u043D\u0443 (\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u0456 \u043F\u0435\u0440\u0448\u0438\u043C\u0438). \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F - \u0437\u043C\u0456\u043D\u044E\u0454 \u0439\u043E\u0433\u043E \u043D\u0430 \u043F\u0440\u043E\u0442\u0438\u043B\u0435\u0436\u043D\u0438\u0439.","Ascending: A-Z. Descending: Z-A":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0410-\u042F. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u042F-\u0410","Remove Criterion":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0439","Add Sort Criterion":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0439 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Reset to Defaults":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0442\u0438\u043F\u043E\u0432\u0438\u0445 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C","Has due date":"\u041C\u0430\u0454 \u0442\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Has date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443","No date":"\u0411\u0435\u0437 \u0434\u0430\u0442\u0438",Any:"\u0411\u0443\u0434\u044C-\u044F\u043A\u0438\u0439","Has start date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Has scheduled date":"\u041C\u0430\u0454 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0443 \u0434\u0430\u0442\u0443","Has created date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Has completed date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Only show tasks that match the completed date.":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043A\u043E\u0442\u0440\u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456\u0439 \u0434\u0430\u0442\u0456.","Has recurrence":"\u041C\u0430\u0454 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","Has property":"\u041C\u0430\u0454 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044C","No property":"\u0411\u0435\u0437 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456","Unsaved Changes":"\u041D\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0437\u043C\u0456\u043D\u0438","Sort Tasks in Section":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u043C\u0443","Tasks sorted (using settings). Change application needs refinement.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u043E (\u0437\u0433\u0456\u0434\u043D\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C). \u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u043C\u0456\u043D \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0454 \u0434\u043E\u043E\u043F\u0440\u0430\u0446\u044E\u0432\u0430\u043D\u043D\u044F.","Sort Tasks in Entire Document":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0443\u0441\u044C\u043E\u043C\u0443 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0456","Entire document sorted (using settings).":"\u0412\u0435\u0441\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u043E (\u0437\u0433\u0456\u0434\u043D\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C).","Tasks already sorted or no tasks found.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0436\u0435 \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u0456, \u0430\u0431\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Task Handler":"\u041E\u0431\u0440\u043E\u0431\u043D\u0438\u043A \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Show progress bars based on heading":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443","Toggle this to enable showing progress bars based on heading.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0456\u043D\u0434\u0456\u043A\u0430\u0442\u043E\u0440\u0430 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443.","# heading":"# \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A","Task Sorting":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Configure how tasks are sorted in the document.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u044F\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0445.","Enable Task Sorting":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for sorting tasks.":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Use relative time for date":"\u0412\u0456\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0438\u0439 \u0447\u0430\u0441 \u0434\u043B\u044F \u0434\u0430\u0442\u0438","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0438\u0439 \u0447\u0430\u0441 \u0434\u0430\u0442 \u0443 \u043F\u0435\u0440\u0435\u043B\u0456\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0447\u043E\u0440\u0430', '\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u0447\u0435\u0440\u0435\u0437 2 \u0434\u043D\u0456', '3 \u043C\u0456\u0441\u044F\u0446\u0456 \u0442\u043E\u043C\u0443' \u0456 \u0442.\u0434.","Ignore all tasks behind heading":"\u0406\u0433\u043D\u043E\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0434\u043B\u044F \u0456\u0433\u043D\u043E\u0440\u0443\u0432\u0430\u043D\u043D\u044F, \u0442\u043E\u0431\u0442\u043E: '## \u041F\u0440\u043E\u0454\u043A\u0442', '## \u0412\u0445\u0456\u0434\u043D\u0456' (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438)","Focus all tasks behind heading":"\u0421\u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0434\u043B\u044F \u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u043D\u043D\u044F, \u0442\u043E\u0431\u0442\u043E: '## \u041F\u0440\u043E\u0454\u043A\u0442', '## \u0412\u0445\u0456\u0434\u043D\u0456' (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438)","Level Name (e.g., common)":"\u041D\u0430\u0437\u0432\u0430 \u0440\u0456\u0432\u043D\u044F, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0439","Delete Level":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","New Level":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","Reward Name/Text":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","New Reward":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430",Created:"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u0438\u0439",Updated:"\u041E\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0439","Filter Summary":"\u041F\u0456\u0434\u0441\u0443\u043C\u043E\u043A \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Root condition":"\u041A\u043E\u0440\u0435\u043D\u0435\u0432\u0430 \u0443\u043C\u043E\u0432\u0430","Priority (High to Low)":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u0434\u043E \u041D\u0438\u0437\u044C\u043A\u043E\u0433\u043E)","Priority (Low to High)":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u0434\u043E \u0412\u0438\u0441\u043E\u043A\u043E\u0433\u043E)","Due Date (Earliest First)":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0440\u0430\u043D\u0456\u0448\u0438\u0439)","Due Date (Latest First)":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0438\u0439)","Scheduled Date (Earliest First)":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0448\u0432\u0438\u0434\u0448\u0430)","Scheduled Date (Latest First)":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0430)","Start Date (Earliest First)":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0448\u0432\u0438\u0434\u0448\u0430)","Start Date (Latest First)":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0430)","Created Date":"\u0414\u0430\u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F",Overview:"\u041E\u0433\u043B\u044F\u0434",Dates:"\u0414\u0430\u0442\u0438","e.g. #tag1, #tag2":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: #\u043C\u0456\u0442\u043A\u04301, #\u043C\u0456\u0442\u043A\u04302","e.g. @home, @work":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: @\u0434\u043E\u043C, @\u0440\u043E\u0431\u043E\u0442\u0430","Recurrence Rule":"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","e.g. every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u0449\u043E\u0442\u0438\u0436\u043D\u044F","Edit Task":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Load:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438","filter group":"\u0433\u0440\u0443\u043F\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432",filter:"\u0444\u0456\u043B\u044C\u0442\u0440",Match:"\u0417\u0431\u0456\u0433",All:"\u0412\u0441\u0435","Add filter group":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","filter in this group":"\u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0443 \u0446\u0456\u0439 \u0433\u0440\u0443\u043F\u0456","Duplicate filter group":"\u0414\u0443\u0431\u043B\u044E\u0432\u0430\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Remove filter group":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432",OR:"\u0410\u0411\u041E","AND NOT":"\u0422\u0410 \u041D\u0415",AND:"\u0422\u0410","Remove filter":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440",contains:"\u043C\u0456\u0441\u0442\u0438\u0442\u044C","does not contain":"\u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C",is:"\u0454","is not":"\u043D\u0435 \u0454","starts with":"\u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437","ends with":"\u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F","is empty":"\u043F\u043E\u0440\u043E\u0436\u043D\u0456\u0439","is not empty":"\u043D\u0435 \u043F\u043E\u0440\u043E\u0436\u043D\u0456\u0439","is true":"\u0454 \u0456\u0441\u0442\u0438\u043D\u043E\u044E","is false":"\u0454 \u0445\u0438\u0431\u043D\u0438\u043C","is set":"\u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E","is not set":"\u043D\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E",equals:"\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",NOR:"\u041D\u0415","Group by":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430","Select which task property to use for creating columns":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u043B\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456\u0432","Hide empty columns":"\u0421\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Hide columns that have no tasks.":"\u0421\u0445\u043E\u0432\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0446\u0456, \u0432 \u044F\u043A\u0438\u0445 \u043D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Default sort field":"\u041F\u043E\u043B\u0435 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Default field to sort tasks by within each column.":"\u041F\u043E\u043B\u0435 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u0434\u043B\u044F \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043A\u043E\u0436\u043D\u043E\u043C\u0443 \u0441\u0442\u043E\u0432\u043F\u0446\u0456.","Default sort order":"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Default order to sort tasks within each column.":"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043A\u043E\u0436\u043D\u043E\u043C\u0443 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C.","Custom Columns":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Configure custom columns for the selected grouping property":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u0434\u043B\u044F \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u0433\u043E \u043F\u043E\u043B\u044F \u0433\u0440\u0443\u043F\u0443\u0432\u0430\u043D\u043D\u044F","No custom columns defined. Add columns below.":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u043D\u0438\u0436\u0447\u0435.","Column Title":"\u041D\u0430\u0437\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0446\u044F",Value:"\u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F","Remove Column":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","Add Column":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","New Column":"\u041D\u043E\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","Reset Columns":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u043C\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 1, 2, 3). \u0422\u0430\u043A\u043E\u0436 \u043C\u043E\u0436\u043D\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 'none', \u0434\u043B\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0431\u0435\u0437 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443.",Filter:"\u0424\u0456\u043B\u044C\u0442\u0440","Reset Filter":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Saved Filters":"\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Manage Saved Filters":"\u041A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u043C\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C\u0438","Filter applied: ":"\u0417\u0430\u0441\u0442\u043E\u0441\u043E\u0432\u0430\u043D\u043E \u0444\u0456\u043B\u044C\u0442\u0440: ","Recurrence date calculation":"\u041E\u0431\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044F \u0434\u0430\u0442\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","Choose how to calculate the next date for recurring tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A \u0440\u043E\u0437\u0440\u0430\u0445\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0443 \u0434\u0430\u0442\u0443 \u0434\u043B\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u044E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Based on due date":"\u0417\u0433\u0456\u0434\u043D\u043E \u0437 \u0442\u0435\u0440\u043C\u0456\u043D\u043E\u043C \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Based on scheduled date":"\u0417\u0430 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E\u044E \u0434\u0430\u0442\u043E\u044E","Based on current date":"\u0417\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u044E \u0434\u0430\u0442\u043E\u044E","Task Gutter":"\u041F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Configure the task gutter.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Enable task gutter":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to enable the task gutter.":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Line Number":"\u041D\u043E\u043C\u0435\u0440 \u0440\u044F\u0434\u043A\u0430","Tasks Plugin Detected":"\u0412\u0438\u044F\u0432\u043B\u0435\u043D\u043E \u0434\u043E\u0434\u0430\u0442\u043E\u043A Tasks","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u0423\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u043C \u0442\u0430 \u0434\u0430\u0442\u0430\u043C\u0438 \u043C\u043E\u0436\u0443\u0442\u044C \u043A\u043E\u043D\u0444\u043B\u0456\u043A\u0442\u0443\u0432\u0430\u0442\u0438 \u0437 \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u043C Tasks. \u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 ","compatibility documentation":"\u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044F \u043F\u0440\u043E \u0441\u0443\u043C\u0456\u0441\u043D\u0456\u0441\u0442\u044C"," for more information.":" \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E\u0457 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457.","Auto Date Manager":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0439 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 \u0434\u0430\u0442","Automatically manage dates based on task status changes":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0439\u0442\u0435 \u0434\u0430\u0442\u0430\u043C\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u0437\u043C\u0456\u043D \u0441\u0442\u0430\u043D\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable auto date manager":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0439 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 \u0434\u0430\u0442","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0456\u0457 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E\u0433\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u0434\u0430\u0442\u0430\u043C\u0438 \u043F\u0440\u0438 \u0437\u043C\u0456\u043D\u0456 \u0441\u0442\u0430\u043D\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0414\u0430\u0442\u0438 \u0431\u0443\u0434\u0443\u0442\u044C \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438\u0441\u044F/\u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438\u0441\u044F \u0437\u0433\u0456\u0434\u043D\u043E \u0437 \u0432\u043A\u0430\u0437\u0430\u043D\u0438\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u043C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 (\u0424\u043E\u0440\u043C\u0430\u0442 emoji, \u0430\u0431\u043E \u0424\u043E\u0440\u043C\u0430\u0442 Dataview).","Manage completion dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442\u0430\u043C\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456, \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.","Manage start dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0430\u043C\u0438 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0443 \u043F\u043E\u0447\u0430\u0442\u043A\u0443, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u043E '\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456', \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.","Manage cancelled dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u043C\u0438 \u0434\u0430\u0442\u0430\u043C\u0438","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0438 \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u044E\u0442\u044C\u0441\u044F \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0438\u043C\u0438, \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.",Beta:"\u0411\u0435\u0442\u0430","Beta Test Features":"\u0424\u0443\u043D\u043A\u0446\u0456\u0457 \u0431\u0435\u0442\u0430-\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u0415\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457, \u044F\u043A\u0456 \u043D\u0430\u0440\u0430\u0437\u0456 \u0437\u043D\u0430\u0445\u043E\u0434\u044F\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u0442\u0430\u0434\u0456\u0457 \u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F. \u0426\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u043C\u043E\u0436\u0443\u0442\u044C \u0431\u0443\u0442\u0438 \u043D\u0435\u0441\u0442\u0430\u0431\u0456\u043B\u044C\u043D\u0438\u043C\u0438 \u0442\u0430 \u043C\u043E\u0436\u0443\u0442\u044C \u0437\u043C\u0456\u043D\u044E\u0432\u0430\u0442\u0438\u0441\u044F, \u0430\u0431\u043E \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u0438\u043C\u0438 \u0432 \u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456\u0445 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F\u0445.","Beta Features Warning":"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E \u0431\u0435\u0442\u0430-\u0444\u0443\u043D\u043A\u0446\u0456\u0457","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u0426\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u0435\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0442\u0430 \u043C\u043E\u0436\u0443\u0442\u044C \u0431\u0443\u0442\u0438 \u043D\u0435\u0441\u0442\u0430\u0431\u0456\u043B\u044C\u043D\u0438\u043C\u0438. \u0412\u043E\u043D\u0438 \u043C\u043E\u0436\u0443\u0442\u044C \u0441\u0443\u0442\u0442\u0454\u0432\u043E \u0437\u043C\u0456\u043D\u0438\u0442\u0438\u0441\u044F, \u0430\u0431\u043E \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u0438\u043C\u0438 \u0432 \u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456\u0445 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F\u0445 \u0447\u0435\u0440\u0435\u0437 \u0437\u043C\u0456\u043D\u0438 API Obsidian, \u0430\u0431\u043E \u0456\u043D\u0448\u0456 \u0444\u0430\u043A\u0442\u043E\u0440\u0438. \u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0437 \u043E\u0431\u0435\u0440\u0435\u0436\u043D\u0456\u0441\u0442\u044E \u0442\u0430 \u043D\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u0456\u0434\u0433\u0443\u043A\u0438, \u0449\u043E\u0431 \u0434\u043E\u043F\u043E\u043C\u043E\u0433\u0442\u0438 \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0442\u0443.","Base View":"\u0412\u0438\u0433\u043B\u044F\u0434 \u0411\u0430\u0437","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0456 \u043C\u043E\u0436\u043B\u0438\u0432\u043E\u0441\u0442\u0456 \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u043E\u043C, \u044F\u043A\u0456 \u0434\u043E\u043F\u043E\u0432\u043D\u044E\u044E\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0438\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434 Task Genius \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0438\u043C \u0444\u0443\u043D\u043A\u0446\u0456\u043E\u043D\u0430\u043B\u043E\u043C.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434 \u0411\u0430\u0437","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0435\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443 \u0411\u0430\u0437. \u0424\u0443\u043D\u043A\u0446\u0456\u044F \u0437\u0430\u0431\u0435\u0437\u043F\u0435\u0447\u0443\u0454 \u0432\u0434\u043E\u0441\u043A\u043E\u043D\u0430\u043B\u0435\u043D\u0456 \u043C\u043E\u0436\u043B\u0438\u0432\u043E\u0441\u0442\u0456 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F, \u0430\u043B\u0435 \u0457\u0457 \u043C\u043E\u0436\u0443\u0442\u044C \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0437 \u043F\u043E\u0434\u0430\u043B\u044C\u0448\u0438\u043C\u0438 \u0437\u043C\u0456\u043D\u0430\u043C\u0438 API Obsidian.",Enable:"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438","Beta Feedback":"\u0412\u0456\u0434\u0433\u0443\u043A \u043F\u0440\u043E \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0456\u044E","Help improve these features by providing feedback on your experience.":"\u0414\u043E\u043F\u043E\u043C\u043E\u0436\u0456\u0442\u044C \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0446\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457, \u043D\u0430\u0434\u0456\u0441\u043B\u0430\u0432\u0448\u0438 \u0432\u0456\u0434\u0433\u0443\u043A \u043F\u0440\u043E \u0441\u0432\u0456\u0439 \u0434\u043E\u0441\u0432\u0456\u0434.","Report Issues":"\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u0438\u0442\u0438 \u043F\u0440\u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u042F\u043A\u0449\u043E \u0443 \u0432\u0430\u0441 \u0432\u0438\u043D\u0438\u043A\u043B\u0438 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0438 \u0437 \u0431\u0435\u0442\u0430-\u0444\u0443\u043D\u043A\u0446\u0456\u044F\u043C\u0438, \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u0442\u0435 \u043F\u0440\u043E \u043D\u0438\u0445, \u0449\u043E\u0431 \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0434\u043E\u0434\u0430\u0442\u043E\u043A.","Report Issue":"\u0417\u0432\u0456\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E \u043F\u043E\u043C\u0438\u043B\u043A\u0443",Table:"\u0422\u0430\u0431\u043B\u0438\u0446\u044F","No Priority":"\u041D\u0435\u043C\u0430\u0454 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Click to select date":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u0434\u0430\u0442\u0438","Enter tags separated by commas":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438","Enter project name":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Enter context":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442","Invalid value":"\u041D\u0435\u0434\u0456\u0439\u0441\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","No tasks":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","1 task":"1 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Columns:"\u0421\u0442\u043E\u0432\u043F\u0446\u0456","Toggle column visibility":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C \u0441\u0442\u043E\u0432\u043F\u0446\u044F","Switch to List Mode":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438\u0441\u044F \u0432 \u0440\u0435\u0436\u0438\u043C \u0441\u043F\u0438\u0441\u043A\u0443","Switch to Tree Mode":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438\u0441\u044F \u0432 \u0440\u0435\u0436\u0438\u043C \u0434\u0435\u0440\u0435\u0432\u0430",Collapse:"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438",Expand:"\u0420\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438","Collapse subtasks":"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0434\u0430\u0447\u0456","Expand subtasks":"\u0420\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0434\u0430\u0447\u0456","Click to change status":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0437\u043C\u0456\u043D\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Click to set priority":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u043A\u0430\u0437\u0430\u043D\u043D\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443",Yesterday:"\u0412\u0447\u043E\u0440\u0430","Click to edit date":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442\u0438","No tags":"\u041C\u0456\u0442\u043E\u043A \u043D\u0435\u043C\u0430\u0454","Click to open file":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0442\u044F \u0444\u0430\u0439\u043B\u0443","No tasks found":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456","Completed Date":"\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","Loading...":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F...","Advanced Filtering":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0435 \u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u043D\u043D\u044F","Use advanced multi-group filtering with complex conditions":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u044E \u0437\u0456 \u0441\u043A\u043B\u0430\u0434\u043D\u0438\u043C\u0438 \u0443\u043C\u043E\u0432\u0430\u043C\u0438","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},_O=W$});var z$,YO,qO=D(()=>{z$={"File Metadata Inheritance":"\u6587\u4EF6\u5143\u6570\u636E\u7EE7\u627F","Configure how tasks inherit metadata from file frontmatter":"\u914D\u7F6E\u4EFB\u52A1\u5982\u4F55\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u7EE7\u627F\u5C5E\u6027","Enable file metadata inheritance":"\u542F\u7528\u6587\u4EF6\u5143\u6570\u636E\u7EE7\u627F","Allow tasks to inherit metadata properties from their file's frontmatter":"\u5141\u8BB8\u4EFB\u52A1\u4ECE\u5176\u6587\u4EF6\u7684\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u7EE7\u627F\u5C5E\u6027","Inherit from frontmatter":"\u4ECE\u524D\u8A00\u7EE7\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u5F53\u4EFB\u52A1\u4E0A\u672A\u660E\u786E\u8BBE\u7F6E\u65F6\uFF0C\u4EFB\u52A1\u4F1A\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u7EE7\u627F\u4F18\u5148\u7EA7\u3001\u4E0A\u4E0B\u6587\u7B49\u5C5E\u6027","Inherit from frontmatter for subtasks":"\u4E3A\u5B50\u4EFB\u52A1\u4ECE\u524D\u8A00\u7EE7\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u5141\u8BB8\u5B50\u4EFB\u52A1\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u7EE7\u627F\u5C5E\u6027\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u6709\u9876\u7EA7\u4EFB\u52A1\u7EE7\u627F\u6587\u4EF6\u5143\u6570\u636E","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u5168\u9762\u7684 Obsidian \u4EFB\u52A1\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5177\u6709\u8FDB\u5EA6\u6761\u3001\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u9AD8\u7EA7\u4EFB\u52A1\u8DDF\u8E2A\u529F\u80FD\u3002","Show progress bar":"\u663E\u793A\u8FDB\u5EA6\u6761","Toggle this to show the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u663E\u793A\u8FDB\u5EA6\u6761\u3002","Support hover to show progress info":"\u652F\u6301\u60AC\u505C\u663E\u793A\u8FDB\u5EA6\u4FE1\u606F","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u9F20\u6807\u60AC\u505C\u5728\u8FDB\u5EA6\u6761\u4E0A\u65F6\u663E\u793A\u8FDB\u5EA6\u4FE1\u606F\u3002","Add progress bar to non-task bullet":"\u4E3A\u975E\u4EFB\u52A1\u9879\u6DFB\u52A0\u8FDB\u5EA6\u6761","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u4E3A\u5E38\u89C4\u5217\u8868\u9879\uFF08\u975E\u4EFB\u52A1\u9879\uFF09\u6DFB\u52A0\u8FDB\u5EA6\u6761\u3002","Add progress bar to Heading":"\u4E3A\u6807\u9898\u6DFB\u52A0\u8FDB\u5EA6\u6761","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u4E3A\u6807\u9898\u4E0B\u7684\u4EFB\u52A1\u6DFB\u52A0\u8FDB\u5EA6\u6761\u3002","Enable heading progress bars":"\u542F\u7528\u6807\u9898\u8FDB\u5EA6\u6761","Add progress bars to headings to show progress of all tasks under that heading.":"\u4E3A\u6807\u9898\u6DFB\u52A0\u8FDB\u5EA6\u6761\u4EE5\u663E\u793A\u8BE5\u6807\u9898\u4E0B\u6240\u6709\u4EFB\u52A1\u7684\u8FDB\u5EA6\u3002","Auto complete parent task":"\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1\u3002","Mark parent as 'In Progress' when partially complete":'\u90E8\u5206\u5B8C\u6210\u65F6\u5C06\u7236\u4EFB\u52A1\u6807\u8BB0\u4E3A"\u8FDB\u884C\u4E2D"',"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":'\u5F53\u90E8\u5206\u5B50\u4EFB\u52A1\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u65F6\uFF0C\u5C06\u7236\u4EFB\u52A1\u6807\u8BB0\u4E3A"\u8FDB\u884C\u4E2D"\u3002\u4EC5\u5728\u542F\u7528"\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1"\u65F6\u6709\u6548\u3002',"Count sub children level of current Task":"\u8BA1\u7B97\u5F53\u524D\u4EFB\u52A1\u7684\u5B50\u4EFB\u52A1\u5C42\u7EA7","Toggle this to allow this plugin to count sub tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Checkbox Status Settings":"\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Select a predefined task status collection or customize your own":"\u9009\u62E9\u9884\u5B9A\u4E49\u7684\u4EFB\u52A1\u72B6\u6001\u96C6\u5408\u6216\u81EA\u5B9A\u4E49\u60A8\u81EA\u5DF1\u7684","Completed task markers":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"x|X"',"Planned task markers":"\u8BA1\u5212\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent planned tasks. Example: "?"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u8BA1\u5212\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"?"',"In progress task markers":"\u8FDB\u884C\u4E2D\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u8FDB\u884C\u4E2D\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A">|/"',"Abandoned task markers":"\u5DF2\u653E\u5F03\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u5DF2\u653E\u5F03\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u672A\u5F00\u59CB\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u9ED8\u8BA4\u4E3A\u7A7A\u683C " "',"Count other statuses as":"\u5C06\u5176\u4ED6\u72B6\u6001\u8BA1\u4E3A",'Select the status to count other statuses as. Default is "Not Started".':'\u9009\u62E9\u5C06\u5176\u4ED6\u72B6\u6001\u8BA1\u4E3A\u54EA\u79CD\u72B6\u6001\u3002\u9ED8\u8BA4\u4E3A"\u672A\u5F00\u59CB"\u3002',"Task Counting Settings":"\u4EFB\u52A1\u8BA1\u6570\u8BBE\u7F6E","Exclude specific task markers":"\u6392\u9664\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0",'Specify task markers to exclude from counting. Example: "?|/"':'\u6307\u5B9A\u8981\u4ECE\u8BA1\u6570\u4E2D\u6392\u9664\u7684\u4EFB\u52A1\u6807\u8BB0\u3002\u4F8B\u5982\uFF1A"?|/"',"Only count specific task markers":"\u4EC5\u8BA1\u6570\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0","Toggle this to only count specific task markers":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u4EC5\u8BA1\u6570\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0","Specific task markers to count":"\u8981\u8BA1\u6570\u7684\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0",'Specify which task markers to count. Example: "x|X|>|/"':'\u6307\u5B9A\u8981\u8BA1\u6570\u7684\u4EFB\u52A1\u6807\u8BB0\u3002\u4F8B\u5982\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u6761\u4EF6\u8FDB\u5EA6\u6761\u663E\u793A","Hide progress bars based on conditions":"\u57FA\u4E8E\u6761\u4EF6\u9690\u85CF\u8FDB\u5EA6\u6761","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u57FA\u4E8E\u6807\u7B7E\u3001\u6587\u4EF6\u5939\u6216\u5143\u6570\u636E\u9690\u85CF\u8FDB\u5EA6\u6761\u3002","Hide by tags":"\u6309\u6807\u7B7E\u9690\u85CF",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u4E0D\u5E26 #\uFF09\u3002\u4F8B\u5982\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u6309\u6587\u4EF6\u5939\u9690\u85CF",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u6587\u4EF6\u5939\u8DEF\u5F84\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002\u4F8B\u5982\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u6309\u5143\u6570\u636E\u9690\u85CF",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u524D\u7F6E\u5143\u6570\u636E\u3002\u4F8B\u5982\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u4EFB\u52A1\u72B6\u6001\u5207\u6362\u5668","Enable/disable the ability to cycle through task states by clicking.":"\u542F\u7528/\u7981\u7528\u901A\u8FC7\u70B9\u51FB\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u72B6\u6001\u7684\u529F\u80FD\u3002","Enable custom task marks":"\u542F\u7528\u81EA\u5B9A\u4E49\u4EFB\u52A1\u6807\u8BB0","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u7528\u6837\u5F0F\u5316\u6587\u672C\u6807\u8BB0\u66FF\u6362\u9ED8\u8BA4\u590D\u9009\u6846\uFF0C\u70B9\u51FB\u65F6\u9075\u5FAA\u60A8\u7684\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u3002","Enable cycle complete status":"\u542F\u7528\u5FAA\u73AF\u5B8C\u6210\u72B6\u6001","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u542F\u7528/\u7981\u7528\u6309\u4E0B\u6807\u8BB0\u65F6\u81EA\u52A8\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u72B6\u6001\u7684\u529F\u80FD\u3002","Always cycle new tasks":"\u59CB\u7EC8\u5FAA\u73AF\u65B0\u4EFB\u52A1","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u542F\u7528\u540E\uFF0C\u65B0\u63D2\u5165\u7684\u4EFB\u52A1\u5C06\u7ACB\u5373\u5FAA\u73AF\u5230\u4E0B\u4E00\u4E2A\u72B6\u6001\u3002\u7981\u7528\u65F6\uFF0C\u5E26\u6709\u6709\u6548\u6807\u8BB0\u7684\u65B0\u63D2\u5165\u4EFB\u52A1\u5C06\u4FDD\u6301\u5176\u539F\u59CB\u6807\u8BB0\u3002","Checkbox Status Cycle and Marks":"\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u6807\u8BB0","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u5B9A\u4E49\u4EFB\u52A1\u72B6\u6001\u53CA\u5176\u5BF9\u5E94\u7684\u6807\u8BB0\u3002\u4ECE\u4E0A\u5230\u4E0B\u7684\u987A\u5E8F\u5B9A\u4E49\u4E86\u5FAA\u73AF\u987A\u5E8F\u3002","Completed Task Mover":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u529F\u80FD","Enable completed task mover":"\u542F\u7528\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u529F\u80FD","Toggle this to enable commands for moving completed tasks to another file.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u5C06\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Task marker type":"\u4EFB\u52A1\u6807\u8BB0\u7C7B\u578B","Choose what type of marker to add to moved tasks":"\u9009\u62E9\u8981\u6DFB\u52A0\u5230\u5DF2\u79FB\u52A8\u4EFB\u52A1\u7684\u6807\u8BB0\u7C7B\u578B","Version marker text":"\u7248\u672C\u6807\u8BB0\u6587\u672C","Text to append to tasks when moved (e.g., 'version 1.0')":"\u79FB\u52A8\u4EFB\u52A1\u65F6\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'version 1.0'\uFF09","Date marker text":"\u65E5\u671F\u6807\u8BB0\u6587\u672C","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u79FB\u52A8\u4EFB\u52A1\u65F6\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'archived on 2023-12-31'\uFF09","Custom marker text":"\u81EA\u5B9A\u4E49\u6807\u8BB0\u6587\u672C","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u4F7F\u7528 {{DATE:format}} \u8FDB\u884C\u65E5\u671F\u683C\u5F0F\u5316\uFF08\u4F8B\u5982\uFF0C{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u5C06\u5DF2\u653E\u5F03\u4EFB\u52A1\u89C6\u4E3A\u5DF2\u5B8C\u6210","If enabled, abandoned tasks will be treated as completed.":"\u5982\u679C\u542F\u7528\uFF0C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1\u5C06\u88AB\u89C6\u4E3A\u5DF2\u5B8C\u6210\u3002","Complete all moved tasks":"\u5B8C\u6210\u6240\u6709\u5DF2\u79FB\u52A8\u7684\u4EFB\u52A1","If enabled, all moved tasks will be marked as completed.":"\u5982\u679C\u542F\u7528\uFF0C\u6240\u6709\u5DF2\u79FB\u52A8\u7684\u4EFB\u52A1\u5C06\u88AB\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u3002","With current file link":"\u5E26\u5F53\u524D\u6587\u4EF6\u94FE\u63A5","A link to the current file will be added to the parent task of the moved tasks.":"\u5F53\u524D\u6587\u4EF6\u7684\u94FE\u63A5\u5C06\u6DFB\u52A0\u5230\u5DF2\u79FB\u52A8\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u4E2D\u3002",Donate:"\u6350\u8D60","If you like this plugin, consider donating to support continued development:":"\u5982\u679C\u60A8\u559C\u6B22\u8FD9\u4E2A\u63D2\u4EF6\uFF0C\u8BF7\u8003\u8651\u6350\u8D60\u4EE5\u652F\u6301\u6301\u7EED\u5F00\u53D1\uFF1A","Add number to the Progress Bar":"\u5728\u8FDB\u5EA6\u6761\u4E2D\u6DFB\u52A0\u6570\u5B57","Toggle this to allow this plugin to add tasks number to progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u8FDB\u5EA6\u6761\u4E2D\u6DFB\u52A0\u4EFB\u52A1\u6570\u91CF\u3002","Show percentage":"\u663E\u793A\u767E\u5206\u6BD4","Toggle this to allow this plugin to show percentage in the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u8FDB\u5EA6\u6761\u4E2D\u663E\u793A\u767E\u5206\u6BD4\u3002","Customize progress text":"\u81EA\u5B9A\u4E49\u8FDB\u5EA6\u6587\u672C","Toggle this to customize text representation for different progress percentage ranges.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u81EA\u5B9A\u4E49\u4E0D\u540C\u8FDB\u5EA6\u767E\u5206\u6BD4\u8303\u56F4\u7684\u6587\u672C\u8868\u793A\u3002","Progress Ranges":"\u8FDB\u5EA6\u8303\u56F4","Define progress ranges and their corresponding text representations.":"\u5B9A\u4E49\u8FDB\u5EA6\u8303\u56F4\u53CA\u5176\u5BF9\u5E94\u7684\u6587\u672C\u8868\u793A\u3002","Add new range":"\u6DFB\u52A0\u65B0\u8303\u56F4","Add a new progress percentage range with custom text":"\u6DFB\u52A0\u5E26\u6709\u81EA\u5B9A\u4E49\u6587\u672C\u7684\u65B0\u8FDB\u5EA6\u767E\u5206\u6BD4\u8303\u56F4","Min percentage (0-100)":"\u6700\u5C0F\u767E\u5206\u6BD4 (0-100)","Max percentage (0-100)":"\u6700\u5927\u767E\u5206\u6BD4 (0-100)","Text template (use {{PROGRESS}})":"\u6587\u672C\u6A21\u677F\uFF08\u4F7F\u7528 {{PROGRESS}}\uFF09","Reset to defaults":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C","Reset progress ranges to default values":"\u5C06\u8FDB\u5EA6\u8303\u56F4\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C",Reset:"\u91CD\u7F6E","Priority Picker Settings":"\u4F18\u5148\u7EA7\u9009\u62E9\u5668\u8BBE\u7F6E","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u5207\u6362\u4EE5\u542F\u7528\u8868\u60C5\u7B26\u53F7\u548C\u5B57\u6BCD\u683C\u5F0F\u4F18\u5148\u7EA7\u7684\u4F18\u5148\u7EA7\u9009\u62E9\u5668\u4E0B\u62C9\u83DC\u5355\u3002","Enable priority picker":"\u542F\u7528\u4F18\u5148\u7EA7\u9009\u62E9\u5668","Enable priority keyboard shortcuts":"\u542F\u7528\u4F18\u5148\u7EA7\u952E\u76D8\u5FEB\u6377\u952E","Toggle to enable keyboard shortcuts for setting task priorities.":"\u5207\u6362\u4EE5\u542F\u7528\u8BBE\u7F6E\u4EFB\u52A1\u4F18\u5148\u7EA7\u7684\u952E\u76D8\u5FEB\u6377\u952E\u3002","Date picker":"\u65E5\u671F\u9009\u62E9\u5668","Enable date picker":"\u542F\u7528\u65E5\u671F\u9009\u62E9\u5668","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u7684\u65E5\u671F\u9009\u62E9\u5668\u3002\u8FD9\u5C06\u5728\u60A8\u7684\u4EFB\u52A1\u65C1\u8FB9\u6DFB\u52A0\u4E00\u4E2A\u65E5\u5386\u56FE\u6807\uFF0C\u60A8\u53EF\u4EE5\u70B9\u51FB\u5B83\u6765\u9009\u62E9\u65E5\u671F\u3002","Date mark":"\u65E5\u671F\u6807\u8BB0","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u7528\u4E8E\u6807\u8BC6\u65E5\u671F\u7684\u8868\u60C5\u7B26\u53F7\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u9017\u53F7\u5206\u9694\u7684\u591A\u4E2A\u8868\u60C5\u7B26\u53F7\u3002","Quick capture":"\u5FEB\u901F\u6355\u83B7","Enable quick capture":"\u542F\u7528\u5FEB\u901F\u6355\u83B7","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528 Org-mode \u98CE\u683C\u7684\u5FEB\u901F\u6355\u83B7\u9762\u677F\u3002\u6309 Alt+C \u6253\u5F00\u6355\u83B7\u9762\u677F\u3002","Target file":"\u76EE\u6807\u6587\u4EF6","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u6355\u83B7\u7684\u6587\u672C\u5C06\u4FDD\u5B58\u5230\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F84\uFF0C\u4F8B\u5982\uFF0C'folder/Quick Capture.md'","Placeholder text":"\u5360\u4F4D\u6587\u672C","Placeholder text to display in the capture panel":"\u5728\u6355\u83B7\u9762\u677F\u4E2D\u663E\u793A\u7684\u5360\u4F4D\u6587\u672C","Append to file":"\u9644\u52A0\u5230\u6587\u4EF6","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u5982\u679C\u542F\u7528\uFF0C\u6355\u83B7\u7684\u6587\u672C\u5C06\u9644\u52A0\u5230\u76EE\u6807\u6587\u4EF6\u3002\u5982\u679C\u7981\u7528\uFF0C\u5B83\u5C06\u66FF\u6362\u6587\u4EF6\u5185\u5BB9\u3002","Task Filter":"\u4EFB\u52A1\u8FC7\u6EE4\u5668","Enable Task Filter":"\u542F\u7528\u4EFB\u52A1\u8FC7\u6EE4\u5668","Toggle this to enable the task filter panel":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u8FC7\u6EE4\u5668\u9762\u677F","Preset Filters":"\u9884\u8BBE\u8FC7\u6EE4\u5668","Create and manage preset filters for quick access to commonly used task filters.":"\u521B\u5EFA\u548C\u7BA1\u7406\u9884\u8BBE\u8FC7\u6EE4\u5668\uFF0C\u4EE5\u5FEB\u901F\u8BBF\u95EE\u5E38\u7528\u7684\u4EFB\u52A1\u8FC7\u6EE4\u5668\u3002","Edit Filter: ":"\u7F16\u8F91\u8FC7\u6EE4\u5668\uFF1A","Filter name":"\u8FC7\u6EE4\u5668\u540D\u79F0","Checkbox Status":"\u4EFB\u52A1\u72B6\u6001","Include or exclude tasks based on their status":"\u6839\u636E\u4EFB\u52A1\u72B6\u6001\u5305\u542B\u6216\u6392\u9664\u4EFB\u52A1","Include Completed Tasks":"\u5305\u542B\u5DF2\u5B8C\u6210\u4EFB\u52A1","Include In Progress Tasks":"\u5305\u542B\u8FDB\u884C\u4E2D\u4EFB\u52A1","Include Abandoned Tasks":"\u5305\u542B\u5DF2\u653E\u5F03\u4EFB\u52A1","Include Not Started Tasks":"\u5305\u542B\u672A\u5F00\u59CB\u4EFB\u52A1","Include Planned Tasks":"\u5305\u542B\u8BA1\u5212\u4EFB\u52A1","Related Tasks":"\u76F8\u5173\u4EFB\u52A1","Include parent, child, and sibling tasks in the filter":"\u5728\u8FC7\u6EE4\u5668\u4E2D\u5305\u542B\u7236\u4EFB\u52A1\u3001\u5B50\u4EFB\u52A1\u548C\u540C\u7EA7\u4EFB\u52A1","Include Parent Tasks":"\u5305\u542B\u7236\u4EFB\u52A1","Include Child Tasks":"\u5305\u542B\u5B50\u4EFB\u52A1","Include Sibling Tasks":"\u5305\u542B\u540C\u7EA7\u4EFB\u52A1","Advanced Filter":"\u9AD8\u7EA7\u8FC7\u6EE4\u5668","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u4F7F\u7528\u5E03\u5C14\u8FD0\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1'","Filter query":"\u8FC7\u6EE4\u67E5\u8BE2","Filter out tasks":"\u8FC7\u6EE4\u6389\u4EFB\u52A1","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u542F\u7528\uFF0C\u5339\u914D\u67E5\u8BE2\u7684\u4EFB\u52A1\u5C06\u88AB\u9690\u85CF\uFF0C\u5426\u5219\u5C06\u663E\u793A",Save:"\u4FDD\u5B58",Cancel:"\u53D6\u6D88","Enable task status switcher":"\u542F\u7528\u4EFB\u52A1\u72B6\u6001\u5207\u6362\u5668","Add Status":"\u6DFB\u52A0\u72B6\u6001","Say Thank You":"\u8C22\u8C22","Hide filter panel":"\u9690\u85CF\u8FC7\u6EE4\u5668\u9762\u677F","Show filter panel":"\u663E\u793A\u8FC7\u6EE4\u5668\u9762\u677F","Filter Tasks":"\u8FC7\u6EE4\u4EFB\u52A1","Preset filters":"\u9884\u8BBE\u8FC7\u6EE4\u5668","Select a saved filter preset to apply":"\u9009\u62E9\u4E00\u4E2A\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668\u9884\u8BBE\u4EE5\u5E94\u7528","Select a preset...":"\u9009\u62E9\u4E00\u4E2A\u9884\u8BBE...",Query:"\u67E5\u8BE2","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u4F7F\u7528\u5E03\u5C14\u8FD0\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u652F\u6301 >, <, =, >=, <=, != \u7528\u4E8E PRIORITY \u548C DATE\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u542F\u7528\uFF0C\u5339\u914D\u67E5\u8BE2\u7684\u4EFB\u52A1\u5C06\u88AB\u9690\u85CF\uFF0C\u5426\u5219\u5C06\u663E\u793A",Completed:"\u5DF2\u5B8C\u6210","In Progress":"\u8FDB\u884C\u4E2D",Abandoned:"\u5DF2\u653E\u5F03","Not Started":"\u672A\u5F00\u59CB",Planned:"\u8BA1\u5212","Include Related Tasks":"\u5305\u542B\u76F8\u5173\u4EFB\u52A1","Parent Tasks":"\u7236\u4EFB\u52A1","Child Tasks":"\u5B50\u4EFB\u52A1","Sibling Tasks":"\u540C\u7EA7\u4EFB\u52A1",Apply:"\u5E94\u7528","New Preset":"\u65B0\u9884\u8BBE","Preset saved":"\u9884\u8BBE\u5DF2\u4FDD\u5B58","No changes to save":"\u6CA1\u6709\u66F4\u6539\u8981\u4FDD\u5B58",Close:"\u5173\u95ED","Capture to":"\u6355\u83B7\u5230",Capture:"\u6355\u83B7","Capture thoughts, tasks, or ideas...":"\u6355\u83B7\u60F3\u6CD5\u3001\u4EFB\u52A1\u6216\u60F3\u6CD5...",Tomorrow:"\u660E\u5929","In 2 days":"2\u5929\u540E","In 3 days":"3\u5929\u540E","In 5 days":"5\u5929\u540E","In 1 week":"1\u5468\u540E","In 10 days":"10\u5929\u540E","In 2 weeks":"2\u5468\u540E","In 1 month":"1\u4E2A\u6708\u540E","In 2 months":"2\u4E2A\u6708\u540E","In 3 months":"3\u4E2A\u6708\u540E","In 6 months":"6\u4E2A\u6708\u540E","In 1 year":"1\u5E74\u540E","In 5 years":"5\u5E74\u540E","In 10 years":"10\u5E74\u540E","Highest priority":"\u6700\u9AD8\u4F18\u5148\u7EA7","High priority":"\u9AD8\u4F18\u5148\u7EA7","Medium priority":"\u4E2D\u7B49\u4F18\u5148\u7EA7","No priority":"\u65E0\u4F18\u5148\u7EA7","Low priority":"\u4F4E\u4F18\u5148\u7EA7","Lowest priority":"\u6700\u4F4E\u4F18\u5148\u7EA7","Priority A":"\u4F18\u5148\u7EA7A","Priority B":"\u4F18\u5148\u7EA7B","Priority C":"\u4F18\u5148\u7EA7C","Task Priority":"\u4EFB\u52A1\u4F18\u5148\u7EA7","Remove Priority":"\u79FB\u9664\u4F18\u5148\u7EA7","Cycle task status forward":"\u5411\u524D\u5FAA\u73AF\u4EFB\u52A1\u72B6\u6001","Cycle task status backward":"\u5411\u540E\u5FAA\u73AF\u4EFB\u52A1\u72B6\u6001","Remove priority":"\u79FB\u9664\u4F18\u5148\u7EA7","Move task to another file":"\u5C06\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move all completed subtasks to another file":"\u5C06\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move direct completed subtasks to another file":"\u5C06\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move all subtasks to another file":"\u5C06\u6240\u6709\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Set priority":"\u8BBE\u7F6E\u4F18\u5148\u7EA7","Toggle quick capture panel":"\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F","Quick capture (Global)":"\u5FEB\u901F\u6355\u83B7\uFF08\u5168\u5C40\uFF09","Toggle task filter panel":"\u5207\u6362\u4EFB\u52A1\u8FC7\u6EE4\u5668\u9762\u677F","Filter Mode":"\u8FC7\u6EE4\u6A21\u5F0F","Choose whether to include or exclude tasks that match the filters":"\u9009\u62E9\u662F\u5305\u542B\u8FD8\u662F\u6392\u9664\u7B26\u5408\u8FC7\u6EE4\u6761\u4EF6\u7684\u4EFB\u52A1","Show matching tasks":"\u663E\u793A\u5339\u914D\u7684\u4EFB\u52A1","Hide matching tasks":"\u9690\u85CF\u5339\u914D\u7684\u4EFB\u52A1","Choose whether to show or hide tasks that match the filters":"\u9009\u62E9\u662F\u663E\u793A\u8FD8\u662F\u9690\u85CF\u7B26\u5408\u8FC7\u6EE4\u6761\u4EF6\u7684\u4EFB\u52A1","Create new file:":"\u521B\u5EFA\u65B0\u6587\u4EF6\uFF1A","Completed tasks moved to":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u5DF2\u79FB\u52A8\u5230","Failed to create file:":"\u521B\u5EFA\u6587\u4EF6\u5931\u8D25\uFF1A","Beginning of file":"\u6587\u4EF6\u5F00\u5934","Failed to move tasks:":"\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","No active file found":"\u672A\u627E\u5230\u6D3B\u52A8\u6587\u4EF6","Task moved to":"\u4EFB\u52A1\u5DF2\u79FB\u52A8\u5230","Failed to move task:":"\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","Nothing to capture":"\u6CA1\u6709\u5185\u5BB9\u53EF\u6355\u83B7","Captured successfully":"\u6355\u83B7\u6210\u529F","Failed to save:":"\u4FDD\u5B58\u5931\u8D25\uFF1A","Captured successfully to":"\u6210\u529F\u6355\u83B7\u5230",Total:"\u603B\u8BA1",Workflow:"\u5DE5\u4F5C\u6D41","Add as workflow root":"\u6DFB\u52A0\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Move to stage":"\u79FB\u52A8\u5230\u9636\u6BB5","Complete stage":"\u5B8C\u6210\u9636\u6BB5","Add child task with same stage":"\u6DFB\u52A0\u76F8\u540C\u9636\u6BB5\u7684\u5B50\u4EFB\u52A1","Could not open quick capture panel in the current editor":"\u65E0\u6CD5\u5728\u5F53\u524D\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5FEB\u901F\u6355\u83B7\u9762\u677F","Just started {{PROGRESS}}%":"\u521A\u521A\u5F00\u59CB {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u6B63\u5728\u8FDB\u884C {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u5DF2\u5B8C\u6210\u4E00\u534A {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u8FDB\u5C55\u826F\u597D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u5373\u5C06\u5B8C\u6210 {{PROGRESS}}%","Progress bar":"\u8FDB\u5EA6\u6761","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u60A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u7236\u4EFB\u52A1\u540E\u9762\u7684\u8FDB\u5EA6\u6761\uFF08\u901A\u5E38\u5728\u4EFB\u52A1\u672B\u5C3E\uFF09\u3002\u60A8\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u6807\u9898\u4E0B\u65B9\u4EFB\u52A1\u7684\u8FDB\u5EA6\u6761\u3002","Hide progress bars":"\u9690\u85CF\u8FDB\u5EA6\u6761","Parent task changer":"\u7236\u4EFB\u52A1\u66F4\u6539\u5668","Change the parent task of the current task.":"\u66F4\u6539\u5F53\u524D\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u5C1A\u672A\u521B\u5EFA\u9884\u8BBE\u8FC7\u6EE4\u5668\u3002\u70B9\u51FB'\u6DFB\u52A0\u65B0\u9884\u8BBE'\u521B\u5EFA\u4E00\u4E2A\u3002","Configure task workflows for project and process management":"\u914D\u7F6E\u9879\u76EE\u548C\u6D41\u7A0B\u7BA1\u7406\u7684\u4EFB\u52A1\u5DE5\u4F5C\u6D41","Enable workflow":"\u542F\u7528\u5DE5\u4F5C\u6D41","Toggle to enable the workflow system for tasks":"\u5207\u6362\u4EE5\u542F\u7528\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\u7CFB\u7EDF","Auto-add timestamp":"\u81EA\u52A8\u6DFB\u52A0\u65F6\u95F4\u6233","Automatically add a timestamp to the task when it is created":"\u521B\u5EFA\u4EFB\u52A1\u65F6\u81EA\u52A8\u6DFB\u52A0\u65F6\u95F4\u6233","Timestamp format:":"\u65F6\u95F4\u6233\u683C\u5F0F\uFF1A","Timestamp format":"\u65F6\u95F4\u6233\u683C\u5F0F","Remove timestamp when moving to next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u79FB\u9664\u65F6\u95F4\u6233","Remove the timestamp from the current task when moving to the next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u4ECE\u5F53\u524D\u4EFB\u52A1\u4E2D\u79FB\u9664\u65F6\u95F4\u6233","Calculate spent time":"\u8BA1\u7B97\u82B1\u8D39\u65F6\u95F4","Calculate and display the time spent on the task when moving to the next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u8BA1\u7B97\u5E76\u663E\u793A\u5728\u4EFB\u52A1\u4E0A\u82B1\u8D39\u7684\u65F6\u95F4","Format for spent time:":"\u82B1\u8D39\u65F6\u95F4\u683C\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u8BA1\u7B97\u82B1\u8D39\u65F6\u95F4\u3002","Spent time format":"\u82B1\u8D39\u65F6\u95F4\u683C\u5F0F","Calculate full spent time":"\u8BA1\u7B97\u603B\u82B1\u8D39\u65F6\u95F4","Calculate the full spent time from the start of the task to the last stage":"\u8BA1\u7B97\u4ECE\u4EFB\u52A1\u5F00\u59CB\u5230\u6700\u540E\u9636\u6BB5\u7684\u603B\u82B1\u8D39\u65F6\u95F4","Auto remove last stage marker":"\u81EA\u52A8\u79FB\u9664\u6700\u540E\u9636\u6BB5\u6807\u8BB0","Automatically remove the last stage marker when a task is completed":"\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u79FB\u9664\u6700\u540E\u9636\u6BB5\u6807\u8BB0","Auto-add next task":"\u81EA\u52A8\u6DFB\u52A0\u4E0B\u4E00\u4EFB\u52A1","Automatically create a new task with the next stage when completing a task":"\u5B8C\u6210\u4EFB\u52A1\u65F6\u81EA\u52A8\u521B\u5EFA\u5177\u6709\u4E0B\u4E00\u9636\u6BB5\u7684\u65B0\u4EFB\u52A1","Workflow definitions":"\u5DE5\u4F5C\u6D41\u5B9A\u4E49","Configure workflow templates for different types of processes":"\u4E3A\u4E0D\u540C\u7C7B\u578B\u7684\u6D41\u7A0B\u914D\u7F6E\u5DE5\u4F5C\u6D41\u6A21\u677F","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u5C1A\u672A\u521B\u5EFA\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u3002\u70B9\u51FB'\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41'\u521B\u5EFA\u4E00\u4E2A\u3002","Edit workflow":"\u7F16\u8F91\u5DE5\u4F5C\u6D41","Remove workflow":"\u79FB\u9664\u5DE5\u4F5C\u6D41","Delete workflow":"\u5220\u9664\u5DE5\u4F5C\u6D41",Delete:"\u5220\u9664","Add New Workflow":"\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41","New Workflow":"\u65B0\u5DE5\u4F5C\u6D41","Create New Workflow":"\u521B\u5EFA\u65B0\u5DE5\u4F5C\u6D41","Workflow name":"\u5DE5\u4F5C\u6D41\u540D\u79F0","A descriptive name for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Workflow ID":"\u5DE5\u4F5C\u6D41ID","A unique identifier for the workflow (used in tags)":"\u5DE5\u4F5C\u6D41\u7684\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u7528\u4E8E\u6807\u7B7E\uFF09",Description:"\u63CF\u8FF0","Optional description for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u53EF\u9009\u63CF\u8FF0","Describe the purpose and use of this workflow...":"\u63CF\u8FF0\u6B64\u5DE5\u4F5C\u6D41\u7684\u76EE\u7684\u548C\u7528\u9014...","Workflow Stages":"\u5DE5\u4F5C\u6D41\u9636\u6BB5","No stages defined yet. Add a stage to get started.":"\u5C1A\u672A\u5B9A\u4E49\u9636\u6BB5\u3002\u6DFB\u52A0\u4E00\u4E2A\u9636\u6BB5\u5F00\u59CB\u3002",Edit:"\u7F16\u8F91","Move up":"\u4E0A\u79FB","Move down":"\u4E0B\u79FB","Sub-stage":"\u5B50\u9636\u6BB5","Sub-stage name":"\u5B50\u9636\u6BB5\u540D\u79F0","Sub-stage ID":"\u5B50\u9636\u6BB5ID","Next: ":"\u4E0B\u4E00\u4E2A\uFF1A","Add Sub-stage":"\u6DFB\u52A0\u5B50\u9636\u6BB5","New Sub-stage":"\u65B0\u5B50\u9636\u6BB5","Edit Stage":"\u7F16\u8F91\u9636\u6BB5","Stage name":"\u9636\u6BB5\u540D\u79F0","A descriptive name for this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u9636\u6BB5\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Stage ID":"\u9636\u6BB5ID","A unique identifier for the stage (used in tags)":"\u9636\u6BB5\u7684\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u7528\u4E8E\u6807\u7B7E\uFF09","Stage type":"\u9636\u6BB5\u7C7B\u578B","The type of this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u9636\u6BB5\u7684\u7C7B\u578B","Linear (sequential)":"\u7EBF\u6027\uFF08\u987A\u5E8F\uFF09","Cycle (repeatable)":"\u5FAA\u73AF\uFF08\u53EF\u91CD\u590D\uFF09","Terminal (end stage)":"\u7EC8\u7AEF\uFF08\u7ED3\u675F\u9636\u6BB5\uFF09","Next stage":"\u4E0B\u4E00\u9636\u6BB5","The stage to proceed to after this one":"\u6B64\u9636\u6BB5\u4E4B\u540E\u8981\u8FDB\u884C\u7684\u9636\u6BB5","Sub-stages":"\u5B50\u9636\u6BB5","Define cycle sub-stages (optional)":"\u5B9A\u4E49\u5FAA\u73AF\u5B50\u9636\u6BB5\uFF08\u53EF\u9009\uFF09","No sub-stages defined yet.":"\u5C1A\u672A\u5B9A\u4E49\u5B50\u9636\u6BB5\u3002","Can proceed to":"\u53EF\u4EE5\u8FDB\u884C\u5230","Additional stages that can follow this one (for right-click menu)":"\u53EF\u4EE5\u8DDF\u968F\u6B64\u9636\u6BB5\u7684\u5176\u4ED6\u9636\u6BB5\uFF08\u7528\u4E8E\u53F3\u952E\u83DC\u5355\uFF09","No additional destination stages defined.":"\u672A\u5B9A\u4E49\u5176\u4ED6\u76EE\u6807\u9636\u6BB5\u3002",Remove:"\u79FB\u9664",Add:"\u6DFB\u52A0","Name and ID are required.":"\u540D\u79F0\u548CID\u662F\u5FC5\u9700\u7684\u3002","End of file":"\u6587\u4EF6\u7ED3\u5C3E","Include in cycle":"\u5305\u542B\u5728\u5FAA\u73AF\u4E2D",Preset:"\u9884\u8BBE","Preset name":"\u9884\u8BBE\u540D\u79F0","Edit Filter":"\u7F16\u8F91\u8FC7\u6EE4\u5668","Add New Preset":"\u6DFB\u52A0\u65B0\u9884\u8BBE","New Filter":"\u65B0\u8FC7\u6EE4\u5668","Reset to Default Presets":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u9884\u8BBE","This will replace all your current presets with the default set. Are you sure?":"\u8FD9\u5C06\u66FF\u6362\u60A8\u5F53\u524D\u7684\u6240\u6709\u9884\u8BBE\uFF0C\u5E76\u4F7F\u7528\u9ED8\u8BA4\u8BBE\u7F6E\u3002\u60A8\u786E\u5B9A\u5417\uFF1F","Edit Workflow":"\u7F16\u8F91\u5DE5\u4F5C\u6D41",General:"\u5E38\u89C4","Views & Index":"\u89C6\u56FE\u4E0E\u7D22\u5F15","Progress Display":"\u8FDB\u5EA6\u663E\u793A","Task Management":"\u4EFB\u52A1\u7BA1\u7406",Workflows:"\u5DE5\u4F5C\u6D41","Dates & Priority":"\u65E5\u671F\u4E0E\u4F18\u5148\u7EA7","Quick Capture":"\u5FEB\u901F\u6355\u83B7",Rewards:"\u5956\u52B1",Habits:"\u4E60\u60EF","Calendar Sync":"\u65E5\u5386\u540C\u6B65","Beta Features":"\u6D4B\u8BD5\u529F\u80FD",Projects:"\u9879\u76EE",About:"\u5173\u4E8E","Core Settings":"\u6838\u5FC3\u8BBE\u7F6E","Display & Progress":"\u663E\u793A\u4E0E\u8FDB\u5EA6","Workflow & Automation":"\u5DE5\u4F5C\u6D41\u4E0E\u81EA\u52A8\u5316",Gamification:"\u6E38\u620F\u5316",Integration:"\u96C6\u6210",Advanced:"\u9AD8\u7EA7",Information:"\u4FE1\u606F","Count sub children of current Task":"\u8BA1\u7B97\u5F53\u524D\u4EFB\u52A1\u7684\u5B50\u4EFB\u52A1","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u8FDB\u5EA6\u6761\u65F6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Configure task status settings":"\u914D\u7F6E\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Configure which task markers to count or exclude":"\u914D\u7F6E\u8981\u8BA1\u7B97\u6216\u6392\u9664\u7684\u4EFB\u52A1\u6807\u8BB0","File Filter":"\u6587\u4EF6\u8FC7\u6EE4\u5668","Enable File Filter":"\u542F\u7528\u6587\u4EF6\u8FC7\u6EE4\u5668","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5728\u4EFB\u52A1\u7D22\u5F15\u671F\u95F4\u542F\u7528\u6587\u4EF6\u548C\u6587\u4EF6\u5939\u8FC7\u6EE4\u3002\u8FD9\u53EF\u4EE5\u663E\u8457\u63D0\u9AD8\u5927\u578B\u5E93\u7684\u6027\u80FD\u3002","File Filter Mode":"\u8FC7\u6EE4\u6A21\u5F0F","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u9009\u62E9\u662F\u4EC5\u5305\u542B\u6307\u5B9A\u7684\u6587\u4EF6/\u6587\u4EF6\u5939\uFF08\u767D\u540D\u5355\uFF09\u8FD8\u662F\u6392\u9664\u5B83\u4EEC\uFF08\u9ED1\u540D\u5355\uFF09","Whitelist (Include only)":"\u767D\u540D\u5355\uFF08\u4EC5\u5305\u542B\uFF09","Blacklist (Exclude)":"\u9ED1\u540D\u5355\uFF08\u6392\u9664\uFF09","File Filter Rules":"\u8FC7\u6EE4\u89C4\u5219","Configure which files and folders to include or exclude from task indexing":"\u914D\u7F6E\u5728\u4EFB\u52A1\u7D22\u5F15\u4E2D\u5305\u542B\u6216\u6392\u9664\u54EA\u4E9B\u6587\u4EF6\u548C\u6587\u4EF6\u5939","Type:":"\u7C7B\u578B\uFF1A","Path:":"\u8DEF\u5F84\uFF1A","Enabled:":"\u542F\u7528\uFF1A","Delete rule":"\u5220\u9664\u89C4\u5219","Add Filter Rule":"\u6DFB\u52A0\u8FC7\u6EE4\u89C4\u5219","Add File Rule":"\u6DFB\u52A0\u6587\u4EF6\u89C4\u5219","Add Folder Rule":"\u6DFB\u52A0\u6587\u4EF6\u5939\u89C4\u5219","Add Pattern Rule":"\u6DFB\u52A0\u6A21\u5F0F\u89C4\u5219","Preset Templates":"\u9884\u8BBE\u6A21\u677F","Quick setup for common filtering scenarios":"\u5E38\u89C1\u8FC7\u6EE4\u573A\u666F\u7684\u5FEB\u901F\u8BBE\u7F6E","Exclude System Folders":"\u6392\u9664\u7CFB\u7EDF\u6587\u4EF6\u5939","Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files":"\u81EA\u52A8\u6392\u9664\u5E38\u89C1\u7CFB\u7EDF\u6587\u4EF6\u5939\uFF08.obsidian\u3001.trash\u3001.git\uFF09\u548C\u4E34\u65F6\u6587\u4EF6","Apply System Exclusions":"\u5E94\u7528\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","This will enable file filtering and add system folder exclusion rules":"\u8FD9\u5C06\u542F\u7528\u6587\u4EF6\u8FC7\u6EE4\u5E76\u6DFB\u52A0\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219","System Folders Already Excluded":"\u7CFB\u7EDF\u6587\u4EF6\u5939\u5DF2\u6392\u9664","All system folder exclusion rules are already configured and active":"\u6240\u6709\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219\u5DF2\u914D\u7F6E\u5E76\u6FC0\u6D3B","File filtering enabled and {{count}} system exclusion rules added":"\u6587\u4EF6\u8FC7\u6EE4\u5DF2\u542F\u7528\uFF0C\u6DFB\u52A0\u4E86 {{count}} \u4E2A\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","File filtering enabled with existing system exclusion rules":"\u6587\u4EF6\u8FC7\u6EE4\u5DF2\u542F\u7528\uFF0C\u4F7F\u7528\u73B0\u6709\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","{{count}} system exclusion rules added":"\u5DF2\u6DFB\u52A0 {{count}} \u4E2A\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","System exclusion rules updated":"\u7CFB\u7EDF\u6392\u9664\u89C4\u5219\u5DF2\u66F4\u65B0","System folder exclusions added":"\u5DF2\u6DFB\u52A0\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219","Active Rules":"\u6D3B\u8DC3\u89C4\u5219","Cache Size":"\u7F13\u5B58\u5927\u5C0F","Task status cycle and marks":"\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u6807\u8BB0",Version:"\u7248\u672C",Documentation:"\u6587\u6863","View the documentation for this plugin":"\u67E5\u770B\u6B64\u63D2\u4EF6\u7684\u6587\u6863","Open Documentation":"\u6253\u5F00\u6587\u6863","Incomplete tasks":"\u672A\u5B8C\u6210\u7684\u4EFB\u52A1","In progress tasks":"\u8FDB\u884C\u4E2D\u7684\u4EFB\u52A1","Completed tasks":"\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1","All tasks":"\u6240\u6709\u4EFB\u52A1","After heading":"\u6807\u9898\u4E4B\u540E","End of section":"\u7AE0\u8282\u7ED3\u5C3E","Enable text mark in source mode":"\u5728\u6E90\u7801\u6A21\u5F0F\u4E2D\u542F\u7528\u6587\u672C\u6807\u8BB0","Make the text mark in source mode follow the task status cycle when clicked.":"\u70B9\u51FB\u65F6\u4F7F\u6E90\u7801\u6A21\u5F0F\u4E2D\u7684\u6587\u672C\u6807\u8BB0\u8DDF\u968F\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u3002","Status name":"\u72B6\u6001\u540D\u79F0","Progress display mode":"\u8FDB\u5EA6\u663E\u793A\u6A21\u5F0F","Choose how to display task progress":"\u9009\u62E9\u5982\u4F55\u663E\u793A\u4EFB\u52A1\u8FDB\u5EA6","No progress indicators":"\u65E0\u8FDB\u5EA6\u6307\u793A\u5668","Graphical progress bar":"\u56FE\u5F62\u8FDB\u5EA6\u6761","Text progress indicator":"\u6587\u672C\u8FDB\u5EA6\u6307\u793A\u5668","Both graphical and text":"\u56FE\u5F62\u548C\u6587\u672C\u90FD\u663E\u793A","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u8FDB\u5EA6\u6761\u65F6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Progress format":"\u8FDB\u5EA6\u683C\u5F0F","Choose how to display the task progress":"\u9009\u62E9\u5982\u4F55\u663E\u793A\u4EFB\u52A1\u8FDB\u5EA6","Percentage (75%)":"\u767E\u5206\u6BD4 (75%)","Bracketed percentage ([75%])":"\u5E26\u62EC\u53F7\u7684\u767E\u5206\u6BD4 ([75%])","Fraction (3/4)":"\u5206\u6570 (3/4)","Bracketed fraction ([3/4])":"\u5E26\u62EC\u53F7\u7684\u5206\u6570 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8BE6\u7EC6 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u81EA\u5B9A\u4E49\u683C\u5F0F","Range-based text":"\u57FA\u4E8E\u8303\u56F4\u7684\u6587\u672C","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u4F7F\u7528\u5360\u4F4D\u7B26\u5982 {{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}} \u7B49\u3002","Preview:":"\u9884\u89C8\uFF1A","Available placeholders":"\u53EF\u7528\u5360\u4F4D\u7B26","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u53EF\u7528\u5360\u4F4D\u7B26\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u8FBE\u5F0F\u793A\u4F8B","Examples of advanced formats using expressions":"\u4F7F\u7528\u8868\u8FBE\u5F0F\u7684\u9AD8\u7EA7\u683C\u5F0F\u793A\u4F8B","Text Progress Bar":"\u6587\u672C\u8FDB\u5EA6\u6761","Emoji Progress Bar":"\u8868\u60C5\u7B26\u53F7\u8FDB\u5EA6\u6761","Color-coded Status":"\u989C\u8272\u7F16\u7801\u72B6\u6001","Status with Icons":"\u5E26\u56FE\u6807\u7684\u72B6\u6001",Preview:"\u9884\u89C8",Use:"\u4F7F\u7528","Save Filter Configuration":"\u4FDD\u5B58\u7B5B\u9009\u5668\u914D\u7F6E","Load Filter Configuration":"\u52A0\u8F7D\u7B5B\u9009\u5668\u914D\u7F6E","Save Current Filter":"\u4FDD\u5B58\u5F53\u524D\u7B5B\u9009\u5668","Load Saved Filter":"\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u7B5B\u9009\u5668","Filter Configuration Name":"\u7B5B\u9009\u5668\u914D\u7F6E\u540D\u79F0","Filter Configuration Description":"\u7B5B\u9009\u5668\u914D\u7F6E\u63CF\u8FF0","Enter a name for this filter configuration":"\u4E3A\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u8F93\u5165\u540D\u79F0","Enter a description for this filter configuration (optional)":"\u4E3A\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u8F93\u5165\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09","No saved filter configurations":"\u6CA1\u6709\u5DF2\u4FDD\u5B58\u7684\u7B5B\u9009\u5668\u914D\u7F6E","Select a saved filter configuration":"\u9009\u62E9\u5DF2\u4FDD\u5B58\u7684\u7B5B\u9009\u5668\u914D\u7F6E","Delete Filter Configuration":"\u5220\u9664\u7B5B\u9009\u5668\u914D\u7F6E","Are you sure you want to delete this filter configuration?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u5417\uFF1F","Filter configuration saved successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u4FDD\u5B58\u6210\u529F","Filter configuration loaded successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u52A0\u8F7D\u6210\u529F","Filter configuration deleted successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u5220\u9664\u6210\u529F","Failed to save filter configuration":"\u4FDD\u5B58\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Failed to load filter configuration":"\u52A0\u8F7D\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Failed to delete filter configuration":"\u5220\u9664\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Filter configuration name is required":"\u7B5B\u9009\u5668\u914D\u7F6E\u540D\u79F0\u662F\u5FC5\u9700\u7684",Created:"\u521B\u5EFA\u65F6\u95F4",Updated:"\u66F4\u65B0\u65F6\u95F4","Filter Summary":"\u7B5B\u9009\u5668\u6458\u8981","Root condition":"\u6839\u6761\u4EF6","Toggle this to show percentage instead of completed/total count.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u663E\u793A\u767E\u5206\u6BD4\u800C\u4E0D\u662F\u5DF2\u5B8C\u6210/\u603B\u8BA1\u6570\u3002","Customize progress ranges":"\u81EA\u5B9A\u4E49\u8FDB\u5EA6\u8303\u56F4","Toggle this to customize the text for different progress ranges.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u81EA\u5B9A\u4E49\u4E0D\u540C\u8FDB\u5EA6\u8303\u56F4\u7684\u6587\u672C\u3002","Apply Theme":"\u5E94\u7528\u4E3B\u9898","Back to main settings":"\u8FD4\u56DE\u4E3B\u8BBE\u7F6E","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u652F\u6301\u5728\u683C\u5F0F\u4E2D\u4F7F\u7528\u8868\u8FBE\u5F0F\uFF0C\u4F8B\u5982\u4F7F\u7528 data.percentages \u83B7\u53D6\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u767E\u5206\u6BD4\u3002\u4F7F\u7528 Math \u6216 Repeat \u51FD\u6570\u6765\u83B7\u53D6\u7ED3\u679C\u3002","Target File:":"\u76EE\u6807\u6587\u4EF6\uFF1A","Task Properties":"\u4EFB\u52A1\u5C5E\u6027","Start Date":"\u5F00\u59CB\u65E5\u671F","Due Date":"\u622A\u6B62\u65E5\u671F","Scheduled Date":"\u8BA1\u5212\u65E5\u671F",Priority:"\u4F18\u5148\u7EA7",None:"\u65E0",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D\u7B49",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u9879\u76EE","Project name":"\u9879\u76EE\u540D\u79F0",Context:"\u4E0A\u4E0B\u6587",Recurrence:"\u91CD\u590D","e.g., every day, every week":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u5468","Task Content":"\u4EFB\u52A1\u5185\u5BB9","Task Details":"\u4EFB\u52A1\u8BE6\u60C5",File:"\u6587\u4EF6","Edit in File":"\u5728\u6587\u4EF6\u4E2D\u7F16\u8F91","Mark Incomplete":"\u6807\u8BB0\u4E3A\u672A\u5B8C\u6210","Mark Complete":"\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210","Task Title":"\u4EFB\u52A1\u6807\u9898",Tags:"\u6807\u7B7E","e.g. every day, every 2 weeks":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u4E24\u5468",Forecast:"\u9884\u6D4B","0 actions, 0 projects":"0 \u4E2A\u884C\u52A8\uFF0C0 \u4E2A\u9879\u76EE","Toggle list/tree view":"\u5207\u6362\u5217\u8868/\u6811\u5F62\u89C6\u56FE","Focusing on Work":"\u4E13\u6CE8\u5DE5\u4F5C",Unfocus:"\u53D6\u6D88\u4E13\u6CE8","Past Due":"\u5DF2\u903E\u671F",Today:"\u4ECA\u5929",Future:"\u672A\u6765",actions:"\u884C\u52A8",project:"\u9879\u76EE","Coming Up":"\u5373\u5C06\u5230\u6765",Task:"\u4EFB\u52A1",Tasks:"\u4EFB\u52A1","No upcoming tasks":"\u6CA1\u6709\u5373\u5C06\u5230\u6765\u7684\u4EFB\u52A1","No tasks scheduled":"\u6CA1\u6709\u8BA1\u5212\u4E2D\u7684\u4EFB\u52A1","0 tasks":"0 \u4E2A\u4EFB\u52A1","Filter tasks...":"\u7B5B\u9009\u4EFB\u52A1...","Toggle multi-select":"\u5207\u6362\u591A\u9009","No projects found":"\u672A\u627E\u5230\u9879\u76EE","projects selected":"\u5DF2\u9009\u62E9\u7684\u9879\u76EE",tasks:"\u4EFB\u52A1","No tasks in the selected projects":"\u6240\u9009\u9879\u76EE\u4E2D\u6CA1\u6709\u4EFB\u52A1","Select a project to see related tasks":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u67E5\u770B\u76F8\u5173\u4EFB\u52A1","Configure Review for":"\u4E3A\u4EE5\u4E0B\u9879\u76EE\u914D\u7F6E\u56DE\u987E","Review Frequency":"\u56DE\u987E\u9891\u7387","How often should this project be reviewed":"\u8FD9\u4E2A\u9879\u76EE\u5E94\u8BE5\u591A\u4E45\u56DE\u987E\u4E00\u6B21","Custom...":"\u81EA\u5B9A\u4E49...","e.g., every 3 months":"\u4F8B\u5982\uFF1A\u6BCF3\u4E2A\u6708","Last Reviewed":"\u4E0A\u6B21\u56DE\u987E","Please specify a review frequency":"\u8BF7\u6307\u5B9A\u56DE\u987E\u9891\u7387","Review schedule updated for":"\u5DF2\u66F4\u65B0\u56DE\u987E\u8BA1\u5212","Review Projects":"\u56DE\u987E\u9879\u76EE","Select a project to review its tasks.":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u56DE\u987E\u5176\u4EFB\u52A1\u3002","Configured for Review":"\u5DF2\u914D\u7F6E\u56DE\u987E","Not Configured":"\u672A\u914D\u7F6E","No projects available.":"\u6CA1\u6709\u53EF\u7528\u7684\u9879\u76EE\u3002","Select a project to review.":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u8FDB\u884C\u56DE\u987E\u3002","Show all tasks":"\u663E\u793A\u6240\u6709\u4EFB\u52A1","Showing all tasks, including completed tasks from previous reviews.":"\u663E\u793A\u6240\u6709\u4EFB\u52A1\uFF0C\u5305\u62EC\u4E4B\u524D\u56DE\u987E\u4E2D\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Show only new and in-progress tasks":"\u4EC5\u663E\u793A\u65B0\u4EFB\u52A1\u548C\u8FDB\u884C\u4E2D\u7684\u4EFB\u52A1","No tasks found for this project.":"\u672A\u627E\u5230\u6B64\u9879\u76EE\u7684\u4EFB\u52A1\u3002","Review every":"\u6BCF\u9694\u591A\u4E45\u56DE\u987E",never:"\u4ECE\u4E0D","Last reviewed":"\u4E0A\u6B21\u56DE\u987E","Mark as Reviewed":"\u6807\u8BB0\u4E3A\u5DF2\u56DE\u987E","No review schedule configured for this project":"\u6B64\u9879\u76EE\u672A\u914D\u7F6E\u56DE\u987E\u8BA1\u5212","Configure Review Schedule":"\u914D\u7F6E\u56DE\u987E\u8BA1\u5212","Project Review":"\u9879\u76EE\u56DE\u987E","Select a project from the left sidebar to review its tasks.":"\u4ECE\u5DE6\u4FA7\u8FB9\u680F\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u56DE\u987E\u5176\u4EFB\u52A1\u3002",Inbox:"\u6536\u4EF6\u7BB1",Flagged:"\u5DF2\u6807\u8BB0",Review:"\u56DE\u987E","tags selected":"\u5DF2\u9009\u62E9\u7684\u6807\u7B7E","No tasks with the selected tags":"\u6CA1\u6709\u5E26\u6709\u6240\u9009\u6807\u7B7E\u7684\u4EFB\u52A1","Select a tag to see related tasks":"\u9009\u62E9\u4E00\u4E2A\u6807\u7B7E\u4EE5\u67E5\u770B\u76F8\u5173\u4EFB\u52A1","Open Task Genius view":"\u6253\u5F00 Task Genius \u89C6\u56FE","Task capture with metadata":"\u5E26\u5143\u6570\u636E\u7684\u4EFB\u52A1\u6355\u83B7","Refresh task index":"\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15","Refreshing task index...":"\u6B63\u5728\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15...","Task index refreshed":"\u4EFB\u52A1\u7D22\u5F15\u5DF2\u5237\u65B0","Failed to refresh task index":"\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Force reindex all tasks":"\u5F3A\u5236\u91CD\u5EFA\u6240\u6709\u4EFB\u52A1\u7D22\u5F15","Clearing task cache and rebuilding index...":"\u6B63\u5728\u6E05\u9664\u4EFB\u52A1\u7F13\u5B58\u5E76\u91CD\u5EFA\u7D22\u5F15...","Task index completely rebuilt":"\u4EFB\u52A1\u7D22\u5F15\u5DF2\u5B8C\u5168\u91CD\u5EFA","Failed to force reindex tasks":"\u5F3A\u5236\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Task Genius View":"Task Genius \u89C6\u56FE","Toggle Sidebar":"\u5207\u6362\u4FA7\u8FB9\u680F",Details:"\u8BE6\u60C5",View:"\u89C6\u56FE","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius \u89C6\u56FE\u662F\u4E00\u4E2A\u7EFC\u5408\u89C6\u56FE\uFF0C\u53EF\u4EE5\u8BA9\u60A8\u66F4\u9AD8\u6548\u5730\u7BA1\u7406\u4EFB\u52A1\u3002","Enable task genius view":"\u542F\u7528 Task Genius \u89C6\u56FE","Select a task to view details":"\u9009\u62E9\u4E00\u4E2A\u4EFB\u52A1\u4EE5\u67E5\u770B\u8BE6\u60C5",Status:"\u72B6\u6001","Comma separated":"\u9017\u53F7\u5206\u9694",Focus:"\u4E13\u6CE8","Loading more...":"\u52A0\u8F7D\u66F4\u591A...",projects:"\u9879\u76EE","No tasks for this section.":"\u5F53\u524D\u533A\u95F4\u6CA1\u6709\u4EFB\u52A1","No tasks found.":"\u6CA1\u6709\u4EFB\u52A1",Complete:"\u5B8C\u6210","Switch status":"\u5207\u6362\u72B6\u6001","Rebuild index":"\u91CD\u5EFA\u7D22\u5F15",Rebuild:"\u91CD\u5EFA","0 tasks, 0 projects":"0 \u4E2A\u4EFB\u52A1\uFF0C0 \u4E2A\u9879\u76EE","New Custom View":"\u65B0\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Create Custom View":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Edit View: ":"\u7F16\u8F91\u89C6\u56FE\uFF1A","View Name":"\u89C6\u56FE\u540D\u79F0","My Custom Task View":"\u6211\u7684\u81EA\u5B9A\u4E49\u4EFB\u52A1\u89C6\u56FE","Icon Name":"\u56FE\u6807\u540D\u79F0","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u8F93\u5165\u4EFB\u4F55 Lucide \u56FE\u6807\u540D\u79F0\uFF08\u4F8B\u5982\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u8FC7\u6EE4\u89C4\u5219","Hide Completed and Abandoned Tasks":"\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1","Hide completed and abandoned tasks in this view.":"\u5728\u6B64\u89C6\u56FE\u4E2D\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1\u3002","Text Contains":"\u6587\u672C\u5305\u542B","Filter tasks whose content includes this text (case-insensitive).":"\u8FC7\u6EE4\u5185\u5BB9\u5305\u542B\u6B64\u6587\u672C\u7684\u4EFB\u52A1\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Tags Include":"\u5305\u542B\u6807\u7B7E","Task must include ALL these tags (comma-separated).":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6240\u6709\u8FD9\u4E9B\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002","Tags Exclude":"\u6392\u9664\u6807\u7B7E","Task must NOT include ANY of these tags (comma-separated).":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u4EFB\u4F55\u8FD9\u4E9B\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002","Project Is":"\u9879\u76EE\u662F","Task must belong to this project (exact match).":"\u4EFB\u52A1\u5FC5\u987B\u5C5E\u4E8E\u6B64\u9879\u76EE\uFF08\u7CBE\u786E\u5339\u914D\uFF09\u3002","Priority Is":"\u4F18\u5148\u7EA7\u662F","Task must have this priority (e.g., 1, 2, 3).":"\u4EFB\u52A1\u5FC5\u987B\u5177\u6709\u6B64\u4F18\u5148\u7EA7\uFF08\u4F8B\u5982\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u5305\u542B\u72B6\u6001","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u4EFB\u52A1\u72B6\u6001\u5FC5\u987B\u662F\u8FD9\u4E9B\u4E4B\u4E00\uFF08\u9017\u53F7\u5206\u9694\u7684\u6807\u8BB0\uFF0C\u4F8B\u5982\uFF1A/,>\uFF09\u3002","Status Exclude":"\u6392\u9664\u72B6\u6001","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u4EFB\u52A1\u72B6\u6001\u4E0D\u5F97\u662F\u8FD9\u4E9B\u4E4B\u4E00\uFF08\u9017\u53F7\u5206\u9694\u7684\u6807\u8BB0\uFF0C\u4F8B\u5982\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u4F7F\u7528 YYYY-MM-DD \u6216\u76F8\u5BF9\u672F\u8BED\uFF0C\u5982'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'\u4E0B\u5468'\u3001'\u4E0A\u4E2A\u6708'\u3002","Due Date Is":"\u622A\u6B62\u65E5\u671F\u662F","Start Date Is":"\u5F00\u59CB\u65E5\u671F\u662F","Scheduled Date Is":"\u8BA1\u5212\u65E5\u671F\u662F","Path Includes":"\u8DEF\u5F84\u5305\u542B","Task must contain this path (case-insensitive).":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Path Excludes":"\u8DEF\u5F84\u6392\u9664","Task must NOT contain this path (case-insensitive).":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Unnamed View":"\u672A\u547D\u540D\u89C6\u56FE","View configuration saved.":"\u89C6\u56FE\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002","Hide Details":"\u9690\u85CF\u8BE6\u60C5","Show Details":"\u663E\u793A\u8BE6\u60C5","View Config":"\u89C6\u56FE\u914D\u7F6E","View Configuration":"\u89C6\u56FE\u914D\u7F6E","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u914D\u7F6E Task Genius \u4FA7\u8FB9\u680F\u89C6\u56FE\u3001\u53EF\u89C1\u6027\u3001\u987A\u5E8F\uFF0C\u5E76\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE\u3002","Manage Views":"\u7BA1\u7406\u89C6\u56FE","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u914D\u7F6E\u4FA7\u8FB9\u680F\u89C6\u56FE\u3001\u987A\u5E8F\u3001\u53EF\u89C1\u6027\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u89C6\u56FE\u4E2D\u9690\u85CF/\u663E\u793A\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Show in sidebar":"\u5728\u4FA7\u8FB9\u680F\u4E2D\u663E\u793A","Edit View":"\u7F16\u8F91\u89C6\u56FE","Move Up":"\u4E0A\u79FB","Move Down":"\u4E0B\u79FB","Delete View":"\u5220\u9664\u89C6\u56FE","Add Custom View":"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u89C6\u56FE","Error: View ID already exists.":"\u9519\u8BEF\uFF1A\u89C6\u56FE ID \u5DF2\u5B58\u5728\u3002",Events:"\u4E8B\u4EF6",Plan:"\u8BA1\u5212",Year:"\u5E74",Month:"\u6708",Week:"\u5468",Day:"\u65E5",Agenda:"\u8BAE\u7A0B","Back to categories":"\u8FD4\u56DE\u5206\u7C7B","No matching options found":"\u672A\u627E\u5230\u5339\u914D\u9009\u9879","No matching filters found":"\u672A\u627E\u5230\u5339\u914D\u8FC7\u6EE4\u5668",Tag:"\u6807\u7B7E","File Path":"\u6587\u4EF6\u8DEF\u5F84","Add filter":"\u6DFB\u52A0\u8FC7\u6EE4\u5668","Clear all":"\u6E05\u9664\u5168\u90E8","Add Card":"\u6DFB\u52A0\u5361\u7247","First Day of Week":"\u6BCF\u5468\u7B2C\u4E00\u5929","Overrides the locale default for calendar views.":"\u8986\u76D6\u65E5\u5386\u89C6\u56FE\u7684\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Show checkbox":"\u663E\u793A\u590D\u9009\u6846","Show a checkbox for each task in the kanban view.":"\u5728\u770B\u677F\u89C6\u56FE\u4E2D\u4E3A\u6BCF\u4E2A\u4EFB\u52A1\u663E\u793A\u590D\u9009\u6846\u3002","Locale Default":"\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E","Use custom goal for progress bar":"\u4E3A\u8FDB\u5EA6\u6761\u4F7F\u7528\u81EA\u5B9A\u4E49\u76EE\u6807","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5C06 g::number \u6A21\u5F0F\u8BC6\u522B\u4E3A\u7236\u4EFB\u52A1\u7684\u76EE\u6807\u3002","Prefer metadata format of task":"\u9996\u9009\u4EFB\u52A1\u7684\u5143\u6570\u636E\u683C\u5F0F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u60A8\u53EF\u4EE5\u9009\u62E9 dataview \u683C\u5F0F\u6216 tasks \u683C\u5F0F\uFF0C\u8FD9\u5C06\u5F71\u54CD\u7D22\u5F15\u548C\u4FDD\u5B58\u683C\u5F0F\u3002","Task Parser Configuration":"\u4EFB\u52A1\u89E3\u6790\u5668\u914D\u7F6E","Configure how task metadata is parsed and recognized.":"\u914D\u7F6E\u4EFB\u52A1\u5143\u6570\u636E\u7684\u89E3\u6790\u548C\u8BC6\u522B\u65B9\u5F0F\u3002","Project tag prefix":"\u9879\u76EE\u6807\u7B7E\u524D\u7F00","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u9879\u76EE\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'project' \u5BF9\u5E94 #project/myproject\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u9879\u76EE\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'project' \u5BF9\u5E94 [project:: myproject]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Context tag prefix":"\u4E0A\u4E0B\u6587\u6807\u7B7E\u524D\u7F00","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u4E0A\u4E0B\u6587\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'context' \u5BF9\u5E94 [context:: home]\uFF09\u3002\u6CE8\u610F\uFF1Aemoji \u683C\u5F0F\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.":"emoji \u683C\u5F0F\u4E2D\u7684\u4E0A\u4E0B\u6587\u6807\u7B7E\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00\uFF08\u4E0D\u53EF\u914D\u7F6E\uFF09\u3002\u6B64\u8BBE\u7F6E\u4EC5\u5F71\u54CD dataview \u683C\u5F0F\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Area tag prefix":"\u533A\u57DF\u6807\u7B7E\u524D\u7F00","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u533A\u57DF\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'area' \u5BF9\u5E94 #area/work\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u533A\u57DF\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'area' \u5BF9\u5E94 [area:: work]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Format Examples:":"\u683C\u5F0F\u793A\u4F8B\uFF1A","always uses @ prefix":"\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00","Open in new tab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00","Open settings":"\u6253\u5F00\u8BBE\u7F6E","Hide in sidebar":"\u5728\u4FA7\u8FB9\u680F\u4E2D\u9690\u85CF","No items found":"\u672A\u627E\u5230\u9879\u76EE","High Priority":"\u9AD8\u4F18\u5148\u7EA7","Medium Priority":"\u4E2D\u4F18\u5148\u7EA7","Low Priority":"\u4F4E\u4F18\u5148\u7EA7","No tasks in the selected items":"\u6240\u9009\u9879\u76EE\u4E2D\u6CA1\u6709\u4EFB\u52A1","View Type":"\u89C6\u56FE\u7C7B\u578B","Select the type of view to create":"\u9009\u62E9\u8981\u521B\u5EFA\u7684\u89C6\u56FE\u7C7B\u578B","Standard View":"\u6807\u51C6\u89C6\u56FE","Two Column View":"\u53CC\u5217\u89C6\u56FE",Items:"\u9879\u76EE","selected items":"\u5DF2\u9009\u9879\u76EE","No items selected":"\u672A\u9009\u62E9\u9879\u76EE","Two Column View Settings":"\u53CC\u5217\u89C6\u56FE\u8BBE\u7F6E","Group by Task Property":"\u6309\u4EFB\u52A1\u5C5E\u6027\u5206\u7EC4","Select which task property to use for left column grouping":"\u9009\u62E9\u7528\u4E8E\u5DE6\u5217\u5206\u7EC4\u7684\u4EFB\u52A1\u5C5E\u6027",Priorities:"\u4F18\u5148\u7EA7",Contexts:"\u4E0A\u4E0B\u6587","Due Dates":"\u622A\u6B62\u65E5\u671F","Scheduled Dates":"\u8BA1\u5212\u65E5\u671F","Start Dates":"\u5F00\u59CB\u65E5\u671F",Files:"\u6587\u4EF6","Left Column Title":"\u5DE6\u5217\u6807\u9898","Title for the left column (items list)":"\u5DE6\u5217\u6807\u9898\uFF08\u9879\u76EE\u5217\u8868\uFF09","Right Column Title":"\u53F3\u5217\u6807\u9898","Default title for the right column (tasks list)":"\u53F3\u5217\u9ED8\u8BA4\u6807\u9898\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","Multi-select Text":"\u591A\u9009\u6587\u672C","Text to show when multiple items are selected":"\u9009\u62E9\u591A\u4E2A\u9879\u76EE\u65F6\u663E\u793A\u7684\u6587\u672C","Empty State Text":"\u7A7A\u72B6\u6001\u6587\u672C","Text to show when no items are selected":"\u672A\u9009\u62E9\u9879\u76EE\u65F6\u663E\u793A\u7684\u6587\u672C","Filter Blanks":"\u8FC7\u6EE4\u7A7A\u767D\u4EFB\u52A1","Filter out blank tasks in this view.":"\u5728\u6B64\u89C6\u56FE\u4E2D\u8FC7\u6EE4\u6389\u7A7A\u767D\u4EFB\u52A1\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002\u591A\u4E2A\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002\u591A\u4E2A\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\u3002","You have unsaved changes. Save before closing?":"\u60A8\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539\u3002\u5173\u95ED\u524D\u4FDD\u5B58\u5417\uFF1F",Rotate:"\u65CB\u8F6C","Are you sure you want to force reindex all tasks?":"\u60A8\u786E\u5B9A\u8981\u5F3A\u5236\u91CD\u65B0\u7D22\u5F15\u6240\u6709\u4EFB\u52A1\u5417\uFF1F","Enable progress bar in reading mode":"\u5728\u9605\u8BFB\u6A21\u5F0F\u4E2D\u542F\u7528\u8FDB\u5EA6\u6761","Toggle this to allow this plugin to show progress bars in reading mode.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u9605\u8BFB\u6A21\u5F0F\u4E2D\u663E\u793A\u8FDB\u5EA6\u6761\u3002",Range:"\u8303\u56F4","as a placeholder for the percentage value":"\u4F5C\u4E3A\u767E\u5206\u6BD4\u503C\u7684\u5360\u4F4D\u7B26","Template text with":"\u5E26\u6709\u5360\u4F4D\u7B26\u7684\u6A21\u677F\u6587\u672C",placeholder:"\u5360\u4F4D\u7B26",Reindex:"\u91CD\u5EFA\u7D22\u5F15","From now":"\u4ECE\u73B0\u5728","Complete workflow":"\u5B8C\u6210\u5DE5\u4F5C\u6D41","Move to":"\u79FB\u52A8\u5230",Settings:"\u8BBE\u7F6E","Just started":"\u521A\u521A\u5F00\u59CB","Making progress":"\u6B63\u5728\u8FDB\u884C\u4E2D","Half way":"\u5B8C\u6210\u4E00\u534A","Good progress":"\u8FDB\u5C55\u826F\u597D","Almost there":"\u5373\u5C06\u5B8C\u6210","archived on":"\u5F52\u6863\u4E8E",moved:"\u5DF2\u79FB\u52A8","Capture your thoughts...":"\u8BB0\u5F55\u4F60\u7684\u60F3\u6CD5...","Project Workflow":"\u9879\u76EE\u5DE5\u4F5C\u6D41","Standard project management workflow":"\u6807\u51C6\u9879\u76EE\u7BA1\u7406\u5DE5\u4F5C\u6D41",Planning:"\u89C4\u5212\u4E2D",Development:"\u5F00\u53D1\u4E2D",Testing:"\u6D4B\u8BD5\u4E2D",Cancelled:"\u5DF2\u53D6\u6D88",Habit:"\u4E60\u60EF","Drink a cup of good tea":"\u559D\u4E00\u676F\u597D\u8336","Watch an episode of a favorite series":"\u89C2\u770B\u4E00\u96C6\u559C\u6B22\u7684\u5267\u96C6","Play a game":"\u73A9\u4E00\u5C40\u6E38\u620F","Eat a piece of chocolate":"\u5403\u4E00\u5757\u5DE7\u514B\u529B",common:"\u666E\u901A",rare:"\u7A00\u6709",legendary:"\u4F20\u5947","No Habits Yet":"\u6682\u65E0\u4E60\u60EF","Click the open habit button to create a new habit.":"\u70B9\u51FB\u6253\u5F00\u4E60\u60EF\u6309\u94AE\u521B\u5EFA\u65B0\u4E60\u60EF\u3002","Please enter details":"\u8BF7\u8F93\u5165\u8BE6\u60C5","Goal reached":"\u76EE\u6807\u8FBE\u6210","Exceeded goal":"\u8D85\u51FA\u76EE\u6807",Active:"\u6D3B\u8DC3",today:"\u4ECA\u5929",Inactive:"\u4E0D\u6D3B\u8DC3","All Done!":"\u5168\u90E8\u5B8C\u6210\uFF01","Select event...":"\u9009\u62E9\u4E8B\u4EF6...","Create new habit":"\u521B\u5EFA\u65B0\u4E60\u60EF","Edit habit":"\u7F16\u8F91\u4E60\u60EF","Habit type":"\u4E60\u60EF\u7C7B\u578B","Daily habit":"\u6BCF\u65E5\u4E60\u60EF","Simple daily check-in habit":"\u7B80\u5355\u7684\u6BCF\u65E5\u6253\u5361\u4E60\u60EF","Count habit":"\u8BA1\u6570\u4E60\u60EF","Record numeric values, e.g., how many cups of water":"\u8BB0\u5F55\u6570\u503C\uFF0C\u4F8B\u5982\u559D\u4E86\u591A\u5C11\u676F\u6C34","Mapping habit":"\u6620\u5C04\u4E60\u60EF","Use different values to map, e.g., emotion tracking":"\u4F7F\u7528\u4E0D\u540C\u7684\u503C\u8FDB\u884C\u6620\u5C04\uFF0C\u4F8B\u5982\u60C5\u7EEA\u8FFD\u8E2A","Scheduled habit":"\u8BA1\u5212\u4E60\u60EF","Habit with multiple events":"\u5305\u542B\u591A\u4E2A\u4E8B\u4EF6\u7684\u4E60\u60EF","Habit name":"\u4E60\u60EF\u540D\u79F0","Display name of the habit":"\u4E60\u60EF\u7684\u663E\u793A\u540D\u79F0","Optional habit description":"\u53EF\u9009\u7684\u4E60\u60EF\u63CF\u8FF0",Icon:"\u56FE\u6807","Please enter a habit name":"\u8BF7\u8F93\u5165\u4E60\u60EF\u540D\u79F0","Property name":"\u5C5E\u6027\u540D\u79F0","The property name of the daily note front matter":"\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u7684\u5C5E\u6027\u540D\u79F0","Completion text":"\u5B8C\u6210\u6587\u672C","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u53EF\u9009\uFF09\u8868\u793A\u5B8C\u6210\u7684\u7279\u5B9A\u6587\u672C\uFF0C\u7559\u7A7A\u5219\u4EFB\u4F55\u975E\u7A7A\u503C\u90FD\u89C6\u4E3A\u5DF2\u5B8C\u6210","The property name in daily note front matter to store count values":"\u5728\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u5B58\u50A8\u8BA1\u6570\u503C\u7684\u5C5E\u6027\u540D\u79F0","Minimum value":"\u6700\u5C0F\u503C","(Optional) Minimum value for the count":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u6700\u5C0F\u503C","Maximum value":"\u6700\u5927\u503C","(Optional) Maximum value for the count":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u6700\u5927\u503C",Unit:"\u5355\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u5355\u4F4D\uFF0C\u5982'\u676F'\u3001'\u6B21'\u7B49","Notice threshold":"\u63D0\u9192\u9608\u503C","(Optional) Trigger a notification when this value is reached":"\uFF08\u53EF\u9009\uFF09\u5F53\u8FBE\u5230\u6B64\u503C\u65F6\u89E6\u53D1\u901A\u77E5","The property name in daily note front matter to store mapping values":"\u5728\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u5B58\u50A8\u6620\u5C04\u503C\u7684\u5C5E\u6027\u540D\u79F0","Value mapping":"\u503C\u6620\u5C04","Define mappings from numeric values to display text":"\u5B9A\u4E49\u4ECE\u6570\u503C\u5230\u663E\u793A\u6587\u672C\u7684\u6620\u5C04","Add new mapping":"\u6DFB\u52A0\u65B0\u6620\u5C04","Scheduled events":"\u8BA1\u5212\u4E8B\u4EF6","Add multiple events that need to be completed":"\u6DFB\u52A0\u9700\u8981\u5B8C\u6210\u7684\u591A\u4E2A\u4E8B\u4EF6","Event name":"\u4E8B\u4EF6\u540D\u79F0","Event details":"\u4E8B\u4EF6\u8BE6\u60C5","Add new event":"\u6DFB\u52A0\u65B0\u4E8B\u4EF6","Please enter a property name":"\u8BF7\u8F93\u5165\u5C5E\u6027\u540D\u79F0","Please add at least one mapping value":"\u8BF7\u81F3\u5C11\u6DFB\u52A0\u4E00\u4E2A\u6620\u5C04\u503C","Mapping key must be a number":"\u6620\u5C04\u952E\u5FC5\u987B\u662F\u6570\u5B57","Please enter text for all mapping values":"\u8BF7\u4E3A\u6240\u6709\u6620\u5C04\u503C\u8F93\u5165\u6587\u672C","Please add at least one event":"\u8BF7\u81F3\u5C11\u6DFB\u52A0\u4E00\u4E2A\u4E8B\u4EF6","Event name cannot be empty":"\u4E8B\u4EF6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A","Add new habit":"\u6DFB\u52A0\u65B0\u4E60\u60EF","No habits yet":"\u6682\u65E0\u4E60\u60EF","Click the button above to add your first habit":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u6DFB\u52A0\u4F60\u7684\u7B2C\u4E00\u4E2A\u4E60\u60EF","Habit updated":"\u4E60\u60EF\u5DF2\u66F4\u65B0","Habit added":"\u4E60\u60EF\u5DF2\u6DFB\u52A0","Delete habit":"\u5220\u9664\u4E60\u60EF","This action cannot be undone.":"\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","Habit deleted":"\u4E60\u60EF\u5DF2\u5220\u9664","You've Earned a Reward!":"\u4F60\u83B7\u5F97\u4E86\u4E00\u4E2A\u5956\u52B1\uFF01","Your reward:":"\u4F60\u7684\u5956\u52B1\uFF1A","Image not found:":"\u672A\u627E\u5230\u56FE\u7247\uFF1A","Claim Reward":"\u9886\u53D6\u5956\u52B1",Skip:"\u8DF3\u8FC7",Reward:"\u5956\u52B1","View & Index Configuration":"\u89C6\u56FE\u4E0E\u7D22\u5F15\u914D\u7F6E","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u542F\u7528 Task Genius \u89C6\u56FE\u4E5F\u5C06\u542F\u7528 Task Genius \u7D22\u5F15\u5668\uFF0C\u5B83\u5C06\u63D0\u4F9B\u6765\u81EA\u6574\u4E2A\u4FDD\u9669\u5E93\u7684 Task Genius \u89C6\u56FE\u7ED3\u679C\u3002","Use daily note path as date":"\u4F7F\u7528\u65E5\u8BB0\u8DEF\u5F84\u4F5C\u4E3A\u65E5\u671F","If enabled, the daily note path will be used as the date for tasks.":"\u5982\u679C\u542F\u7528\uFF0C\u65E5\u8BB0\u8DEF\u5F84\u5C06\u7528\u4F5C\u4EFB\u52A1\u7684\u65E5\u671F\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":" Task Genius \u5C06\u4F7F\u7528moment.js\u548C\u6B64\u683C\u5F0F\u89E3\u6790\u65E5\u8BB0\u8DEF\u5F84\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5728\u683C\u5F0F\u5B57\u7B26\u4E32\u4E2D\u9700\u8981\u4F7F\u7528`yyyy`\u800C\u4E0D\u662F`YYYY`\uFF0C\u4F7F\u7528`dd`\u800C\u4E0D\u662F`DD`\u3002","Daily note format":"\u65E5\u8BB0\u683C\u5F0F","Daily note path":"\u65E5\u8BB0\u8DEF\u5F84","Select the folder that contains the daily note.":"\u9009\u62E9\u5305\u542B\u65E5\u8BB0\u7684\u6587\u4EF6\u5939\u3002","Use as date type":"\u7528\u4F5C\u65E5\u671F\u7C7B\u578B","You can choose due, start, or scheduled as the date type for tasks.":"\u4F60\u53EF\u4EE5\u9009\u62E9\u622A\u6B62\u65E5\u671F\u3001\u5F00\u59CB\u65E5\u671F\u6216\u8BA1\u5212\u65E5\u671F\u4F5C\u4E3A\u4EFB\u52A1\u7684\u65E5\u671F\u7C7B\u578B\u3002",Due:"\u622A\u6B62",Start:"\u5F00\u59CB",Scheduled:"\u8BA1\u5212","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u914D\u7F6E\u5B8C\u6210\u4EFB\u52A1\u7684\u5956\u52B1\u3002\u5B9A\u4E49\u9879\u76EE\u3001\u5B83\u4EEC\u7684\u51FA\u73B0\u51E0\u7387\u548C\u6761\u4EF6\u3002","Enable Rewards":"\u542F\u7528\u5956\u52B1","Toggle to enable or disable the reward system.":"\u5207\u6362\u4EE5\u542F\u7528\u6216\u7981\u7528\u5956\u52B1\u7CFB\u7EDF\u3002","Occurrence Levels":"\u51FA\u73B0\u7B49\u7EA7","Define different levels of reward rarity and their probability.":"\u5B9A\u4E49\u4E0D\u540C\u7B49\u7EA7\u7684\u5956\u52B1\u7A00\u6709\u5EA6\u53CA\u5176\u6982\u7387\u3002","Chance must be between 0 and 100.":"\u51E0\u7387\u5FC5\u987B\u57280\u5230100\u4E4B\u95F4\u3002","Level Name (e.g., common)":"\u7B49\u7EA7\u540D\u79F0\uFF08\u4F8B\u5982\uFF0C\u666E\u901A\uFF09","Chance (%)":"\u51E0\u7387\uFF08%\uFF09","Delete Level":"\u5220\u9664\u7B49\u7EA7","Add Occurrence Level":"\u6DFB\u52A0\u51FA\u73B0\u7B49\u7EA7","New Level":"\u65B0\u7B49\u7EA7","Reward Items":"\u5956\u52B1\u9879\u76EE","Manage the specific rewards that can be obtained.":"\u7BA1\u7406\u53EF\u4EE5\u83B7\u5F97\u7684\u7279\u5B9A\u5956\u52B1\u3002","No levels defined":"\u672A\u5B9A\u4E49\u7B49\u7EA7","Reward Name/Text":"\u5956\u52B1\u540D\u79F0/\u6587\u672C","Inventory (-1 for \u221E)":"\u5E93\u5B58\uFF08-1\u8868\u793A\u65E0\u9650\uFF09","Invalid inventory number.":"\u65E0\u6548\u7684\u5E93\u5B58\u6570\u91CF\u3002","Condition (e.g., #tag AND project)":"\u6761\u4EF6\uFF08\u4F8B\u5982\uFF0C#\u6807\u7B7E AND \u9879\u76EE\uFF09","Image URL (optional)":"\u56FE\u7247URL\uFF08\u53EF\u9009\uFF09","Delete Reward Item":"\u5220\u9664\u5956\u52B1\u9879\u76EE","No reward items defined yet.":"\u5C1A\u672A\u5B9A\u4E49\u5956\u52B1\u9879\u76EE\u3002","Add Reward Item":"\u6DFB\u52A0\u5956\u52B1\u9879\u76EE","New Reward":"\u65B0\u5956\u52B1","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u914D\u7F6E\u4E60\u60EF\u8BBE\u7F6E\uFF0C\u5305\u62EC\u6DFB\u52A0\u65B0\u4E60\u60EF\u3001\u7F16\u8F91\u73B0\u6709\u4E60\u60EF\u548C\u7BA1\u7406\u4E60\u60EF\u5B8C\u6210\u60C5\u51B5\u3002","Enable habits":"\u542F\u7528\u4E60\u60EF","Task sorting is disabled or no sort criteria are defined in settings.":"\u4EFB\u52A1\u6392\u5E8F\u5DF2\u7981\u7528\u6216\u8BBE\u7F6E\u4E2D\u672A\u5B9A\u4E49\u6392\u5E8F\u6761\u4EF6\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\u5982 #\u6807\u7B7E1, #\u6807\u7B7E2, #\u6807\u7B7E3",Overdue:"\u903E\u671F","No tasks found for this tag.":"\u672A\u627E\u5230\u6B64\u6807\u7B7E\u7684\u4EFB\u52A1\u3002","New custom view":"\u65B0\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Create custom view":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Edit view: ":"\u7F16\u8F91\u89C6\u56FE\uFF1A","Icon name":"\u56FE\u6807\u540D\u79F0","First day of week":"\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Overrides the locale default for forecast views.":"\u8986\u76D6\u9884\u6D4B\u89C6\u56FE\u7684\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E\u3002","View type":"\u89C6\u56FE\u7C7B\u578B","Standard view":"\u6807\u51C6\u89C6\u56FE","Two column view":"\u53CC\u5217\u89C6\u56FE","Two column view settings":"\u53CC\u5217\u89C6\u56FE\u8BBE\u7F6E","Group by task property":"\u6309\u4EFB\u52A1\u5C5E\u6027\u5206\u7EC4","Left column title":"\u5DE6\u5217\u6807\u9898","Right column title":"\u53F3\u5217\u6807\u9898","Empty state text":"\u7A7A\u72B6\u6001\u6587\u672C","Hide completed and abandoned tasks":"\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1","Filter blanks":"\u8FC7\u6EE4\u7A7A\u767D","Text contains":"\u6587\u672C\u5305\u542B","Tags include":"\u6807\u7B7E\u5305\u542B","Tags exclude":"\u6807\u7B7E\u6392\u9664","Project is":"\u9879\u76EE\u662F","Priority is":"\u4F18\u5148\u7EA7\u662F","Status include":"\u72B6\u6001\u5305\u542B","Status exclude":"\u72B6\u6001\u6392\u9664","Due date is":"\u622A\u6B62\u65E5\u671F\u662F","Start date is":"\u5F00\u59CB\u65E5\u671F\u662F","Scheduled date is":"\u8BA1\u5212\u65E5\u671F\u662F","Path includes":"\u8DEF\u5F84\u5305\u542B","Path excludes":"\u8DEF\u5F84\u6392\u9664","Sort Criteria":"\u6392\u5E8F\u6761\u4EF6","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u5B9A\u4E49\u4EFB\u52A1\u6392\u5E8F\u7684\u987A\u5E8F\u3002\u6761\u4EF6\u6309\u987A\u5E8F\u5E94\u7528\u3002","No sort criteria defined. Add criteria below.":"\u672A\u5B9A\u4E49\u6392\u5E8F\u6761\u4EF6\u3002\u5728\u4E0B\u65B9\u6DFB\u52A0\u6761\u4EF6\u3002",Content:"\u5185\u5BB9",Ascending:"\u5347\u5E8F",Descending:"\u964D\u5E8F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u5347\u5E8F\uFF1A\u9AD8 -> \u4F4E -> \u65E0\u3002\u964D\u5E8F\uFF1A\u65E0 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u5347\u5E8F\uFF1A\u8F83\u65E9 -> \u8F83\u665A -> \u65E0\u3002\u964D\u5E8F\uFF1A\u65E0 -> \u8F83\u665A -> \u8F83\u65E9","Ascending respects status order (Overdue first). Descending reverses it.":"\u5347\u5E8F\u9075\u5FAA\u72B6\u6001\u987A\u5E8F\uFF08\u903E\u671F\u4F18\u5148\uFF09\u3002\u964D\u5E8F\u5219\u76F8\u53CD\u3002","Ascending: A-Z. Descending: Z-A":"\u5347\u5E8F\uFF1AA-Z\u3002\u964D\u5E8F\uFF1AZ-A","Remove Criterion":"\u79FB\u9664\u6761\u4EF6","Add Sort Criterion":"\u6DFB\u52A0\u6392\u5E8F\u6761\u4EF6","Reset to Defaults":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C","Has due date":"\u6709\u622A\u6B62\u65E5\u671F","Has date":"\u6709\u65E5\u671F","No date":"\u65E0\u65E5\u671F",Any:"\u4EFB\u610F","Has start date":"\u6709\u5F00\u59CB\u65E5\u671F","Has scheduled date":"\u6709\u8BA1\u5212\u65E5\u671F","Has created date":"\u6709\u521B\u5EFA\u65E5\u671F","Has completed date":"\u6709\u5B8C\u6210\u65E5\u671F","Only show tasks that match the completed date.":"\u4EC5\u663E\u793A\u5339\u914D\u5B8C\u6210\u65E5\u671F\u7684\u4EFB\u52A1\u3002","Has recurrence":"\u6709\u91CD\u590D","Has property":"\u6709\u5C5E\u6027","No property":"\u65E0\u5C5E\u6027","Unsaved Changes":"\u672A\u4FDD\u5B58\u7684\u66F4\u6539","Sort Tasks in Section":"\u5BF9\u533A\u95F4\u4E2D\u7684\u4EFB\u52A1\u6392\u5E8F","Tasks sorted (using settings). Change application needs refinement.":"\u4EFB\u52A1\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8BBE\u7F6E\uFF09\u3002\u66F4\u6539\u5E94\u7528\u9700\u8981\u5B8C\u5584\u3002","Sort Tasks in Entire Document":"\u5BF9\u6574\u4E2A\u6587\u6863\u4E2D\u7684\u4EFB\u52A1\u6392\u5E8F","Entire document sorted (using settings).":"\u6574\u4E2A\u6587\u6863\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8BBE\u7F6E\uFF09\u3002","Tasks already sorted or no tasks found.":"\u4EFB\u52A1\u5DF2\u6392\u5E8F\u6216\u672A\u627E\u5230\u4EFB\u52A1\u3002","Task Handler":"\u4EFB\u52A1\u5904\u7406\u5668","Show progress bars based on heading":"\u57FA\u4E8E\u6807\u9898\u663E\u793A\u8FDB\u5EA6\u6761","Toggle this to enable showing progress bars based on heading.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u57FA\u4E8E\u6807\u9898\u663E\u793A\u8FDB\u5EA6\u6761\u3002","# heading":"# \u6807\u9898","Task Sorting":"\u4EFB\u52A1\u6392\u5E8F","Configure how tasks are sorted in the document.":"\u914D\u7F6E\u6587\u6863\u4E2D\u4EFB\u52A1\u7684\u6392\u5E8F\u65B9\u5F0F\u3002","Enable Task Sorting":"\u542F\u7528\u4EFB\u52A1\u6392\u5E8F","Toggle this to enable commands for sorting tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u6392\u5E8F\u4EFB\u52A1\u7684\u547D\u4EE4\u3002","Use relative time for date":"\u4F7F\u7528\u76F8\u5BF9\u65F6\u95F4\u8868\u793A\u65E5\u671F","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u5728\u4EFB\u52A1\u5217\u8868\u9879\u4E2D\u4F7F\u7528\u76F8\u5BF9\u65F6\u95F4\u8868\u793A\u65E5\u671F\uFF0C\u4F8B\u5982 '\u6628\u5929'\u3001'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'2\u5929\u540E'\u3001'3\u4E2A\u6708\u524D' \u7B49\u3002","Enable inline editor":"\u542F\u7528\u5185\u8054\u7F16\u8F91\u5668","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u5728\u4EFB\u52A1\u89C6\u56FE\u4E2D\u542F\u7528\u4EFB\u52A1\u5185\u5BB9\u548C\u5143\u6570\u636E\u7684\u5185\u8054\u7F16\u8F91\u3002\u7981\u7528\u65F6\uFF0C\u4EFB\u52A1\u53EA\u80FD\u5728\u6E90\u6587\u4EF6\u4E2D\u7F16\u8F91\u3002","Ignore all tasks behind heading":"\u5FFD\u7565\u6807\u9898\u540E\u7684\u6240\u6709\u4EFB\u52A1","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u8F93\u5165\u8981\u5FFD\u7565\u7684\u6807\u9898\uFF0C\u4F8B\u5982 '## \u9879\u76EE','## \u6536\u4EF6\u7BB1'\uFF0C\u7528\u9017\u53F7\u5206\u9694","Focus all tasks behind heading":"\u805A\u7126\u6807\u9898\u540E\u7684\u6240\u6709\u4EFB\u52A1","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u8F93\u5165\u8981\u805A\u7126\u7684\u6807\u9898\uFF0C\u4F8B\u5982 '## \u9879\u76EE','## \u6536\u4EF6\u7BB1'\uFF0C\u7528\u9017\u53F7\u5206\u9694","Enable rewards":"\u542F\u7528\u5956\u52B1","Reward display type":"\u5956\u52B1\u663E\u793A\u7C7B\u578B","Choose how rewards are displayed when earned.":"\u9009\u62E9\u83B7\u5F97\u5956\u52B1\u65F6\u7684\u663E\u793A\u65B9\u5F0F\u3002","Modal dialog":"\u6A21\u6001\u5BF9\u8BDD\u6846","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52A8\u63A5\u53D7\uFF09","Occurrence levels":"\u51FA\u73B0\u7B49\u7EA7","Add occurrence level":"\u6DFB\u52A0\u51FA\u73B0\u7B49\u7EA7","Reward items":"\u5956\u52B1\u9879\u76EE","Image url (optional)":"\u56FE\u7247URL(\u53EF\u9009)","Delete reward item":"\u5220\u9664\u5956\u52B1\u9879\u76EE","Add reward item":"\u6DFB\u52A0\u5956\u52B1\u9879\u76EE","moved on":"\u79FB\u52A8\u4E8E","Priority (High to Low)":"\u4F18\u5148\u7EA7\uFF08\u9AD8\u5230\u4F4E\uFF09","Priority (Low to High)":"\u4F18\u5148\u7EA7\uFF08\u4F4E\u5230\u9AD8\uFF09","Due Date (Earliest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Due Date (Latest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Scheduled Date (Earliest First)":"\u8BA1\u5212\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Scheduled Date (Latest First)":"\u8BA1\u5212\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Start Date (Earliest First)":"\u5F00\u59CB\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Start Date (Latest First)":"\u5F00\u59CB\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Created Date":"\u521B\u5EFA\u65E5\u671F",Overview:"\u6982\u89C8",Dates:"\u65E5\u671F","e.g. #tag1, #tag2":"\u4F8B\u5982 #\u6807\u7B7E1, #\u6807\u7B7E2","e.g. @home, @work":"\u4F8B\u5982 @\u5BB6, @\u5DE5\u4F5C","Recurrence Rule":"\u91CD\u590D\u89C4\u5219","e.g. every day, every week":"\u4F8B\u5982 \u6BCF\u5929, \u6BCF\u5468","Edit Task":"\u7F16\u8F91\u4EFB\u52A1",Load:"\u52A0\u8F7D","filter group":"\u8FC7\u6EE4\u5668\u7EC4",filter:"\u8FC7\u6EE4\u5668",Match:"\u5339\u914D",All:"\u5168\u90E8","Add filter group":"\u6DFB\u52A0\u8FC7\u6EE4\u5668\u7EC4","filter in this group":"\u6B64\u7EC4\u4E2D\u7684\u8FC7\u6EE4\u5668","Duplicate filter group":"\u590D\u5236\u8FC7\u6EE4\u5668\u7EC4","Remove filter group":"\u79FB\u9664\u8FC7\u6EE4\u5668\u7EC4",OR:"\u6216","AND NOT":"\u4E14\u975E",AND:"\u4E14","Remove filter":"\u79FB\u9664\u8FC7\u6EE4\u5668",contains:"\u5305\u542B","does not contain":"\u4E0D\u5305\u542B",is:"\u662F","is not":"\u4E0D\u662F","starts with":"\u5F00\u59CB\u4E8E","ends with":"\u7ED3\u675F\u4E8E","is empty":"\u4E3A\u7A7A","is not empty":"\u4E0D\u4E3A\u7A7A","is true":"\u4E3A\u771F","is false":"\u4E3A\u5047","is set":"\u5DF2\u8BBE\u7F6E","is not set":"\u672A\u8BBE\u7F6E",equals:"\u7B49\u4E8E",NOR:"\u90FD\u4E0D","Group by":"\u5206\u7EC4\u4F9D\u636E","Select which task property to use for creating columns":"\u9009\u62E9\u7528\u4E8E\u521B\u5EFA\u5217\u7684\u4EFB\u52A1\u5C5E\u6027","Hide empty columns":"\u9690\u85CF\u7A7A\u5217","Hide columns that have no tasks.":"\u9690\u85CF\u6CA1\u6709\u4EFB\u52A1\u7684\u5217\u3002","Default sort field":"\u9ED8\u8BA4\u6392\u5E8F\u5B57\u6BB5","Default field to sort tasks by within each column.":"\u6BCF\u5217\u5185\u4EFB\u52A1\u6392\u5E8F\u7684\u9ED8\u8BA4\u5B57\u6BB5\u3002","Default sort order":"\u9ED8\u8BA4\u6392\u5E8F\u987A\u5E8F","Default order to sort tasks within each column.":"\u6BCF\u5217\u5185\u4EFB\u52A1\u6392\u5E8F\u7684\u9ED8\u8BA4\u987A\u5E8F\u3002","Custom Columns":"\u81EA\u5B9A\u4E49\u5217","Configure custom columns for the selected grouping property":"\u4E3A\u9009\u5B9A\u7684\u5206\u7EC4\u5C5E\u6027\u914D\u7F6E\u81EA\u5B9A\u4E49\u5217","No custom columns defined. Add columns below.":"\u672A\u5B9A\u4E49\u81EA\u5B9A\u4E49\u5217\u3002\u8BF7\u5728\u4E0B\u65B9\u6DFB\u52A0\u5217\u3002","Column Title":"\u5217\u6807\u9898",Value:"\u503C","Remove Column":"\u79FB\u9664\u5217","Add Column":"\u6DFB\u52A0\u5217","New Column":"\u65B0\u5217","Reset Columns":"\u91CD\u7F6E\u5217","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u4EFB\u52A1\u5FC5\u987B\u5177\u6709\u6B64\u4F18\u5148\u7EA7\uFF08\u4F8B\u5982 1\u30012\u30013\uFF09\u3002\u60A8\u4E5F\u53EF\u4EE5\u4F7F\u7528 'none' \u6765\u8FC7\u6EE4\u6389\u6CA1\u6709\u4F18\u5148\u7EA7\u7684\u4EFB\u52A1\u3002","Move all incomplete subtasks to another file":"\u5C06\u6240\u6709\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move direct incomplete subtasks to another file":"\u5C06\u76F4\u63A5\u7684\u672A\u5B8C\u6210\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6",Filter:"\u8FC7\u6EE4\u5668","Reset Filter":"\u91CD\u7F6E\u8FC7\u6EE4\u5668","Saved Filters":"\u5DF2\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668","Manage Saved Filters":"\u7BA1\u7406\u5DF2\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668","Filter applied: ":"\u5DF2\u5E94\u7528\u8FC7\u6EE4\u5668\uFF1A","Recurrence date calculation":"\u91CD\u590D\u65E5\u671F\u8BA1\u7B97","Choose how to calculate the next date for recurring tasks":"\u9009\u62E9\u5982\u4F55\u8BA1\u7B97\u91CD\u590D\u4EFB\u52A1\u7684\u4E0B\u4E00\u4E2A\u65E5\u671F","Based on due date":"\u57FA\u4E8E\u622A\u6B62\u65E5\u671F","Based on scheduled date":"\u57FA\u4E8E\u8BA1\u5212\u65E5\u671F","Based on current date":"\u57FA\u4E8E\u5F53\u524D\u65E5\u671F","Task Gutter":"\u4EFB\u52A1\u8FB9\u680F","Configure the task gutter.":"\u914D\u7F6E\u4EFB\u52A1\u8FB9\u680F\u3002","Enable task gutter":"\u542F\u7528\u4EFB\u52A1\u8FB9\u680F","Toggle this to enable the task gutter.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u8FB9\u680F\u3002","Incomplete Task Mover":"\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5668","Enable incomplete task mover":"\u542F\u7528\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5668","Toggle this to enable commands for moving incomplete tasks to another file.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u5C06\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Incomplete task marker type":"\u672A\u5B8C\u6210\u4EFB\u52A1\u6807\u8BB0\u7C7B\u578B","Choose what type of marker to add to moved incomplete tasks":"\u9009\u62E9\u4E3A\u79FB\u52A8\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u6DFB\u52A0\u4EC0\u4E48\u7C7B\u578B\u7684\u6807\u8BB0","Incomplete version marker text":"\u672A\u5B8C\u6210\u7248\u672C\u6807\u8BB0\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u65F6\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u6210\u65E5\u671F\u6807\u8BB0\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u65F6\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u6210\u81EA\u5B9A\u4E49\u6807\u8BB0\u6587\u672C","With current file link for incomplete tasks":"\u4E3A\u672A\u5B8C\u6210\u4EFB\u52A1\u6DFB\u52A0\u5F53\u524D\u6587\u4EF6\u94FE\u63A5","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u5C06\u4E3A\u79FB\u52A8\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u6DFB\u52A0\u6307\u5411\u5F53\u524D\u6587\u4EF6\u7684\u94FE\u63A5\u3002","Line Number":"\u884C\u53F7","Clear Date":"\u6E05\u9664\u65E5\u671F","Copy view":"\u590D\u5236\u89C6\u56FE","View copied successfully: ":"\u89C6\u56FE\u590D\u5236\u6210\u529F\uFF1A","Copy of ":"\u526F\u672C ","Copy view: ":"\u590D\u5236\u89C6\u56FE\uFF1A","Creating a copy based on: ":"\u57FA\u4E8E\u4EE5\u4E0B\u5185\u5BB9\u521B\u5EFA\u526F\u672C\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u60A8\u53EF\u4EE5\u4FEE\u6539\u4E0B\u9762\u7684\u6240\u6709\u8BBE\u7F6E\u3002\u539F\u59CB\u89C6\u56FE\u5C06\u4FDD\u6301\u4E0D\u53D8\u3002","Tasks Plugin Detected":"\u68C0\u6D4B\u5230 Tasks \u63D2\u4EF6","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u5F53\u524D\u7684\u72B6\u6001\u7BA1\u7406\u548C\u65E5\u671F\u7BA1\u7406\u53EF\u80FD\u4E0E Tasks \u63D2\u4EF6\u51B2\u7A81\u3002\u8BF7\u67E5\u770B","compatibility documentation":"\u517C\u5BB9\u6027\u6587\u6863"," for more information.":"\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002","Auto Date Manager":"\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u5668","Automatically manage dates based on task status changes":"\u6839\u636E\u4EFB\u52A1\u72B6\u6001\u53D8\u5316\u81EA\u52A8\u7BA1\u7406\u65E5\u671F","Enable auto date manager":"\u542F\u7528\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u5668","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5728\u4EFB\u52A1\u72B6\u6001\u66F4\u6539\u65F6\u542F\u7528\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u3002\u65E5\u671F\u5C06\u6839\u636E\u60A8\u9996\u9009\u7684\u5143\u6570\u636E\u683C\u5F0F\uFF08Tasks \u8868\u60C5\u7B26\u53F7\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u5220\u9664\u3002","Manage completion dates":"\u7BA1\u7406\u5B8C\u6210\u65E5\u671F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u65F6\u81EA\u52A8\u6DFB\u52A0\u5B8C\u6210\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Manage start dates":"\u7BA1\u7406\u5F00\u59CB\u65E5\u671F","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u8FDB\u884C\u4E2D\u65F6\u81EA\u52A8\u6DFB\u52A0\u5F00\u59CB\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Manage cancelled dates":"\u7BA1\u7406\u53D6\u6D88\u65E5\u671F","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u5DF2\u653E\u5F03\u65F6\u81EA\u52A8\u6DFB\u52A0\u53D6\u6D88\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Copy View":"\u590D\u5236\u89C6\u56FE",Beta:"\u6D4B\u8BD5\u7248","Beta Test Features":"\u6D4B\u8BD5\u7248\u529F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u5F53\u524D\u5904\u4E8E\u6D4B\u8BD5\u9636\u6BB5\u7684\u5B9E\u9A8C\u6027\u529F\u80FD\u3002\u8FD9\u4E9B\u529F\u80FD\u53EF\u80FD\u4E0D\u7A33\u5B9A\uFF0C\u5728\u672A\u6765\u7684\u66F4\u65B0\u4E2D\u53EF\u80FD\u4F1A\u53D1\u751F\u53D8\u5316\u6216\u88AB\u79FB\u9664\u3002","Beta Features Warning":"\u6D4B\u8BD5\u7248\u529F\u80FD\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u8FD9\u4E9B\u529F\u80FD\u662F\u5B9E\u9A8C\u6027\u7684\uFF0C\u53EF\u80FD\u4E0D\u7A33\u5B9A\u3002\u7531\u4E8E Obsidian API \u53D8\u5316\u6216\u5176\u4ED6\u56E0\u7D20\uFF0C\u5B83\u4EEC\u53EF\u80FD\u5728\u672A\u6765\u7684\u66F4\u65B0\u4E2D\u53D1\u751F\u91CD\u5927\u53D8\u5316\u6216\u88AB\u79FB\u9664\u3002\u8BF7\u8C28\u614E\u4F7F\u7528\u5E76\u63D0\u4F9B\u53CD\u9988\u4EE5\u5E2E\u52A9\u6539\u8FDB\u8FD9\u4E9B\u529F\u80FD\u3002","Base View":"\u57FA\u7840\u89C6\u56FE","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u6269\u5C55\u9ED8\u8BA4 Task Genius \u89C6\u56FE\u7684\u9AD8\u7EA7\u89C6\u56FE\u7BA1\u7406\u529F\u80FD\uFF0C\u63D0\u4F9B\u989D\u5916\u7684\u529F\u80FD\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u542F\u7528\u5B9E\u9A8C\u6027\u57FA\u7840\u89C6\u56FE\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F3A\u7684\u89C6\u56FE\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u4F1A\u53D7\u5230\u672A\u6765 Obsidian API \u53D8\u5316\u7684\u5F71\u54CD\u3002\u60A8\u53EF\u80FD\u9700\u8981\u91CD\u542F Obsidian \u624D\u80FD\u770B\u5230\u53D8\u5316\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u5982\u679C\u60A8\u5DF2\u7ECF\u5728\u57FA\u7840\u89C6\u56FE\u4E2D\u521B\u5EFA\u4E86\u4EFB\u52A1\u89C6\u56FE\uFF0C\u5F53\u7981\u7528\u6B64\u529F\u80FD\u65F6\uFF0C\u60A8\u9700\u8981\u5173\u95ED\u6240\u6709\u57FA\u7840\u89C6\u56FE\u5E76\u901A\u8FC7\u624B\u52A8\u7F16\u8F91\u5220\u9664\u672A\u4F7F\u7528\u7684\u89C6\u56FE\u3002","Enable Base View":"\u542F\u7528\u57FA\u7840\u89C6\u56FE","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u542F\u7528\u5B9E\u9A8C\u6027\u57FA\u7840\u89C6\u56FE\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F3A\u7684\u89C6\u56FE\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u4F1A\u53D7\u5230\u672A\u6765 Obsidian API \u53D8\u5316\u7684\u5F71\u54CD\u3002",Enable:"\u542F\u7528","Beta Feedback":"\u6D4B\u8BD5\u7248\u53CD\u9988","Help improve these features by providing feedback on your experience.":"\u901A\u8FC7\u63D0\u4F9B\u60A8\u7684\u4F7F\u7528\u4F53\u9A8C\u53CD\u9988\u6765\u5E2E\u52A9\u6539\u8FDB\u8FD9\u4E9B\u529F\u80FD\u3002","Report Issues":"\u62A5\u544A\u95EE\u9898","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u5982\u679C\u60A8\u5728\u4F7F\u7528\u6D4B\u8BD5\u7248\u529F\u80FD\u65F6\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u8BF7\u62A5\u544A\u5B83\u4EEC\u4EE5\u5E2E\u52A9\u6539\u8FDB\u63D2\u4EF6\u3002","Report Issue":"\u62A5\u544A\u95EE\u9898",Table:"\u8868\u683C","No Priority":"\u65E0\u4F18\u5148\u7EA7","Click to select date":"\u70B9\u51FB\u9009\u62E9\u65E5\u671F","Enter tags separated by commas":"\u8F93\u5165\u6807\u7B7E\uFF0C\u7528\u9017\u53F7\u5206\u9694","Enter project name":"\u8F93\u5165\u9879\u76EE\u540D\u79F0","Enter context":"\u8F93\u5165\u4E0A\u4E0B\u6587","Invalid value":"\u65E0\u6548\u503C","No tasks":"\u65E0\u4EFB\u52A1","1 task":"1 \u4EFB\u52A1",Columns:"\u5217","Toggle column visibility":"\u5207\u6362\u5217\u53EF\u89C1\u6027","Switch to List Mode":"\u5207\u6362\u5230\u5217\u8868\u6A21\u5F0F","Switch to Tree Mode":"\u5207\u6362\u5230\u6811\u5F62\u6A21\u5F0F",Collapse:"\u6298\u53E0",Expand:"\u5C55\u5F00","Collapse subtasks":"\u6298\u53E0\u5B50\u4EFB\u52A1","Expand subtasks":"\u5C55\u5F00\u5B50\u4EFB\u52A1","Click to change status":"\u70B9\u51FB\u66F4\u6539\u72B6\u6001","Click to set priority":"\u70B9\u51FB\u8BBE\u7F6E\u4F18\u5148\u7EA7",Yesterday:"\u6628\u5929","Click to edit date":"\u70B9\u51FB\u7F16\u8F91\u65E5\u671F","No tags":"\u65E0\u6807\u7B7E","Click to open file":"\u70B9\u51FB\u6253\u5F00\u6587\u4EF6","No tasks found":"\u672A\u627E\u5230\u4EFB\u52A1","Completed Date":"\u5B8C\u6210\u65E5\u671F","Loading...":"\u52A0\u8F7D\u4E2D...","Advanced Filtering":"\u9AD8\u7EA7\u8FC7\u6EE4\u5668","Use advanced multi-group filtering with complex conditions":"\u4F7F\u7528\u9AD8\u7EA7\u591A\u7EC4\u8FC7\u6EE4\u5668\uFF0C\u652F\u6301\u590D\u6742\u6761\u4EF6","Auto-assigned from path":"\u4ECE\u8DEF\u5F84\u81EA\u52A8\u5206\u914D","Auto-assigned from file metadata":"\u4ECE\u6587\u4EF6\u5143\u6570\u636E\u81EA\u52A8\u5206\u914D","Auto-assigned from config file":"\u4ECE\u914D\u7F6E\u6587\u4EF6\u81EA\u52A8\u5206\u914D","Auto-assigned":"\u81EA\u52A8\u5206\u914D","Auto from path":"\u8DEF\u5F84\u81EA\u52A8","Auto from metadata":"\u5143\u6570\u636E\u81EA\u52A8","Auto from config":"\u914D\u7F6E\u81EA\u52A8","This project is automatically assigned and cannot be changed":"\u6B64\u9879\u76EE\u662F\u81EA\u52A8\u5206\u914D\u7684\uFF0C\u65E0\u6CD5\u66F4\u6539","You can override the auto-assigned project by entering a different value":"\u60A8\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165\u4E0D\u540C\u7684\u503C\u6765\u8986\u76D6\u81EA\u52A8\u5206\u914D\u7684\u9879\u76EE","You can override the auto-assigned project":"\u60A8\u53EF\u4EE5\u8986\u76D6\u81EA\u52A8\u5206\u914D\u7684\u9879\u76EE","Add new task":"\u6DFB\u52A0\u65B0\u4EFB\u52A1","Add new sub-task":"\u6DFB\u52A0\u65B0\u5B50\u4EFB\u52A1","Start workflow":"\u5F00\u59CB\u5DE5\u4F5C\u6D41","Complete substage and move to":"\u5B8C\u6210\u5B50\u9636\u6BB5\u5E76\u79FB\u52A8\u5230",Continue:"\u7EE7\u7EED",Timeline:"\u65F6\u95F4\u8F74","Timeline Sidebar":"\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Open Timeline Sidebar":"\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Enable Timeline Sidebar":"\u542F\u7528\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u89C6\u56FE\uFF0C\u5FEB\u901F\u8BBF\u95EE\u60A8\u7684\u65E5\u5E38\u4E8B\u4EF6\u548C\u4EFB\u52A1\u3002","Auto-open on startup":"\u542F\u52A8\u65F6\u81EA\u52A8\u6253\u5F00","Automatically open the timeline sidebar when Obsidian starts.":"\u5728 Obsidian \u542F\u52A8\u65F6\u81EA\u52A8\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u3002","Show completed tasks":"\u663E\u793A\u5DF2\u5B8C\u6210\u4EFB\u52A1","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u5728\u65F6\u95F4\u8F74\u89C6\u56FE\u4E2D\u5305\u542B\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u663E\u793A\u672A\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Focus mode by default":"\u9ED8\u8BA4\u805A\u7126\u6A21\u5F0F","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u9ED8\u8BA4\u542F\u7528\u805A\u7126\u6A21\u5F0F\uFF0C\u7A81\u51FA\u663E\u793A\u4ECA\u5929\u7684\u4E8B\u4EF6\u5E76\u6DE1\u5316\u8FC7\u53BB/\u672A\u6765\u7684\u4E8B\u4EF6\u3002","Maximum events to show":"\u6700\u5927\u663E\u793A\u4E8B\u4EF6\u6570","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u65F6\u95F4\u8F74\u4E2D\u663E\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6570\u3002\u6570\u5B57\u8D8A\u9AD8\u53EF\u80FD\u4F1A\u5F71\u54CD\u6027\u80FD\u3002","Open Timeline":"\u6253\u5F00\u65F6\u95F4\u8F74","Click to open the timeline sidebar view.":"\u70B9\u51FB\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u89C6\u56FE\u3002","Timeline sidebar opened":"\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u5DF2\u6253\u5F00","Go to today":"\u8F6C\u5230\u4ECA\u5929","Focus on today":"\u805A\u7126\u4ECA\u5929","No events to display":"\u6CA1\u6709\u4E8B\u4EF6\u53EF\u663E\u793A","Go to task":"\u8F6C\u5230\u4EFB\u52A1","What's on your mind?":"\u4F60\u5728\u60F3\u4EC0\u4E48\uFF1F",to:"\u5230","Auto-moved":"\u81EA\u52A8\u79FB\u52A8","tasks to":"\u4E2A\u4EFB\u52A1\u5230","Failed to auto-move tasks:":"\u81EA\u52A8\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","Workflow created successfully":"\u5DE5\u4F5C\u6D41\u521B\u5EFA\u6210\u529F","No task structure found at cursor position":"\u5728\u5149\u6807\u4F4D\u7F6E\u672A\u627E\u5230\u4EFB\u52A1\u7ED3\u6784","Use similar existing workflow":"\u4F7F\u7528\u7C7B\u4F3C\u7684\u73B0\u6709\u5DE5\u4F5C\u6D41","Create new workflow":"\u521B\u5EFA\u65B0\u5DE5\u4F5C\u6D41","No workflows defined. Create a workflow first.":"\u672A\u5B9A\u4E49\u5DE5\u4F5C\u6D41\u3002\u8BF7\u5148\u521B\u5EFA\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u3002","Workflow task created":"\u5DE5\u4F5C\u6D41\u4EFB\u52A1\u5DF2\u521B\u5EFA","Task converted to workflow root":"\u4EFB\u52A1\u5DF2\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Failed to convert task":"\u8F6C\u6362\u4EFB\u52A1\u5931\u8D25","No workflows to duplicate":"\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5DE5\u4F5C\u6D41",Duplicate:"\u590D\u5236","Workflow duplicated and saved":"\u5DE5\u4F5C\u6D41\u5DF2\u590D\u5236\u5E76\u4FDD\u5B58","Workflow created from task structure":"\u4ECE\u4EFB\u52A1\u7ED3\u6784\u521B\u5EFA\u4E86\u5DE5\u4F5C\u6D41","Create Quick Workflow":"\u521B\u5EFA\u5FEB\u901F\u5DE5\u4F5C\u6D41","Convert Task to Workflow":"\u5C06\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41","Convert to Workflow Root":"\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Start Workflow Here":"\u5728\u6B64\u5F00\u59CB\u5DE5\u4F5C\u6D41","Duplicate Workflow":"\u590D\u5236\u5DE5\u4F5C\u6D41","Simple Linear Workflow":"\u7B80\u5355\u7EBF\u6027\u5DE5\u4F5C\u6D41","A basic linear workflow with sequential stages":"\u5177\u6709\u987A\u5E8F\u9636\u6BB5\u7684\u57FA\u672C\u7EBF\u6027\u5DE5\u4F5C\u6D41","To Do":"\u5F85\u529E",Done:"\u5B8C\u6210","Project Management":"\u9879\u76EE\u7BA1\u7406",Coding:"\u7F16\u7A0B","Research Process":"\u7814\u7A76\u6D41\u7A0B","Academic or professional research workflow":"\u5B66\u672F\u6216\u4E13\u4E1A\u7814\u7A76\u5DE5\u4F5C\u6D41","Literature Review":"\u6587\u732E\u7EFC\u8FF0","Data Collection":"\u6570\u636E\u6536\u96C6",Analysis:"\u5206\u6790",Writing:"\u5199\u4F5C",Published:"\u5DF2\u53D1\u5E03","Custom Workflow":"\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Create a custom workflow from scratch":"\u4ECE\u5934\u521B\u5EFA\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Quick Workflow Creation":"\u5FEB\u901F\u5DE5\u4F5C\u6D41\u521B\u5EFA","Workflow Template":"\u5DE5\u4F5C\u6D41\u6A21\u677F","Choose a template to start with or create a custom workflow":"\u9009\u62E9\u4E00\u4E2A\u6A21\u677F\u5F00\u59CB\u6216\u521B\u5EFA\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Workflow Name":"\u5DE5\u4F5C\u6D41\u540D\u79F0","A descriptive name for your workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Enter workflow name":"\u8F93\u5165\u5DE5\u4F5C\u6D41\u540D\u79F0","Unique identifier (auto-generated from name)":"\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u4ECE\u540D\u79F0\u81EA\u52A8\u751F\u6210\uFF09","Optional description of the workflow purpose":"\u5DE5\u4F5C\u6D41\u76EE\u7684\u7684\u53EF\u9009\u63CF\u8FF0","Describe your workflow...":"\u63CF\u8FF0\u60A8\u7684\u5DE5\u4F5C\u6D41...","Preview of workflow stages (edit after creation for advanced options)":"\u5DE5\u4F5C\u6D41\u9636\u6BB5\u9884\u89C8\uFF08\u521B\u5EFA\u540E\u7F16\u8F91\u4EE5\u83B7\u5F97\u9AD8\u7EA7\u9009\u9879\uFF09","Add Stage":"\u6DFB\u52A0\u9636\u6BB5","No stages defined. Choose a template or add stages manually.":"\u672A\u5B9A\u4E49\u9636\u6BB5\u3002\u9009\u62E9\u6A21\u677F\u6216\u624B\u52A8\u6DFB\u52A0\u9636\u6BB5\u3002","Remove stage":"\u79FB\u9664\u9636\u6BB5","Create Workflow":"\u521B\u5EFA\u5DE5\u4F5C\u6D41","Please provide a workflow name and ID":"\u8BF7\u63D0\u4F9B\u5DE5\u4F5C\u6D41\u540D\u79F0\u548CID","Please add at least one stage to the workflow":"\u8BF7\u81F3\u5C11\u4E3A\u5DE5\u4F5C\u6D41\u6DFB\u52A0\u4E00\u4E2A\u9636\u6BB5",Discord:"Discord","Chat with us":"\u4E0E\u6211\u4EEC\u804A\u5929","Open Discord":"\u6253\u5F00 Discord","Task Genius icons are designed by":"Task Genius \u56FE\u6807\u7531\u4EE5\u4E0B\u8BBE\u8BA1\u5E08\u8BBE\u8BA1","Task Genius Icons":"Task Genius \u56FE\u6807","ICS Calendar Integration":"ICS \u65E5\u5386\u96C6\u6210","Configure external calendar sources to display events in your task views.":"\u914D\u7F6E\u5916\u90E8\u65E5\u5386\u6E90\u4EE5\u5728\u4EFB\u52A1\u89C6\u56FE\u4E2D\u663E\u793A\u4E8B\u4EF6\u3002","Add New Calendar Source":"\u6DFB\u52A0\u65B0\u65E5\u5386\u6E90","Global Settings":"\u5168\u5C40\u8BBE\u7F6E","Enable Background Refresh":"\u542F\u7528\u540E\u53F0\u5237\u65B0","Automatically refresh calendar sources in the background":"\u5728\u540E\u53F0\u81EA\u52A8\u5237\u65B0\u65E5\u5386\u6E90","Global Refresh Interval":"\u5168\u5C40\u5237\u65B0\u95F4\u9694","Default refresh interval for all sources (minutes)":"\u6240\u6709\u6E90\u7684\u9ED8\u8BA4\u5237\u65B0\u95F4\u9694\uFF08\u5206\u949F\uFF09","Maximum Cache Age":"\u6700\u5927\u7F13\u5B58\u65F6\u95F4","How long to keep cached data (hours)":"\u4FDD\u5B58\u7F13\u5B58\u6570\u636E\u7684\u65F6\u95F4\uFF08\u5C0F\u65F6\uFF09","Network Timeout":"\u7F51\u7EDC\u8D85\u65F6","Request timeout in seconds":"\u8BF7\u6C42\u8D85\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09","Max Events Per Source":"\u6BCF\u4E2A\u6E90\u7684\u6700\u5927\u4E8B\u4EF6\u6570","Maximum number of events to load from each source":"\u4ECE\u6BCF\u4E2A\u6E90\u52A0\u8F7D\u7684\u6700\u5927\u4E8B\u4EF6\u6570","Default Event Color":"\u9ED8\u8BA4\u4E8B\u4EF6\u989C\u8272","Default color for events without a specific color":"\u6CA1\u6709\u7279\u5B9A\u989C\u8272\u7684\u4E8B\u4EF6\u7684\u9ED8\u8BA4\u989C\u8272","Calendar Sources":"\u65E5\u5386\u6E90","No calendar sources configured. Add a source to get started.":"\u672A\u914D\u7F6E\u65E5\u5386\u6E90\u3002\u6DFB\u52A0\u4E00\u4E2A\u6E90\u5F00\u59CB\u4F7F\u7528\u3002","ICS Enabled":"ICS \u5DF2\u542F\u7528","ICS Disabled":"ICS \u5DF2\u7981\u7528",URL:"\u7F51\u5740",Refresh:"\u5237\u65B0",min:"\u5206\u949F",Color:"\u989C\u8272","Edit this calendar source":"\u7F16\u8F91\u6B64\u65E5\u5386\u6E90",Sync:"\u540C\u6B65","Sync this calendar source now":"\u7ACB\u5373\u540C\u6B65\u6B64\u65E5\u5386\u6E90","Syncing...":"\u6B63\u5728\u540C\u6B65...","Sync completed successfully":"\u540C\u6B65\u6210\u529F\u5B8C\u6210","Sync failed: ":"\u540C\u6B65\u5931\u8D25\uFF1A",Disable:"\u7981\u7528","Disable this source":"\u7981\u7528\u6B64\u6E90","Enable this source":"\u542F\u7528\u6B64\u6E90","Delete this calendar source":"\u5220\u9664\u6B64\u65E5\u5386\u6E90","Are you sure you want to delete this calendar source?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u65E5\u5386\u6E90\u5417\uFF1F","Edit ICS Source":"\u7F16\u8F91 ICS \u6E90","Add ICS Source":"\u6DFB\u52A0 ICS \u6E90","ICS Source Name":"ICS \u6E90\u540D\u79F0","Display name for this calendar source":"\u6B64\u65E5\u5386\u6E90\u7684\u663E\u793A\u540D\u79F0","My Calendar":"\u6211\u7684\u65E5\u5386","ICS URL":"ICS \u7F51\u5740","URL to the ICS/iCal file":"ICS/iCal \u6587\u4EF6\u7684\u7F51\u5740","Whether this source is active":"\u6B64\u6E90\u662F\u5426\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001","Refresh Interval":"\u5237\u65B0\u95F4\u9694","How often to refresh this source (minutes)":"\u5237\u65B0\u6B64\u6E90\u7684\u9891\u7387\uFF08\u5206\u949F\uFF09","Color for events from this source (optional)":"\u6765\u81EA\u6B64\u6E90\u7684\u4E8B\u4EF6\u989C\u8272\uFF08\u53EF\u9009\uFF09","Show Type":"\u663E\u793A\u7C7B\u578B","How to display events from this source in calendar views":"\u5982\u4F55\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u663E\u793A\u6765\u81EA\u6B64\u6E90\u7684\u4E8B\u4EF6",Event:"\u4E8B\u4EF6",Badge:"\u5FBD\u7AE0","Show All-Day Events":"\u663E\u793A\u5168\u5929\u4E8B\u4EF6","Include all-day events from this source":"\u5305\u542B\u6765\u81EA\u6B64\u6E90\u7684\u5168\u5929\u4E8B\u4EF6","Show Timed Events":"\u663E\u793A\u5B9A\u65F6\u4E8B\u4EF6","Include timed events from this source":"\u5305\u542B\u6765\u81EA\u6B64\u6E90\u7684\u5B9A\u65F6\u4E8B\u4EF6","Authentication (Optional)":"\u8EAB\u4EFD\u9A8C\u8BC1\uFF08\u53EF\u9009\uFF09","Authentication Type":"\u8EAB\u4EFD\u9A8C\u8BC1\u7C7B\u578B","Type of authentication required":"\u6240\u9700\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u7C7B\u578B","ICS Auth None":"\u65E0 ICS \u8EAB\u4EFD\u9A8C\u8BC1","Basic Auth":"\u57FA\u672C\u8EAB\u4EFD\u9A8C\u8BC1","Bearer Token":"Bearer \u4EE4\u724C","Custom Headers":"\u81EA\u5B9A\u4E49\u6807\u5934","Text Replacements":"\u6587\u672C\u66FF\u6362","Configure rules to modify event text using regular expressions":"\u914D\u7F6E\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u4FEE\u6539\u4E8B\u4EF6\u6587\u672C\u7684\u89C4\u5219","No text replacement rules configured":"\u672A\u914D\u7F6E\u6587\u672C\u66FF\u6362\u89C4\u5219",Enabled:"\u5DF2\u542F\u7528",Disabled:"\u5DF2\u7981\u7528",Target:"\u76EE\u6807",Pattern:"\u6A21\u5F0F",Replacement:"\u66FF\u6362","Are you sure you want to delete this text replacement rule?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u6587\u672C\u66FF\u6362\u89C4\u5219\u5417\uFF1F","Add Text Replacement Rule":"\u6DFB\u52A0\u6587\u672C\u66FF\u6362\u89C4\u5219","ICS Username":"ICS \u7528\u6237\u540D","ICS Password":"ICS \u5BC6\u7801","ICS Bearer Token":"ICS Bearer \u4EE4\u724C","JSON object with custom headers":"\u5E26\u6709\u81EA\u5B9A\u4E49\u6807\u5934\u7684 JSON \u5BF9\u8C61","Holiday Configuration":"\u8282\u5047\u65E5\u914D\u7F6E","Configure how holiday events are detected and displayed":"\u914D\u7F6E\u5982\u4F55\u68C0\u6D4B\u548C\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Enable Holiday Detection":"\u542F\u7528\u8282\u5047\u65E5\u68C0\u6D4B","Automatically detect and group holiday events":"\u81EA\u52A8\u68C0\u6D4B\u548C\u5206\u7EC4\u8282\u5047\u65E5\u4E8B\u4EF6","Status Mapping":"\u72B6\u6001\u6620\u5C04","Configure how ICS events are mapped to task statuses":"\u914D\u7F6E\u5982\u4F55\u5C06 ICS \u4E8B\u4EF6\u6620\u5C04\u5230\u4EFB\u52A1\u72B6\u6001","Enable Status Mapping":"\u542F\u7528\u72B6\u6001\u6620\u5C04","Automatically map ICS events to specific task statuses":"\u81EA\u52A8\u5C06 ICS \u4E8B\u4EF6\u6620\u5C04\u5230\u7279\u5B9A\u4EFB\u52A1\u72B6\u6001","Grouping Strategy":"\u5206\u7EC4\u7B56\u7565","How to handle consecutive holiday events":"\u5982\u4F55\u5904\u7406\u8FDE\u7EED\u7684\u8282\u5047\u65E5\u4E8B\u4EF6","Show All Events":"\u663E\u793A\u6240\u6709\u4E8B\u4EF6","Show First Day Only":"\u4EC5\u663E\u793A\u7B2C\u4E00\u5929","Show Summary":"\u663E\u793A\u6458\u8981","Show First and Last":"\u663E\u793A\u9996\u672B\u65E5","Maximum Gap Days":"\u6700\u5927\u95F4\u9694\u5929\u6570","Maximum days between events to consider them consecutive":"\u8BA4\u4E3A\u4E8B\u4EF6\u8FDE\u7EED\u7684\u6700\u5927\u95F4\u9694\u5929\u6570","Show in Forecast":"\u5728\u9884\u6D4B\u4E2D\u663E\u793A","Whether to show holiday events in forecast view":"\u662F\u5426\u5728\u9884\u6D4B\u89C6\u56FE\u4E2D\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Show in Calendar":"\u5728\u65E5\u5386\u4E2D\u663E\u793A","Whether to show holiday events in calendar view":"\u662F\u5426\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Detection Patterns":"\u68C0\u6D4B\u6A21\u5F0F","Summary Patterns":"\u6458\u8981\u6A21\u5F0F","Regex patterns to match in event titles (one per line)":"\u5728\u4E8B\u4EF6\u6807\u9898\u4E2D\u5339\u914D\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09",Keywords:"\u5173\u952E\u8BCD","Keywords to detect in event text (one per line)":"\u5728\u4E8B\u4EF6\u6587\u672C\u4E2D\u68C0\u6D4B\u7684\u5173\u952E\u8BCD\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09",Categories:"\u7C7B\u522B","Event categories that indicate holidays (one per line)":"\u8868\u793A\u8282\u5047\u65E5\u7684\u4E8B\u4EF6\u7C7B\u522B\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09","Group Display Format":"\u5206\u7EC4\u663E\u793A\u683C\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u5206\u7EC4\u8282\u5047\u65E5\u663E\u793A\u683C\u5F0F\u3002\u4F7F\u7528 {title}\u3001{count}\u3001{startDate}\u3001{endDate}","Override ICS Status":"\u8986\u76D6 ICS \u72B6\u6001","Override original ICS event status with mapped status":"\u7528\u6620\u5C04\u72B6\u6001\u8986\u76D6\u539F\u59CB ICS \u4E8B\u4EF6\u72B6\u6001","Timing Rules":"\u65F6\u95F4\u89C4\u5219","Past Events Status":"\u8FC7\u53BB\u4E8B\u4EF6\u72B6\u6001","Status for events that have already ended":"\u5DF2\u7ED3\u675F\u4E8B\u4EF6\u7684\u72B6\u6001","Status Incomplete":"\u72B6\u6001\u672A\u5B8C\u6210","Status Complete":"\u72B6\u6001\u5DF2\u5B8C\u6210","Status Cancelled":"\u72B6\u6001\u5DF2\u53D6\u6D88","Status In Progress":"\u72B6\u6001\u8FDB\u884C\u4E2D","Status Question":"\u72B6\u6001\u7591\u95EE","Current Events Status":"\u5F53\u524D\u4E8B\u4EF6\u72B6\u6001","Status for events happening today":"\u4ECA\u5929\u53D1\u751F\u7684\u4E8B\u4EF6\u72B6\u6001","Future Events Status":"\u672A\u6765\u4E8B\u4EF6\u72B6\u6001","Status for events in the future":"\u672A\u6765\u4E8B\u4EF6\u7684\u72B6\u6001","Property Rules":"\u5C5E\u6027\u89C4\u5219","Optional rules based on event properties (higher priority than timing rules)":"\u57FA\u4E8E\u4E8B\u4EF6\u5C5E\u6027\u7684\u53EF\u9009\u89C4\u5219\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E\u65F6\u95F4\u89C4\u5219\uFF09","Holiday Status":"\u8282\u5047\u65E5\u72B6\u6001","Status for events detected as holidays":"\u68C0\u6D4B\u4E3A\u8282\u5047\u65E5\u7684\u4E8B\u4EF6\u72B6\u6001","Use timing rules":"\u4F7F\u7528\u65F6\u95F4\u89C4\u5219","Category Mapping":"\u7C7B\u522B\u6620\u5C04","Map specific categories to statuses (format: category:status, one per line)":"\u5C06\u7279\u5B9A\u7C7B\u522B\u6620\u5C04\u5230\u72B6\u6001\uFF08\u683C\u5F0F\uFF1A\u7C7B\u522B:\u72B6\u6001\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF09","Please enter a name for the source":"\u8BF7\u8F93\u5165\u6E90\u7684\u540D\u79F0","Please enter a URL for the source":"\u8BF7\u8F93\u5165\u6E90\u7684\u7F51\u5740","Please enter a valid URL":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7F51\u5740","Edit Text Replacement Rule":"\u7F16\u8F91\u6587\u672C\u66FF\u6362\u89C4\u5219","Rule Name":"\u89C4\u5219\u540D\u79F0","Descriptive name for this replacement rule":"\u6B64\u66FF\u6362\u89C4\u5219\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Remove Meeting Prefix":"\u79FB\u9664\u4F1A\u8BAE\u524D\u7F00","Whether this rule is active":"\u6B64\u89C4\u5219\u662F\u5426\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001","Target Field":"\u76EE\u6807\u5B57\u6BB5","Which field to apply the replacement to":"\u8981\u5E94\u7528\u66FF\u6362\u7684\u5B57\u6BB5","Summary/Title":"\u6458\u8981/\u6807\u9898",Location:"\u4F4D\u7F6E","All Fields":"\u6240\u6709\u5B57\u6BB5","Pattern (Regular Expression)":"\u6A21\u5F0F\uFF08\u6B63\u5219\u8868\u8FBE\u5F0F\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u8981\u5339\u914D\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F\u3002\u4F7F\u7528\u62EC\u53F7\u8FDB\u884C\u6355\u83B7\u7EC4\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u7528\u4E8E\u66FF\u6362\u5339\u914D\u9879\u7684\u6587\u672C\u3002\u4F7F\u7528 $1\u3001$2 \u7B49\u8868\u793A\u6355\u83B7\u7EC4\u3002","Regex Flags":"\u6B63\u5219\u8868\u8FBE\u5F0F\u6807\u5FD7","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u5219\u8868\u8FBE\u5F0F\u6807\u5FD7\uFF08\u4F8B\u5982\uFF0C'g' \u8868\u793A\u5168\u5C40\uFF0C'i' \u8868\u793A\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09",Examples:"\u793A\u4F8B","Remove prefix":"\u79FB\u9664\u524D\u7F00","Replace room numbers":"\u66FF\u6362\u623F\u95F4\u53F7","Swap words":"\u4EA4\u6362\u5355\u8BCD","Test Rule":"\u6D4B\u8BD5\u89C4\u5219","Output: ":"\u8F93\u51FA\uFF1A","Test Input":"\u6D4B\u8BD5\u8F93\u5165","Enter text to test the replacement rule":"\u8F93\u5165\u6587\u672C\u4EE5\u6D4B\u8BD5\u66FF\u6362\u89C4\u5219","Please enter a name for the rule":"\u8BF7\u8F93\u5165\u89C4\u5219\u540D\u79F0","Please enter a pattern":"\u8BF7\u8F93\u5165\u6A21\u5F0F","Invalid regular expression pattern":"\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F","Enhanced Project Configuration":"\u589E\u5F3A\u9879\u76EE\u914D\u7F6E","Configure advanced project detection and management features":"\u914D\u7F6E\u9AD8\u7EA7\u9879\u76EE\u68C0\u6D4B\u548C\u7BA1\u7406\u529F\u80FD","Enable enhanced project features":"\u542F\u7528\u589E\u5F3A\u9879\u76EE\u529F\u80FD","Enable path-based, metadata-based, and config file-based project detection":"\u542F\u7528\u57FA\u4E8E\u8DEF\u5F84\u3001\u5143\u6570\u636E\u548C\u914D\u7F6E\u6587\u4EF6\u7684\u9879\u76EE\u68C0\u6D4B","Path-based Project Mappings":"\u57FA\u4E8E\u8DEF\u5F84\u7684\u9879\u76EE\u6620\u5C04","Configure project names based on file paths":"\u57FA\u4E8E\u6587\u4EF6\u8DEF\u5F84\u914D\u7F6E\u9879\u76EE\u540D\u79F0","No path mappings configured yet.":"\u5C1A\u672A\u914D\u7F6E\u8DEF\u5F84\u6620\u5C04\u3002",Mapping:"\u6620\u5C04","Path pattern (e.g., Projects/Work)":"\u8DEF\u5F84\u6A21\u5F0F\uFF08\u4F8B\u5982\uFF0CProjects/Work\uFF09","Add Path Mapping":"\u6DFB\u52A0\u8DEF\u5F84\u6620\u5C04","Metadata-based Project Configuration":"\u57FA\u4E8E\u5143\u6570\u636E\u7684\u9879\u76EE\u914D\u7F6E","Configure project detection from file frontmatter":"\u914D\u7F6E\u4ECE\u6587\u4EF6\u524D\u8A00\u68C0\u6D4B\u9879\u76EE","Enable metadata project detection":"\u542F\u7528\u5143\u6570\u636E\u9879\u76EE\u68C0\u6D4B","Detect project from file frontmatter metadata":"\u4ECE\u6587\u4EF6\u524D\u8A00\u5143\u6570\u636E\u68C0\u6D4B\u9879\u76EE","Metadata key":"\u5143\u6570\u636E\u952E","The frontmatter key to use for project name":"\u7528\u4E8E\u9879\u76EE\u540D\u79F0\u7684\u524D\u8A00\u952E","Inherit other metadata fields from file frontmatter":"\u4ECE\u6587\u4EF6\u524D\u8A00\u7EE7\u627F\u5176\u4ED6\u5143\u6570\u636E\u5B57\u6BB5","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u5141\u8BB8\u5B50\u4EFB\u52A1\u4ECE\u6587\u4EF6\u524D\u8A00\u7EE7\u627F\u5143\u6570\u636E\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u6709\u9876\u7EA7\u4EFB\u52A1\u7EE7\u627F\u6587\u4EF6\u5143\u6570\u636E\u3002","Project Configuration File":"\u9879\u76EE\u914D\u7F6E\u6587\u4EF6","Configure project detection from project config files":"\u914D\u7F6E\u4ECE\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u68C0\u6D4B\u9879\u76EE","Enable config file project detection":"\u542F\u7528\u914D\u7F6E\u6587\u4EF6\u9879\u76EE\u68C0\u6D4B","Detect project from project configuration files":"\u4ECE\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u68C0\u6D4B\u9879\u76EE","Config file name":"\u914D\u7F6E\u6587\u4EF6\u540D","Name of the project configuration file":"\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u7684\u540D\u79F0","Search recursively":"\u9012\u5F52\u641C\u7D22","Search for config files in parent directories":"\u5728\u7236\u76EE\u5F55\u4E2D\u641C\u7D22\u914D\u7F6E\u6587\u4EF6","Metadata Mappings":"\u5143\u6570\u636E\u6620\u5C04","Configure how metadata fields are mapped and transformed":"\u914D\u7F6E\u5143\u6570\u636E\u5B57\u6BB5\u5982\u4F55\u6620\u5C04\u548C\u8F6C\u6362","No metadata mappings configured yet.":"\u5C1A\u672A\u914D\u7F6E\u5143\u6570\u636E\u6620\u5C04\u3002","Source key (e.g., proj)":"\u6E90\u952E\uFF08\u4F8B\u5982\uFF0Cproj\uFF09","Select target field":"\u9009\u62E9\u76EE\u6807\u5B57\u6BB5","Add Metadata Mapping":"\u6DFB\u52A0\u5143\u6570\u636E\u6620\u5C04","Default Project Naming":"\u9ED8\u8BA4\u9879\u76EE\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u914D\u7F6E\u672A\u627E\u5230\u660E\u786E\u9879\u76EE\u65F6\u7684\u540E\u5907\u9879\u76EE\u547D\u540D","Enable default project naming":"\u542F\u7528\u9ED8\u8BA4\u9879\u76EE\u547D\u540D","Use default naming strategy when no project is explicitly defined":"\u5F53\u6CA1\u6709\u660E\u786E\u5B9A\u4E49\u9879\u76EE\u65F6\u4F7F\u7528\u9ED8\u8BA4\u547D\u540D\u7B56\u7565","Naming strategy":"\u547D\u540D\u7B56\u7565","Strategy for generating default project names":"\u751F\u6210\u9ED8\u8BA4\u9879\u76EE\u540D\u79F0\u7684\u7B56\u7565","Use filename":"\u4F7F\u7528\u6587\u4EF6\u540D","Use folder name":"\u4F7F\u7528\u6587\u4EF6\u5939\u540D","Use metadata field":"\u4F7F\u7528\u5143\u6570\u636E\u5B57\u6BB5","Metadata field to use as project name":"\u7528\u4F5C\u9879\u76EE\u540D\u79F0\u7684\u5143\u6570\u636E\u5B57\u6BB5","Enter metadata key (e.g., project-name)":"\u8F93\u5165\u5143\u6570\u636E\u952E\uFF08\u4F8B\u5982\uFF0Cproject-name\uFF09","Strip file extension":"\u53BB\u9664\u6587\u4EF6\u6269\u5C55\u540D","Remove file extension from filename when using as project name":"\u7528\u4F5C\u9879\u76EE\u540D\u79F0\u65F6\u4ECE\u6587\u4EF6\u540D\u4E2D\u79FB\u9664\u6587\u4EF6\u6269\u5C55\u540D","Target type":"\u76EE\u6807\u7C7B\u578B","Choose whether to capture to a fixed file or daily note":"\u9009\u62E9\u662F\u5426\u6355\u83B7\u5230\u56FA\u5B9A\u6587\u4EF6\u6216\u6BCF\u65E5\u7B14\u8BB0","Fixed file":"\u56FA\u5B9A\u6587\u4EF6","Daily note":"\u6BCF\u65E5\u7B14\u8BB0","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u4FDD\u5B58\u6355\u83B7\u6587\u672C\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F84\uFF0C\u4F8B\u5982 'folder/Quick Capture.md'\u3002\u652F\u6301\u65E5\u671F\u6A21\u677F\uFF0C\u5982 {{DATE:YYYY-MM-DD}} \u6216 {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"\u4E0E\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u540C\u6B65","Automatically sync settings from the Daily Notes plugin":"\u81EA\u52A8\u4ECE\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u540C\u6B65\u8BBE\u7F6E","Sync now":"\u7ACB\u5373\u540C\u6B65","Daily notes settings synced successfully":"\u6BCF\u65E5\u7B14\u8BB0\u8BBE\u7F6E\u540C\u6B65\u6210\u529F","Daily Notes plugin is not enabled":"\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u672A\u542F\u7528","Failed to sync daily notes settings":"\u540C\u6B65\u6BCF\u65E5\u7B14\u8BB0\u8BBE\u7F6E\u5931\u8D25","Date format for daily notes (e.g., YYYY-MM-DD)":"\u6BCF\u65E5\u7B14\u8BB0\u7684\u65E5\u671F\u683C\u5F0F\uFF08\u4F8B\u5982\uFF0CYYYY-MM-DD\uFF0C\u652F\u6301\u5D4C\u5957\u683C\u5F0F\u5982 YYYY-MM/YYYY-MM-DD\uFF09","Daily note folder":"\u6BCF\u65E5\u7B14\u8BB0\u6587\u4EF6\u5939","Folder path for daily notes (leave empty for root)":"\u6BCF\u65E5\u7B14\u8BB0\u7684\u6587\u4EF6\u5939\u8DEF\u5F84\uFF08\u7559\u7A7A\u8868\u793A\u6839\u76EE\u5F55\uFF09","Daily note template":"\u6BCF\u65E5\u7B14\u8BB0\u6A21\u677F","Template file path for new daily notes (optional)":"\u65B0\u6BCF\u65E5\u7B14\u8BB0\u7684\u6A21\u677F\u6587\u4EF6\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09","Target heading":"\u76EE\u6807\u6807\u9898","Optional heading to append content under (leave empty to append to file)":"\u8981\u5728\u5176\u4E0B\u8FFD\u52A0\u5185\u5BB9\u7684\u53EF\u9009\u6807\u9898\uFF08\u7559\u7A7A\u8868\u793A\u8FFD\u52A0\u5230\u6587\u4EF6\uFF09","How to add captured content to the target location":"\u5982\u4F55\u5C06\u6355\u83B7\u7684\u5185\u5BB9\u6DFB\u52A0\u5230\u76EE\u6807\u4F4D\u7F6E",Append:"\u8FFD\u52A0",Prepend:"\u524D\u7F6E",Replace:"\u66FF\u6362","Enable auto-move for completed tasks":"\u4E3A\u5DF2\u5B8C\u6210\u4EFB\u52A1\u542F\u7528\u81EA\u52A8\u79FB\u52A8","Automatically move completed tasks to a default file without manual selection.":"\u81EA\u52A8\u5C06\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6\uFF0C\u65E0\u9700\u624B\u52A8\u9009\u62E9\u3002","Default target file":"\u9ED8\u8BA4\u76EE\u6807\u6587\u4EF6","Default file to move completed tasks to (e.g., 'Archive.md')":"\u79FB\u52A8\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6587\u4EF6\uFF08\u4F8B\u5982\uFF0C'Archive.md'\uFF09","Default insertion mode":"\u9ED8\u8BA4\u63D2\u5165\u6A21\u5F0F","Where to insert completed tasks in the target file":"\u5728\u76EE\u6807\u6587\u4EF6\u4E2D\u63D2\u5165\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u4F4D\u7F6E","Default heading name":"\u9ED8\u8BA4\u6807\u9898\u540D\u79F0","Heading name to insert tasks after (will be created if it doesn't exist)":"\u5728\u5176\u540E\u63D2\u5165\u4EFB\u52A1\u7684\u6807\u9898\u540D\u79F0\uFF08\u5982\u679C\u4E0D\u5B58\u5728\u5C06\u521B\u5EFA\uFF09","Enable auto-move for incomplete tasks":"\u4E3A\u672A\u5B8C\u6210\u4EFB\u52A1\u542F\u7528\u81EA\u52A8\u79FB\u52A8","Automatically move incomplete tasks to a default file without manual selection.":"\u81EA\u52A8\u5C06\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6\uFF0C\u65E0\u9700\u624B\u52A8\u9009\u62E9\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u76EE\u6807\u6587\u4EF6","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6587\u4EF6\uFF08\u4F8B\u5982\uFF0C'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u63D2\u5165\u6A21\u5F0F","Where to insert incomplete tasks in the target file":"\u5728\u76EE\u6807\u6587\u4EF6\u4E2D\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u4F4D\u7F6E","Default heading name for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6807\u9898\u540D\u79F0","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u5728\u5176\u540E\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u6807\u9898\u540D\u79F0\uFF08\u5982\u679C\u4E0D\u5B58\u5728\u5C06\u521B\u5EFA\uFF09","Other settings":"\u5176\u4ED6\u8BBE\u7F6E","Use Task Genius icons":"\u4F7F\u7528 Task Genius \u56FE\u6807","Use Task Genius icons for task statuses":"\u4E3A\u4EFB\u52A1\u72B6\u6001\u4F7F\u7528 Task Genius \u56FE\u6807","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u5728 dataview \u683C\u5F0F\u4E2D\u7528\u4E8E\u4E0A\u4E0B\u6587\u6807\u7B7E\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'context' \u7528\u4E8E [context:: home]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u7528\u4E8E\u4E0A\u4E0B\u6587\u6807\u7B7E\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'@home' \u7528\u4E8E @home\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002",Area:"\u533A\u57DF","File Parsing Configuration":"\u6587\u4EF6\u89E3\u6790\u914D\u7F6E","Configure how to extract tasks from file metadata and tags.":"\u914D\u7F6E\u5982\u4F55\u4ECE\u6587\u4EF6\u5143\u6570\u636E\u548C\u6807\u7B7E\u4E2D\u63D0\u53D6\u4EFB\u52A1\u3002","Enable file metadata parsing":"\u542F\u7528\u6587\u4EF6\u5143\u6570\u636E\u89E3\u6790","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u4ECE\u6587\u4EF6\u524D\u8A00\u5143\u6570\u636E\u5B57\u6BB5\u89E3\u6790\u4EFB\u52A1\u3002\u542F\u7528\u65F6\uFF0C\u5177\u6709\u7279\u5B9A\u5143\u6570\u636E\u5B57\u6BB5\u7684\u6587\u4EF6\u5C06\u88AB\u89C6\u4E3A\u4EFB\u52A1\u3002","File metadata parsing enabled. Rebuilding task index...":"\u6587\u4EF6\u5143\u6570\u636E\u89E3\u6790\u5DF2\u542F\u7528\u3002\u6B63\u5728\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15...","Task index rebuilt successfully":"\u4EFB\u52A1\u7D22\u5F15\u91CD\u5EFA\u6210\u529F","Failed to rebuild task index":"\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Metadata fields to parse as tasks":"\u8981\u89E3\u6790\u4E3A\u4EFB\u52A1\u7684\u5143\u6570\u636E\u5B57\u6BB5","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u5E94\u88AB\u89C6\u4E3A\u4EFB\u52A1\u7684\u5143\u6570\u636E\u5B57\u6BB5\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\uFF08\u4F8B\u5982\uFF0CdueDate\u3001todo\u3001complete\u3001task\uFF09","Task content from metadata":"\u6765\u81EA\u5143\u6570\u636E\u7684\u4EFB\u52A1\u5185\u5BB9","Which metadata field to use as task content. If not found, will use filename.":"\u7528\u4F5C\u4EFB\u52A1\u5185\u5BB9\u7684\u5143\u6570\u636E\u5B57\u6BB5\u3002\u5982\u679C\u672A\u627E\u5230\uFF0C\u5C06\u4F7F\u7528\u6587\u4EF6\u540D\u3002","Default task status":"\u9ED8\u8BA4\u4EFB\u52A1\u72B6\u6001","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u4ECE\u5143\u6570\u636E\u521B\u5EFA\u7684\u4EFB\u52A1\u7684\u9ED8\u8BA4\u72B6\u6001\uFF08\u7A7A\u683C\u8868\u793A\u672A\u5B8C\u6210\uFF0Cx \u8868\u793A\u5DF2\u5B8C\u6210\uFF09","Enable tag-based task parsing":"\u542F\u7528\u57FA\u4E8E\u6807\u7B7E\u7684\u4EFB\u52A1\u89E3\u6790","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u4ECE\u6587\u4EF6\u6807\u7B7E\u89E3\u6790\u4EFB\u52A1\u3002\u542F\u7528\u65F6\uFF0C\u5177\u6709\u7279\u5B9A\u6807\u7B7E\u7684\u6587\u4EF6\u5C06\u88AB\u89C6\u4E3A\u4EFB\u52A1\u3002","Tags to parse as tasks":"\u8981\u89E3\u6790\u4E3A\u4EFB\u52A1\u7684\u6807\u7B7E","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u5E94\u88AB\u89C6\u4E3A\u4EFB\u52A1\u7684\u6807\u7B7E\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\uFF08\u4F8B\u5982\uFF0C#todo\u3001#task\u3001#action\u3001#due\uFF09","Enable worker processing":"\u542F\u7528\u5DE5\u4F5C\u7EBF\u7A0B\u5904\u7406","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u4F7F\u7528\u540E\u53F0\u5DE5\u4F5C\u7EBF\u7A0B\u8FDB\u884C\u6587\u4EF6\u89E3\u6790\u4EE5\u63D0\u9AD8\u6027\u80FD\u3002\u63A8\u8350\u7528\u4E8E\u5927\u578B\u5E93\u3002","What do you want to do today?":"\u60A8\u4ECA\u5929\u60F3\u505A\u4EC0\u4E48\uFF1F","More options":"\u66F4\u591A\u9009\u9879","Hide weekends":"\u9690\u85CF\u5468\u672B","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u9690\u85CF\u5468\u672B\u5217\uFF08\u5468\u516D\u548C\u5468\u65E5\uFF09\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u5728\u9884\u6D4B\u65E5\u5386\u4E2D\u9690\u85CF\u5468\u672B\u5217\uFF08\u5468\u516D\u548C\u5468\u65E5\uFF09\u3002",Repeatable:"\u53EF\u91CD\u590D",Final:"\u6700\u7EC8",Sequential:"\u987A\u5E8F","Current: ":"\u5F53\u524D\uFF1A",completed:"\u5DF2\u5B8C\u6210","Convert to workflow template":"\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6A21\u677F","Start workflow here":"\u5728\u6B64\u5F00\u59CB\u5DE5\u4F5C\u6D41","Create quick workflow":"\u521B\u5EFA\u5FEB\u901F\u5DE5\u4F5C\u6D41","Workflow not found":"\u672A\u627E\u5230\u5DE5\u4F5C\u6D41","Stage not found":"\u672A\u627E\u5230\u9636\u6BB5","Current stage":"\u5F53\u524D\u9636\u6BB5",Type:"\u7C7B\u578B",Next:"\u4E0B\u4E00\u4E2A","Auto-move completed subtasks to default file":"\u81EA\u52A8\u5C06\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move direct completed subtasks to default file":"\u81EA\u52A8\u5C06\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move all subtasks to default file":"\u81EA\u52A8\u5C06\u6240\u6709\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move incomplete subtasks to default file":"\u81EA\u52A8\u5C06\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move direct incomplete subtasks to default file":"\u81EA\u52A8\u5C06\u76F4\u63A5\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Convert task to workflow template":"\u5C06\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6A21\u677F","Convert current task to workflow root":"\u5C06\u5F53\u524D\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839","Duplicate workflow":"\u590D\u5236\u5DE5\u4F5C\u6D41","Workflow quick actions":"\u5DE5\u4F5C\u6D41\u5FEB\u901F\u64CD\u4F5C","Workflow generated from task structure":"\u4ECE\u4EFB\u52A1\u7ED3\u6784\u751F\u6210\u7684\u5DE5\u4F5C\u6D41","Workflow based on existing pattern":"\u57FA\u4E8E\u73B0\u6709\u6A21\u5F0F\u7684\u5DE5\u4F5C\u6D41",Matrix:"\u77E9\u9635","More actions":"\u66F4\u591A\u64CD\u4F5C","Open in file":"\u5728\u6587\u4EF6\u4E2D\u6253\u5F00","Copy task":"\u590D\u5236\u4EFB\u52A1","Mark as urgent":"\u6807\u8BB0\u4E3A\u7D27\u6025","Mark as important":"\u6807\u8BB0\u4E3A\u91CD\u8981","Overdue by {days} days":"\u903E\u671F {days} \u5929","Due today":"\u4ECA\u5929\u5230\u671F","Due tomorrow":"\u660E\u5929\u5230\u671F","Due in {days} days":"\u5728 {days} \u5929\u5185\u5230\u671F","Loading tasks...":"\u52A0\u8F7D\u4EFB\u52A1\u4E2D...",task:"\u4EFB\u52A1","No crisis tasks - great job!":"\u6CA1\u6709\u5371\u673A\u4EFB\u52A1 - \u5E72\u5F97\u597D\uFF01","No planning tasks - consider adding some goals":"\u6CA1\u6709\u8BA1\u5212\u4EFB\u52A1 - \u8003\u8651\u6DFB\u52A0\u4E00\u4E9B\u76EE\u6807","No interruptions - focus time!":"\u6CA1\u6709\u5E72\u6270 - \u4E13\u6CE8\u65F6\u95F4\uFF01","No time wasters - excellent focus!":"\u6CA1\u6709\u65F6\u95F4\u6D6A\u8D39 - \u51FA\u8272\u7684\u4E13\u6CE8\u529B\uFF01","No tasks in this quadrant":"\u6B64\u8C61\u9650\u4E2D\u6CA1\u6709\u4EFB\u52A1","Handle immediately. These are critical tasks that need your attention now.":"\u7ACB\u5373\u5904\u7406\u3002\u8FD9\u4E9B\u662F\u9700\u8981\u60A8\u7ACB\u5373\u5173\u6CE8\u7684\u5173\u952E\u4EFB\u52A1\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u5B89\u6392\u548C\u8BA1\u5212\u3002\u8FD9\u4E9B\u4EFB\u52A1\u5BF9\u60A8\u7684\u957F\u671F\u6210\u529F\u81F3\u5173\u91CD\u8981\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u5982\u679C\u53EF\u80FD\uFF0C\u59D4\u6258\u4ED6\u4EBA\u3002\u8FD9\u4E9B\u4EFB\u52A1\u7D27\u6025\u4F46\u4E0D\u9700\u8981\u60A8\u7279\u5B9A\u7684\u6280\u80FD\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6D88\u9664\u6216\u6700\u5C0F\u5316\u3002\u8FD9\u4E9B\u4EFB\u52A1\u53EF\u80FD\u662F\u65F6\u95F4\u6D6A\u8D39\u3002","Review and categorize these tasks appropriately.":"\u9002\u5F53\u5730\u5BA1\u67E5\u548C\u5206\u7C7B\u8FD9\u4E9B\u4EFB\u52A1\u3002","Urgent & Important":"\u7D27\u6025 & \u91CD\u8981","Do First - Crisis & emergencies":"\u4F18\u5148\u5904\u7406 - \u5371\u673A\u4E0E\u7D27\u6025\u60C5\u51B5","Not Urgent & Important":"\u4E0D\u7D27\u6025 & \u91CD\u8981","Schedule - Planning & development":"\u5B89\u6392 - \u89C4\u5212\u4E0E\u53D1\u5C55","Urgent & Not Important":"\u7D27\u6025 & \u4E0D\u91CD\u8981","Delegate - Interruptions & distractions":"\u59D4\u6258 - \u5E72\u6270\u4E0E\u5206\u5FC3","Not Urgent & Not Important":"\u4E0D\u7D27\u6025 & \u4E0D\u91CD\u8981","Eliminate - Time wasters":"\u6D88\u9664 - \u65F6\u95F4\u6D6A\u8D39","Task Priority Matrix":"\u4EFB\u52A1\u4F18\u5148\u7EA7\u77E9\u9635","Created Date (Newest First)":"\u521B\u5EFA\u65E5\u671F\uFF08\u6700\u65B0\u4F18\u5148\uFF09","Created Date (Oldest First)":"\u521B\u5EFA\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Toggle empty columns":"\u5207\u6362\u7A7A\u5217\u663E\u793A","Failed to update task":"\u66F4\u65B0\u4EFB\u52A1\u5931\u8D25","Remove urgent tag":"\u79FB\u9664\u7D27\u6025\u6807\u7B7E","Remove important tag":"\u79FB\u9664\u91CD\u8981\u6807\u7B7E","Loading more tasks...":"\u52A0\u8F7D\u66F4\u591A\u4EFB\u52A1...","On Completion":"\u5B8C\u6210\u65F6\u64CD\u4F5C","Action to execute on completion":"\u5B8C\u6210\u65F6\u6267\u884C\u7684\u64CD\u4F5C","Configuration is valid":"\u914D\u7F6E\u6709\u6548","Action Type":"\u64CD\u4F5C\u7C7B\u578B","Select action type":"\u9009\u62E9\u64CD\u4F5C\u7C7B\u578B",Keep:"\u4FDD\u7559",Move:"\u79FB\u52A8",Archive:"\u5F52\u6863","Target File":"\u76EE\u6807\u6587\u4EF6","Select target file":"\u9009\u62E9\u76EE\u6807\u6587\u4EF6","Target Section":"\u76EE\u6807\u7AE0\u8282","Section name (optional)":"\u7AE0\u8282\u540D\u79F0\uFF08\u53EF\u9009\uFF09","Create section if not exists":"\u5982\u679C\u4E0D\u5B58\u5728\u5219\u521B\u5EFA\u7AE0\u8282","Task IDs":"\u4EFB\u52A1ID","Task IDs to complete (comma-separated)":"\u8981\u5B8C\u6210\u7684\u4EFB\u52A1ID\uFF08\u9017\u53F7\u5206\u9694\uFF09","Archive File":"\u5F52\u6863\u6587\u4EF6","Archive Section":"\u5F52\u6863\u7AE0\u8282","Include metadata in duplicate":"\u5728\u590D\u5236\u4E2D\u5305\u542B\u5143\u6570\u636E","Invalid JSON format":"\u65E0\u6548\u7684JSON\u683C\u5F0F","Action type is required":"\u64CD\u4F5C\u7C7B\u578B\u662F\u5FC5\u9700\u7684","Target file is required for move action":"\u79FB\u52A8\u64CD\u4F5C\u9700\u8981\u76EE\u6807\u6587\u4EF6","Task IDs are required for complete action":"\u5B8C\u6210\u64CD\u4F5C\u9700\u8981\u4EFB\u52A1ID","Archive file is required for archive action":"\u5F52\u6863\u64CD\u4F5C\u9700\u8981\u5F52\u6863\u6587\u4EF6","Enable OnCompletion":"\u542F\u7528\u5B8C\u6210\u65F6\u64CD\u4F5C","Enable automatic actions when tasks are completed":"\u542F\u7528\u4EFB\u52A1\u5B8C\u6210\u65F6\u7684\u81EA\u52A8\u64CD\u4F5C","Default Archive File":"\u9ED8\u8BA4\u5F52\u6863\u6587\u4EF6","Default file for archive action":"\u5F52\u6863\u64CD\u4F5C\u7684\u9ED8\u8BA4\u6587\u4EF6","Default Archive Section":"\u9ED8\u8BA4\u5F52\u6863\u7AE0\u8282","Default section for archive action":"\u5F52\u6863\u64CD\u4F5C\u7684\u9ED8\u8BA4\u7AE0\u8282","Show Advanced Options":"\u663E\u793A\u9AD8\u7EA7\u9009\u9879","Show advanced configuration options in task editors":"\u5728\u4EFB\u52A1\u7F16\u8F91\u5668\u4E2D\u663E\u793A\u9AD8\u7EA7\u914D\u7F6E\u9009\u9879","Select action type...":"\u9009\u62E9\u64CD\u4F5C\u7C7B\u578B...","Delete task":"\u5220\u9664\u4EFB\u52A1","Delete Task":"\u5220\u9664\u4EFB\u52A1","Delete task only":"\u4EC5\u5220\u9664\u8BE5\u4EFB\u52A1","Delete task and all subtasks":"\u5220\u9664\u4EFB\u52A1\u53CA\u6240\u6709\u5B50\u4EFB\u52A1","This task has {n} subtasks. How would you like to proceed?":"\u8BE5\u4EFB\u52A1\u6709 {n} \u4E2A\u5B50\u4EFB\u52A1\u3002\u60A8\u5E0C\u671B\u5982\u4F55\u5904\u7406\uFF1F","Are you sure you want to delete this task?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u4EFB\u52A1\u5417\uFF1F","Task deleted":"\u4EFB\u52A1\u5DF2\u5220\u9664","Failed to delete task":"\u5220\u9664\u4EFB\u52A1\u5931\u8D25","Keep task":"\u4FDD\u7559\u4EFB\u52A1","Complete related tasks":"\u5B8C\u6210\u76F8\u5173\u4EFB\u52A1","Move task":"\u79FB\u52A8\u4EFB\u52A1","Archive task":"\u5F52\u6863\u4EFB\u52A1","Duplicate task":"\u590D\u5236\u4EFB\u52A1","Enter task IDs separated by commas":"\u8F93\u5165\u7528\u9017\u53F7\u5206\u9694\u7684\u4EFB\u52A1 ID","Comma-separated list of task IDs to complete when this task is completed":"\u5F53\u6B64\u4EFB\u52A1\u5B8C\u6210\u65F6\u8981\u5B8C\u6210\u7684\u4EFB\u52A1 ID \u9017\u53F7\u5206\u9694\u5217\u8868","Path to target file":"\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84","Target Section (Optional)":"\u76EE\u6807\u7AE0\u8282\uFF08\u53EF\u9009\uFF09","Section name in target file":"\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7AE0\u8282\u540D\u79F0","Archive File (Optional)":"\u5F52\u6863\u6587\u4EF6\uFF08\u53EF\u9009\uFF09","Default: Archive/Completed Tasks.md":"\u9ED8\u8BA4\uFF1AArchive/Completed Tasks.md","Archive Section (Optional)":"\u5F52\u6863\u7AE0\u8282\uFF08\u53EF\u9009\uFF09","Default: Completed Tasks":"\u9ED8\u8BA4\uFF1A\u5DF2\u5B8C\u6210\u4EFB\u52A1","Target File (Optional)":"\u76EE\u6807\u6587\u4EF6\uFF08\u53EF\u9009\uFF09","Default: same file":"\u9ED8\u8BA4\uFF1A\u540C\u4E00\u6587\u4EF6","Preserve Metadata":"\u4FDD\u7559\u5143\u6570\u636E","Keep completion dates and other metadata in the duplicated task":"\u5728\u590D\u5236\u7684\u4EFB\u52A1\u4E2D\u4FDD\u7559\u5B8C\u6210\u65E5\u671F\u548C\u5176\u4ED6\u5143\u6570\u636E","Overdue by":"\u903E\u671F",days:"\u5929","Due in":"\u5230\u671F",Folder:"\u6587\u4EF6\u5939","Refresh Statistics":"\u5237\u65B0\u7EDF\u8BA1","Manually refresh filter statistics to see current data":"\u624B\u52A8\u5237\u65B0\u7B5B\u9009\u7EDF\u8BA1\u4EE5\u67E5\u770B\u5F53\u524D\u6570\u636E","Refreshing...":"\u5237\u65B0\u4E2D...","No filter data available":"\u6CA1\u6709\u53EF\u7528\u7684\u7B5B\u9009\u6570\u636E","Error loading statistics":"\u52A0\u8F7D\u7EDF\u8BA1\u9519\u8BEF","Configure checkbox status settings":"\u914D\u7F6E\u590D\u9009\u6846\u72B6\u6001\u8BBE\u5B9A","Auto complete parent checkbox":"\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u590D\u9009\u6846","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u590D\u9009\u6846\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u5F53\u90E8\u5206\u5B50\u4EFB\u52A1\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u5B8C\u6210\u65F6\uFF0C\u5C06\u7236\u7EA7\u590D\u9009\u6846\u6807\u8BB0\u4E3A\u201C\u8FDB\u884C\u4E2D\u201D\u3002\u4EC5\u5728\u542F\u7528\u201C\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u201D\u65F6\u624D\u4F1A\u4F5C\u7528\u3002","Select a predefined checkbox status collection or customize your own":"\u9009\u62E9\u9884\u5B9A\u4E49\u7684\u590D\u9009\u6846\u72B6\u6001\u96C6\u5408\u6216\u81EA\u5B9A\u4E49\u60A8\u81EA\u5DF1\u7684","Checkbox Switcher":"\u590D\u9009\u6846\u5207\u6362\u5668","Enable checkbox status switcher":"\u542F\u7528\u590D\u9009\u6846\u72B6\u6001\u5207\u6362\u5668","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u7528\u6837\u5F0F\u5316\u7684\u6587\u5B57\u6807\u8BB0\u53D6\u4EE3\u9ED8\u8BA4\u590D\u9009\u6846\uFF0C\u70B9\u51FB\u65F6\u9075\u5FAA\u60A8\u7684\u590D\u9009\u6846\u72B6\u6001\u5FAA\u73AF\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u4F7F\u539F\u59CB\u6A21\u5F0F\u4E2D\u7684\u6587\u5B57\u6807\u8BB0\u5728\u70B9\u51FB\u65F6\u9075\u5FAA\u590D\u9009\u6846\u72B6\u6001\u5FAA\u73AF\u3002","Automatically manage dates based on checkbox status changes":"\u6839\u636E\u590D\u9009\u6846\u72B6\u6001\u53D8\u5316\u81EA\u52A8\u7BA1\u7406\u65E5\u671F","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u590D\u9009\u6846\u72B6\u6001\u53D8\u5316\u65F6\u7684\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u3002\u5C06\u6839\u636E\u60A8\u559C\u597D\u7684\u5143\u6570\u636E\u683C\u5F0F\uFF08\u4EFB\u52A1\u8868\u60C5\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u79FB\u9664\u65E5\u671F\u3002","Default view mode":"\u9ED8\u8BA4\u89C6\u56FE\u6A21\u5F0F","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u9009\u62E9\u6240\u6709\u89C6\u56FE\u7684\u9ED8\u8BA4\u663E\u793A\u6A21\u5F0F\u3002\u8FD9\u5F71\u54CD\u60A8\u7B2C\u4E00\u6B21\u6253\u5F00\u89C6\u56FE\u6216\u521B\u5EFA\u65B0\u89C6\u56FE\u65F6\u4EFB\u52A1\u7684\u663E\u793A\u65B9\u5F0F\u3002","List View":"\u5217\u8868\u89C6\u56FE","Tree View":"\u6811\u72B6\u89C6\u56FE","Global Filter Configuration":"\u5168\u5C40\u7B5B\u9009\u914D\u7F6E","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u914D\u7F6E\u9ED8\u8BA4\u5E94\u7528\u4E8E\u6240\u6709\u89C6\u56FE\u7684\u5168\u5C40\u7B5B\u9009\u89C4\u5219\u3002\u5355\u4E2A\u89C6\u56FE\u53EF\u4EE5\u8986\u76D6\u8FD9\u4E9B\u8BBE\u5B9A\u3002","Cancelled Date":"\u53D6\u6D88\u65E5\u671F","Depends On":"\u4F9D\u8D56\u4E8E","Task IDs separated by commas":"\u7528\u9017\u53F7\u5206\u9694\u7684\u4EFB\u52A1 ID","Task ID":"\u4EFB\u52A1 ID","Unique task identifier":"\u552F\u4E00\u4EFB\u52A1\u6807\u8BC6\u7B26","Action to execute when task is completed":"\u4EFB\u52A1\u5B8C\u6210\u65F6\u6267\u884C\u7684\u64CD\u4F5C","Comma-separated list of task IDs this task depends on":"\u6B64\u4EFB\u52A1\u4F9D\u8D56\u7684\u4EFB\u52A1 ID \u9017\u53F7\u5206\u9694\u5217\u8868","Unique identifier for this task":"\u6B64\u4EFB\u52A1\u7684\u552F\u4E00\u6807\u8BC6\u7B26","Quadrant Classification Method":"\u8C61\u9650\u5206\u7C7B\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u9009\u62E9\u5982\u4F55\u5C06\u4EFB\u52A1\u5206\u7C7B\u5230\u8C61\u9650\u4E2D","Urgent Priority Threshold":"\u7D27\u6025\u4F18\u5148\u7EA7\u9608\u503C","Tasks with priority >= this value are considered urgent (1-5)":"\u4F18\u5148\u7EA7 >= \u6B64\u503C\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u7D27\u6025\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u4F18\u5148\u7EA7\u9608\u503C","Tasks with priority >= this value are considered important (1-5)":"\u4F18\u5148\u7EA7 >= \u6B64\u503C\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u91CD\u8981\uFF081-5\uFF09","Urgent Tag":"\u7D27\u6025\u6807\u7B7E","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u8BC6\u522B\u7D27\u6025\u4EFB\u52A1\u7684\u6807\u7B7E\uFF08\u4F8B\u5982 #urgent, #fire\uFF09","Important Tag":"\u91CD\u8981\u6807\u7B7E","Tag to identify important tasks (e.g., #important, #key)":"\u8BC6\u522B\u91CD\u8981\u4EFB\u52A1\u7684\u6807\u7B7E\uFF08\u4F8B\u5982 #important, #key\uFF09","Urgent Threshold Days":"\u7D27\u6025\u9608\u503C\u5929\u6570","Tasks due within this many days are considered urgent":"\u5728\u8FD9\u4E48\u591A\u5929\u5185\u5230\u671F\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u7D27\u6025","Auto Update Priority":"\u81EA\u52A8\u66F4\u65B0\u4F18\u5148\u7EA7","Automatically update task priority when moved between quadrants":"\u5728\u8C61\u9650\u95F4\u79FB\u52A8\u65F6\u81EA\u52A8\u66F4\u65B0\u4EFB\u52A1\u4F18\u5148\u7EA7","Auto Update Tags":"\u81EA\u52A8\u66F4\u65B0\u6807\u7B7E","Automatically add/remove urgent/important tags when moved between quadrants":"\u5728\u8C61\u9650\u95F4\u79FB\u52A8\u65F6\u81EA\u52A8\u6DFB\u52A0/\u79FB\u9664\u7D27\u6025/\u91CD\u8981\u6807\u7B7E","Hide Empty Quadrants":"\u9690\u85CF\u7A7A\u8C61\u9650","Hide quadrants that have no tasks":"\u9690\u85CF\u6CA1\u6709\u4EFB\u52A1\u7684\u8C61\u9650","Configure On Completion Action":"\u914D\u7F6E\u5B8C\u6210\u65F6\u64CD\u4F5C","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal \u6587\u4EF6\u7684 URL\uFF08\u652F\u6301 http://\u3001https:// \u548C webcal:// \u534F\u8BAE\uFF09","Task mark display style":"\u4EFB\u52A1\u6807\u8BB0\u663E\u793A\u6837\u5F0F","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u9009\u62E9\u4EFB\u52A1\u6807\u8BB0\u7684\u663E\u793A\u65B9\u5F0F\uFF1A\u9ED8\u8BA4\u590D\u9009\u6846\u3001\u81EA\u5B9A\u4E49\u6587\u5B57\u6807\u8BB0\u6216 Task Genius \u56FE\u6807\u3002","Default checkboxes":"\u9ED8\u8BA4\u590D\u9009\u6846","Custom text marks":"\u81EA\u5B9A\u4E49\u6587\u5B57\u6807\u8BB0","Task Genius icons":"Task Genius \u56FE\u6807","Time Parsing Settings":"\u65F6\u95F4\u89E3\u6790\u8BBE\u5B9A","Enable Time Parsing":"\u542F\u7528\u65F6\u95F4\u89E3\u6790","Automatically parse natural language time expressions in Quick Capture":"\u5728\u5FEB\u901F\u6355\u83B7\u4E2D\u81EA\u52A8\u89E3\u6790\u81EA\u7136\u8BED\u8A00\u65F6\u95F4\u8868\u8FBE\u5F0F","Remove Original Time Expressions":"\u79FB\u9664\u539F\u59CB\u65F6\u95F4\u8868\u8FBE\u5F0F","Remove parsed time expressions from the task text":"\u4ECE\u4EFB\u52A1\u6587\u5B57\u4E2D\u79FB\u9664\u5DF2\u89E3\u6790\u7684\u65F6\u95F4\u8868\u8FBE\u5F0F","Supported Languages":"\u652F\u6301\u7684\u8BED\u8A00","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u76EE\u524D\u652F\u6301\u82F1\u6587\u548C\u4E2D\u6587\u65F6\u95F4\u8868\u8FBE\u5F0F\u3002\u672A\u6765\u66F4\u65B0\u4E2D\u53EF\u80FD\u4F1A\u6DFB\u52A0\u66F4\u591A\u8BED\u8A00\u3002","Date Keywords Configuration":"\u65E5\u671F\u5173\u952E\u8BCD\u914D\u7F6E","Start Date Keywords":"\u5F00\u59CB\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate start dates (comma-separated)":"\u6307\u793A\u5F00\u59CB\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Due Date Keywords":"\u5230\u671F\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate due dates (comma-separated)":"\u6307\u793A\u5230\u671F\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Scheduled Date Keywords":"\u5B89\u6392\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate scheduled dates (comma-separated)":"\u6307\u793A\u5B89\u6392\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Configure...":"\u914D\u7F6E...","Collapse quick input":"\u6298\u53E0\u5FEB\u901F\u8F93\u5165","Expand quick input":"\u5C55\u5F00\u5FEB\u901F\u8F93\u5165","Set Priority":"\u8BBE\u5B9A\u4F18\u5148\u7EA7","Clear Flags":"\u6E05\u9664\u6807\u5FD7","Filter by Priority":"\u6309\u4F18\u5148\u7EA7\u7B5B\u9009","New Project":"\u65B0\u9879\u76EE","Archive Completed":"\u5F52\u6863\u5DF2\u5B8C\u6210","Project Statistics":"\u9879\u76EE\u7EDF\u8BA1","Manage Tags":"\u7BA1\u7406\u6807\u7B7E","Time Parsing":"\u65F6\u95F4\u89E3\u6790","Minimal Quick Capture":"\u6700\u5C0F\u5316\u5FEB\u901F\u6355\u83B7","Enter your task...":"\u8F93\u5165\u60A8\u7684\u4EFB\u52A1...","Set date":"\u8BBE\u5B9A\u65E5\u671F","Set location":"\u8BBE\u5B9A\u4F4D\u7F6E","Add tags":"\u6DFB\u52A0\u6807\u7B7E","Day after tomorrow":"\u540E\u5929","Next week":"\u4E0B\u5468","Next month":"\u4E0B\u6708","Choose date...":"\u9009\u62E9\u65E5\u671F...","Fixed location":"\u56FA\u5B9A\u4F4D\u7F6E",Date:"\u65E5\u671F","Add date (triggers ~)":"\u6DFB\u52A0\u65E5\u671F\uFF08\u89E6\u53D1\u7B26 ~\uFF09","Set priority (triggers !)":"\u8BBE\u5B9A\u4F18\u5148\u7EA7\uFF08\u89E6\u53D1\u7B26 !\uFF09","Target Location":"\u76EE\u6807\u4F4D\u7F6E","Set target location (triggers *)":"\u8BBE\u5B9A\u76EE\u6807\u4F4D\u7F6E\uFF08\u89E6\u53D1\u7B26 *\uFF09","Add tags (triggers #)":"\u6DFB\u52A0\u6807\u7B7E\uFF08\u89E6\u53D1\u7B26 #\uFF09","Minimal Mode":"\u6700\u5C0F\u5316\u6A21\u5F0F","Enable minimal mode":"\u542F\u7528\u6700\u5C0F\u5316\u6A21\u5F0F","Enable simplified single-line quick capture with inline suggestions":"\u542F\u7528\u7B80\u5316\u7684\u5355\u884C\u5FEB\u901F\u6355\u83B7\u548C\u5185\u5D4C\u5EFA\u8BAE","Suggest trigger character":"\u5EFA\u8BAE\u89E6\u53D1\u5B57\u7B26","Character to trigger the suggestion menu":"\u89E6\u53D1\u5EFA\u8BAE\u83DC\u5355\u7684\u5B57\u7B26","Highest Priority":"\u6700\u9AD8\u4F18\u5148\u7EA7","\u{1F53A} Highest priority task":"\u{1F53A} \u6700\u9AD8\u4F18\u5148\u7EA7\u4EFB\u52A1","Highest priority set":"\u5DF2\u8BBE\u5B9A\u6700\u9AD8\u4F18\u5148\u7EA7","\u23EB High priority task":"\u23EB \u9AD8\u4F18\u5148\u7EA7\u4EFB\u52A1","High priority set":"\u5DF2\u8BBE\u5B9A\u9AD8\u4F18\u5148\u7EA7","\u{1F53C} Medium priority task":"\u{1F53C} \u4E2D\u7B49\u4F18\u5148\u7EA7\u4EFB\u52A1","Medium priority set":"\u5DF2\u8BBE\u5B9A\u4E2D\u7B49\u4F18\u5148\u7EA7","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u4F18\u5148\u7EA7\u4EFB\u52A1","Low priority set":"\u5DF2\u8BBE\u5B9A\u4F4E\u4F18\u5148\u7EA7","Lowest Priority":"\u6700\u4F4E\u4F18\u5148\u7EA7","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u4F18\u5148\u7EA7\u4EFB\u52A1","Lowest priority set":"\u5DF2\u8BBE\u5B9A\u6700\u4F4E\u4F18\u5148\u7EA7","Set due date to today":"\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u4ECA\u5929","Due date set to today":"\u5DF2\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u4ECA\u5929","Set due date to tomorrow":"\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u660E\u5929","Due date set to tomorrow":"\u5DF2\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u660E\u5929","Pick Date":"\u9009\u62E9\u65E5\u671F","Open date picker":"\u6253\u5F00\u65E5\u671F\u9009\u62E9\u5668","Set scheduled date":"\u8BBE\u5B9A\u5B89\u6392\u65E5\u671F","Scheduled date set":"\u5DF2\u8BBE\u5B9A\u5B89\u6392\u65E5\u671F","Save to inbox":"\u4FDD\u5B58\u5230\u6536\u4EF6\u7BB1","Target set to Inbox":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u6536\u4EF6\u7BB1","Daily Note":"\u65E5\u8BB0","Save to today's daily note":"\u4FDD\u5B58\u5230\u4ECA\u5929\u7684\u65E5\u8BB0","Target set to Daily Note":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u65E5\u8BB0","Current File":"\u5F53\u524D\u6587\u4EF6","Save to current file":"\u4FDD\u5B58\u5230\u5F53\u524D\u6587\u4EF6","Target set to Current File":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u5F53\u524D\u6587\u4EF6","Choose File":"\u9009\u62E9\u6587\u4EF6","Open file picker":"\u6253\u5F00\u6587\u4EF6\u9009\u62E9\u5668","Save to recent file":"\u4FDD\u5B58\u5230\u6700\u8FD1\u6587\u4EF6","Target set to":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A",Important:"\u91CD\u8981","Tagged as important":"\u5DF2\u6807\u8BB0\u4E3A\u91CD\u8981",Urgent:"\u7D27\u6025","Tagged as urgent":"\u5DF2\u6807\u8BB0\u4E3A\u7D27\u6025",Work:"\u5DE5\u4F5C","Work related task":"\u5DE5\u4F5C\u76F8\u5173\u4EFB\u52A1","Tagged as work":"\u5DF2\u6807\u8BB0\u4E3A\u5DE5\u4F5C",Personal:"\u4E2A\u4EBA","Personal task":"\u4E2A\u4EBA\u4EFB\u52A1","Tagged as personal":"\u5DF2\u6807\u8BB0\u4E3A\u4E2A\u4EBA","Choose Tag":"\u9009\u62E9\u6807\u7B7E","Open tag picker":"\u6253\u5F00\u6807\u7B7E\u9009\u62E9\u5668","Existing tag":"\u73B0\u6709\u6807\u7B7E","Tagged with":"\u5DF2\u6807\u8BB0\u4E3A","Toggle quick capture panel in editor":"\u5728\u7F16\u8F91\u5668\u4E2D\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F","Toggle quick capture panel in editor (Globally)":"\u5728\u7F16\u8F91\u5668\u4E2D\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F\uFF08\u5168\u5C40\uFF09","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"\u793E\u533A","Get help and share tips":"\u83B7\u5F97\u5E2E\u52A9\u548C\u5206\u4EAB\u6280\u5DE7","Customize Task Genius":"\u81EA\u5B9A\u4E49 Task Genius","Click the Task Genius icon in the left sidebar":"\u70B9\u51FB\u5DE6\u4FA7\u8FB9\u680F\u7684 Task Genius \u56FE\u6807","Start with the Inbox view to see all your tasks":"\u4ECE\u6536\u4EF6\u7BB1\u89C6\u56FE\u5F00\u59CB\u67E5\u770B\u6240\u6709\u4EFB\u52A1","Use quick capture panel to quickly add your first task":"\u4F7F\u7528\u5FEB\u901F\u6355\u83B7\u9762\u677F\u5FEB\u901F\u6DFB\u52A0\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Try the Forecast view to see tasks by date":"\u5C1D\u8BD5\u9884\u6D4B\u89C6\u56FE\u6309\u65E5\u671F\u67E5\u770B\u4EFB\u52A1","Open Task Genius and explore the available views":"\u6253\u5F00 Task Genius \u5E76\u63A2\u7D22\u53EF\u7528\u89C6\u56FE","Set up a project using the Projects view":"\u4F7F\u7528\u9879\u76EE\u89C6\u56FE\u8BBE\u7F6E\u9879\u76EE","Try the Kanban board for visual task management":"\u5C1D\u8BD5\u770B\u677F\u8FDB\u884C\u53EF\u89C6\u5316\u4EFB\u52A1\u7BA1\u7406","Use workflow stages to track task progress":"\u4F7F\u7528\u5DE5\u4F5C\u6D41\u9636\u6BB5\u8DDF\u8E2A\u4EFB\u52A1\u8FDB\u5EA6","Explore all available views and their configurations":"\u63A2\u7D22\u6240\u6709\u53EF\u7528\u89C6\u56FE\u53CA\u5176\u914D\u7F6E","Set up complex workflows for your projects":"\u4E3A\u9879\u76EE\u8BBE\u7F6E\u590D\u6742\u5DE5\u4F5C\u6D41","Configure habits and rewards to stay motivated":"\u914D\u7F6E\u4E60\u60EF\u548C\u5956\u52B1\u4EE5\u4FDD\u6301\u52A8\u529B","Integrate with external calendars and systems":"\u4E0E\u5916\u90E8\u65E5\u5386\u548C\u7CFB\u7EDF\u96C6\u6210","Open Task Genius from the left sidebar":"\u4ECE\u5DE6\u4FA7\u8FB9\u680F\u6253\u5F00 Task Genius","Create your first task":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Explore the different views available":"\u63A2\u7D22\u4E0D\u540C\u7684\u53EF\u7528\u89C6\u56FE","Customize settings as needed":"\u6839\u636E\u9700\u8981\u81EA\u5B9A\u4E49\u8BBE\u7F6E","Thank you for your positive feedback!":"\u611F\u8C22\u60A8\u7684\u6B63\u9762\u53CD\u9988\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\u3002\u6211\u4EEC\u5C06\u7EE7\u7EED\u6539\u5584\u4F7F\u7528\u4F53\u9A8C\u3002","Share detailed feedback":"\u5206\u4EAB\u8BE6\u7EC6\u53CD\u9988","Skip onboarding":"\u8DF3\u8FC7\u5F15\u5BFC",Back:"\u8FD4\u56DE","Welcome to Task Genius":"\u6B22\u8FCE\u4F7F\u7528 Task Genius","Transform your task management with advanced progress tracking and workflow automation":"\u901A\u8FC7\u9AD8\u7EA7\u8FDB\u5EA6\u8DDF\u8E2A\u548C\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316\u8F6C\u53D8\u60A8\u7684\u4EFB\u52A1\u7BA1\u7406","Progress Tracking":"\u8FDB\u5EA6\u8DDF\u8E2A","Visual progress bars and completion tracking for all your tasks":"\u4E3A\u6240\u6709\u4EFB\u52A1\u63D0\u4F9B\u53EF\u89C6\u5316\u8FDB\u5EA6\u6761\u548C\u5B8C\u6210\u8DDF\u8E2A","Organize tasks by projects with advanced filtering and sorting":"\u4F7F\u7528\u9AD8\u7EA7\u7B5B\u9009\u548C\u6392\u5E8F\u6309\u9879\u76EE\u7EC4\u7EC7\u4EFB\u52A1","Workflow Automation":"\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316","Automate task status changes and improve your productivity":"\u81EA\u52A8\u5316\u4EFB\u52A1\u72B6\u6001\u53D8\u66F4\u5E76\u63D0\u9AD8\u751F\u4EA7\u529B","Multiple Views":"\u591A\u79CD\u89C6\u56FE","Kanban boards, calendars, Gantt charts, and more visualization options":"\u770B\u677F\u3001\u65E5\u5386\u3001\u7518\u7279\u56FE\u548C\u66F4\u591A\u53EF\u89C6\u5316\u9009\u9879","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u8FD9\u4E2A\u5FEB\u901F\u8BBE\u7F6E\u5C06\u6839\u636E\u60A8\u7684\u7ECF\u9A8C\u6C34\u5E73\u548C\u9700\u6C42\u5E2E\u52A9\u60A8\u914D\u7F6E Task Genius\u3002\u60A8\u968F\u65F6\u53EF\u4EE5\u7A0D\u540E\u66F4\u6539\u8FD9\u4E9B\u8BBE\u7F6E\u3002","Choose Your Usage Mode":"\u9009\u62E9\u60A8\u7684\u4F7F\u7528\u6A21\u5F0F","Select the configuration that best matches your task management experience":"\u9009\u62E9\u6700\u7B26\u5408\u60A8\u4EFB\u52A1\u7BA1\u7406\u7ECF\u9A8C\u7684\u914D\u7F6E","Configuration Preview":"\u914D\u7F6E\u9884\u89C8","Review the settings that will be applied for your selected mode":"\u67E5\u770B\u5C06\u5E94\u7528\u4E8E\u60A8\u9009\u62E9\u6A21\u5F0F\u7684\u8BBE\u7F6E","Include task creation guide":"\u5305\u542B\u4EFB\u52A1\u521B\u5EFA\u6307\u5357","Show a quick tutorial on creating your first task":"\u663E\u793A\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4EFB\u52A1\u7684\u5FEB\u901F\u6559\u7A0B","Create Your First Task":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Learn how to create and format tasks in Task Genius":"\u5B66\u4E60\u5982\u4F55\u5728 Task Genius \u4E2D\u521B\u5EFA\u548C\u683C\u5F0F\u5316\u4EFB\u52A1","Setup Complete!":"\u8BBE\u7F6E\u5B8C\u6210\uFF01","Task Genius is now configured and ready to use":"Task Genius \u5DF2\u914D\u7F6E\u5B8C\u6210\u4E14\u53EF\u4EE5\u4F7F\u7528","Start Using Task Genius":"\u5F00\u59CB\u4F7F\u7528 Task Genius","Task Genius Setup":"Task Genius \u8BBE\u7F6E","Skip setup":"\u8DF3\u8FC7\u8BBE\u7F6E","We noticed you've already configured Task Genius":"\u6211\u4EEC\u6CE8\u610F\u5230\u60A8\u5DF2\u7ECF\u914D\u7F6E\u4E86 Task Genius","Your current configuration includes:":"\u60A8\u5F53\u524D\u7684\u914D\u7F6E\u5305\u62EC\uFF1A","Would you like to run the setup wizard anyway?":"\u60A8\u8FD8\u662F\u60F3\u8981\u8FD0\u884C\u8BBE\u7F6E\u5411\u5BFC\u5417\uFF1F","Yes, show me the setup wizard":"\u662F\u7684\uFF0C\u663E\u793A\u8BBE\u7F6E\u5411\u5BFC","No, I'm happy with my current setup":"\u4E0D\u7528\uFF0C\u6211\u6EE1\u610F\u5F53\u524D\u7684\u8BBE\u7F6E","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"\u5B66\u4E60\u5728 Task Genius \u4E2D\u521B\u5EFA\u548C\u683C\u5F0F\u5316\u4EFB\u52A1\u7684\u4E0D\u540C\u65B9\u5F0F\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u8868\u60C5\u7B26\u53F7\u6216 Dataview \u98CE\u683C\u7684\u8BED\u6CD5\u3002","Task Format Examples":"\u4EFB\u52A1\u683C\u5F0F\u793A\u4F8B","Basic Task":"\u57FA\u672C\u4EFB\u52A1","With Emoji Metadata":"\u4F7F\u7528\u8868\u60C5\u7B26\u53F7\u5143\u6570\u636E","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u622A\u6B62\u65E5\u671F\uFF0C\u{1F53A} = \u9AD8\u4F18\u5148\u7EA7\uFF0C#project/ = \u6587\u6863\u9879\u76EE\u6807\u7B7E","With Dataview Metadata":"\u4F7F\u7528 Dataview \u5143\u6570\u636E","Mixed Format":"\u6DF7\u5408\u683C\u5F0F","Combine emoji and dataview syntax as needed":"\u6839\u636E\u9700\u8981\u7EC4\u5408\u8868\u60C5\u7B26\u53F7\u548C Dataview \u8BED\u6CD5","Task Status Markers":"\u4EFB\u52A1\u72B6\u6001\u6807\u8BB0","Not started":"\u672A\u5F00\u59CB","In progress":"\u8FDB\u884C\u4E2D","Common Metadata Symbols":"\u5E38\u7528\u5143\u6570\u636E\u7B26\u53F7","Due date":"\u622A\u6B62\u65E5\u671F","Start date":"\u5F00\u59CB\u65E5\u671F","Scheduled date":"\u8BA1\u5212\u65E5\u671F","Higher priority":"\u8F83\u9AD8\u4F18\u5148\u7EA7","Lower priority":"\u8F83\u4F4E\u4F18\u5148\u7EA7","Recurring task":"\u91CD\u590D\u4EFB\u52A1","Project/tag":"\u9879\u76EE/\u6807\u7B7E","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"\u4F7F\u7528\u5FEB\u901F\u6355\u83B7\u9762\u677F\u4ECE Obsidian \u7684\u4EFB\u4F55\u5730\u65B9\u5FEB\u901F\u6355\u83B7\u4EFB\u52A1\u3002","Try Quick Capture":"\u5C1D\u8BD5\u5FEB\u901F\u6355\u83B7","Quick capture is now enabled in your configuration!":"\u5FEB\u901F\u6355\u83B7\u73B0\u5DF2\u5728\u60A8\u7684\u914D\u7F6E\u4E2D\u542F\u7528\uFF01","Failed to open quick capture. Please try again later.":"\u65E0\u6CD5\u6253\u5F00\u5FEB\u901F\u6355\u83B7\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002","Try It Yourself":"\u81EA\u5DF1\u8BD5\u8BD5","Practice creating a task with the format you prefer:":"\u7EC3\u4E60\u4F7F\u7528\u60A8\u559C\u6B22\u7684\u683C\u5F0F\u521B\u5EFA\u4EFB\u52A1\uFF1A","Practice Task":"\u7EC3\u4E60\u4EFB\u52A1","Enter a task using any of the formats shown above":"\u4F7F\u7528\u4E0A\u8FF0\u4EFB\u4F55\u683C\u5F0F\u8F93\u5165\u4EFB\u52A1","- [ ] Your task here":"- [ ] \u60A8\u7684\u4EFB\u52A1\u5728\u6B64","Validate Task":"\u9A8C\u8BC1\u4EFB\u52A1","Please enter a task to validate":"\u8BF7\u8F93\u5165\u4EFB\u52A1\u4EE5\u8FDB\u884C\u9A8C\u8BC1","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u8FD9\u770B\u8D77\u6765\u4E0D\u50CF\u6709\u6548\u7684\u4EFB\u52A1\u3002\u4EFB\u52A1\u5E94\u4EE5 '- [ ]' \u5F00\u5934","Valid task format!":"\u6709\u6548\u7684\u4EFB\u52A1\u683C\u5F0F\uFF01","Emoji metadata":"\u8868\u60C5\u7B26\u53F7\u5143\u6570\u636E","Dataview metadata":"Dataview \u5143\u6570\u636E","Project tags":"\u9879\u76EE\u6807\u7B7E","Detected features: ":"\u68C0\u6D4B\u5230\u7684\u529F\u80FD\uFF1A",Onboarding:"\u65B0\u624B\u5F15\u5BFC","Restart the welcome guide and setup wizard":"\u91CD\u65B0\u542F\u52A8\u6B22\u8FCE\u6307\u5357\u548C\u8BBE\u7F6E\u5411\u5BFC","Restart Onboarding":"\u91CD\u65B0\u5F00\u59CB\u5F15\u5BFC",Copy:"\u590D\u5236","Copied!":"\u5DF2\u590D\u5236\uFF01","MCP integration is only available on desktop":"MCP \u96C6\u6210\u4EC5\u5728\u684C\u9762\u7248\u53EF\u7528","MCP Server Status":"MCP \u670D\u52A1\u5668\u72B6\u6001","Enable MCP Server":"\u542F\u7528 MCP \u670D\u52A1\u5668","Start the MCP server to allow external tool connections":"\u542F\u52A8 MCP \u670D\u52A1\u5668\u4EE5\u5141\u8BB8\u5916\u90E8\u5DE5\u5177\u8FDE\u63A5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1A\u542F\u7528 MCP \u670D\u52A1\u5668\u5C06\u5141\u8BB8\u5916\u90E8 AI \u5DE5\u5177\u548C\u5E94\u7528\u7A0B\u5E8F\u8BBF\u95EE\u548C\u4FEE\u6539\u60A8\u7684\u4EFB\u52A1\u6570\u636E\u3002\u8FD9\u5305\u62EC\uFF1A \u2022 \u8BFB\u53D6\u6240\u6709\u4EFB\u52A1\u53CA\u5176\u8BE6\u7EC6\u4FE1\u606F \u2022 \u521B\u5EFA\u65B0\u4EFB\u52A1 \u2022 \u66F4\u65B0\u73B0\u6709\u4EFB\u52A1 \u2022 \u5220\u9664\u4EFB\u52A1 \u2022 \u8BBF\u95EE\u4EFB\u52A1\u5143\u6570\u636E\u548C\u5C5E\u6027 \u4EC5\u5728\u60A8\u4FE1\u4EFB\u5C06\u8FDE\u63A5\u5230 MCP \u670D\u52A1\u5668\u7684\u5E94\u7528\u7A0B\u5E8F\u65F6\u624D\u542F\u7528\u6B64\u529F\u80FD\u3002\u8BF7\u786E\u4FDD\u60A8\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C\u5B89\u5168\u3002 \u60A8\u8981\u7EE7\u7EED\u5417\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u670D\u52A1\u5668\u5DF2\u542F\u7528\u3002\u8BF7\u4FDD\u7BA1\u597D\u60A8\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C\uFF01","Server Configuration":"\u670D\u52A1\u5668\u914D\u7F6E",Host:"\u4E3B\u673A","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u670D\u52A1\u5668\u4E3B\u673A\u5730\u5740\u3002\u4F7F\u7528 127.0.0.1 \u4EC5\u9650\u672C\u5730\uFF0C\u4F7F\u7528 0.0.0.0 \u7528\u4E8E\u6240\u6709\u63A5\u53E3","Security Warning":"\u5B89\u5168\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A\u5207\u6362\u5230 0.0.0.0 \u5C06\u4F7F MCP \u670D\u52A1\u5668\u53EF\u4ECE\u5916\u90E8\u7F51\u7EDC\u8BBF\u95EE\u3002 \u8FD9\u53EF\u80FD\u4F1A\u5C06\u60A8\u7684 Obsidian \u6570\u636E\u66B4\u9732\u7ED9\uFF1A - \u60A8\u672C\u5730\u7F51\u7EDC\u4E0A\u7684\u5176\u4ED6\u8BBE\u5907 - \u5982\u679C\u60A8\u7684\u9632\u706B\u5899\u914D\u7F6E\u4E0D\u5F53\uFF0C\u53EF\u80FD\u66B4\u9732\u5230\u4E92\u8054\u7F51 **\u4EC5\u5728\u7B26\u5408\u4EE5\u4E0B\u6761\u4EF6\u65F6\u7EE7\u7EED\uFF1A** - \u60A8\u4E86\u89E3\u5B89\u5168\u5F71\u54CD - \u5DF2\u6B63\u786E\u914D\u7F6E\u9632\u706B\u5899 - \u56E0\u5408\u6CD5\u539F\u56E0\u9700\u8981\u5916\u90E8\u8BBF\u95EE \u60A8\u786E\u5B9A\u8981\u7EE7\u7EED\u5417\uFF1F`,"Yes, I understand the risks":"\u662F\u7684\uFF0C\u6211\u4E86\u89E3\u98CE\u9669","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u4E3B\u673A\u5DF2\u66F4\u6539\u4E3A 0.0.0.0\u3002\u670D\u52A1\u5668\u73B0\u5728\u53EF\u4ECE\u5916\u90E8\u7F51\u7EDC\u8BBF\u95EE\u3002",Port:"\u7AEF\u53E3","Server port number (default: 7777)":"\u670D\u52A1\u5668\u7AEF\u53E3\u53F7\uFF08\u9ED8\u8BA4\uFF1A7777\uFF09",Authentication:"\u8EAB\u4EFD\u9A8C\u8BC1","Authentication Token":"\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C","Bearer token for authenticating MCP requests (keep this secret)":"\u7528\u4E8E\u9A8C\u8BC1 MCP \u8BF7\u6C42\u7684 Bearer \u4EE4\u724C\uFF08\u8BF7\u4FDD\u5BC6\uFF09",Show:"\u663E\u793A",Hide:"\u9690\u85CF","Token copied to clipboard":"\u4EE4\u724C\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",Regenerate:"\u91CD\u65B0\u751F\u6210","New token generated":"\u5DF2\u751F\u6210\u65B0\u4EE4\u724C","Advanced Settings":"\u9AD8\u7EA7\u8BBE\u7F6E","Enable CORS":"\u542F\u7528 CORS","Allow cross-origin requests (required for web clients)":"\u5141\u8BB8\u8DE8\u6E90\u8BF7\u6C42\uFF08Web \u5BA2\u6237\u7AEF\u6240\u9700\uFF09","Log Level":"\u65E5\u5FD7\u7EA7\u522B","Logging verbosity for debugging":"\u7528\u4E8E\u8C03\u8BD5\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6",Error:"\u9519\u8BEF",Warning:"\u8B66\u544A",Info:"\u4FE1\u606F",Debug:"\u8C03\u8BD5","Server Actions":"\u670D\u52A1\u5668\u64CD\u4F5C","Test Connection":"\u6D4B\u8BD5\u8FDE\u63A5","Test the MCP server connection":"\u6D4B\u8BD5 MCP \u670D\u52A1\u5668\u8FDE\u63A5",Test:"\u6D4B\u8BD5","Testing...":"\u6D4B\u8BD5\u4E2D...","Connection test successful! MCP server is working.":"\u8FDE\u63A5\u6D4B\u8BD5\u6210\u529F\uFF01MCP \u670D\u52A1\u5668\u6B63\u5728\u5DE5\u4F5C\u3002","Connection test failed: ":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25\uFF1A","Restart Server":"\u91CD\u65B0\u542F\u52A8\u670D\u52A1\u5668","Stop and restart the MCP server":"\u505C\u6B62\u5E76\u91CD\u65B0\u542F\u52A8 MCP \u670D\u52A1\u5668",Restart:"\u91CD\u65B0\u542F\u52A8","MCP server restarted":"MCP \u670D\u52A1\u5668\u5DF2\u91CD\u65B0\u542F\u52A8","Failed to restart server: ":"\u91CD\u65B0\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25\uFF1A","Use Next Available Port":"\u4F7F\u7528\u4E0B\u4E00\u4E2A\u53EF\u7528\u7AEF\u53E3","Port updated to ":"\u7AEF\u53E3\u5DF2\u66F4\u65B0\u4E3A ","No available port found in range":"\u5728\u8303\u56F4\u5185\u627E\u4E0D\u5230\u53EF\u7528\u7684\u7AEF\u53E3","Client Configuration":"\u5BA2\u6237\u7AEF\u914D\u7F6E","Authentication Method":"\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5","Choose the authentication method for client configurations":"\u9009\u62E9\u5BA2\u6237\u7AEF\u914D\u7F6E\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7EC4\u5408 Bearer\uFF08\u63A8\u8350\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u81EA\u5B9A\u4E49\u5934\u90E8","Supported Authentication Methods:":"\u652F\u6301\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5\uFF1A","API Documentation":"API \u6587\u6863","Server Endpoint":"\u670D\u52A1\u5668\u7AEF\u70B9","Copy URL":"\u590D\u5236 URL","Available Tools":"\u53EF\u7528\u5DE5\u5177","Loading tools...":"\u52A0\u8F7D\u5DE5\u5177\u4E2D...","No tools available":"\u6CA1\u6709\u53EF\u7528\u7684\u5DE5\u5177","Failed to load tools. Is the MCP server running?":"\u52A0\u8F7D\u5DE5\u5177\u5931\u8D25\u3002MCP \u670D\u52A1\u5668\u662F\u5426\u6B63\u5728\u8FD0\u884C\uFF1F","Example Request":"\u793A\u4F8B\u8BF7\u6C42","MCP Server not initialized":"MCP \u670D\u52A1\u5668\u672A\u521D\u59CB\u5316",Running:"\u8FD0\u884C\u4E2D",Stopped:"\u5DF2\u505C\u6B62",Uptime:"\u8FD0\u884C\u65F6\u95F4",Requests:"\u8BF7\u6C42\u6570","Toggle this to enable Org-mode style quick capture panel.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528 Org-mode \u98CE\u683C\u7684\u5FEB\u901F\u6355\u83B7\u9762\u677F\u3002","Auto-add task prefix":"\u81EA\u52A8\u6DFB\u52A0\u4EFB\u52A1\u524D\u7F00","Automatically add task checkbox prefix to captured content":"\u81EA\u52A8\u5728\u6355\u83B7\u7684\u5185\u5BB9\u524D\u6DFB\u52A0\u4EFB\u52A1\u590D\u9009\u6846\u524D\u7F00","Task prefix format":"\u4EFB\u52A1\u524D\u7F00\u683C\u5F0F","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u5728\u6355\u83B7\u5185\u5BB9\u524D\u6DFB\u52A0\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'- [ ]' \u7528\u4E8E\u4EFB\u52A1\uFF0C'- ' \u7528\u4E8E\u5217\u8868\u9879\uFF09","Search settings...":"\u641C\u7D22\u8BBE\u7F6E...","Search settings":"\u641C\u7D22\u8BBE\u7F6E","Clear search":"\u6E05\u9664\u641C\u7D22","Search results":"\u641C\u7D22\u7ED3\u679C","No settings found":"\u627E\u4E0D\u5230\u8BBE\u7F6E","Project Tree View Settings":"\u9879\u76EE\u6811\u89C6\u56FE\u8BBE\u7F6E","Configure how projects are displayed in tree view.":"\u914D\u7F6E\u9879\u76EE\u5728\u6811\u89C6\u56FE\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","Default project view mode":"\u9ED8\u8BA4\u9879\u76EE\u89C6\u56FE\u6A21\u5F0F","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u9009\u62E9\u9ED8\u8BA4\u4EE5\u5E73\u9762\u5217\u8868\u6216\u5C42\u7EA7\u6811\u663E\u793A\u9879\u76EE\u3002","Auto-expand project tree":"\u81EA\u52A8\u5C55\u5F00\u9879\u76EE\u6811","Automatically expand all project nodes when opening the project view in tree mode.":"\u5728\u6811\u6A21\u5F0F\u4E2D\u6253\u5F00\u9879\u76EE\u89C6\u56FE\u65F6\u81EA\u52A8\u5C55\u5F00\u6240\u6709\u9879\u76EE\u8282\u70B9\u3002","Show empty project folders":"\u663E\u793A\u7A7A\u7684\u9879\u76EE\u6587\u4EF6\u5939","Display project folders even if they don't contain any tasks.":"\u5373\u4F7F\u9879\u76EE\u6587\u4EF6\u5939\u4E0D\u5305\u542B\u4EFB\u4F55\u4EFB\u52A1\u4E5F\u663E\u793A\u3002","Project path separator":"\u9879\u76EE\u8DEF\u5F84\u5206\u9694\u7B26","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u7528\u4E8E\u5206\u9694\u9879\u76EE\u5C42\u7EA7\u7684\u5B57\u7B26\uFF08\u4F8B\u5982 'Project/SubProject' \u4E2D\u7684 '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u542F\u7528\u52A8\u6001\u5143\u6570\u636E\u5B9A\u4F4D","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u667A\u80FD\u5B9A\u4F4D\u4EFB\u52A1\u5143\u6570\u636E\u3002\u542F\u7528\u65F6\uFF0C\u5143\u6570\u636E\u4F1A\u4E0E\u77ED\u4EFB\u52A1\u663E\u793A\u5728\u540C\u4E00\u884C\uFF0C\u957F\u4EFB\u52A1\u5219\u663E\u793A\u5728\u4E0B\u65B9\u3002\u7981\u7528\u65F6\uFF0C\u5143\u6570\u636E\u603B\u662F\u663E\u793A\u5728\u4EFB\u52A1\u5185\u5BB9\u4E0B\u65B9\u3002","Toggle tree/list view":"\u5207\u6362\u6811\u72B6/\u5217\u8868\u89C6\u56FE","Clear date":"\u6E05\u9664\u65E5\u671F","Clear priority":"\u6E05\u9664\u4F18\u5148\u7EA7","Clear all tags":"\u6E05\u9664\u6240\u6709\u6807\u7B7E","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u4F18\u5148\u7EA7","\u23EB High priority":"\u23EB \u9AD8\u4F18\u5148\u7EA7","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u4F18\u5148\u7EA7","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u4F18\u5148\u7EA7","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u4F18\u5148\u7EA7","Fixed File":"\u56FA\u5B9A\u6587\u4EF6","Save to Inbox.md":"\u4FDD\u5B58\u81F3 Inbox.md","Open Task Genius Setup":"\u6253\u5F00 Task Genius \u8BBE\u7F6E","MCP Integration":"MCP \u96C6\u6210",Beginner:"\u521D\u5B66\u8005","Basic task management with essential features":"\u57FA\u7840\u4EFB\u52A1\u7BA1\u7406\u4E0E\u5FC5\u8981\u529F\u80FD","Basic progress bars":"\u57FA\u7840\u8FDB\u5EA6\u6761","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u8981\u89C6\u56FE\uFF08\u6536\u4EF6\u7BB1\u3001\u9884\u6D4B\u3001\u9879\u76EE\uFF09","Simple task status tracking":"\u7B80\u5355\u4EFB\u52A1\u72B6\u6001\u8DDF\u8E2A","Quick task capture":"\u5FEB\u901F\u4EFB\u52A1\u6355\u83B7","Date picker functionality":"\u65E5\u671F\u9009\u62E9\u529F\u80FD","Project management with enhanced workflows":"\u9879\u76EE\u7BA1\u7406\u4E0E\u589E\u5F3A\u5DE5\u4F5C\u6D41","Full progress bar customization":"\u5B8C\u6574\u8FDB\u5EA6\u6761\u81EA\u5B9A\u4E49","Extended views (Kanban, Calendar, Table)":"\u6269\u5C55\u89C6\u56FE\uFF08\u770B\u677F\u3001\u65E5\u5386\u3001\u8868\u683C\uFF09","Project management features":"\u9879\u76EE\u7BA1\u7406\u529F\u80FD","Basic workflow automation":"\u57FA\u7840\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316","Advanced filtering and sorting":"\u9AD8\u7EA7\u7B5B\u9009\u4E0E\u6392\u5E8F","Power User":"\u9AD8\u7EA7\u7528\u6237","Full-featured experience with all capabilities":"\u5B8C\u6574\u529F\u80FD\u4F53\u9A8C\u4E0E\u6240\u6709\u80FD\u529B","All views and advanced configurations":"\u6240\u6709\u89C6\u56FE\u4E0E\u9AD8\u7EA7\u914D\u7F6E","Complex workflow definitions":"\u590D\u6742\u5DE5\u4F5C\u6D41\u5B9A\u4E49","Reward and habit tracking systems":"\u5956\u52B1\u4E0E\u4E60\u60EF\u8DDF\u8E2A\u7CFB\u7EDF","Performance optimizations":"\u6027\u80FD\u4F18\u5316","Advanced integrations":"\u9AD8\u7EA7\u96C6\u6210","Experimental features":"\u5B9E\u9A8C\u6027\u529F\u80FD","Timeline and calendar sync":"\u65F6\u95F4\u7EBF\u4E0E\u65E5\u5386\u540C\u6B65","Not configured":"\u672A\u914D\u7F6E",Custom:"\u81EA\u5B9A\u4E49","Custom views created":"\u5DF2\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Progress bar settings modified":"\u5DF2\u4FEE\u6539\u8FDB\u5EA6\u6761\u8BBE\u7F6E","Task status settings configured":"\u5DF2\u914D\u7F6E\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Quick capture configured":"\u5DF2\u914D\u7F6E\u5FEB\u901F\u6355\u83B7","Workflow settings enabled":"\u5DF2\u542F\u7528\u5DE5\u4F5C\u6D41\u8BBE\u7F6E","Advanced features enabled":"\u5DF2\u542F\u7528\u9AD8\u7EA7\u529F\u80FD","File parsing customized":"\u5DF2\u81EA\u5B9A\u4E49\u6587\u4EF6\u89E3\u6790"},YO=z$});var $$,GO,KO=D(()=>{$$={"File Metadata Inheritance":"\u6A94\u6848\u5143\u6578\u64DA\u7E7C\u627F","Configure how tasks inherit metadata from file frontmatter":"\u914D\u7F6E\u4EFB\u52D9\u5982\u4F55\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u7E7C\u627F\u5C6C\u6027","Enable file metadata inheritance":"\u555F\u7528\u6A94\u6848\u5143\u6578\u64DA\u7E7C\u627F","Allow tasks to inherit metadata properties from their file's frontmatter":"\u5141\u8A31\u4EFB\u52D9\u5F9E\u5176\u6A94\u6848\u7684\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u7E7C\u627F\u5C6C\u6027","Inherit from frontmatter":"\u5F9E\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u7576\u4EFB\u52D9\u4E0A\u672A\u660E\u78BA\u8A2D\u5B9A\u6642\uFF0C\u4EFB\u52D9\u6703\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u7E7C\u627F\u512A\u5148\u7D1A\u3001\u74B0\u5883\u7B49\u5C6C\u6027","Inherit from frontmatter for subtasks":"\u5B50\u4EFB\u52D9\u5F9E\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u5141\u8A31\u5B50\u4EFB\u52D9\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u7E7C\u627F\u5C6C\u6027\u3002\u505C\u7528\u6642\uFF0C\u53EA\u6709\u9802\u7D1A\u4EFB\u52D9\u7E7C\u627F\u6A94\u6848\u5143\u6578\u64DA","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u5168\u9762\u7684 Obsidian \u4EFB\u52D9\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5177\u6709\u9032\u5EA6\u689D\u3001\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u9032\u968E\u4EFB\u52D9\u8FFD\u8E64\u529F\u80FD\u3002","Show progress bar":"\u986F\u793A\u9032\u5EA6\u689D","Toggle this to show the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u986F\u793A\u9032\u5EA6\u689D\u3002","Support hover to show progress info":"\u652F\u63F4\u61F8\u505C\u986F\u793A\u9032\u5EA6\u8CC7\u8A0A","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u61F8\u505C\u65BC\u9032\u5EA6\u689D\u4E0A\u6642\u986F\u793A\u9032\u5EA6\u8CC7\u8A0A\u3002","Add progress bar to non-task bullet":"\u70BA\u975E\u4EFB\u52D9\u9805\u76EE\u6DFB\u52A0\u9032\u5EA6\u689D","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u70BA\u666E\u901A\u5217\u8868\u9805\u76EE\uFF08\u975E\u4EFB\u52D9\u9805\u76EE\uFF09\u6DFB\u52A0\u9032\u5EA6\u689D\u3002","Add progress bar to Heading":"\u70BA\u6A19\u984C\u6DFB\u52A0\u9032\u5EA6\u689D","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u70BA\u6A19\u984C\u4E0B\u7684\u4EFB\u52D9\u6DFB\u52A0\u9032\u5EA6\u689D\u3002","Enable heading progress bars":"\u555F\u7528\u6A19\u984C\u9032\u5EA6\u689D","Add progress bars to headings to show progress of all tasks under that heading.":"\u70BA\u6A19\u984C\u6DFB\u52A0\u9032\u5EA6\u689D\u4EE5\u986F\u793A\u8A72\u6A19\u984C\u4E0B\u6240\u6709\u4EFB\u52D9\u7684\u9032\u5EA6\u3002","Auto complete parent task":"\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9\u3002","Mark parent as 'In Progress' when partially complete":"\u7576\u90E8\u5206\u5B8C\u6210\u6642\u5C07\u7236\u4EFB\u52D9\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u7576\u90E8\u5206\u4F46\u975E\u5168\u90E8\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\uFF0C\u5C07\u7236\u4EFB\u52D9\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D\u3002\u50C5\u5728\u555F\u7528\u300C\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9\u300D\u6642\u6709\u6548\u3002","Count sub children level of current Task":"\u8A08\u7B97\u7576\u524D\u4EFB\u52D9\u7684\u5B50\u4EFB\u52D9\u5C64\u7D1A","Toggle this to allow this plugin to count sub tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Checkbox Status Settings":"\u4EFB\u52D9\u72C0\u614B\u8A2D\u5B9A","Select a predefined task status collection or customize your own":"\u9078\u64C7\u9810\u5B9A\u7FA9\u7684\u4EFB\u52D9\u72C0\u614B\u96C6\u5408\u6216\u81EA\u5B9A\u7FA9\u60A8\u81EA\u5DF1\u7684","Completed task markers":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"x|X"',"Planned task markers":"\u8A08\u5283\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent planned tasks. Example: "?"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u8A08\u5283\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"?"',"In progress task markers":"\u9032\u884C\u4E2D\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u9032\u884C\u4E2D\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A">|/"',"Abandoned task markers":"\u5DF2\u653E\u68C4\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u5DF2\u653E\u68C4\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u672A\u958B\u59CB\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u9810\u8A2D\u70BA\u7A7A\u683C " "',"Count other statuses as":"\u5C07\u5176\u4ED6\u72C0\u614B\u8A08\u70BA",'Select the status to count other statuses as. Default is "Not Started".':"\u9078\u64C7\u5C07\u5176\u4ED6\u72C0\u614B\u8A08\u70BA\u54EA\u7A2E\u72C0\u614B\u3002\u9810\u8A2D\u70BA\u300C\u672A\u958B\u59CB\u300D\u3002","Task Counting Settings":"\u4EFB\u52D9\u8A08\u6578\u8A2D\u5B9A","Exclude specific task markers":"\u6392\u9664\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18",'Specify task markers to exclude from counting. Example: "?|/"':'\u6307\u5B9A\u8981\u5F9E\u8A08\u6578\u4E2D\u6392\u9664\u7684\u4EFB\u52D9\u6A19\u8A18\u3002\u4F8B\u5982\uFF1A"?|/"',"Only count specific task markers":"\u50C5\u8A08\u6578\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18","Toggle this to only count specific task markers":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u50C5\u8A08\u6578\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18","Specific task markers to count":"\u8981\u8A08\u6578\u7684\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18",'Specify which task markers to count. Example: "x|X|>|/"':'\u6307\u5B9A\u8981\u8A08\u6578\u7684\u4EFB\u52D9\u6A19\u8A18\u3002\u4F8B\u5982\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u689D\u4EF6\u6027\u9032\u5EA6\u689D\u986F\u793A","Hide progress bars based on conditions":"\u6839\u64DA\u689D\u4EF6\u96B1\u85CF\u9032\u5EA6\u689D","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6839\u64DA\u6A19\u7C64\u3001\u8CC7\u6599\u593E\u6216\u5143\u6578\u64DA\u96B1\u85CF\u9032\u5EA6\u689D\u3002","Hide by tags":"\u6309\u6A19\u7C64\u96B1\u85CF",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF0C\u4E0D\u5E36 #\uFF09\u3002\u4F8B\u5982\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u6309\u8CC7\u6599\u593E\u96B1\u85CF",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u8CC7\u6599\u593E\u8DEF\u5F91\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002\u4F8B\u5982\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u6309\u5143\u6578\u64DA\u96B1\u85CF",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u524D\u7F6E\u5143\u6578\u64DA\u3002\u4F8B\u5982\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u4EFB\u52D9\u72C0\u614B\u5207\u63DB\u5668","Enable task status switcher":"\u555F\u7528\u4EFB\u52D9\u72C0\u614B\u5207\u63DB\u5668","Enable/disable the ability to cycle through task states by clicking.":"\u555F\u7528/\u7981\u7528\u901A\u904E\u9EDE\u64CA\u5FAA\u74B0\u5207\u63DB\u4EFB\u52D9\u72C0\u614B\u7684\u529F\u80FD\u3002","Enable custom task marks":"\u555F\u7528\u81EA\u5B9A\u7FA9\u4EFB\u52D9\u6A19\u8A18","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u7528\u6A23\u5F0F\u5316\u6587\u672C\u6A19\u8A18\u66FF\u63DB\u9810\u8A2D\u8907\u9078\u6846\uFF0C\u9EDE\u64CA\u6642\u9075\u5FAA\u60A8\u7684\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u3002","Enable cycle complete status":"\u555F\u7528\u5FAA\u74B0\u5B8C\u6210\u72C0\u614B","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u555F\u7528/\u7981\u7528\u6309\u4E0B\u6A19\u8A18\u6642\u81EA\u52D5\u5FAA\u74B0\u5207\u63DB\u4EFB\u52D9\u72C0\u614B\u7684\u529F\u80FD\u3002","Always cycle new tasks":"\u59CB\u7D42\u5FAA\u74B0\u65B0\u4EFB\u52D9","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u555F\u7528\u6642\uFF0C\u65B0\u63D2\u5165\u7684\u4EFB\u52D9\u5C07\u7ACB\u5373\u5FAA\u74B0\u5230\u4E0B\u4E00\u500B\u72C0\u614B\u3002\u7981\u7528\u6642\uFF0C\u5E36\u6709\u6709\u6548\u6A19\u8A18\u7684\u65B0\u63D2\u5165\u4EFB\u52D9\u5C07\u4FDD\u6301\u5176\u539F\u59CB\u6A19\u8A18\u3002","Checkbox Status Cycle and Marks":"\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u6A19\u8A18","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u5B9A\u7FA9\u4EFB\u52D9\u72C0\u614B\u53CA\u5176\u5C0D\u61C9\u7684\u6A19\u8A18\u3002\u5F9E\u4E0A\u5230\u4E0B\u7684\u9806\u5E8F\u5B9A\u7FA9\u4E86\u5FAA\u74B0\u9806\u5E8F\u3002","Completed Task Mover":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Enable completed task mover":"\u555F\u7528\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Toggle this to enable commands for moving completed tasks to another file.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u5C07\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Task marker type":"\u4EFB\u52D9\u6A19\u8A18\u985E\u578B","Choose what type of marker to add to moved tasks":"\u9078\u64C7\u8981\u6DFB\u52A0\u5230\u5DF2\u79FB\u52D5\u4EFB\u52D9\u7684\u6A19\u8A18\u985E\u578B","Version marker text":"\u7248\u672C\u6A19\u8A18\u6587\u672C","Text to append to tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u4EFB\u52D9\u6642\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'version 1.0'\uFF09","Date marker text":"\u65E5\u671F\u6A19\u8A18\u6587\u672C","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u79FB\u52D5\u4EFB\u52D9\u6642\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'archived on 2023-12-31'\uFF09","Custom marker text":"\u81EA\u5B9A\u7FA9\u6A19\u8A18\u6587\u672C","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u4F7F\u7528 {{DATE:format}} \u9032\u884C\u65E5\u671F\u683C\u5F0F\u5316\uFF08\u4F8B\u5982\uFF0C{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u5C07\u5DF2\u653E\u68C4\u4EFB\u52D9\u8996\u70BA\u5DF2\u5B8C\u6210","If enabled, abandoned tasks will be treated as completed.":"\u5982\u679C\u555F\u7528\uFF0C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9\u5C07\u88AB\u8996\u70BA\u5DF2\u5B8C\u6210\u3002","Complete all moved tasks":"\u5B8C\u6210\u6240\u6709\u5DF2\u79FB\u52D5\u7684\u4EFB\u52D9","If enabled, all moved tasks will be marked as completed.":"\u5982\u679C\u555F\u7528\uFF0C\u6240\u6709\u5DF2\u79FB\u52D5\u7684\u4EFB\u52D9\u5C07\u88AB\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210\u3002","With current file link":"\u5E36\u6709\u7576\u524D\u6587\u4EF6\u9023\u7D50","A link to the current file will be added to the parent task of the moved tasks.":"\u7576\u524D\u6587\u4EF6\u7684\u9023\u7D50\u5C07\u6DFB\u52A0\u5230\u5DF2\u79FB\u52D5\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u3002",Donate:"\u6350\u8D08","If you like this plugin, consider donating to support continued development:":"\u5982\u679C\u60A8\u559C\u6B61\u9019\u500B\u63D2\u4EF6\uFF0C\u8ACB\u8003\u616E\u6350\u8D08\u4EE5\u652F\u6301\u6301\u7E8C\u958B\u767C\uFF1A","Add number to the Progress Bar":"\u5728\u9032\u5EA6\u689D\u4E2D\u6DFB\u52A0\u6578\u5B57","Toggle this to allow this plugin to add tasks number to progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u9032\u5EA6\u689D\u4E2D\u6DFB\u52A0\u4EFB\u52D9\u6578\u91CF\u3002","Show percentage":"\u986F\u793A\u767E\u5206\u6BD4","Toggle this to allow this plugin to show percentage in the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u9032\u5EA6\u689D\u4E2D\u986F\u793A\u767E\u5206\u6BD4\u3002","Customize progress text":"\u81EA\u5B9A\u7FA9\u9032\u5EA6\u6587\u672C","Toggle this to customize text representation for different progress percentage ranges.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u81EA\u5B9A\u7FA9\u4E0D\u540C\u9032\u5EA6\u767E\u5206\u6BD4\u7BC4\u570D\u7684\u6587\u672C\u8868\u793A\u3002","Progress Ranges":"\u9032\u5EA6\u7BC4\u570D","Define progress ranges and their corresponding text representations.":"\u5B9A\u7FA9\u9032\u5EA6\u7BC4\u570D\u53CA\u5176\u5C0D\u61C9\u7684\u6587\u672C\u8868\u793A\u3002","Add new range":"\u6DFB\u52A0\u65B0\u7BC4\u570D","Add a new progress percentage range with custom text":"\u6DFB\u52A0\u5E36\u6709\u81EA\u5B9A\u7FA9\u6587\u672C\u7684\u65B0\u9032\u5EA6\u767E\u5206\u6BD4\u7BC4\u570D","Min percentage (0-100)":"\u6700\u5C0F\u767E\u5206\u6BD4 (0-100)","Max percentage (0-100)":"\u6700\u5927\u767E\u5206\u6BD4 (0-100)","Text template (use {{PROGRESS}})":"\u6587\u672C\u6A21\u677F\uFF08\u4F7F\u7528 {{PROGRESS}}\uFF09","Reset to defaults":"\u91CD\u7F6E\u70BA\u9810\u8A2D\u503C","Reset progress ranges to default values":"\u5C07\u9032\u5EA6\u7BC4\u570D\u91CD\u7F6E\u70BA\u9810\u8A2D\u503C",Reset:"\u91CD\u7F6E","Priority Picker Settings":"\u512A\u5148\u7D1A\u9078\u64C7\u5668\u8A2D\u5B9A","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u5207\u63DB\u4EE5\u555F\u7528\u8868\u60C5\u7B26\u865F\u548C\u5B57\u6BCD\u683C\u5F0F\u512A\u5148\u7D1A\u7684\u512A\u5148\u7D1A\u9078\u64C7\u5668\u4E0B\u62C9\u83DC\u55AE\u3002","Enable priority picker":"\u555F\u7528\u512A\u5148\u7D1A\u9078\u64C7\u5668","Enable priority keyboard shortcuts":"\u555F\u7528\u512A\u5148\u7D1A\u9375\u76E4\u5FEB\u6377\u9375","Toggle to enable keyboard shortcuts for setting task priorities.":"\u5207\u63DB\u4EE5\u555F\u7528\u8A2D\u7F6E\u4EFB\u52D9\u512A\u5148\u7D1A\u7684\u9375\u76E4\u5FEB\u6377\u9375\u3002","Date picker":"\u65E5\u671F\u9078\u64C7\u5668","Enable date picker":"\u555F\u7528\u65E5\u671F\u9078\u64C7\u5668","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u7684\u65E5\u671F\u9078\u64C7\u5668\u3002\u9019\u5C07\u5728\u60A8\u7684\u4EFB\u52D9\u65C1\u6DFB\u52A0\u4E00\u500B\u65E5\u66C6\u5716\u6A19\uFF0C\u60A8\u53EF\u4EE5\u9EDE\u64CA\u5B83\u4F86\u9078\u64C7\u65E5\u671F\u3002","Date mark":"\u65E5\u671F\u6A19\u8A18","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u7528\u65BC\u8B58\u5225\u65E5\u671F\u7684\u8868\u60C5\u7B26\u865F\u6A19\u8A18\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u9017\u865F\u5206\u9694\u7684\u591A\u500B\u8868\u60C5\u7B26\u865F\u3002","Quick capture":"\u5FEB\u901F\u6355\u7372","Enable quick capture":"\u555F\u7528\u5FEB\u901F\u6355\u7372","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528 Org-mode \u98A8\u683C\u7684\u5FEB\u901F\u6355\u7372\u9762\u677F\u3002\u6309 Alt+C \u6253\u958B\u6355\u7372\u9762\u677F\u3002","Target file":"\u76EE\u6A19\u6587\u4EF6","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u6355\u7372\u7684\u6587\u672C\u5C07\u4FDD\u5B58\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F91\uFF0C\u4F8B\u5982\uFF0C'folder/Quick Capture.md'","Placeholder text":"\u4F54\u4F4D\u7B26\u6587\u672C","Placeholder text to display in the capture panel":"\u5728\u6355\u7372\u9762\u677F\u4E2D\u986F\u793A\u7684\u4F54\u4F4D\u7B26\u6587\u672C","Append to file":"\u9644\u52A0\u5230\u6587\u4EF6","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u5982\u679C\u555F\u7528\uFF0C\u6355\u7372\u7684\u6587\u672C\u5C07\u9644\u52A0\u5230\u76EE\u6A19\u6587\u4EF6\u3002\u5982\u679C\u7981\u7528\uFF0C\u5B83\u5C07\u66FF\u63DB\u6587\u4EF6\u5167\u5BB9\u3002","Task Filter":"\u4EFB\u52D9\u904E\u6FFE\u5668","Enable Task Filter":"\u555F\u7528\u4EFB\u52D9\u904E\u6FFE\u5668","Toggle this to enable the task filter panel":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u904E\u6FFE\u5668\u9762\u677F","Preset Filters":"\u9810\u8A2D\u904E\u6FFE\u5668","Create and manage preset filters for quick access to commonly used task filters.":"\u5275\u5EFA\u548C\u7BA1\u7406\u9810\u8A2D\u904E\u6FFE\u5668\uFF0C\u4EE5\u5FEB\u901F\u8A2A\u554F\u5E38\u7528\u7684\u4EFB\u52D9\u904E\u6FFE\u5668\u3002","Edit Filter: ":"\u7DE8\u8F2F\u904E\u6FFE\u5668\uFF1A","Filter name":"\u904E\u6FFE\u5668\u540D\u7A31","Checkbox Status":"\u4EFB\u52D9\u72C0\u614B","Include or exclude tasks based on their status":"\u6839\u64DA\u4EFB\u52D9\u72C0\u614B\u5305\u542B\u6216\u6392\u9664\u4EFB\u52D9","Include Completed Tasks":"\u5305\u542B\u5DF2\u5B8C\u6210\u4EFB\u52D9","Include In Progress Tasks":"\u5305\u542B\u9032\u884C\u4E2D\u4EFB\u52D9","Include Abandoned Tasks":"\u5305\u542B\u5DF2\u653E\u68C4\u4EFB\u52D9","Include Not Started Tasks":"\u5305\u542B\u672A\u958B\u59CB\u4EFB\u52D9","Include Planned Tasks":"\u5305\u542B\u8A08\u5283\u4EFB\u52D9","Related Tasks":"\u76F8\u95DC\u4EFB\u52D9","Include parent, child, and sibling tasks in the filter":"\u5728\u904E\u6FFE\u5668\u4E2D\u5305\u542B\u7236\u4EFB\u52D9\u3001\u5B50\u4EFB\u52D9\u548C\u540C\u7D1A\u4EFB\u52D9","Include Parent Tasks":"\u5305\u542B\u7236\u4EFB\u52D9","Include Child Tasks":"\u5305\u542B\u5B50\u4EFB\u52D9","Include Sibling Tasks":"\u5305\u542B\u540C\u7D1A\u4EFB\u52D9","Advanced Filter":"\u9032\u968E\u904E\u6FFE\u5668","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u4F7F\u7528\u5E03\u723E\u904B\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1'","Filter query":"\u904E\u6FFE\u67E5\u8A62","Filter out tasks":"\u904E\u6FFE\u6389\u4EFB\u52D9","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u555F\u7528\uFF0C\u7B26\u5408\u67E5\u8A62\u7684\u4EFB\u52D9\u5C07\u88AB\u96B1\u85CF\uFF0C\u5426\u5247\u5C07\u88AB\u986F\u793A",Save:"\u4FDD\u5B58",Cancel:"\u53D6\u6D88","Add Status":"\u6DFB\u52A0\u72C0\u614B","Say Thank You":"\u8B1D\u8B1D","Hide filter panel":"\u96B1\u85CF\u904E\u6FFE\u5668\u9762\u677F","Show filter panel":"\u986F\u793A\u904E\u6FFE\u5668\u9762\u677F","Filter Tasks":"\u904E\u6FFE\u4EFB\u52D9","Preset filters":"\u9810\u8A2D\u904E\u6FFE\u5668","Select a saved filter preset to apply":"\u9078\u64C7\u4E00\u500B\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u9810\u8A2D\u4EE5\u61C9\u7528","Select a preset...":"\u9078\u64C7\u4E00\u500B\u9810\u8A2D...",Query:"\u67E5\u8A62","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u4F7F\u7528\u5E03\u723E\u904B\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u652F\u6301 >, <, =, >=, <=, != \u7528\u65BC PRIORITY \u548C DATE\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u555F\u7528\uFF0C\u5339\u914D\u67E5\u8A62\u7684\u4EFB\u52D9\u5C07\u88AB\u96B1\u85CF\uFF0C\u5426\u5247\u5C07\u986F\u793A",Completed:"\u5DF2\u5B8C\u6210","In Progress":"\u9032\u884C\u4E2D",Abandoned:"\u5DF2\u653E\u68C4","Not Started":"\u672A\u958B\u59CB",Planned:"\u8A08\u5283","Include Related Tasks":"\u5305\u542B\u76F8\u95DC\u4EFB\u52D9","Parent Tasks":"\u7236\u4EFB\u52D9","Child Tasks":"\u5B50\u4EFB\u52D9","Sibling Tasks":"\u540C\u7D1A\u4EFB\u52D9",Apply:"\u61C9\u7528","New Preset":"\u65B0\u9810\u8A2D","Preset saved":"\u9810\u8A2D\u5DF2\u4FDD\u5B58","No changes to save":"\u6C92\u6709\u66F4\u6539\u8981\u4FDD\u5B58",Close:"\u95DC\u9589","Capture to":"\u6355\u7372\u5230",Capture:"\u6355\u7372","Capture thoughts, tasks, or ideas...":"\u6355\u7372\u60F3\u6CD5\u3001\u4EFB\u52D9\u6216\u60F3\u6CD5...",Tomorrow:"\u660E\u5929","In 2 days":"2\u5929\u5F8C","In 3 days":"3\u5929\u5F8C","In 5 days":"5\u5929\u5F8C","In 1 week":"1\u9031\u5F8C","In 10 days":"10\u5929\u5F8C","In 2 weeks":"2\u9031\u5F8C","In 1 month":"1\u500B\u6708\u5F8C","In 2 months":"2\u500B\u6708\u5F8C","In 3 months":"3\u500B\u6708\u5F8C","In 6 months":"6\u500B\u6708\u5F8C","In 1 year":"1\u5E74\u5F8C","In 5 years":"5\u5E74\u5F8C","In 10 years":"10\u5E74\u5F8C","Highest priority":"\u6700\u9AD8\u512A\u5148\u7D1A","High priority":"\u9AD8\u512A\u5148\u7D1A","Medium priority":"\u4E2D\u512A\u5148\u7D1A","No priority":"\u7121\u512A\u5148\u7D1A","Low priority":"\u4F4E\u512A\u5148\u7D1A","Lowest priority":"\u6700\u4F4E\u512A\u5148\u7D1A","Priority A":"\u512A\u5148\u7D1AA","Priority B":"\u512A\u5148\u7D1AB","Priority C":"\u512A\u5148\u7D1AC","Task Priority":"\u4EFB\u52D9\u512A\u5148\u7D1A","Remove Priority":"\u79FB\u9664\u512A\u5148\u7D1A","Cycle task status forward":"\u5FAA\u74B0\u4EFB\u52D9\u72C0\u614B\u5411\u524D","Cycle task status backward":"\u5FAA\u74B0\u4EFB\u52D9\u72C0\u614B\u5411\u5F8C","Remove priority":"\u79FB\u9664\u512A\u5148\u7D1A","Move task to another file":"\u79FB\u52D5\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move all completed subtasks to another file":"\u79FB\u52D5\u6240\u6709\u5DF2\u5B8C\u6210\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move direct completed subtasks to another file":"\u79FB\u52D5\u76F4\u63A5\u5DF2\u5B8C\u6210\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move all subtasks to another file":"\u79FB\u52D5\u6240\u6709\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Set priority":"\u8A2D\u7F6E\u512A\u5148\u7D1A","Toggle quick capture panel":"\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F","Quick capture (Global)":"\u5FEB\u901F\u6355\u7372\uFF08\u5168\u5C40\uFF09","Toggle task filter panel":"\u5207\u63DB\u4EFB\u52D9\u904E\u6FFE\u5668\u9762\u677F","Filter Mode":"\u904E\u6FFE\u6A21\u5F0F","Choose whether to include or exclude tasks that match the filters":"\u9078\u64C7\u662F\u5305\u542B\u9084\u662F\u6392\u9664\u7B26\u5408\u904E\u6FFE\u689D\u4EF6\u7684\u4EFB\u52D9","Show matching tasks":"\u986F\u793A\u5339\u914D\u7684\u4EFB\u52D9","Hide matching tasks":"\u96B1\u85CF\u5339\u914D\u7684\u4EFB\u52D9","Choose whether to show or hide tasks that match the filters":"\u9078\u64C7\u662F\u986F\u793A\u9084\u662F\u96B1\u85CF\u7B26\u5408\u904E\u6FFE\u689D\u4EF6\u7684\u4EFB\u52D9","Create new file:":"\u5275\u5EFA\u65B0\u6587\u4EF6\uFF1A","Completed tasks moved to":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u5DF2\u79FB\u52D5\u5230","Failed to create file:":"\u5275\u5EFA\u6587\u4EF6\u5931\u6557\uFF1A","Beginning of file":"\u6587\u4EF6\u958B\u982D","Failed to move tasks:":"\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","No active file found":"\u672A\u627E\u5230\u6D3B\u52D5\u6587\u4EF6","Task moved to":"\u4EFB\u52D9\u5DF2\u79FB\u52D5\u5230","Failed to move task:":"\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","Nothing to capture":"\u6C92\u6709\u5167\u5BB9\u53EF\u6355\u7372","Captured successfully":"\u6355\u7372\u6210\u529F","Failed to save:":"\u4FDD\u5B58\u5931\u6557\uFF1A","Captured successfully to":"\u6210\u529F\u6355\u7372\u5230",Total:"\u7E3D\u8A08",Workflow:"\u5DE5\u4F5C\u6D41","Add as workflow root":"\u6DFB\u52A0\u70BA\u5DE5\u4F5C\u6D41\u6839\u7BC0\u9EDE","Move to stage":"\u79FB\u52D5\u5230\u968E\u6BB5","Complete stage":"\u5B8C\u6210\u968E\u6BB5","Add child task with same stage":"\u6DFB\u52A0\u76F8\u540C\u968E\u6BB5\u7684\u5B50\u4EFB\u52D9","Could not open quick capture panel in the current editor":"\u7121\u6CD5\u5728\u7576\u524D\u7DE8\u8F2F\u5668\u4E2D\u6253\u958B\u5FEB\u901F\u6355\u7372\u9762\u677F","Just started {{PROGRESS}}%":"\u525B\u525B\u958B\u59CB {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u6B63\u5728\u9032\u884C {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u5DF2\u5B8C\u6210\u4E00\u534A {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u9032\u5C55\u826F\u597D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u5373\u5C07\u5B8C\u6210 {{PROGRESS}}%","Progress bar":"\u9032\u5EA6\u689D","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u60A8\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u7236\u4EFB\u52D9\u5F8C\u9762\u7684\u9032\u5EA6\u689D\uFF08\u901A\u5E38\u5728\u4EFB\u52D9\u672B\u5C3E\uFF09\u3002\u60A8\u9084\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u6A19\u984C\u4E0B\u65B9\u4EFB\u52D9\u7684\u9032\u5EA6\u689D\u3002","Hide progress bars":"\u96B1\u85CF\u9032\u5EA6\u689D","Parent task changer":"\u7236\u4EFB\u52D9\u66F4\u6539\u5668","Change the parent task of the current task.":"\u66F4\u6539\u7576\u524D\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u5C1A\u672A\u5275\u5EFA\u9810\u8A2D\u904E\u6FFE\u5668\u3002\u9EDE\u64CA'\u6DFB\u52A0\u65B0\u9810\u8A2D'\u5275\u5EFA\u4E00\u500B\u3002","Configure task workflows for project and process management":"\u914D\u7F6E\u9805\u76EE\u548C\u6D41\u7A0B\u7BA1\u7406\u7684\u4EFB\u52D9\u5DE5\u4F5C\u6D41","Enable workflow":"\u555F\u7528\u5DE5\u4F5C\u6D41","Toggle to enable the workflow system for tasks":"\u5207\u63DB\u4EE5\u555F\u7528\u4EFB\u52D9\u7684\u5DE5\u4F5C\u6D41\u7CFB\u7D71","Auto-add timestamp":"\u81EA\u52D5\u6DFB\u52A0\u6642\u9593\u6233","Automatically add a timestamp to the task when it is created":"\u5275\u5EFA\u4EFB\u52D9\u6642\u81EA\u52D5\u6DFB\u52A0\u6642\u9593\u6233","Timestamp format:":"\u6642\u9593\u6233\u683C\u5F0F\uFF1A","Timestamp format":"\u6642\u9593\u6233\u683C\u5F0F","Remove timestamp when moving to next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u79FB\u9664\u6642\u9593\u6233","Remove the timestamp from the current task when moving to the next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u5F9E\u7576\u524D\u4EFB\u52D9\u4E2D\u79FB\u9664\u6642\u9593\u6233","Calculate spent time":"\u8A08\u7B97\u82B1\u8CBB\u6642\u9593","Calculate and display the time spent on the task when moving to the next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u8A08\u7B97\u4E26\u986F\u793A\u5728\u4EFB\u52D9\u4E0A\u82B1\u8CBB\u7684\u6642\u9593","Format for spent time:":"\u82B1\u8CBB\u6642\u9593\u683C\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u8A08\u7B97\u82B1\u8CBB\u6642\u9593\u3002","Spent time format":"\u82B1\u8CBB\u6642\u9593\u683C\u5F0F","Calculate full spent time":"\u8A08\u7B97\u7E3D\u82B1\u8CBB\u6642\u9593","Calculate the full spent time from the start of the task to the last stage":"\u8A08\u7B97\u5F9E\u4EFB\u52D9\u958B\u59CB\u5230\u6700\u5F8C\u968E\u6BB5\u7684\u7E3D\u82B1\u8CBB\u6642\u9593","Auto remove last stage marker":"\u81EA\u52D5\u79FB\u9664\u6700\u5F8C\u968E\u6BB5\u6A19\u8A18","Automatically remove the last stage marker when a task is completed":"\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u79FB\u9664\u6700\u5F8C\u968E\u6BB5\u6A19\u8A18","Auto-add next task":"\u81EA\u52D5\u6DFB\u52A0\u4E0B\u4E00\u4EFB\u52D9","Automatically create a new task with the next stage when completing a task":"\u5B8C\u6210\u4EFB\u52D9\u6642\u81EA\u52D5\u5275\u5EFA\u5177\u6709\u4E0B\u4E00\u968E\u6BB5\u7684\u65B0\u4EFB\u52D9","Workflow definitions":"\u5DE5\u4F5C\u6D41\u5B9A\u7FA9","Configure workflow templates for different types of processes":"\u70BA\u4E0D\u540C\u985E\u578B\u7684\u6D41\u7A0B\u914D\u7F6E\u5DE5\u4F5C\u6D41\u6A21\u677F","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u5C1A\u672A\u5275\u5EFA\u5DE5\u4F5C\u6D41\u5B9A\u7FA9\u3002\u9EDE\u64CA'\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41'\u5275\u5EFA\u4E00\u500B\u3002","Edit workflow":"\u7DE8\u8F2F\u5DE5\u4F5C\u6D41","Remove workflow":"\u79FB\u9664\u5DE5\u4F5C\u6D41","Delete workflow":"\u522A\u9664\u5DE5\u4F5C\u6D41",Delete:"\u522A\u9664","Add New Workflow":"\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41","New Workflow":"\u65B0\u5DE5\u4F5C\u6D41","Create New Workflow":"\u5275\u5EFA\u65B0\u5DE5\u4F5C\u6D41","Workflow name":"\u5DE5\u4F5C\u6D41\u540D\u7A31","A descriptive name for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Workflow ID":"\u5DE5\u4F5C\u6D41ID","A unique identifier for the workflow (used in tags)":"\u5DE5\u4F5C\u6D41\u7684\u552F\u4E00\u6A19\u8B58\u7B26\uFF08\u7528\u65BC\u6A19\u7C64\uFF09",Description:"\u63CF\u8FF0","Optional description for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u53EF\u9078\u63CF\u8FF0","Describe the purpose and use of this workflow...":"\u63CF\u8FF0\u6B64\u5DE5\u4F5C\u6D41\u7684\u76EE\u7684\u548C\u7528\u9014...","Workflow Stages":"\u5DE5\u4F5C\u6D41\u968E\u6BB5","No stages defined yet. Add a stage to get started.":"\u5C1A\u672A\u5B9A\u7FA9\u968E\u6BB5\u3002\u6DFB\u52A0\u4E00\u500B\u968E\u6BB5\u958B\u59CB\u3002",Edit:"\u7DE8\u8F2F","Move up":"\u4E0A\u79FB","Move down":"\u4E0B\u79FB","Sub-stage":"\u5B50\u968E\u6BB5","Sub-stage name":"\u5B50\u968E\u6BB5\u540D\u7A31","Sub-stage ID":"\u5B50\u968E\u6BB5ID","Next: ":"\u4E0B\u4E00\u500B\uFF1A","Add Sub-stage":"\u6DFB\u52A0\u5B50\u968E\u6BB5","New Sub-stage":"\u65B0\u5B50\u968E\u6BB5","Edit Stage":"\u7DE8\u8F2F\u968E\u6BB5","Stage name":"\u968E\u6BB5\u540D\u7A31","A descriptive name for this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u968E\u6BB5\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Stage ID":"\u968E\u6BB5ID","A unique identifier for the stage (used in tags)":"\u968E\u6BB5\u7684\u552F\u4E00\u6A19\u8B58\u7B26\uFF08\u7528\u65BC\u6A19\u7C64\uFF09","Stage type":"\u968E\u6BB5\u985E\u578B","The type of this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u968E\u6BB5\u7684\u985E\u578B","Linear (sequential)":"\u7DDA\u6027\uFF08\u9806\u5E8F\uFF09","Cycle (repeatable)":"\u5FAA\u74B0\uFF08\u53EF\u91CD\u8907\uFF09","Terminal (end stage)":"\u7D42\u7AEF\uFF08\u7D50\u675F\u968E\u6BB5\uFF09","Next stage":"\u4E0B\u4E00\u968E\u6BB5","The stage to proceed to after this one":"\u6B64\u968E\u6BB5\u4E4B\u5F8C\u8981\u9032\u884C\u7684\u968E\u6BB5","Sub-stages":"\u5B50\u968E\u6BB5","Define cycle sub-stages (optional)":"\u5B9A\u7FA9\u5FAA\u74B0\u5B50\u968E\u6BB5\uFF08\u53EF\u9078\uFF09","No sub-stages defined yet.":"\u5C1A\u672A\u5B9A\u7FA9\u5B50\u968E\u6BB5\u3002","Can proceed to":"\u53EF\u4EE5\u9032\u884C\u5230","Additional stages that can follow this one (for right-click menu)":"\u53EF\u4EE5\u8DDF\u96A8\u6B64\u968E\u6BB5\u7684\u5176\u4ED6\u968E\u6BB5\uFF08\u7528\u65BC\u53F3\u9375\u83DC\u55AE\uFF09","No additional destination stages defined.":"\u672A\u5B9A\u7FA9\u5176\u4ED6\u76EE\u6A19\u968E\u6BB5\u3002",Remove:"\u79FB\u9664",Add:"\u6DFB\u52A0","Name and ID are required.":"\u540D\u7A31\u548CID\u662F\u5FC5\u9700\u7684\u3002","End of file":"\u6587\u4EF6\u7D50\u5C3E","Include in cycle":"\u5305\u542B\u5728\u5FAA\u74B0\u4E2D",Preset:"\u9810\u8A2D","Preset name":"\u9810\u8A2D\u540D\u7A31","Edit Filter":"\u7DE8\u8F2F\u904E\u6FFE\u5668","Add New Preset":"\u6DFB\u52A0\u65B0\u9810\u8A2D","New Filter":"\u65B0\u904E\u6FFE\u5668","Reset to Default Presets":"\u91CD\u7F6E\u70BA\u9810\u8A2D","This will replace all your current presets with the default set. Are you sure?":"\u9019\u5C07\u66FF\u63DB\u60A8\u7576\u524D\u7684\u6240\u6709\u9810\u8A2D\uFF0C\u4E26\u4F7F\u7528\u9ED8\u8A8D\u8A2D\u7F6E\u3002\u60A8\u78BA\u5B9A\u55CE\uFF1F","Edit Workflow":"\u7DE8\u8F2F\u5DE5\u4F5C\u6D41",General:"\u5E38\u898F","Progress Bar":"\u9032\u5EA6\u689D","Task Mover":"\u4EFB\u52D9\u79FB\u52D5\u5668","Quick Capture":"\u5FEB\u901F\u6355\u7372","Date & Priority":"\u65E5\u671F\u548C\u512A\u5148\u7D1A",About:"\u95DC\u65BC","Count sub children of current Task":"\u8A08\u7B97\u7576\u524D\u4EFB\u52D9\u7684\u5B50\u4EFB\u52D9","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u9032\u5EA6\u689D\u6642\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Configure task status settings":"\u914D\u7F6E\u4EFB\u52D9\u72C0\u614B\u8A2D\u7F6E","Configure which task markers to count or exclude":"\u914D\u7F6E\u8981\u8A08\u7B97\u6216\u6392\u9664\u7684\u4EFB\u52D9\u6A19\u8A18","Task status cycle and marks":"\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u6A19\u8A18","About Task Genius":"\u95DC\u65BC Task Genius",Version:"\u7248\u672C",Documentation:"\u6587\u6A94","View the documentation for this plugin":"\u67E5\u770B\u6B64\u63D2\u4EF6\u7684\u6587\u6A94","Open Documentation":"\u6253\u958B\u6587\u6A94","Incomplete tasks":"\u672A\u5B8C\u6210\u7684\u4EFB\u52D9","In progress tasks":"\u9032\u884C\u4E2D\u7684\u4EFB\u52D9","Completed tasks":"\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9","All tasks":"\u6240\u6709\u4EFB\u52D9","After heading":"\u6A19\u984C\u5F8C","End of section":"\u7AE0\u7BC0\u7D50\u5C3E","Enable text mark in source mode":"\u5728\u6E90\u78BC\u6A21\u5F0F\u4E2D\u555F\u7528\u6587\u672C\u6A19\u8A18","Make the text mark in source mode follow the task status cycle when clicked.":"\u9EDE\u64CA\u6642\u4F7F\u6E90\u78BC\u6A21\u5F0F\u4E2D\u7684\u6587\u672C\u6A19\u8A18\u8DDF\u96A8\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u3002","Status name":"\u72C0\u614B\u540D\u7A31","Progress display mode":"\u9032\u5EA6\u986F\u793A\u6A21\u5F0F","Choose how to display task progress":"\u9078\u64C7\u5982\u4F55\u986F\u793A\u4EFB\u52D9\u9032\u5EA6","No progress indicators":"\u7121\u9032\u5EA6\u6307\u793A\u5668","Graphical progress bar":"\u5716\u5F62\u9032\u5EA6\u689D","Text progress indicator":"\u6587\u672C\u9032\u5EA6\u6307\u793A\u5668","Both graphical and text":"\u5716\u5F62\u548C\u6587\u672C\u90FD\u986F\u793A","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u9032\u5EA6\u689D\u6642\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Progress format":"\u9032\u5EA6\u683C\u5F0F","Choose how to display the task progress":"\u9078\u64C7\u5982\u4F55\u986F\u793A\u4EFB\u52D9\u9032\u5EA6","Percentage (75%)":"\u767E\u5206\u6BD4 (75%)","Bracketed percentage ([75%])":"\u5E36\u62EC\u865F\u7684\u767E\u5206\u6BD4 ([75%])","Fraction (3/4)":"\u5206\u6578 (3/4)","Bracketed fraction ([3/4])":"\u5E36\u62EC\u865F\u7684\u5206\u6578 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8A73\u7D30 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u81EA\u5B9A\u7FA9\u683C\u5F0F","Range-based text":"\u57FA\u65BC\u7BC4\u570D\u7684\u6587\u672C","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u4F7F\u7528\u4F54\u4F4D\u7B26\u5982 {{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}} \u7B49\u3002","Preview:":"\u9810\u89BD\uFF1A","Available placeholders":"\u53EF\u7528\u4F54\u4F4D\u7B26","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u53EF\u7528\u4F54\u4F4D\u7B26\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u9054\u5F0F\u793A\u4F8B","Examples of advanced formats using expressions":"\u4F7F\u7528\u8868\u9054\u5F0F\u7684\u9AD8\u7D1A\u683C\u5F0F\u793A\u4F8B","Text Progress Bar":"\u6587\u672C\u9032\u5EA6\u689D","Emoji Progress Bar":"\u8868\u60C5\u7B26\u865F\u9032\u5EA6\u689D","Color-coded Status":"\u984F\u8272\u7DE8\u78BC\u72C0\u614B","Status with Icons":"\u5E36\u5716\u6A19\u7684\u72C0\u614B",Preview:"\u9810\u89BD",Use:"\u4F7F\u7528","Toggle this to show percentage instead of completed/total count.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u986F\u793A\u767E\u5206\u6BD4\u800C\u4E0D\u662F\u5DF2\u5B8C\u6210/\u7E3D\u8A08\u6578\u3002","Customize progress ranges":"\u81EA\u5B9A\u7FA9\u9032\u5EA6\u7BC4\u570D","Toggle this to customize the text for different progress ranges.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u81EA\u5B9A\u7FA9\u4E0D\u540C\u9032\u5EA6\u7BC4\u570D\u7684\u6587\u672C\u3002","Apply Theme":"\u61C9\u7528\u4E3B\u984C","Back to main settings":"\u8FD4\u56DE\u4E3B\u8A2D\u7F6E","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u652F\u6301\u5728\u683C\u5F0F\u4E2D\u4F7F\u7528\u8868\u8FBE\u5F0F\uFF0C\u4F8B\u5982\u4F7F\u7528 data.percentages \u83B7\u53D6\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u767E\u5206\u6BD4\u3002\u4F7F\u7528 Math \u6216 Repeat \u51FD\u6570\u6765\u83B7\u53D6\u7ED3\u679C\u3002","Target File:":"\u76EE\u6A19\u6587\u4EF6\uFF1A","Task Properties":"\u4EFB\u52D9\u5C6C\u6027","Start Date":"\u958B\u59CB\u65E5\u671F","Due Date":"\u622A\u6B62\u65E5\u671F","Scheduled Date":"\u8A08\u5283\u65E5\u671F",Priority:"\u512A\u5148\u7D1A",None:"\u7121",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D\u7B49",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u9805\u76EE","Project name":"\u9805\u76EE\u540D\u7A31",Context:"\u4E0A\u4E0B\u6587",Recurrence:"\u91CD\u8907","e.g., every day, every week":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u9031","Task Content":"\u4EFB\u52D9\u5167\u5BB9","Task Details":"\u4EFB\u52D9\u8A73\u60C5",File:"\u6587\u4EF6","Edit in File":"\u5728\u6587\u4EF6\u4E2D\u7DE8\u8F2F","Mark Incomplete":"\u6A19\u8A18\u70BA\u672A\u5B8C\u6210","Mark Complete":"\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210","Task Title":"\u4EFB\u52D9\u6A19\u984C",Tags:"\u6A19\u7C64","e.g. every day, every 2 weeks":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u5169\u9031",Forecast:"\u9810\u6E2C","0 actions, 0 projects":"0 \u500B\u884C\u52D5\uFF0C0 \u500B\u9805\u76EE","Toggle list/tree view":"\u5207\u63DB\u5217\u8868/\u6A39\u5F62\u8996\u5716","Focusing on Work":"\u5C08\u6CE8\u5DE5\u4F5C",Unfocus:"\u53D6\u6D88\u5C08\u6CE8","Past Due":"\u5DF2\u903E\u671F",Today:"\u4ECA\u5929",Future:"\u672A\u4F86",actions:"\u884C\u52D5",project:"\u9805\u76EE","Coming Up":"\u5373\u5C07\u5230\u4F86",Task:"\u4EFB\u52D9",Tasks:"\u4EFB\u52D9","No upcoming tasks":"\u6C92\u6709\u5373\u5C07\u5230\u4F86\u7684\u4EFB\u52D9","No tasks scheduled":"\u6C92\u6709\u8A08\u5283\u4E2D\u7684\u4EFB\u52D9","0 tasks":"0 \u500B\u4EFB\u52D9","Filter tasks...":"\u7BE9\u9078\u4EFB\u52D9...",Projects:"\u9805\u76EE","Toggle multi-select":"\u5207\u63DB\u591A\u9078","No projects found":"\u672A\u627E\u5230\u9805\u76EE","projects selected":"\u5DF2\u9078\u64C7\u7684\u9805\u76EE",tasks:"\u4EFB\u52D9","No tasks in the selected projects":"\u6240\u9078\u9805\u76EE\u4E2D\u6C92\u6709\u4EFB\u52D9","Select a project to see related tasks":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u67E5\u770B\u76F8\u95DC\u4EFB\u52D9","Configure Review for":"\u70BA\u4EE5\u4E0B\u9805\u76EE\u914D\u7F6E\u56DE\u9867","Review Frequency":"\u56DE\u9867\u983B\u7387","How often should this project be reviewed":"\u9019\u500B\u9805\u76EE\u61C9\u8A72\u591A\u4E45\u56DE\u9867\u4E00\u6B21","Custom...":"\u81EA\u5B9A\u7FA9...","e.g., every 3 months":"\u4F8B\u5982\uFF1A\u6BCF3\u500B\u6708","Last Reviewed":"\u4E0A\u6B21\u56DE\u9867","Please specify a review frequency":"\u8ACB\u6307\u5B9A\u56DE\u9867\u983B\u7387","Review schedule updated for":"\u5DF2\u66F4\u65B0\u56DE\u9867\u8A08\u5283","Review Projects":"\u56DE\u9867\u9805\u76EE","Select a project to review its tasks.":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u56DE\u9867\u5176\u4EFB\u52D9\u3002","Configured for Review":"\u5DF2\u914D\u7F6E\u56DE\u9867","Not Configured":"\u672A\u914D\u7F6E","No projects available.":"\u6C92\u6709\u53EF\u7528\u7684\u9805\u76EE\u3002","Select a project to review.":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u9032\u884C\u56DE\u9867\u3002","Show all tasks":"\u986F\u793A\u6240\u6709\u4EFB\u52D9","Showing all tasks, including completed tasks from previous reviews.":"\u986F\u793A\u6240\u6709\u4EFB\u52D9\uFF0C\u5305\u62EC\u4E4B\u524D\u56DE\u9867\u4E2D\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9\u3002","Show only new and in-progress tasks":"\u50C5\u986F\u793A\u65B0\u4EFB\u52D9\u548C\u9032\u884C\u4E2D\u7684\u4EFB\u52D9","No tasks found for this project.":"\u672A\u627E\u5230\u6B64\u9805\u76EE\u7684\u4EFB\u52D9\u3002","Review every":"\u6BCF\u9694\u591A\u4E45\u56DE\u9867",never:"\u5F9E\u4E0D","Last reviewed":"\u4E0A\u6B21\u56DE\u9867","Mark as Reviewed":"\u6A19\u8A18\u70BA\u5DF2\u56DE\u9867","No review schedule configured for this project":"\u6B64\u9805\u76EE\u672A\u914D\u7F6E\u56DE\u9867\u8A08\u5283","Configure Review Schedule":"\u914D\u7F6E\u56DE\u9867\u8A08\u5283","Project Review":"\u9805\u76EE\u56DE\u9867","Select a project from the left sidebar to review its tasks.":"\u5F9E\u5DE6\u5074\u908A\u6B04\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u56DE\u9867\u5176\u4EFB\u52D9\u3002",Inbox:"\u6536\u4EF6\u7BB1",Flagged:"\u5DF2\u6A19\u8A18",Review:"\u56DE\u9867","tags selected":"\u5DF2\u9078\u64C7\u7684\u6A19\u7C64","No tasks with the selected tags":"\u6C92\u6709\u5E36\u6709\u6240\u9078\u6A19\u7C64\u7684\u4EFB\u52D9","Select a tag to see related tasks":"\u9078\u64C7\u4E00\u500B\u6A19\u7C64\u4EE5\u67E5\u770B\u76F8\u95DC\u4EFB\u52D9","Open Task Genius view":"\u6253\u958B Task Genius \u8996\u5716","Task capture with metadata":"\u5E36\u5143\u6578\u64DA\u7684\u4EFB\u52D9\u6355\u7372","Refresh task index":"\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15","Refreshing task index...":"\u6B63\u5728\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15...","Task index refreshed":"\u4EFB\u52D9\u7D22\u5F15\u5DF2\u5237\u65B0","Failed to refresh task index":"\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15\u5931\u6557","Force reindex all tasks":"\u5F37\u5236\u91CD\u5EFA\u6240\u6709\u4EFB\u52D9\u7D22\u5F15","Clearing task cache and rebuilding index...":"\u6B63\u5728\u6E05\u9664\u4EFB\u52D9\u7DE9\u5B58\u4E26\u91CD\u5EFA\u7D22\u5F15...","Task index completely rebuilt":"\u4EFB\u52D9\u7D22\u5F15\u5DF2\u5B8C\u5168\u91CD\u5EFA","Failed to force reindex tasks":"\u5F37\u5236\u91CD\u5EFA\u4EFB\u52D9\u7D22\u5F15\u5931\u6557","Task Genius View":"Task Genius \u8996\u5716","Toggle Sidebar":"\u5207\u63DB\u5074\u908A\u6B04",Details:"\u8A73\u60C5",View:"\u8996\u5716","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius \u8996\u5716\u662F\u4E00\u500B\u7D9C\u5408\u8996\u5716\uFF0C\u53EF\u4EE5\u8B93\u60A8\u66F4\u9AD8\u6548\u5730\u7BA1\u7406\u4EFB\u52D9\u3002","Enable task genius view":"\u555F\u7528 Task Genius \u8996\u5716","Select a task to view details":"\u9078\u64C7\u4E00\u500B\u4EFB\u52D9\u4EE5\u67E5\u770B\u8A73\u60C5",Status:"\u72C0\u614B","Comma separated":"\u9017\u865F\u5206\u9694",Focus:"\u5C08\u6CE8","Loading more...":"\u52A0\u8F09\u66F4\u591A...",projects:"\u9805\u76EE","No tasks for this section.":"\u6C92\u6709\u9019\u500B\u7AE0\u7BC0\u7684\u4EFB\u52D9\u3002","No tasks found.":"\u6C92\u6709\u627E\u5230\u4EFB\u52D9\u3002",Complete:"\u5B8C\u6210","Switch status":"\u5207\u63DB\u72C0\u614B","Rebuild index":"\u91CD\u5EFA\u7D22\u5F15",Rebuild:"\u91CD\u5EFA","0 tasks, 0 projects":"0 \u500B\u4EFB\u52D9\uFF0C0 \u500B\u9805\u76EE","New Custom View":"\u65B0\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Create Custom View":"\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Edit View: ":"\u7DE8\u8F2F\u8996\u5716\uFF1A","View Name":"\u8996\u5716\u540D\u7A31","My Custom Task View":"\u6211\u7684\u81EA\u5B9A\u7FA9\u4EFB\u52D9\u8996\u5716","Icon Name":"\u5716\u6A19\u540D\u7A31","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u8F38\u5165\u4EFB\u4F55 Lucide \u5716\u6A19\u540D\u7A31\uFF08\u4F8B\u5982\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u904E\u6FFE\u898F\u5247","Hide Completed and Abandoned Tasks":"\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9","Hide completed and abandoned tasks in this view.":"\u5728\u6B64\u8996\u5716\u4E2D\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9\u3002","Text Contains":"\u6587\u672C\u5305\u542B","Filter tasks whose content includes this text (case-insensitive).":"\u904E\u6FFE\u5167\u5BB9\u5305\u542B\u6B64\u6587\u672C\u7684\u4EFB\u52D9\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Tags Include":"\u5305\u542B\u6A19\u7C64","Task must include ALL these tags (comma-separated).":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6240\u6709\u9019\u4E9B\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002","Tags Exclude":"\u6392\u9664\u6A19\u7C64","Task must NOT include ANY of these tags (comma-separated).":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u4EFB\u4F55\u9019\u4E9B\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002","Project Is":"\u9805\u76EE\u662F","Task must belong to this project (exact match).":"\u4EFB\u52D9\u5FC5\u9808\u5C6C\u65BC\u6B64\u9805\u76EE\uFF08\u7CBE\u78BA\u5339\u914D\uFF09\u3002","Priority Is":"\u512A\u5148\u7D1A\u662F","Task must have this priority (e.g., 1, 2, 3).":"\u4EFB\u52D9\u5FC5\u9808\u5177\u6709\u6B64\u512A\u5148\u7D1A\uFF08\u4F8B\u5982\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u5305\u542B\u72C0\u614B","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u4EFB\u52D9\u72C0\u614B\u5FC5\u9808\u662F\u9019\u4E9B\u4E4B\u4E00\uFF08\u9017\u865F\u5206\u9694\u7684\u6A19\u8A18\uFF0C\u4F8B\u5982\uFF1A/,>\uFF09\u3002","Status Exclude":"\u6392\u9664\u72C0\u614B","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u4EFB\u52D9\u72C0\u614B\u4E0D\u5F97\u662F\u9019\u4E9B\u4E4B\u4E00\uFF08\u9017\u865F\u5206\u9694\u7684\u6A19\u8A18\uFF0C\u4F8B\u5982\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u4F7F\u7528 YYYY-MM-DD \u6216\u76F8\u5C0D\u8853\u8A9E\uFF0C\u5982'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'\u4E0B\u9031'\u3001'\u4E0A\u500B\u6708'\u3002","Due Date Is":"\u622A\u6B62\u65E5\u671F\u662F","Start Date Is":"\u958B\u59CB\u65E5\u671F\u662F","Scheduled Date Is":"\u8A08\u5283\u65E5\u671F\u662F","Path Includes":"\u8DEF\u5F91\u5305\u542B","Task must contain this path (case-insensitive).":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Path Excludes":"\u8DEF\u5F91\u6392\u9664","Task must NOT contain this path (case-insensitive).":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Unnamed View":"\u672A\u547D\u540D\u8996\u5716","View configuration saved.":"\u8996\u5716\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002","Hide Details":"\u96B1\u85CF\u8A73\u60C5","Show Details":"\u986F\u793A\u8A73\u60C5","View Config":"\u8996\u5716\u914D\u7F6E","View Configuration":"\u8996\u5716\u914D\u7F6E","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u914D\u7F6E Task Genius \u5074\u908A\u6B04\u8996\u5716\u3001\u53EF\u898B\u6027\u3001\u9806\u5E8F\uFF0C\u4E26\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716\u3002","Manage Views":"\u7BA1\u7406\u8996\u5716","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u914D\u7F6E\u5074\u908A\u6B04\u8996\u5716\u3001\u9806\u5E8F\u3001\u53EF\u898B\u6027\uFF0C\u4EE5\u53CA\u6BCF\u500B\u8996\u5716\u4E2D\u96B1\u85CF/\u986F\u793A\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9\u3002","Show in sidebar":"\u5728\u5074\u908A\u6B04\u4E2D\u986F\u793A","Edit View":"\u7DE8\u8F2F\u8996\u5716","Move Up":"\u4E0A\u79FB","Move Down":"\u4E0B\u79FB","Delete View":"\u522A\u9664\u8996\u5716","Add Custom View":"\u6DFB\u52A0\u81EA\u5B9A\u7FA9\u8996\u5716","Error: View ID already exists.":"\u932F\u8AA4\uFF1A\u8996\u5716 ID \u5DF2\u5B58\u5728\u3002",Events:"\u4E8B\u4EF6",Plan:"\u8A08\u5283",Year:"\u5E74",Month:"\u6708",Week:"\u5468",Day:"\u65E5",Agenda:"\u8B70\u7A0B","Back to categories":"\u8FD4\u56DE\u5206\u985E","No matching options found":"\u672A\u627E\u5230\u5339\u914D\u9078\u9805","No matching filters found":"\u672A\u627E\u5230\u5339\u914D\u904E\u6FFE\u5668",Tag:"\u6A19\u7C64","File Path":"\u6587\u4EF6\u8DEF\u5F91","Add filter":"\u6DFB\u52A0\u904E\u6FFE\u5668","Clear all":"\u6E05\u9664\u5168\u90E8","Add Card":"\u6DFB\u52A0\u5361\u7247","First Day of Week":"\u6BCF\u5468\u7B2C\u4E00\u5929","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"\u986F\u793A\u8907\u9078\u6846","Show a checkbox for each task in the kanban view.":"\u5728\u770B\u677F\u8996\u5716\u4E2D\u70BA\u6BCF\u500B\u4EFB\u52D9\u986F\u793A\u8907\u9078\u6846\u3002","Locale Default":"\u5340\u57DF\u9ED8\u8A8D\u8A2D\u7F6E","Use custom goal for progress bar":"\u70BA\u9032\u5EA6\u689D\u4F7F\u7528\u81EA\u5B9A\u7FA9\u76EE\u6A19","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u5141\u8A31\u6B64\u63D2\u4EF6\u67E5\u627E\u7236\u4EFB\u52D9\u7684 g::number \u6A21\u5F0F\u4F5C\u70BA\u76EE\u6A19\u3002","Prefer metadata format of task":"\u512A\u5148\u4F7F\u7528\u4EFB\u52D9\u7684\u5143\u6578\u64DA\u683C\u5F0F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u4F60\u53EF\u4EE5\u9078\u64C7 dataview \u683C\u5F0F\u6216 tasks \u683C\u5F0F\uFF0C\u9019\u5C07\u5F71\u97FF\u7D22\u5F15\u548C\u4FDD\u5B58\u683C\u5F0F\u3002","Open in new tab":"\u5728\u65B0\u6A19\u7C64\u9801\u4E2D\u958B\u555F","Open settings":"\u958B\u555F\u8A2D\u5B9A","Hide in sidebar":"\u5728\u5074\u908A\u6B04\u4E2D\u96B1\u85CF","No items found":"\u672A\u627E\u5230\u9805\u76EE","High Priority":"\u9AD8\u512A\u5148\u7D1A","Medium Priority":"\u4E2D\u512A\u5148\u7D1A","Low Priority":"\u4F4E\u512A\u5148\u7D1A","No tasks in the selected items":"\u6240\u9078\u9805\u76EE\u4E2D\u6C92\u6709\u4EFB\u52D9","View Type":"\u8996\u5716\u985E\u578B","Select the type of view to create":"\u9078\u64C7\u8981\u5275\u5EFA\u7684\u8996\u5716\u985E\u578B","Standard View":"\u6A19\u6E96\u8996\u5716","Two Column View":"\u96D9\u5217\u8996\u5716",Items:"\u9805\u76EE","selected items":"\u5DF2\u9078\u9805\u76EE","No items selected":"\u672A\u9078\u64C7\u9805\u76EE","Two Column View Settings":"\u96D9\u5217\u8996\u5716\u8A2D\u5B9A","Group by Task Property":"\u6309\u4EFB\u52D9\u5C6C\u6027\u5206\u7D44","Select which task property to use for left column grouping":"\u9078\u64C7\u7528\u65BC\u5DE6\u5217\u5206\u7D44\u7684\u4EFB\u52D9\u5C6C\u6027",Priorities:"\u512A\u5148\u7D1A",Contexts:"\u4E0A\u4E0B\u6587","Due Dates":"\u622A\u6B62\u65E5\u671F","Scheduled Dates":"\u8A08\u5283\u65E5\u671F","Start Dates":"\u958B\u59CB\u65E5\u671F",Files:"\u6587\u4EF6","Left Column Title":"\u5DE6\u5217\u6A19\u984C","Title for the left column (items list)":"\u5DE6\u5217\u6A19\u984C\uFF08\u9805\u76EE\u5217\u8868\uFF09","Right Column Title":"\u53F3\u5217\u6A19\u984C","Default title for the right column (tasks list)":"\u53F3\u5217\u9810\u8A2D\u6A19\u984C\uFF08\u4EFB\u52D9\u5217\u8868\uFF09","Multi-select Text":"\u591A\u9078\u6587\u672C","Text to show when multiple items are selected":"\u9078\u64C7\u591A\u500B\u9805\u76EE\u6642\u986F\u793A\u7684\u6587\u672C","Empty State Text":"\u7A7A\u72C0\u614B\u6587\u672C","Text to show when no items are selected":"\u672A\u9078\u64C7\u9805\u76EE\u6642\u986F\u793A\u7684\u6587\u672C","Filter Blanks":"\u904E\u6FFE\u7A7A\u767D\u4EFB\u52D9","Filter out blank tasks in this view.":"\u5728\u6B64\u8996\u5716\u4E2D\u904E\u6FFE\u6389\u7A7A\u767D\u4EFB\u52D9\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002\u591A\u500B\u8DEF\u5F91\u7528\u9017\u865F\u5206\u9694\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002\u591A\u500B\u8DEF\u5F91\u7528\u9017\u865F\u5206\u9694\u3002","You have unsaved changes. Save before closing?":"\u60A8\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539\u3002\u95DC\u9589\u524D\u4FDD\u5B58\u55CE\uFF1F",Rotate:"\u65CB\u8F49","Are you sure you want to force reindex all tasks?":"\u60A8\u78BA\u5B9A\u8981\u5F37\u5236\u91CD\u65B0\u7D22\u5F15\u6240\u6709\u4EFB\u52D9\u55CE\uFF1F","Enable progress bar in reading mode":"\u5728\u95B1\u8B80\u6A21\u5F0F\u4E2D\u555F\u7528\u9032\u5EA6\u689D","Toggle this to allow this plugin to show progress bars in reading mode.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u63D2\u4EF6\u5728\u95B1\u8B80\u6A21\u5F0F\u4E2D\u986F\u793A\u9032\u5EA6\u689D\u3002",Range:"\u7BC4\u570D","as a placeholder for the percentage value":"\u4F5C\u70BA\u767E\u5206\u6BD4\u503C\u7684\u4F54\u4F4D\u7B26","Template text with":"\u5E36\u6709\u4F54\u4F4D\u7B26\u7684\u6A21\u677F\u6587\u672C",placeholder:"\u4F54\u4F4D\u7B26",Reindex:"\u91CD\u5EFA\u7D22\u5F15","From now":"\u5F9E\u73FE\u5728","Complete workflow":"\u5B8C\u6210\u5DE5\u4F5C\u6D41\u7A0B","Move to":"\u79FB\u52D5\u5230",Settings:"\u8A2D\u5B9A","Just started":"\u525B\u958B\u59CB","Making progress":"\u6B63\u5728\u9032\u884C","Half way":"\u9032\u884C\u4E00\u534A","Good progress":"\u9032\u5C55\u826F\u597D","Almost there":"\u5373\u5C07\u5B8C\u6210","archived on":"\u5B58\u6A94\u65BC",moved:"\u5DF2\u79FB\u52D5","Capture your thoughts...":"\u8A18\u9304\u4F60\u7684\u60F3\u6CD5...","Project Workflow":"\u5C08\u6848\u5DE5\u4F5C\u6D41\u7A0B","Standard project management workflow":"\u6A19\u6E96\u5C08\u6848\u7BA1\u7406\u5DE5\u4F5C\u6D41\u7A0B",Planning:"\u898F\u5283\u4E2D",Development:"\u958B\u767C\u4E2D",Testing:"\u6E2C\u8A66\u4E2D",Cancelled:"\u5DF2\u53D6\u6D88",Habit:"\u7FD2\u6163","Drink a cup of good tea":"\u559D\u4E00\u676F\u597D\u8336","Watch an episode of a favorite series":"\u89C0\u770B\u4E00\u96C6\u559C\u611B\u7684\u5287\u96C6","Play a game":"\u73A9\u4E00\u500B\u904A\u6232","Eat a piece of chocolate":"\u5403\u4E00\u584A\u5DE7\u514B\u529B",common:"\u666E\u901A",rare:"\u7A00\u6709",legendary:"\u50B3\u5947","No Habits Yet":"\u5C1A\u7121\u7FD2\u6163","Click the open habit button to create a new habit.":"\u9EDE\u64CA\u958B\u555F\u7FD2\u6163\u6309\u9215\u4EE5\u5275\u5EFA\u65B0\u7FD2\u6163\u3002","Please enter details":"\u8ACB\u8F38\u5165\u8A73\u7D30\u8CC7\u8A0A","Goal reached":"\u5DF2\u9054\u6210\u76EE\u6A19","Exceeded goal":"\u8D85\u904E\u76EE\u6A19",Active:"\u6D3B\u8E8D",today:"\u4ECA\u5929",Inactive:"\u4E0D\u6D3B\u8E8D","All Done!":"\u5168\u90E8\u5B8C\u6210\uFF01","Select event...":"\u9078\u64C7\u4E8B\u4EF6...","Create new habit":"\u5275\u5EFA\u65B0\u7FD2\u6163","Edit habit":"\u7DE8\u8F2F\u7FD2\u6163","Habit type":"\u7FD2\u6163\u985E\u578B","Daily habit":"\u6BCF\u65E5\u7FD2\u6163","Simple daily check-in habit":"\u7C21\u55AE\u7684\u6BCF\u65E5\u6253\u5361\u7FD2\u6163","Count habit":"\u8A08\u6578\u7FD2\u6163","Record numeric values, e.g., how many cups of water":"\u8A18\u9304\u6578\u503C\uFF0C\u4F8B\u5982\u559D\u4E86\u591A\u5C11\u676F\u6C34","Mapping habit":"\u6620\u5C04\u7FD2\u6163","Use different values to map, e.g., emotion tracking":"\u4F7F\u7528\u4E0D\u540C\u7684\u503C\u9032\u884C\u6620\u5C04\uFF0C\u4F8B\u5982\u60C5\u7DD2\u8FFD\u8E64","Scheduled habit":"\u8A08\u5283\u7FD2\u6163","Habit with multiple events":"\u5305\u542B\u591A\u500B\u4E8B\u4EF6\u7684\u7FD2\u6163","Habit name":"\u7FD2\u6163\u540D\u7A31","Display name of the habit":"\u7FD2\u6163\u7684\u986F\u793A\u540D\u7A31","Optional habit description":"\u53EF\u9078\u7684\u7FD2\u6163\u63CF\u8FF0",Icon:"\u5716\u6A19","Please enter a habit name":"\u8ACB\u8F38\u5165\u7FD2\u6163\u540D\u7A31","Property name":"\u5C6C\u6027\u540D\u7A31","The property name of the daily note front matter":"\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u7684\u5C6C\u6027\u540D\u7A31","Completion text":"\u5B8C\u6210\u6587\u672C","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u53EF\u9078\uFF09\u8868\u793A\u5B8C\u6210\u7684\u7279\u5B9A\u6587\u672C\uFF0C\u7559\u7A7A\u5247\u4EFB\u4F55\u975E\u7A7A\u503C\u90FD\u8996\u70BA\u5DF2\u5B8C\u6210","The property name in daily note front matter to store count values":"\u5728\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u5B58\u5132\u8A08\u6578\u503C\u7684\u5C6C\u6027\u540D\u7A31","Minimum value":"\u6700\u5C0F\u503C","(Optional) Minimum value for the count":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u6700\u5C0F\u503C","Maximum value":"\u6700\u5927\u503C","(Optional) Maximum value for the count":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u6700\u5927\u503C",Unit:"\u55AE\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u55AE\u4F4D\uFF0C\u5982'\u676F'\u3001'\u6B21'\u7B49","Notice threshold":"\u63D0\u9192\u95BE\u503C","(Optional) Trigger a notification when this value is reached":"\uFF08\u53EF\u9078\uFF09\u7576\u9054\u5230\u6B64\u503C\u6642\u89F8\u767C\u901A\u77E5","The property name in daily note front matter to store mapping values":"\u5728\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u5B58\u5132\u6620\u5C04\u503C\u7684\u5C6C\u6027\u540D\u7A31","Value mapping":"\u503C\u6620\u5C04","Define mappings from numeric values to display text":"\u5B9A\u7FA9\u5F9E\u6578\u503C\u5230\u986F\u793A\u6587\u672C\u7684\u6620\u5C04","Add new mapping":"\u6DFB\u52A0\u65B0\u6620\u5C04","Scheduled events":"\u8A08\u5283\u4E8B\u4EF6","Add multiple events that need to be completed":"\u6DFB\u52A0\u9700\u8981\u5B8C\u6210\u7684\u591A\u500B\u4E8B\u4EF6","Event name":"\u4E8B\u4EF6\u540D\u7A31","Event details":"\u4E8B\u4EF6\u8A73\u60C5","Add new event":"\u6DFB\u52A0\u65B0\u4E8B\u4EF6","Please enter a property name":"\u8ACB\u8F38\u5165\u5C6C\u6027\u540D\u7A31","Please add at least one mapping value":"\u8ACB\u81F3\u5C11\u6DFB\u52A0\u4E00\u500B\u6620\u5C04\u503C","Mapping key must be a number":"\u6620\u5C04\u9375\u5FC5\u9808\u662F\u6578\u5B57","Please enter text for all mapping values":"\u8ACB\u70BA\u6240\u6709\u6620\u5C04\u503C\u8F38\u5165\u6587\u672C","Please add at least one event":"\u8ACB\u81F3\u5C11\u6DFB\u52A0\u4E00\u500B\u4E8B\u4EF6","Event name cannot be empty":"\u4E8B\u4EF6\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A","Add new habit":"\u6DFB\u52A0\u65B0\u7FD2\u6163","No habits yet":"\u66AB\u7121\u7FD2\u6163","Click the button above to add your first habit":"\u9EDE\u64CA\u4E0A\u65B9\u6309\u9215\u6DFB\u52A0\u4F60\u7684\u7B2C\u4E00\u500B\u7FD2\u6163","Habit updated":"\u7FD2\u6163\u5DF2\u66F4\u65B0","Habit added":"\u7FD2\u6163\u5DF2\u6DFB\u52A0","Delete habit":"\u522A\u9664\u7FD2\u6163","This action cannot be undone.":"\u6B64\u64CD\u4F5C\u7121\u6CD5\u64A4\u92B7\u3002","Habit deleted":"\u7FD2\u6163\u5DF2\u522A\u9664","You've Earned a Reward!":"\u4F60\u7372\u5F97\u4E86\u4E00\u500B\u734E\u52F5\uFF01","Your reward:":"\u4F60\u7684\u734E\u52F5\uFF1A","Image not found:":"\u672A\u627E\u5230\u5716\u7247\uFF1A","Claim Reward":"\u9818\u53D6\u734E\u52F5",Skip:"\u8DF3\u904E",Reward:"\u734E\u52F5","View & Index Configuration":"\u8996\u5716\u8207\u7D22\u5F15\u914D\u7F6E","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u555F\u7528 Task Genius \u8996\u5716\u4E5F\u5C07\u555F\u7528 Task Genius \u7D22\u5F15\u5668\uFF0C\u5B83\u5C07\u63D0\u4F9B\u4F86\u81EA\u6574\u500B\u4FDD\u96AA\u5EAB\u7684 Task Genius \u8996\u5716\u7D50\u679C\u3002","Use daily note path as date":"\u4F7F\u7528\u65E5\u8A18\u8DEF\u5F91\u4F5C\u70BA\u65E5\u671F","If enabled, the daily note path will be used as the date for tasks.":"\u5982\u679C\u555F\u7528\uFF0C\u65E5\u8A18\u8DEF\u5F91\u5C07\u7528\u4F5C\u4EFB\u52D9\u7684\u65E5\u671F\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u5C07\u4F7F\u7528moment.js\u548C\u6B64\u683C\u5F0F\u89E3\u6790\u65E5\u8A18\u8DEF\u5F91\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5728\u683C\u5F0F\u5B57\u7B26\u4E32\u4E2D\u9700\u8981\u4F7F\u7528`yyyy`\u800C\u4E0D\u662F`YYYY`\uFF0C\u4F7F\u7528`dd`\u800C\u4E0D\u662F`DD`\u3002","Daily note format":"\u65E5\u8A18\u683C\u5F0F","Daily note path":"\u65E5\u8A18\u8DEF\u5F91","Select the folder that contains the daily note.":"\u9078\u64C7\u5305\u542B\u65E5\u8A18\u7684\u6587\u4EF6\u593E\u3002","Use as date type":"\u7528\u4F5C\u65E5\u671F\u985E\u578B","You can choose due, start, or scheduled as the date type for tasks.":"\u4F60\u53EF\u4EE5\u9078\u64C7\u622A\u6B62\u65E5\u671F\u3001\u958B\u59CB\u65E5\u671F\u6216\u8A08\u5283\u65E5\u671F\u4F5C\u70BA\u4EFB\u52D9\u7684\u65E5\u671F\u985E\u578B\u3002",Due:"\u622A\u6B62",Start:"\u958B\u59CB",Scheduled:"\u8A08\u5283",Rewards:"\u734E\u52F5","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u914D\u7F6E\u5B8C\u6210\u4EFB\u52D9\u7684\u734E\u52F5\u3002\u5B9A\u7FA9\u9805\u76EE\u3001\u5B83\u5011\u7684\u51FA\u73FE\u5E7E\u7387\u548C\u689D\u4EF6\u3002","Enable Rewards":"\u555F\u7528\u734E\u52F5","Toggle to enable or disable the reward system.":"\u5207\u63DB\u4EE5\u555F\u7528\u6216\u7981\u7528\u734E\u52F5\u7CFB\u7D71\u3002","Occurrence Levels":"\u51FA\u73FE\u7B49\u7D1A","Define different levels of reward rarity and their probability.":"\u5B9A\u7FA9\u4E0D\u540C\u7B49\u7D1A\u7684\u734E\u52F5\u7A00\u6709\u5EA6\u53CA\u5176\u6982\u7387\u3002","Chance must be between 0 and 100.":"\u5E7E\u7387\u5FC5\u9808\u57280\u5230100\u4E4B\u9593\u3002","Level Name (e.g., common)":"\u7B49\u7D1A\u540D\u7A31\uFF08\u4F8B\u5982\uFF0C\u666E\u901A\uFF09","Chance (%)":"\u5E7E\u7387\uFF08%\uFF09","Delete Level":"\u522A\u9664\u7B49\u7D1A","Add Occurrence Level":"\u6DFB\u52A0\u51FA\u73FE\u7B49\u7D1A","New Level":"\u65B0\u7B49\u7D1A","Reward Items":"\u734E\u52F5\u9805\u76EE","Manage the specific rewards that can be obtained.":"\u7BA1\u7406\u53EF\u4EE5\u7372\u5F97\u7684\u7279\u5B9A\u734E\u52F5\u3002","No levels defined":"\u672A\u5B9A\u7FA9\u7B49\u7D1A","Reward Name/Text":"\u734E\u52F5\u540D\u7A31/\u6587\u672C","Inventory (-1 for \u221E)":"\u5EAB\u5B58\uFF08-1\u8868\u793A\u7121\u9650\uFF09","Invalid inventory number.":"\u7121\u6548\u7684\u5EAB\u5B58\u6578\u91CF\u3002","Condition (e.g., #tag AND project)":"\u689D\u4EF6\uFF08\u4F8B\u5982\uFF0C#\u6A19\u7C64 AND \u9805\u76EE\uFF09","Image URL (optional)":"\u5716\u7247URL\uFF08\u53EF\u9078\uFF09","Delete Reward Item":"\u522A\u9664\u734E\u52F5\u9805\u76EE","No reward items defined yet.":"\u5C1A\u672A\u5B9A\u7FA9\u734E\u52F5\u9805\u76EE\u3002","Add Reward Item":"\u6DFB\u52A0\u734E\u52F5\u9805\u76EE","New Reward":"\u65B0\u734E\u52F5","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u914D\u7F6E\u7FD2\u6163\u8A2D\u7F6E\uFF0C\u5305\u62EC\u6DFB\u52A0\u65B0\u7FD2\u6163\u3001\u7DE8\u8F2F\u73FE\u6709\u7FD2\u6163\u548C\u7BA1\u7406\u7FD2\u6163\u5B8C\u6210\u60C5\u6CC1\u3002","Enable habits":"\u555F\u7528\u7FD2\u6163","Task sorting is disabled or no sort criteria are defined in settings.":"\u4EFB\u52D9\u6392\u5E8F\u5DF2\u7981\u7528\u6216\u8A2D\u7F6E\u4E2D\u672A\u5B9A\u7FA9\u6392\u5E8F\u6A19\u6E96\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\u5982 #\u6A19\u7C641, #\u6A19\u7C642, #\u6A19\u7C643",Overdue:"\u903E\u671F","No tasks found for this tag.":"\u672A\u627E\u5230\u6B64\u6A19\u7C64\u7684\u4EFB\u52D9\u3002","New custom view":"\u65B0\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Create custom view":"\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Edit view: ":"\u7DE8\u8F2F\u8996\u5716: ","Icon name":"\u5716\u6A19\u540D\u7A31","First day of week":"\u6BCF\u9031\u7B2C\u4E00\u5929","Overrides the locale default for forecast views.":"\u8986\u84CB\u9810\u6E2C\u8996\u5716\u7684\u5340\u57DF\u8A2D\u7F6E\u9ED8\u8A8D\u503C\u3002","View type":"\u8996\u5716\u985E\u578B","Standard view":"\u6A19\u6E96\u8996\u5716","Two column view":"\u96D9\u6B04\u8996\u5716","Two column view settings":"\u96D9\u6B04\u8996\u5716\u8A2D\u7F6E","Group by task property":"\u6309\u4EFB\u52D9\u5C6C\u6027\u5206\u7D44","Left column title":"\u5DE6\u6B04\u6A19\u984C","Right column title":"\u53F3\u6B04\u6A19\u984C","Empty state text":"\u7A7A\u72C0\u614B\u6587\u672C","Hide completed and abandoned tasks":"\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9","Filter blanks":"\u904E\u6FFE\u7A7A\u767D","Text contains":"\u6587\u672C\u5305\u542B","Tags include":"\u6A19\u7C64\u5305\u542B","Tags exclude":"\u6A19\u7C64\u6392\u9664","Project is":"\u9805\u76EE\u662F","Priority is":"\u512A\u5148\u7D1A\u662F","Status include":"\u72C0\u614B\u5305\u542B","Status exclude":"\u72C0\u614B\u6392\u9664","Due date is":"\u622A\u6B62\u65E5\u671F\u662F","Start date is":"\u958B\u59CB\u65E5\u671F\u662F","Scheduled date is":"\u8A08\u5283\u65E5\u671F\u662F","Path includes":"\u8DEF\u5F91\u5305\u542B","Path excludes":"\u8DEF\u5F91\u6392\u9664","Sort Criteria":"\u6392\u5E8F\u6A19\u6E96","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u5B9A\u7FA9\u4EFB\u52D9\u61C9\u8A72\u6392\u5E8F\u7684\u9806\u5E8F\u3002\u6A19\u6E96\u6309\u9806\u5E8F\u61C9\u7528\u3002","No sort criteria defined. Add criteria below.":"\u672A\u5B9A\u7FA9\u6392\u5E8F\u6A19\u6E96\u3002\u5728\u4E0B\u65B9\u6DFB\u52A0\u6A19\u6E96\u3002",Content:"\u5167\u5BB9",Ascending:"\u5347\u5E8F",Descending:"\u964D\u5E8F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u5347\u5E8F\uFF1A\u9AD8 -> \u4F4E -> \u7121\u3002\u964D\u5E8F\uFF1A\u7121 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u5347\u5E8F\uFF1A\u8F03\u65E9 -> \u8F03\u665A -> \u7121\u3002\u964D\u5E8F\uFF1A\u7121 -> \u8F03\u665A -> \u8F03\u65E9","Ascending respects status order (Overdue first). Descending reverses it.":"\u5347\u5E8F\u9075\u5FAA\u72C0\u614B\u9806\u5E8F\uFF08\u903E\u671F\u512A\u5148\uFF09\u3002\u964D\u5E8F\u5247\u76F8\u53CD\u3002","Ascending: A-Z. Descending: Z-A":"\u5347\u5E8F\uFF1AA-Z\u3002\u964D\u5E8F\uFF1AZ-A","Remove Criterion":"\u79FB\u9664\u6A19\u6E96","Add Sort Criterion":"\u6DFB\u52A0\u6392\u5E8F\u6A19\u6E96","Reset to Defaults":"\u91CD\u7F6E\u70BA\u9ED8\u8A8D\u503C","Has due date":"\u6709\u622A\u6B62\u65E5\u671F","Has date":"\u6709\u65E5\u671F","No date":"\u7121\u65E5\u671F",Any:"\u4EFB\u4F55","Has start date":"\u6709\u958B\u59CB\u65E5\u671F","Has scheduled date":"\u6709\u8A08\u5283\u65E5\u671F","Has created date":"\u6709\u5275\u5EFA\u65E5\u671F","Has completed date":"\u6709\u5B8C\u6210\u65E5\u671F","Only show tasks that match the completed date.":"\u50C5\u986F\u793A\u8207\u5B8C\u6210\u65E5\u671F\u5339\u914D\u7684\u4EFB\u52D9\u3002","Has recurrence":"\u6709\u91CD\u8907","Has property":"\u6709\u5C6C\u6027","No property":"\u7121\u5C6C\u6027","Unsaved Changes":"\u672A\u4FDD\u5B58\u7684\u66F4\u6539","Sort Tasks in Section":"\u5728\u5340\u6BB5\u4E2D\u6392\u5E8F\u4EFB\u52D9","Tasks sorted (using settings). Change application needs refinement.":"\u4EFB\u52D9\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8A2D\u7F6E\uFF09\u3002\u66F4\u6539\u61C9\u7528\u9700\u8981\u5B8C\u5584\u3002","Sort Tasks in Entire Document":"\u5728\u6574\u500B\u6587\u6A94\u4E2D\u6392\u5E8F\u4EFB\u52D9","Entire document sorted (using settings).":"\u6574\u500B\u6587\u6A94\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8A2D\u7F6E\uFF09\u3002","Tasks already sorted or no tasks found.":"\u4EFB\u52D9\u5DF2\u6392\u5E8F\u6216\u672A\u627E\u5230\u4EFB\u52D9\u3002","Task Handler":"\u4EFB\u52D9\u8655\u7406\u5668","Show progress bars based on heading":"\u6839\u64DA\u6A19\u984C\u986F\u793A\u9032\u5EA6\u689D","Toggle this to enable showing progress bars based on heading.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6839\u64DA\u6A19\u984C\u986F\u793A\u9032\u5EA6\u689D\u3002","# heading":"# \u6A19\u984C","Task Sorting":"\u4EFB\u52D9\u6392\u5E8F","Configure how tasks are sorted in the document.":"\u914D\u7F6E\u6587\u6A94\u4E2D\u4EFB\u52D9\u7684\u6392\u5E8F\u65B9\u5F0F\u3002","Enable Task Sorting":"\u555F\u7528\u4EFB\u52D9\u6392\u5E8F","Toggle this to enable commands for sorting tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6392\u5E8F\u4EFB\u52D9\u7684\u547D\u4EE4\u3002","Use relative time for date":"\u4F7F\u7528\u76F8\u5C0D\u6642\u9593\u8868\u793A\u65E5\u671F","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u5728\u4EFB\u52D9\u5217\u8868\u9805\u4E2D\u4F7F\u7528\u76F8\u5C0D\u6642\u9593\u8868\u793A\u65E5\u671F\uFF0C\u4F8B\u5982\u300C\u6628\u5929\u300D\u3001\u300C\u4ECA\u5929\u300D\u3001\u300C\u660E\u5929\u300D\u3001\u300C2\u5929\u5F8C\u300D\u3001\u300C3\u500B\u6708\u524D\u300D\u7B49\u3002","Ignore all tasks behind heading":"\u5FFD\u7565\u6A19\u984C\u5F8C\u7684\u6240\u6709\u4EFB\u52D9","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u8F38\u5165\u8981\u5FFD\u7565\u7684\u6A19\u984C\uFF0C\u4F8B\u5982\u300C## \u9805\u76EE\u300D\u3001\u300C## \u6536\u4EF6\u7BB1\u300D\uFF0C\u7528\u9017\u865F\u5206\u9694","Focus all tasks behind heading":"\u805A\u7126\u6A19\u984C\u5F8C\u7684\u6240\u6709\u4EFB\u52D9","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u8F38\u5165\u8981\u805A\u7126\u7684\u6A19\u984C\uFF0C\u4F8B\u5982\u300C## \u9805\u76EE\u300D\u3001\u300C## \u6536\u4EF6\u7BB1\u300D\uFF0C\u7528\u9017\u865F\u5206\u9694","Enable rewards":"\u555F\u7528\u734E\u52F5","Reward display type":"\u734E\u52F5\u986F\u793A\u985E\u578B","Choose how rewards are displayed when earned.":"\u9078\u64C7\u7372\u5F97\u734E\u52F5\u6642\u7684\u986F\u793A\u65B9\u5F0F\u3002","Modal dialog":"\u6A21\u614B\u5C0D\u8A71\u6846","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52D5\u63A5\u53D7\uFF09","Occurrence levels":"\u51FA\u73FE\u7B49\u7D1A","Add occurrence level":"\u6DFB\u52A0\u51FA\u73FE\u7B49\u7D1A","Reward items":"\u734E\u52F5\u9805\u76EE","Image url (optional)":"\u5716\u7247\u7DB2\u5740\uFF08\u53EF\u9078\uFF09","Delete reward item":"\u522A\u9664\u734E\u52F5\u9805\u76EE","Add reward item":"\u6DFB\u52A0\u734E\u52F5\u9805\u76EE","moved on":"\u79FB\u52D5\u65BC","Priority (High to Low)":"\u512A\u5148\u7D1A\uFF08\u9AD8\u5230\u4F4E\uFF09","Priority (Low to High)":"\u512A\u5148\u7D1A\uFF08\u4F4E\u5230\u9AD8\uFF09","Due Date (Earliest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Due Date (Latest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Scheduled Date (Earliest First)":"\u8A08\u5283\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Scheduled Date (Latest First)":"\u8A08\u5283\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Start Date (Earliest First)":"\u958B\u59CB\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Start Date (Latest First)":"\u958B\u59CB\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Created Date":"\u5275\u5EFA\u65E5\u671F",Overview:"\u6982\u89BD",Dates:"\u65E5\u671F","e.g. #tag1, #tag2":"\u4F8B\u5982 #\u6A19\u7C641, #\u6A19\u7C642","e.g. @home, @work":"\u4F8B\u5982 @\u5BB6, @\u5DE5\u4F5C","Recurrence Rule":"\u91CD\u8907\u898F\u5247","e.g. every day, every week":"\u4F8B\u5982 \u6BCF\u5929, \u6BCF\u9031","Edit Task":"\u7DE8\u8F2F\u4EFB\u52D9","Save Filter Configuration":"\u4FDD\u5B58\u904E\u6FFE\u5668\u914D\u7F6E","Filter Configuration Name":"\u904E\u6FFE\u5668\u914D\u7F6E\u540D\u7A31","Enter a name for this filter configuration":"\u8F38\u5165\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u7684\u540D\u7A31","Filter Configuration Description":"\u904E\u6FFE\u5668\u914D\u7F6E\u63CF\u8FF0","Enter a description for this filter configuration (optional)":"\u8F38\u5165\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u7684\u63CF\u8FF0\uFF08\u53EF\u9078\uFF09","Load Filter Configuration":"\u8F09\u5165\u904E\u6FFE\u5668\u914D\u7F6E","No saved filter configurations":"\u6C92\u6709\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u914D\u7F6E","Select a saved filter configuration":"\u9078\u64C7\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u914D\u7F6E",Load:"\u8F09\u5165",Created:"\u5DF2\u5275\u5EFA",Updated:"\u5DF2\u66F4\u65B0","Filter Summary":"\u904E\u6FFE\u5668\u6458\u8981","filter group":"\u904E\u6FFE\u5668\u7FA4\u7D44",filter:"\u904E\u6FFE\u5668","Root condition":"\u6839\u689D\u4EF6","Filter configuration name is required":"\u904E\u6FFE\u5668\u914D\u7F6E\u540D\u7A31\u70BA\u5FC5\u586B\u9805","Failed to save filter configuration":"\u4FDD\u5B58\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Filter configuration saved successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u4FDD\u5B58\u6210\u529F","Failed to load filter configuration":"\u8F09\u5165\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Filter configuration loaded successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u8F09\u5165\u6210\u529F","Failed to delete filter configuration":"\u522A\u9664\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Delete Filter Configuration":"\u522A\u9664\u904E\u6FFE\u5668\u914D\u7F6E","Are you sure you want to delete this filter configuration?":"\u60A8\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u55CE\uFF1F","Filter configuration deleted successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u522A\u9664\u6210\u529F",Match:"\u5339\u914D",All:"\u5168\u90E8","Add filter group":"\u6DFB\u52A0\u904E\u6FFE\u5668\u7FA4\u7D44","Save Current Filter":"\u4FDD\u5B58\u7576\u524D\u904E\u6FFE\u5668","Load Saved Filter":"\u8F09\u5165\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","filter in this group":"\u6B64\u7FA4\u7D44\u4E2D\u7684\u904E\u6FFE\u5668","Duplicate filter group":"\u8907\u88FD\u904E\u6FFE\u5668\u7FA4\u7D44","Remove filter group":"\u79FB\u9664\u904E\u6FFE\u5668\u7FA4\u7D44",OR:"\u6216","AND NOT":"\u4E14\u975E",AND:"\u4E14","Remove filter":"\u79FB\u9664\u904E\u6FFE\u5668",contains:"\u5305\u542B","does not contain":"\u4E0D\u5305\u542B",is:"\u662F","is not":"\u4E0D\u662F","starts with":"\u958B\u59CB\u65BC","ends with":"\u7D50\u675F\u65BC","is empty":"\u70BA\u7A7A","is not empty":"\u4E0D\u70BA\u7A7A","is true":"\u70BA\u771F","is false":"\u70BA\u5047","is set":"\u5DF2\u8A2D\u7F6E","is not set":"\u672A\u8A2D\u7F6E",equals:"\u7B49\u65BC",NOR:"\u7686\u975E","Group by":"\u5206\u7D44\u4F9D\u64DA","Select which task property to use for creating columns":"\u9078\u64C7\u7528\u65BC\u5275\u5EFA\u5217\u7684\u4EFB\u52D9\u5C6C\u6027","Hide empty columns":"\u96B1\u85CF\u7A7A\u5217","Hide columns that have no tasks.":"\u96B1\u85CF\u6C92\u6709\u4EFB\u52D9\u7684\u5217\u3002","Default sort field":"\u9ED8\u8A8D\u6392\u5E8F\u5B57\u6BB5","Default field to sort tasks by within each column.":"\u6BCF\u5217\u5167\u4EFB\u52D9\u6392\u5E8F\u7684\u9ED8\u8A8D\u5B57\u6BB5\u3002","Default sort order":"\u9ED8\u8A8D\u6392\u5E8F\u9806\u5E8F","Default order to sort tasks within each column.":"\u6BCF\u5217\u5167\u4EFB\u52D9\u6392\u5E8F\u7684\u9ED8\u8A8D\u9806\u5E8F\u3002","Custom Columns":"\u81EA\u5B9A\u7FA9\u5217","Configure custom columns for the selected grouping property":"\u70BA\u9078\u5B9A\u7684\u5206\u7D44\u5C6C\u6027\u914D\u7F6E\u81EA\u5B9A\u7FA9\u5217","No custom columns defined. Add columns below.":"\u672A\u5B9A\u7FA9\u81EA\u5B9A\u7FA9\u5217\u3002\u8ACB\u5728\u4E0B\u65B9\u6DFB\u52A0\u5217\u3002","Column Title":"\u5217\u6A19\u984C",Value:"\u503C","Remove Column":"\u79FB\u9664\u5217","Add Column":"\u6DFB\u52A0\u5217","New Column":"\u65B0\u5217","Reset Columns":"\u91CD\u7F6E\u5217","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u4EFB\u52D9\u5FC5\u9808\u5177\u6709\u6B64\u512A\u5148\u7D1A\uFF08\u4F8B\u5982 1\u30012\u30013\uFF09\u3002\u60A8\u4E5F\u53EF\u4EE5\u4F7F\u7528 'none' \u4F86\u904E\u6FFE\u6389\u6C92\u6709\u512A\u5148\u7D1A\u7684\u4EFB\u52D9\u3002","Move all incomplete subtasks to another file":"\u5C07\u6240\u6709\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move direct incomplete subtasks to another file":"\u5C07\u76F4\u63A5\u7684\u672A\u5B8C\u6210\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6",Filter:"\u904E\u6FFE\u5668","Reset Filter":"\u91CD\u7F6E\u904E\u6FFE\u5668","Saved Filters":"\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","Manage Saved Filters":"\u7BA1\u7406\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","Filter applied: ":"\u5DF2\u61C9\u7528\u904E\u6FFE\u5668\uFF1A","Recurrence date calculation":"\u91CD\u8907\u65E5\u671F\u8A08\u7B97","Choose how to calculate the next date for recurring tasks":"\u9078\u64C7\u5982\u4F55\u8A08\u7B97\u91CD\u8907\u4EFB\u52D9\u7684\u4E0B\u4E00\u500B\u65E5\u671F","Based on due date":"\u57FA\u65BC\u622A\u6B62\u65E5\u671F","Based on scheduled date":"\u57FA\u65BC\u8A08\u5283\u65E5\u671F","Based on current date":"\u57FA\u65BC\u7576\u524D\u65E5\u671F","Task Gutter":"\u4EFB\u52D9\u908A\u6B04","Configure the task gutter.":"\u914D\u7F6E\u4EFB\u52D9\u908A\u6B04\u3002","Enable task gutter":"\u555F\u7528\u4EFB\u52D9\u908A\u6B04","Toggle this to enable the task gutter.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u908A\u6B04\u3002","Incomplete Task Mover":"\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Enable incomplete task mover":"\u555F\u7528\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Toggle this to enable commands for moving incomplete tasks to another file.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u5C07\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Incomplete task marker type":"\u672A\u5B8C\u6210\u4EFB\u52D9\u6A19\u8A18\u985E\u578B","Choose what type of marker to add to moved incomplete tasks":"\u9078\u64C7\u70BA\u79FB\u52D5\u7684\u672A\u5B8C\u6210\u4EFB\u52D9\u6DFB\u52A0\u4EC0\u9EBC\u985E\u578B\u7684\u6A19\u8A18","Incomplete version marker text":"\u672A\u5B8C\u6210\u7248\u672C\u6A19\u8A18\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9\u6642\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u6210\u65E5\u671F\u6A19\u8A18\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9\u6642\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u6210\u81EA\u5B9A\u7FA9\u6A19\u8A18\u6587\u672C","With current file link for incomplete tasks":"\u70BA\u672A\u5B8C\u6210\u4EFB\u52D9\u6DFB\u52A0\u7576\u524D\u6587\u4EF6\u93C8\u63A5","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u5C07\u70BA\u79FB\u52D5\u7684\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u6DFB\u52A0\u6307\u5411\u7576\u524D\u6587\u4EF6\u7684\u93C8\u63A5\u3002","Line Number":"\u884C\u865F","Clear Date":"\u6E05\u9664\u65E5\u671F","Copy view":"\u8907\u88FD\u8996\u5716","View copied successfully: ":"\u8996\u5716\u8907\u88FD\u6210\u529F\uFF1A","Copy of ":"\u526F\u672C ","Copy view: ":"\u8907\u88FD\u8996\u5716\uFF1A","Creating a copy based on: ":"\u57FA\u65BC\u4EE5\u4E0B\u5167\u5BB9\u5275\u5EFA\u526F\u672C\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u60A8\u53EF\u4EE5\u4FEE\u6539\u4E0B\u9762\u7684\u6240\u6709\u8A2D\u7F6E\u3002\u539F\u59CB\u8996\u5716\u5C07\u4FDD\u6301\u4E0D\u8B8A\u3002","Tasks Plugin Detected":"\u6AA2\u6E2C\u5230 Tasks \u63D2\u4EF6","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u7576\u524D\u7684\u72C0\u614B\u7BA1\u7406\u548C\u65E5\u671F\u7BA1\u7406\u53EF\u80FD\u8207 Tasks \u63D2\u4EF6\u885D\u7A81\u3002\u8ACB\u67E5\u770B","compatibility documentation":"\u517C\u5BB9\u6027\u6587\u6A94"," for more information.":"\u4EE5\u7372\u53D6\u66F4\u591A\u4FE1\u606F\u3002","Auto Date Manager":"\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u5668","Automatically manage dates based on task status changes":"\u6839\u64DA\u4EFB\u52D9\u72C0\u614B\u8B8A\u5316\u81EA\u52D5\u7BA1\u7406\u65E5\u671F","Enable auto date manager":"\u555F\u7528\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u5668","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5728\u4EFB\u52D9\u72C0\u614B\u66F4\u6539\u6642\u555F\u7528\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u3002\u65E5\u671F\u5C07\u6839\u64DA\u60A8\u9996\u9078\u7684\u5143\u6578\u64DA\u683C\u5F0F\uFF08Tasks \u8868\u60C5\u7B26\u865F\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u522A\u9664\u3002","Manage completion dates":"\u7BA1\u7406\u5B8C\u6210\u65E5\u671F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210\u6642\u81EA\u52D5\u6DFB\u52A0\u5B8C\u6210\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Manage start dates":"\u7BA1\u7406\u958B\u59CB\u65E5\u671F","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u9032\u884C\u4E2D\u6642\u81EA\u52D5\u6DFB\u52A0\u958B\u59CB\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Manage cancelled dates":"\u7BA1\u7406\u53D6\u6D88\u65E5\u671F","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u5DF2\u653E\u68C4\u6642\u81EA\u52D5\u6DFB\u52A0\u53D6\u6D88\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Copy View":"\u8907\u88FD\u8996\u5716",Beta:"\u6E2C\u8A66\u7248","Beta Test Features":"\u6E2C\u8A66\u7248\u529F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u7576\u524D\u8655\u65BC\u6E2C\u8A66\u968E\u6BB5\u7684\u5BE6\u9A57\u6027\u529F\u80FD\u3002\u9019\u4E9B\u529F\u80FD\u53EF\u80FD\u4E0D\u7A69\u5B9A\uFF0C\u5728\u672A\u4F86\u7684\u66F4\u65B0\u4E2D\u53EF\u80FD\u6703\u767C\u751F\u8B8A\u5316\u6216\u88AB\u79FB\u9664\u3002","Beta Features Warning":"\u6E2C\u8A66\u7248\u529F\u80FD\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u9019\u4E9B\u529F\u80FD\u662F\u5BE6\u9A57\u6027\u7684\uFF0C\u53EF\u80FD\u4E0D\u7A69\u5B9A\u3002\u7531\u65BC Obsidian API \u8B8A\u5316\u6216\u5176\u4ED6\u56E0\u7D20\uFF0C\u5B83\u5011\u53EF\u80FD\u5728\u672A\u4F86\u7684\u66F4\u65B0\u4E2D\u767C\u751F\u91CD\u5927\u8B8A\u5316\u6216\u88AB\u79FB\u9664\u3002\u8ACB\u8B39\u614E\u4F7F\u7528\u4E26\u63D0\u4F9B\u53CD\u994B\u4EE5\u5E6B\u52A9\u6539\u9032\u9019\u4E9B\u529F\u80FD\u3002","Base View":"\u57FA\u790E\u8996\u5716","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u64F4\u5C55\u9ED8\u8A8D Task Genius \u8996\u5716\u7684\u9AD8\u7D1A\u8996\u5716\u7BA1\u7406\u529F\u80FD\uFF0C\u63D0\u4F9B\u984D\u5916\u7684\u529F\u80FD\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u555F\u7528\u5BE6\u9A57\u6027\u57FA\u790E\u8996\u5716\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F37\u7684\u8996\u5716\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u6703\u53D7\u5230\u672A\u4F86 Obsidian API \u8B8A\u5316\u7684\u5F71\u97FF\u3002\u60A8\u53EF\u80FD\u9700\u8981\u91CD\u555F Obsidian \u624D\u80FD\u770B\u5230\u8B8A\u5316\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u5982\u679C\u60A8\u5DF2\u7D93\u5728\u57FA\u790E\u8996\u5716\u4E2D\u5275\u5EFA\u4E86\u4EFB\u52D9\u8996\u5716\uFF0C\u7576\u7981\u7528\u6B64\u529F\u80FD\u6642\uFF0C\u60A8\u9700\u8981\u95DC\u9589\u6240\u6709\u57FA\u790E\u8996\u5716\u4E26\u901A\u904E\u624B\u52D5\u7DE8\u8F2F\u522A\u9664\u672A\u4F7F\u7528\u7684\u8996\u5716\u3002","Enable Base View":"\u555F\u7528\u57FA\u790E\u8996\u5716","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u555F\u7528\u5BE6\u9A57\u6027\u57FA\u790E\u8996\u5716\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F37\u7684\u8996\u5716\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u6703\u53D7\u5230\u672A\u4F86 Obsidian API \u8B8A\u5316\u7684\u5F71\u97FF\u3002",Enable:"\u555F\u7528","Beta Feedback":"\u6E2C\u8A66\u7248\u53CD\u994B","Help improve these features by providing feedback on your experience.":"\u901A\u904E\u63D0\u4F9B\u60A8\u7684\u4F7F\u7528\u9AD4\u9A57\u53CD\u994B\u4F86\u5E6B\u52A9\u6539\u9032\u9019\u4E9B\u529F\u80FD\u3002","Report Issues":"\u5831\u544A\u554F\u984C","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u5982\u679C\u60A8\u5728\u4F7F\u7528\u6E2C\u8A66\u7248\u529F\u80FD\u6642\u9047\u5230\u4EFB\u4F55\u554F\u984C\uFF0C\u8ACB\u5831\u544A\u5B83\u5011\u4EE5\u5E6B\u52A9\u6539\u9032\u63D2\u4EF6\u3002","Report Issue":"\u5831\u544A\u554F\u984C",Table:"\u8868\u683C","No Priority":"\u7121\u512A\u5148\u7D1A","Click to select date":"\u9EDE\u64CA\u9078\u64C7\u65E5\u671F","Enter tags separated by commas":"\u8F38\u5165\u6A19\u7C64\uFF0C\u7528\u9017\u865F\u5206\u9694","Enter project name":"\u8F38\u5165\u9805\u76EE\u540D\u7A31","Enter context":"\u8F38\u5165\u4E0A\u4E0B\u6587","Invalid value":"\u7121\u6548\u503C","No tasks":"\u7121\u4EFB\u52D9","1 task":"1 \u4EFB\u52D9",Columns:"\u5217","Toggle column visibility":"\u5207\u63DB\u5217\u53EF\u898B\u6027","Switch to List Mode":"\u5207\u63DB\u5230\u5217\u8868\u6A21\u5F0F","Switch to Tree Mode":"\u5207\u63DB\u5230\u6A39\u5F62\u6A21\u5F0F",Collapse:"\u647A\u758A",Expand:"\u5C55\u958B","Collapse subtasks":"\u647A\u758A\u5B50\u4EFB\u52D9","Expand subtasks":"\u5C55\u958B\u5B50\u4EFB\u52D9","Click to change status":"\u9EDE\u64CA\u66F4\u6539\u72C0\u614B","Click to set priority":"\u9EDE\u64CA\u8A2D\u7F6E\u512A\u5148\u7D1A",Yesterday:"\u6628\u5929","Click to edit date":"\u9EDE\u64CA\u7DE8\u8F2F\u65E5\u671F","No tags":"\u7121\u6A19\u7C64","Click to open file":"\u9EDE\u64CA\u6253\u958B\u6587\u4EF6","No tasks found":"\u672A\u627E\u5230\u4EFB\u52D9","Completed Date":"\u5B8C\u6210\u65E5\u671F","Loading...":"\u8F09\u5165\u4E2D...","Advanced Filtering":"\u9032\u968E\u904E\u6FFE\u5668","Use advanced multi-group filtering with complex conditions":"\u4F7F\u7528\u9032\u968E\u591A\u7D44\u904E\u6FFE\u5668\uFF0C\u652F\u63F4\u8907\u96DC\u689D\u4EF6","Auto-moved":"\u81EA\u52D5\u79FB\u52D5","tasks to":"\u4EFB\u52D9\u79FB\u81F3","Failed to auto-move tasks:":"\u81EA\u52D5\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","Workflow created successfully":"\u5DE5\u4F5C\u6D41\u7A0B\u5EFA\u7ACB\u6210\u529F","No task structure found at cursor position":"\u5728\u6E38\u6A19\u4F4D\u7F6E\u672A\u627E\u5230\u4EFB\u52D9\u7D50\u69CB","Use similar existing workflow":"\u4F7F\u7528\u985E\u4F3C\u7684\u73FE\u6709\u5DE5\u4F5C\u6D41\u7A0B","Create new workflow":"\u5EFA\u7ACB\u65B0\u5DE5\u4F5C\u6D41\u7A0B","No workflows defined. Create a workflow first.":"\u5C1A\u672A\u5B9A\u7FA9\u4EFB\u4F55\u5DE5\u4F5C\u6D41\u7A0B\u3002\u8ACB\u5148\u5EFA\u7ACB\u4E00\u500B\u5DE5\u4F5C\u6D41\u7A0B\u3002","Workflow task created":"\u5DF2\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B\u4EFB\u52D9","Task converted to workflow root":"\u4EFB\u52D9\u5DF2\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Failed to convert task":"\u8F49\u63DB\u4EFB\u52D9\u5931\u6557","No workflows to duplicate":"\u6C92\u6709\u53EF\u8907\u88FD\u7684\u5DE5\u4F5C\u6D41\u7A0B",Duplicate:"\u8907\u88FD","Workflow duplicated and saved":"\u5DE5\u4F5C\u6D41\u7A0B\u5DF2\u8907\u88FD\u4E26\u5132\u5B58","Workflow created from task structure":"\u5DF2\u5F9E\u4EFB\u52D9\u7D50\u69CB\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Create Quick Workflow":"\u5FEB\u901F\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Convert Task to Workflow":"\u5C07\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B","Convert to Workflow Root":"\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Start Workflow Here":"\u5F9E\u6B64\u8655\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B","Duplicate Workflow":"\u8907\u88FD\u5DE5\u4F5C\u6D41\u7A0B","Simple Linear Workflow":"\u7C21\u55AE\u7DDA\u6027\u5DE5\u4F5C\u6D41\u7A0B","A basic linear workflow with sequential stages":"\u4E00\u500B\u5177\u6709\u9023\u7E8C\u968E\u6BB5\u7684\u57FA\u672C\u7DDA\u6027\u5DE5\u4F5C\u6D41\u7A0B","To Do":"\u5F85\u8FA6",Done:"\u5B8C\u6210","Project Management":"\u5C08\u6848\u7BA1\u7406",Coding:"\u7A0B\u5F0F\u958B\u767C","Research Process":"\u7814\u7A76\u6D41\u7A0B","Academic or professional research workflow":"\u5B78\u8853\u6216\u5C08\u696D\u7814\u7A76\u5DE5\u4F5C\u6D41\u7A0B","Literature Review":"\u6587\u737B\u56DE\u9867","Data Collection":"\u8CC7\u6599\u6536\u96C6",Analysis:"\u5206\u6790",Writing:"\u64B0\u5BEB",Published:"\u5DF2\u767C\u8868","Custom Workflow":"\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Create a custom workflow from scratch":"\u5F9E\u982D\u5EFA\u7ACB\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Quick Workflow Creation":"\u5FEB\u901F\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Workflow Template":"\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Choose a template to start with or create a custom workflow":"\u9078\u64C7\u7BC4\u672C\u958B\u59CB\uFF0C\u6216\u5EFA\u7ACB\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Workflow Name":"\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31","A descriptive name for your workflow":"\u70BA\u60A8\u7684\u5DE5\u4F5C\u6D41\u7A0B\u63D0\u4F9B\u63CF\u8FF0\u6027\u540D\u7A31","Enter workflow name":"\u8F38\u5165\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31","Unique identifier (auto-generated from name)":"\u552F\u4E00\u8B58\u5225\u78BC\uFF08\u7531\u540D\u7A31\u81EA\u52D5\u7522\u751F\uFF09","Optional description of the workflow purpose":"\uFF08\u9078\u586B\uFF09\u5DE5\u4F5C\u6D41\u7A0B\u7528\u9014\u63CF\u8FF0","Describe your workflow...":"\u63CF\u8FF0\u60A8\u7684\u5DE5\u4F5C\u6D41\u7A0B\u2026\u2026","Preview of workflow stages (edit after creation for advanced options)":"\u5DE5\u4F5C\u6D41\u7A0B\u968E\u6BB5\u9810\u89BD\uFF08\u5EFA\u7ACB\u5F8C\u53EF\u7DE8\u8F2F\u9032\u968E\u9078\u9805\uFF09","Add Stage":"\u65B0\u589E\u968E\u6BB5","No stages defined. Choose a template or add stages manually.":"\u5C1A\u672A\u5B9A\u7FA9\u4EFB\u4F55\u968E\u6BB5\u3002\u8ACB\u9078\u64C7\u7BC4\u672C\u6216\u624B\u52D5\u65B0\u589E\u968E\u6BB5\u3002","Remove stage":"\u79FB\u9664\u968E\u6BB5","Create Workflow":"\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Please provide a workflow name and ID":"\u8ACB\u63D0\u4F9B\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31\u8207\u8B58\u5225\u78BC","Please add at least one stage to the workflow":"\u8ACB\u81F3\u5C11\u65B0\u589E\u4E00\u500B\u968E\u6BB5\u5230\u5DE5\u4F5C\u6D41\u7A0B",Discord:"Discord","Chat with us":"\u8207\u6211\u5011\u804A\u5929","Open Discord":"\u958B\u555F Discord","Task Genius icons are designed by":"Task Genius \u5716\u793A\u8A2D\u8A08\u8005\uFF1A","Task Genius Icons":"Task Genius \u5716\u793A","ICS Calendar Integration":"ICS \u884C\u4E8B\u66C6\u6574\u5408","Configure external calendar sources to display events in your task views.":"\u8A2D\u5B9A\u5916\u90E8\u884C\u4E8B\u66C6\u4F86\u6E90\u4EE5\u5728\u4EFB\u52D9\u8996\u5716\u4E2D\u986F\u793A\u4E8B\u4EF6\u3002","Add New Calendar Source":"\u65B0\u589E\u884C\u4E8B\u66C6\u4F86\u6E90","Global Settings":"\u5168\u57DF\u8A2D\u5B9A","Enable Background Refresh":"\u555F\u7528\u80CC\u666F\u5237\u65B0","Automatically refresh calendar sources in the background":"\u81EA\u52D5\u5728\u80CC\u666F\u5237\u65B0\u884C\u4E8B\u66C6\u4F86\u6E90","Global Refresh Interval":"\u5168\u57DF\u5237\u65B0\u9593\u9694","Default refresh interval for all sources (minutes)":"\u6240\u6709\u4F86\u6E90\u7684\u9810\u8A2D\u5237\u65B0\u9593\u9694\uFF08\u5206\u9418\uFF09","Maximum Cache Age":"\u5FEB\u53D6\u6700\u5927\u4FDD\u5B58\u6642\u9593","How long to keep cached data (hours)":"\u5FEB\u53D6\u8CC7\u6599\u4FDD\u5B58\u6642\u9577\uFF08\u5C0F\u6642\uFF09","Network Timeout":"\u7DB2\u8DEF\u903E\u6642","Request timeout in seconds":"\u8ACB\u6C42\u903E\u6642\uFF08\u79D2\uFF09","Max Events Per Source":"\u6BCF\u500B\u4F86\u6E90\u6700\u5927\u4E8B\u4EF6\u6578","Maximum number of events to load from each source":"\u6BCF\u500B\u4F86\u6E90\u53EF\u8F09\u5165\u7684\u6700\u5927\u4E8B\u4EF6\u6578","Default Event Color":"\u9810\u8A2D\u4E8B\u4EF6\u984F\u8272","Default color for events without a specific color":"\u7121\u6307\u5B9A\u984F\u8272\u4E8B\u4EF6\u7684\u9810\u8A2D\u984F\u8272","Calendar Sources":"\u884C\u4E8B\u66C6\u4F86\u6E90","No calendar sources configured. Add a source to get started.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u884C\u4E8B\u66C6\u4F86\u6E90\u3002\u8ACB\u65B0\u589E\u4F86\u6E90\u4EE5\u958B\u59CB\u4F7F\u7528\u3002","ICS Enabled":"ICS \u5DF2\u555F\u7528","ICS Disabled":"ICS \u5DF2\u505C\u7528",URL:"\u7DB2\u5740",Refresh:"\u5237\u65B0",min:"\u5206\u9418",Color:"\u984F\u8272","Edit this calendar source":"\u7DE8\u8F2F\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90",Sync:"\u540C\u6B65","Sync this calendar source now":"\u7ACB\u5373\u540C\u6B65\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90","Syncing...":"\u540C\u6B65\u4E2D\u2026\u2026","Sync completed successfully":"\u540C\u6B65\u6210\u529F\u5B8C\u6210","Sync failed: ":"\u540C\u6B65\u5931\u6557\uFF1A",Disable:"\u505C\u7528","Disable this source":"\u505C\u7528\u6B64\u4F86\u6E90","Enable this source":"\u555F\u7528\u6B64\u4F86\u6E90","Delete this calendar source":"\u522A\u9664\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90","Are you sure you want to delete this calendar source?":"\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90\u55CE\uFF1F","Edit ICS Source":"\u7DE8\u8F2F ICS \u4F86\u6E90","Add ICS Source":"\u65B0\u589E ICS \u4F86\u6E90","ICS Source Name":"ICS \u4F86\u6E90\u540D\u7A31","Display name for this calendar source":"\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90\u7684\u986F\u793A\u540D\u7A31","My Calendar":"\u6211\u7684\u884C\u4E8B\u66C6","ICS URL":"ICS \u7DB2\u5740","URL to the ICS/iCal file":"ICS/iCal \u6A94\u6848\u7684\u7DB2\u5740","Whether this source is active":"\u6B64\u4F86\u6E90\u662F\u5426\u555F\u7528","Refresh Interval":"\u5237\u65B0\u9593\u9694","How often to refresh this source (minutes)":"\u6B64\u4F86\u6E90\u7684\u5237\u65B0\u983B\u7387\uFF08\u5206\u9418\uFF09","Color for events from this source (optional)":"\u6B64\u4F86\u6E90\u4E8B\u4EF6\u7684\u984F\u8272\uFF08\u9078\u586B\uFF09","Show Type":"\u986F\u793A\u985E\u578B","How to display events from this source in calendar views":"\u5982\u4F55\u5728\u884C\u4E8B\u66C6\u8996\u5716\u4E2D\u986F\u793A\u6B64\u4F86\u6E90\u7684\u4E8B\u4EF6",Event:"\u4E8B\u4EF6",Badge:"\u5FBD\u7AE0","Show All-Day Events":"\u986F\u793A\u5168\u5929\u4E8B\u4EF6","Include all-day events from this source":"\u5305\u542B\u6B64\u4F86\u6E90\u7684\u5168\u5929\u4E8B\u4EF6","Show Timed Events":"\u986F\u793A\u5B9A\u6642\u4E8B\u4EF6","Include timed events from this source":"\u5305\u542B\u6B64\u4F86\u6E90\u7684\u5B9A\u6642\u4E8B\u4EF6","Authentication (Optional)":"\u9A57\u8B49\uFF08\u9078\u586B\uFF09","Authentication Type":"\u9A57\u8B49\u985E\u578B","Type of authentication required":"\u6240\u9700\u9A57\u8B49\u985E\u578B","ICS Auth None":"\u7121 ICS \u9A57\u8B49","Basic Auth":"\u57FA\u672C\u9A57\u8B49","Bearer Token":"\u6301\u6709\u8005\u6B0A\u6756","Custom Headers":"\u81EA\u8A02\u6A19\u982D","Text Replacements":"\u6587\u5B57\u53D6\u4EE3","Configure rules to modify event text using regular expressions":"\u8A2D\u5B9A\u898F\u5247\u4EE5\u4F7F\u7528\u6B63\u5247\u8868\u9054\u5F0F\u4FEE\u6539\u4E8B\u4EF6\u6587\u5B57","No text replacement rules configured":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u6587\u5B57\u53D6\u4EE3\u898F\u5247",Enabled:"\u555F\u7528",Disabled:"\u505C\u7528",Target:"\u76EE\u6A19",Pattern:"\u6A21\u5F0F",Replacement:"\u53D6\u4EE3","Are you sure you want to delete this text replacement rule?":"\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u6587\u5B57\u53D6\u4EE3\u898F\u5247\u55CE\uFF1F","Add Text Replacement Rule":"\u65B0\u589E\u6587\u5B57\u53D6\u4EE3\u898F\u5247","ICS Username":"ICS \u4F7F\u7528\u8005\u540D\u7A31","ICS Password":"ICS \u5BC6\u78BC","ICS Bearer Token":"ICS \u6B0A\u6756","JSON object with custom headers":"\u5305\u542B\u81EA\u8A02\u6A19\u982D\u7684 JSON \u7269\u4EF6","Holiday Configuration":"\u5047\u671F\u8A2D\u5B9A","Configure how holiday events are detected and displayed":"\u8A2D\u5B9A\u5982\u4F55\u5075\u6E2C\u8207\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Enable Holiday Detection":"\u555F\u7528\u5047\u671F\u5075\u6E2C","Automatically detect and group holiday events":"\u81EA\u52D5\u5075\u6E2C\u4E26\u5206\u7D44\u5047\u671F\u4E8B\u4EF6","Status Mapping":"\u72C0\u614B\u5C0D\u61C9","Configure how ICS events are mapped to task statuses":"\u8A2D\u5B9A ICS \u4E8B\u4EF6\u5982\u4F55\u5C0D\u61C9\u5230\u4EFB\u52D9\u72C0\u614B","Enable Status Mapping":"\u555F\u7528\u72C0\u614B\u5C0D\u61C9","Automatically map ICS events to specific task statuses":"\u81EA\u52D5\u5C07 ICS \u4E8B\u4EF6\u5C0D\u61C9\u5230\u7279\u5B9A\u4EFB\u52D9\u72C0\u614B","Grouping Strategy":"\u5206\u7D44\u7B56\u7565","How to handle consecutive holiday events":"\u5982\u4F55\u8655\u7406\u9023\u7E8C\u5047\u671F\u4E8B\u4EF6","Show All Events":"\u986F\u793A\u6240\u6709\u4E8B\u4EF6","Show First Day Only":"\u50C5\u986F\u793A\u7B2C\u4E00\u5929","Show Summary":"\u986F\u793A\u6458\u8981","Show First and Last":"\u986F\u793A\u9996\u65E5\u8207\u672B\u65E5","Maximum Gap Days":"\u6700\u5927\u9593\u9694\u5929\u6578","Maximum days between events to consider them consecutive":"\u8996\u70BA\u9023\u7E8C\u4E8B\u4EF6\u7684\u6700\u5927\u9593\u9694\u5929\u6578","Show in Forecast":"\u5728\u9810\u6E2C\u4E2D\u986F\u793A","Whether to show holiday events in forecast view":"\u662F\u5426\u5728\u9810\u6E2C\u8996\u5716\u4E2D\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Show in Calendar":"\u5728\u884C\u4E8B\u66C6\u4E2D\u986F\u793A","Whether to show holiday events in calendar view":"\u662F\u5426\u5728\u884C\u4E8B\u66C6\u8996\u5716\u4E2D\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Detection Patterns":"\u5075\u6E2C\u6A21\u5F0F","Summary Patterns":"\u6458\u8981\u6A21\u5F0F","Regex patterns to match in event titles (one per line)":"\u4E8B\u4EF6\u6A19\u984C\u4E2D\u8981\u6BD4\u5C0D\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F\uFF08\u6BCF\u884C\u4E00\u500B\uFF09",Keywords:"\u95DC\u9375\u5B57","Keywords to detect in event text (one per line)":"\u4E8B\u4EF6\u6587\u5B57\u4E2D\u8981\u5075\u6E2C\u7684\u95DC\u9375\u5B57\uFF08\u6BCF\u884C\u4E00\u500B\uFF09",Categories:"\u5206\u985E","Event categories that indicate holidays (one per line)":"\u8868\u793A\u5047\u671F\u7684\u4E8B\u4EF6\u5206\u985E\uFF08\u6BCF\u884C\u4E00\u500B\uFF09","Group Display Format":"\u5206\u7D44\u986F\u793A\u683C\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u5206\u7D44\u5047\u671F\u986F\u793A\u683C\u5F0F\u3002\u53EF\u7528 {title}\u3001{count}\u3001{startDate}\u3001{endDate}","Override ICS Status":"\u8986\u84CB ICS \u72C0\u614B","Override original ICS event status with mapped status":"\u4EE5\u5C0D\u61C9\u72C0\u614B\u8986\u84CB\u539F\u59CB ICS \u4E8B\u4EF6\u72C0\u614B","Timing Rules":"\u6642\u9593\u898F\u5247","Past Events Status":"\u904E\u53BB\u4E8B\u4EF6\u72C0\u614B","Status for events that have already ended":"\u5DF2\u7D50\u675F\u4E8B\u4EF6\u7684\u72C0\u614B","Status Incomplete":"\u672A\u5B8C\u6210\u72C0\u614B","Status Complete":"\u5DF2\u5B8C\u6210\u72C0\u614B","Status Cancelled":"\u5DF2\u53D6\u6D88\u72C0\u614B","Status In Progress":"\u9032\u884C\u4E2D\u72C0\u614B","Status Question":"\u7591\u554F\u72C0\u614B","Current Events Status":"\u7576\u524D\u4E8B\u4EF6\u72C0\u614B","Status for events happening today":"\u4ECA\u65E5\u4E8B\u4EF6\u7684\u72C0\u614B","Future Events Status":"\u672A\u4F86\u4E8B\u4EF6\u72C0\u614B","Status for events in the future":"\u672A\u4F86\u4E8B\u4EF6\u7684\u72C0\u614B","Property Rules":"\u5C6C\u6027\u898F\u5247","Optional rules based on event properties (higher priority than timing rules)":"\u6839\u64DA\u4E8B\u4EF6\u5C6C\u6027\u7684\u9078\u7528\u898F\u5247\uFF08\u512A\u5148\u65BC\u6642\u9593\u898F\u5247\uFF09","Holiday Status":"\u5047\u671F\u72C0\u614B","Status for events detected as holidays":"\u5075\u6E2C\u70BA\u5047\u671F\u7684\u4E8B\u4EF6\u72C0\u614B","Use timing rules":"\u4F7F\u7528\u6642\u9593\u898F\u5247","Category Mapping":"\u5206\u985E\u5C0D\u61C9","Map specific categories to statuses (format: category:status, one per line)":"\u5C07\u7279\u5B9A\u5206\u985E\u5C0D\u61C9\u5230\u72C0\u614B\uFF08\u683C\u5F0F\uFF1A\u5206\u985E:\u72C0\u614B\uFF0C\u6BCF\u884C\u4E00\u7D44\uFF09","Please enter a name for the source":"\u8ACB\u8F38\u5165\u4F86\u6E90\u540D\u7A31","Please enter a URL for the source":"\u8ACB\u8F38\u5165\u4F86\u6E90\u7684\u7DB2\u5740","Please enter a valid URL":"\u8ACB\u8F38\u5165\u6709\u6548\u7684\u7DB2\u5740","Edit Text Replacement Rule":"\u7DE8\u8F2F\u6587\u5B57\u53D6\u4EE3\u898F\u5247","Rule Name":"\u898F\u5247\u540D\u7A31","Descriptive name for this replacement rule":"\u6B64\u53D6\u4EE3\u898F\u5247\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Remove Meeting Prefix":"\u79FB\u9664\u6703\u8B70\u524D\u7DB4","Whether this rule is active":"\u6B64\u898F\u5247\u662F\u5426\u555F\u7528","Target Field":"\u76EE\u6A19\u6B04\u4F4D","Which field to apply the replacement to":"\u8981\u5957\u7528\u53D6\u4EE3\u7684\u6B04\u4F4D","Summary/Title":"\u6458\u8981\uFF0F\u6A19\u984C",Location:"\u5730\u9EDE","All Fields":"\u6240\u6709\u6B04\u4F4D","Pattern (Regular Expression)":"\u6A21\u5F0F\uFF08\u6B63\u5247\u8868\u9054\u5F0F\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u8981\u6BD4\u5C0D\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F\u3002\u4F7F\u7528\u62EC\u865F\u5EFA\u7ACB\u64F7\u53D6\u7FA4\u7D44\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u7528\u65BC\u53D6\u4EE3\u6BD4\u5C0D\u5167\u5BB9\u7684\u6587\u5B57\u3002\u53EF\u7528 $1\u3001$2 \u7B49\u4EE3\u8868\u64F7\u53D6\u7FA4\u7D44\u3002","Regex Flags":"\u6B63\u5247\u6A19\u8A8C","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u5247\u8868\u9054\u5F0F\u6A19\u8A8C\uFF08\u5982 'g' \u4EE3\u8868\u5168\u57DF\uFF0C'i' \u4EE3\u8868\u4E0D\u5206\u5927\u5C0F\u5BEB\uFF09",Examples:"\u7BC4\u4F8B","Remove prefix":"\u79FB\u9664\u524D\u7DB4","Replace room numbers":"\u53D6\u4EE3\u623F\u9593\u865F\u78BC","Swap words":"\u4EA4\u63DB\u55AE\u5B57","Test Rule":"\u6E2C\u8A66\u898F\u5247","Output: ":"\u8F38\u51FA\uFF1A","Test Input":"\u6E2C\u8A66\u8F38\u5165","Enter text to test the replacement rule":"\u8F38\u5165\u6587\u5B57\u4EE5\u6E2C\u8A66\u53D6\u4EE3\u898F\u5247","Please enter a name for the rule":"\u8ACB\u8F38\u5165\u898F\u5247\u540D\u7A31","Please enter a pattern":"\u8ACB\u8F38\u5165\u6A21\u5F0F","Invalid regular expression pattern":"\u7121\u6548\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F","Enhanced Project Configuration":"\u9032\u968E\u5C08\u6848\u8A2D\u5B9A","Configure advanced project detection and management features":"\u8A2D\u5B9A\u9032\u968E\u5C08\u6848\u5075\u6E2C\u8207\u7BA1\u7406\u529F\u80FD","Enable enhanced project features":"\u555F\u7528\u9032\u968E\u5C08\u6848\u529F\u80FD","Enable path-based, metadata-based, and config file-based project detection":"\u555F\u7528\u57FA\u65BC\u8DEF\u5F91\u3001\u4E2D\u7E7C\u8CC7\u6599\u8207\u8A2D\u5B9A\u6A94\u7684\u5C08\u6848\u5075\u6E2C","Path-based Project Mappings":"\u8DEF\u5F91\u5C08\u6848\u5C0D\u61C9","Configure project names based on file paths":"\u6839\u64DA\u6A94\u6848\u8DEF\u5F91\u8A2D\u5B9A\u5C08\u6848\u540D\u7A31","No path mappings configured yet.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u8DEF\u5F91\u5C0D\u61C9\u3002",Mapping:"\u5C0D\u61C9","Path pattern (e.g., Projects/Work)":"\u8DEF\u5F91\u6A21\u5F0F\uFF08\u4F8B\u5982\uFF1AProjects/Work\uFF09","Add Path Mapping":"\u65B0\u589E\u8DEF\u5F91\u5C0D\u61C9","Metadata-based Project Configuration":"\u4E2D\u7E7C\u8CC7\u6599\u5C08\u6848\u8A2D\u5B9A","Configure project detection from file frontmatter":"\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u5075\u6E2C\u5C08\u6848","Enable metadata project detection":"\u555F\u7528\u4E2D\u7E7C\u8CC7\u6599\u5C08\u6848\u5075\u6E2C","Detect project from file frontmatter metadata":"\u5F9E\u6A94\u6848\u524D\u7F6E\u4E2D\u7E7C\u8CC7\u6599\u5075\u6E2C\u5C08\u6848","Metadata key":"\u4E2D\u7E7C\u8CC7\u6599\u9375","The frontmatter key to use for project name":"\u7528\u65BC\u5C08\u6848\u540D\u7A31\u7684\u524D\u7F6E\u8CC7\u6599\u9375","Inherit other metadata fields from file frontmatter":"\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F\u5176\u4ED6\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u5141\u8A31\u5B50\u4EFB\u52D9\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F\u4E2D\u7E7C\u8CC7\u6599\u3002\u505C\u7528\u6642\uFF0C\u50C5\u9802\u5C64\u4EFB\u52D9\u6703\u7E7C\u627F\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u3002","Project Configuration File":"\u5C08\u6848\u8A2D\u5B9A\u6A94","Configure project detection from project config files":"\u5F9E\u5C08\u6848\u8A2D\u5B9A\u6A94\u5075\u6E2C\u5C08\u6848","Enable config file project detection":"\u555F\u7528\u8A2D\u5B9A\u6A94\u5C08\u6848\u5075\u6E2C","Detect project from project configuration files":"\u5F9E\u5C08\u6848\u8A2D\u5B9A\u6A94\u5075\u6E2C\u5C08\u6848","Config file name":"\u8A2D\u5B9A\u6A94\u540D\u7A31","Name of the project configuration file":"\u5C08\u6848\u8A2D\u5B9A\u6A94\u540D\u7A31","Search recursively":"\u905E\u8FF4\u641C\u5C0B","Search for config files in parent directories":"\u5728\u4E0A\u5C64\u76EE\u9304\u4E2D\u641C\u5C0B\u8A2D\u5B9A\u6A94","Metadata Mappings":"\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9","Configure how metadata fields are mapped and transformed":"\u8A2D\u5B9A\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u7684\u5C0D\u61C9\u8207\u8F49\u63DB\u65B9\u5F0F","No metadata mappings configured yet.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9\u3002","Source key (e.g., proj)":"\u4F86\u6E90\u9375\uFF08\u4F8B\u5982\uFF1Aproj\uFF09","Select target field":"\u9078\u64C7\u76EE\u6A19\u6B04\u4F4D","Add Metadata Mapping":"\u65B0\u589E\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9","Default Project Naming":"\u9810\u8A2D\u5C08\u6848\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u7576\u672A\u627E\u5230\u660E\u78BA\u5C08\u6848\u6642\u8A2D\u5B9A\u5099\u7528\u5C08\u6848\u547D\u540D","Enable default project naming":"\u555F\u7528\u9810\u8A2D\u5C08\u6848\u547D\u540D","Use default naming strategy when no project is explicitly defined":"\u7576\u672A\u660E\u78BA\u5B9A\u7FA9\u5C08\u6848\u6642\u4F7F\u7528\u9810\u8A2D\u547D\u540D\u7B56\u7565","Naming strategy":"\u547D\u540D\u7B56\u7565","Strategy for generating default project names":"\u7522\u751F\u9810\u8A2D\u5C08\u6848\u540D\u7A31\u7684\u7B56\u7565","Use filename":"\u4F7F\u7528\u6A94\u540D","Use folder name":"\u4F7F\u7528\u8CC7\u6599\u593E\u540D\u7A31","Use metadata field":"\u4F7F\u7528\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Metadata field to use as project name":"\u7528\u4F5C\u5C08\u6848\u540D\u7A31\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Enter metadata key (e.g., project-name)":"\u8F38\u5165\u4E2D\u7E7C\u8CC7\u6599\u9375\uFF08\u4F8B\u5982\uFF1Aproject-name\uFF09","Strip file extension":"\u79FB\u9664\u526F\u6A94\u540D","Remove file extension from filename when using as project name":"\u5C07\u6A94\u540D\u4F5C\u70BA\u5C08\u6848\u540D\u7A31\u6642\u79FB\u9664\u526F\u6A94\u540D","Target type":"\u76EE\u6A19\u985E\u578B","Choose whether to capture to a fixed file or daily note":"\u9078\u64C7\u8981\u5132\u5B58\u5230\u56FA\u5B9A\u6A94\u6848\u6216\u6BCF\u65E5\u7B46\u8A18","Fixed file":"\u56FA\u5B9A\u6A94\u6848","Daily note":"\u6BCF\u65E5\u7B46\u8A18","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u5132\u5B58\u64F7\u53D6\u5167\u5BB9\u7684\u6A94\u6848\u3002\u53EF\u5305\u542B\u8DEF\u5F91\uFF0C\u4F8B\u5982 'folder/Quick Capture.md'\u3002\u652F\u63F4\u65E5\u671F\u6A21\u677F\u5982 {{DATE:YYYY-MM-DD}} \u6216 {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"\u8207\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u540C\u6B65","Automatically sync settings from the Daily Notes plugin":"\u81EA\u52D5\u5F9E\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u540C\u6B65\u8A2D\u5B9A","Sync now":"\u7ACB\u5373\u540C\u6B65","Daily notes settings synced successfully":"\u6BCF\u65E5\u7B46\u8A18\u8A2D\u5B9A\u540C\u6B65\u6210\u529F","Daily Notes plugin is not enabled":"\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u672A\u555F\u7528","Failed to sync daily notes settings":"\u6BCF\u65E5\u7B46\u8A18\u8A2D\u5B9A\u540C\u6B65\u5931\u6557","Date format for daily notes (e.g., YYYY-MM-DD)":"\u6BCF\u65E5\u7B46\u8A18\u7684\u65E5\u671F\u683C\u5F0F\uFF08\u4F8B\u5982\uFF1AYYYY-MM-DD\uFF09","Daily note folder":"\u6BCF\u65E5\u7B46\u8A18\u8CC7\u6599\u593E","Folder path for daily notes (leave empty for root)":"\u6BCF\u65E5\u7B46\u8A18\u7684\u8CC7\u6599\u593E\u8DEF\u5F91\uFF08\u7559\u7A7A\u5247\u70BA\u6839\u76EE\u9304\uFF09","Daily note template":"\u6BCF\u65E5\u7B46\u8A18\u6A21\u677F","Template file path for new daily notes (optional)":"\u65B0\u6BCF\u65E5\u7B46\u8A18\u7684\u6A21\u677F\u6A94\u6848\u8DEF\u5F91\uFF08\u53EF\u9078\uFF09","Target heading":"\u76EE\u6A19\u6A19\u984C","Optional heading to append content under (leave empty to append to file)":"\u53EF\u9078\u7684\u6A19\u984C\uFF0C\u5C07\u5167\u5BB9\u9644\u52A0\u65BC\u5176\u4E0B\uFF08\u7559\u7A7A\u5247\u9644\u52A0\u81F3\u6A94\u6848\u672B\u5C3E\uFF09","How to add captured content to the target location":"\u5982\u4F55\u5C07\u64F7\u53D6\u5167\u5BB9\u52A0\u5165\u76EE\u6A19\u4F4D\u7F6E",Append:"\u9644\u52A0",Prepend:"\u524D\u7F6E",Replace:"\u53D6\u4EE3","Enable auto-move for completed tasks":"\u555F\u7528\u81EA\u52D5\u79FB\u52D5\u5DF2\u5B8C\u6210\u4EFB\u52D9","Automatically move completed tasks to a default file without manual selection.":"\u81EA\u52D5\u5C07\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848\uFF0C\u7121\u9700\u624B\u52D5\u9078\u64C7\u3002","Default target file":"\u9810\u8A2D\u76EE\u6A19\u6A94\u6848","Default file to move completed tasks to (e.g., 'Archive.md')":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u9810\u8A2D\u79FB\u52D5\u5230\u7684\u6A94\u6848\uFF08\u4F8B\u5982\uFF1A'Archive.md'\uFF09","Default insertion mode":"\u9810\u8A2D\u63D2\u5165\u6A21\u5F0F","Where to insert completed tasks in the target file":"\u5728\u76EE\u6A19\u6A94\u6848\u4E2D\u63D2\u5165\u5DF2\u5B8C\u6210\u4EFB\u52D9\u7684\u4F4D\u7F6E","Default heading name":"\u9810\u8A2D\u6A19\u984C\u540D\u7A31","Heading name to insert tasks after (will be created if it doesn't exist)":"\u63D2\u5165\u4EFB\u52D9\u5F8C\u7684\u6A19\u984C\u540D\u7A31\uFF08\u82E5\u4E0D\u5B58\u5728\u5247\u81EA\u52D5\u5EFA\u7ACB\uFF09","Enable auto-move for incomplete tasks":"\u555F\u7528\u81EA\u52D5\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9","Automatically move incomplete tasks to a default file without manual selection.":"\u81EA\u52D5\u5C07\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848\uFF0C\u7121\u9700\u624B\u52D5\u9078\u64C7\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u76EE\u6A19\u6A94\u6848","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u672A\u5B8C\u6210\u4EFB\u52D9\u9810\u8A2D\u79FB\u52D5\u5230\u7684\u6A94\u6848\uFF08\u4F8B\u5982\uFF1A'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u63D2\u5165\u6A21\u5F0F","Where to insert incomplete tasks in the target file":"\u5728\u76EE\u6A19\u6A94\u6848\u4E2D\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u4F4D\u7F6E","Default heading name for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u6A19\u984C\u540D\u7A31","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52D9\u5F8C\u7684\u6A19\u984C\u540D\u7A31\uFF08\u82E5\u4E0D\u5B58\u5728\u5247\u81EA\u52D5\u5EFA\u7ACB\uFF09","Other settings":"\u5176\u4ED6\u8A2D\u5B9A","Use Task Genius icons":"\u4F7F\u7528 Task Genius \u5716\u793A","Use Task Genius icons for task statuses":"\u4EFB\u52D9\u72C0\u614B\u4F7F\u7528 Task Genius \u5716\u793A","Timeline Sidebar":"\u6642\u9593\u8EF8\u5074\u908A\u6B04","Enable Timeline Sidebar":"\u555F\u7528\u6642\u9593\u8EF8\u5074\u908A\u6B04","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6642\u9593\u8EF8\u5074\u908A\u6B04\uFF0C\u5FEB\u901F\u5B58\u53D6\u6BCF\u65E5\u4E8B\u4EF6\u8207\u4EFB\u52D9\u3002","Auto-open on startup":"\u555F\u52D5\u6642\u81EA\u52D5\u958B\u555F","Automatically open the timeline sidebar when Obsidian starts.":"Obsidian \u555F\u52D5\u6642\u81EA\u52D5\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04\u3002","Show completed tasks":"\u986F\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u5728\u6642\u9593\u8EF8\u4E2D\u986F\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9\u3002\u505C\u7528\u6642\u50C5\u986F\u793A\u672A\u5B8C\u6210\u4EFB\u52D9\u3002","Focus mode by default":"\u9810\u8A2D\u555F\u7528\u5C08\u6CE8\u6A21\u5F0F","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u9810\u8A2D\u555F\u7528\u5C08\u6CE8\u6A21\u5F0F\uFF0C\u7A81\u986F\u4ECA\u65E5\u4E8B\u4EF6\u4E26\u6DE1\u5316\u904E\u53BB\uFF0F\u672A\u4F86\u4E8B\u4EF6\u3002","Maximum events to show":"\u986F\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6578","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u6642\u9593\u8EF8\u4E2D\u986F\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6578\u3002\u6578\u5B57\u8D8A\u5927\u53EF\u80FD\u5F71\u97FF\u6548\u80FD\u3002","Open Timeline Sidebar":"\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04","Click to open the timeline sidebar view.":"\u9EDE\u64CA\u4EE5\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04\u3002","Open Timeline":"\u958B\u555F\u6642\u9593\u8EF8","Timeline sidebar opened":"\u5DF2\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04","Task Parser Configuration":"\u4EFB\u52D9\u89E3\u6790\u5668\u8A2D\u5B9A","Configure how task metadata is parsed and recognized.":"\u8A2D\u5B9A\u5982\u4F55\u89E3\u6790\u8207\u8B58\u5225\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u3002","Project tag prefix":"\u5C08\u6848\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u5C08\u6848\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [project:: myproject] \u7684 'project'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u81EA\u8A02\u5C08\u6848\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 #project/myproject \u7684 'project'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Context tag prefix":"\u60C5\u5883\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u60C5\u5883\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [context:: home] \u7684 'context'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u81EA\u8A02\u60C5\u5883\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 @home\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Area tag prefix":"\u9818\u57DF\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u9818\u57DF\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [area:: work] \u7684 'area'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u81EA\u8A02\u9818\u57DF\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 #area/work \u7684 'area'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Format Examples:":"\u683C\u5F0F\u7BC4\u4F8B\uFF1A",Area:"\u9818\u57DF","always uses @ prefix":"\u4E00\u5F8B\u4F7F\u7528 @ \u524D\u7DB4","File Parsing Configuration":"\u6A94\u6848\u89E3\u6790\u8A2D\u5B9A","Configure how to extract tasks from file metadata and tags.":"\u8A2D\u5B9A\u5982\u4F55\u5F9E\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u8207\u6A19\u7C64\u64F7\u53D6\u4EFB\u52D9\u3002","Enable file metadata parsing":"\u555F\u7528\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u89E3\u6790","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u5F9E\u6A94\u6848\u524D\u7F6E\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u89E3\u6790\u4EFB\u52D9\u3002\u555F\u7528\u5F8C\uFF0C\u5177\u6709\u7279\u5B9A\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u7684\u6A94\u6848\u5C07\u8996\u70BA\u4EFB\u52D9\u3002","File metadata parsing enabled. Rebuilding task index...":"\u5DF2\u555F\u7528\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u89E3\u6790\u3002\u6B63\u5728\u91CD\u5EFA\u4EFB\u52D9\u7D22\u5F15\u2026\u2026","Task index rebuilt successfully":"\u4EFB\u52D9\u7D22\u5F15\u91CD\u5EFA\u6210\u529F","Failed to rebuild task index":"\u4EFB\u52D9\u7D22\u5F15\u91CD\u5EFA\u5931\u6557","Metadata fields to parse as tasks":"\u8981\u89E3\u6790\u70BA\u4EFB\u52D9\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u4EE5\u9017\u865F\u5206\u9694\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u6E05\u55AE\uFF0C\u9019\u4E9B\u6B04\u4F4D\u5C07\u8996\u70BA\u4EFB\u52D9\uFF08\u4F8B\u5982\uFF1AdueDate, todo, complete, task\uFF09","Task content from metadata":"\u4EFB\u52D9\u5167\u5BB9\u4F86\u6E90\u4E2D\u7E7C\u8CC7\u6599","Which metadata field to use as task content. If not found, will use filename.":"\u7528\u4F5C\u4EFB\u52D9\u5167\u5BB9\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u3002\u82E5\u627E\u4E0D\u5230\u5247\u4F7F\u7528\u6A94\u540D\u3002","Default task status":"\u9810\u8A2D\u4EFB\u52D9\u72C0\u614B","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u7531\u4E2D\u7E7C\u8CC7\u6599\u5EFA\u7ACB\u4EFB\u52D9\u7684\u9810\u8A2D\u72C0\u614B\uFF08\u7A7A\u683C\u4EE3\u8868\u672A\u5B8C\u6210\uFF0Cx \u4EE3\u8868\u5DF2\u5B8C\u6210\uFF09","Enable tag-based task parsing":"\u555F\u7528\u6A19\u7C64\u5F0F\u4EFB\u52D9\u89E3\u6790","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u5F9E\u6A94\u6848\u6A19\u7C64\u89E3\u6790\u4EFB\u52D9\u3002\u555F\u7528\u5F8C\uFF0C\u5177\u6709\u7279\u5B9A\u6A19\u7C64\u7684\u6A94\u6848\u5C07\u8996\u70BA\u4EFB\u52D9\u3002","Tags to parse as tasks":"\u8981\u89E3\u6790\u70BA\u4EFB\u52D9\u7684\u6A19\u7C64","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u4EE5\u9017\u865F\u5206\u9694\u7684\u6A19\u7C64\u6E05\u55AE\uFF0C\u9019\u4E9B\u6A19\u7C64\u5C07\u8996\u70BA\u4EFB\u52D9\uFF08\u4F8B\u5982\uFF1A#todo, #task, #action, #due\uFF09","Enable worker processing":"\u555F\u7528\u80CC\u666F\u8655\u7406","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u4F7F\u7528\u80CC\u666F\u8655\u7406\u63D0\u5347\u6A94\u6848\u89E3\u6790\u6548\u80FD\u3002\u5EFA\u8B70\u5927\u578B\u8CC7\u6599\u5EAB\u555F\u7528\u3002","Enable inline editor":"\u555F\u7528\u884C\u5167\u7DE8\u8F2F\u5668","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u5728\u4EFB\u52D9\u6AA2\u8996\u4E2D\u76F4\u63A5\u884C\u5167\u7DE8\u8F2F\u4EFB\u52D9\u5167\u5BB9\u8207\u4E2D\u7E7C\u8CC7\u6599\u3002\u505C\u7528\u6642\u50C5\u80FD\u5728\u539F\u59CB\u6A94\u6848\u7DE8\u8F2F\u4EFB\u52D9\u3002","Auto-assigned from path":"\u81EA\u52D5\u5F9E\u8DEF\u5F91\u5206\u914D","Auto-assigned from file metadata":"\u81EA\u52D5\u5F9E\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u5206\u914D","Auto-assigned from config file":"\u81EA\u52D5\u5F9E\u8A2D\u5B9A\u6A94\u5206\u914D","Auto-assigned":"\u81EA\u52D5\u5206\u914D","This project is automatically assigned and cannot be changed":"\u6B64\u5C08\u6848\u70BA\u81EA\u52D5\u5206\u914D\uFF0C\u7121\u6CD5\u66F4\u6539","You can override the auto-assigned project by entering a different value":"\u60A8\u53EF\u4EE5\u8F38\u5165\u4E0D\u540C\u7684\u503C\u4F86\u8986\u84CB\u81EA\u52D5\u5206\u914D\u7684\u5C08\u6848","Auto from path":"\u81EA\u52D5\u5F9E\u8DEF\u5F91\u7372\u53D6","Auto from metadata":"\u81EA\u52D5\u5F9E\u4E2D\u7E7C\u8CC7\u6599\u7372\u53D6","Auto from config":"\u81EA\u52D5\u5F9E\u8A2D\u5B9A\u6A94\u7372\u53D6","You can override the auto-assigned project":"\u60A8\u53EF\u4EE5\u8986\u84CB\u81EA\u52D5\u5206\u914D\u7684\u5C08\u6848",Timeline:"\u6642\u9593\u8EF8","Go to today":"\u8DF3\u81F3\u4ECA\u5929","Focus on today":"\u805A\u7126\u4ECA\u5929","What do you want to do today?":"\u4F60\u4ECA\u5929\u60F3\u505A\u4EC0\u9EBC\uFF1F","More options":"\u66F4\u591A\u9078\u9805","No events to display":"\u6C92\u6709\u53EF\u986F\u793A\u7684\u4E8B\u4EF6","Go to task":"\u524D\u5F80\u4EFB\u52D9",to:"\u81F3","Hide weekends":"\u96B1\u85CF\u9031\u672B","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u5728\u65E5\u66C6\u8996\u5716\u4E2D\u96B1\u85CF\u9031\u672B\u6B04\uFF08\u661F\u671F\u516D\u548C\u661F\u671F\u65E5\uFF09\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u5728\u9810\u6E2C\u65E5\u66C6\u4E2D\u96B1\u85CF\u9031\u672B\u6B04\uFF08\u661F\u671F\u516D\u548C\u661F\u671F\u65E5\uFF09\u3002",Repeatable:"\u53EF\u91CD\u8907",Final:"\u6700\u7D42",Sequential:"\u4F9D\u5E8F","Current: ":"\u7576\u524D\uFF1A",completed:"\u5DF2\u5B8C\u6210","Convert to workflow template":"\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Start workflow here":"\u5F9E\u6B64\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B","Create quick workflow":"\u5EFA\u7ACB\u5FEB\u901F\u5DE5\u4F5C\u6D41\u7A0B","Workflow not found":"\u627E\u4E0D\u5230\u5DE5\u4F5C\u6D41\u7A0B","Stage not found":"\u627E\u4E0D\u5230\u968E\u6BB5","Current stage":"\u7576\u524D\u968E\u6BB5",Type:"\u985E\u578B",Next:"\u4E0B\u4E00\u6B65","Start workflow":"\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B",Continue:"\u7E7C\u7E8C","Complete substage and move to":"\u5B8C\u6210\u5B50\u968E\u6BB5\u4E26\u79FB\u81F3","Add new task":"\u65B0\u589E\u4EFB\u52D9","Add new sub-task":"\u65B0\u589E\u5B50\u4EFB\u52D9","Auto-move completed subtasks to default file":"\u81EA\u52D5\u5C07\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move direct completed subtasks to default file":"\u81EA\u52D5\u5C07\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move all subtasks to default file":"\u81EA\u52D5\u5C07\u6240\u6709\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move incomplete subtasks to default file":"\u81EA\u52D5\u5C07\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move direct incomplete subtasks to default file":"\u81EA\u52D5\u5C07\u76F4\u63A5\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Convert task to workflow template":"\u5C07\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Convert current task to workflow root":"\u5C07\u7576\u524D\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Duplicate workflow":"\u8907\u88FD\u5DE5\u4F5C\u6D41\u7A0B","Workflow quick actions":"\u5DE5\u4F5C\u6D41\u7A0B\u5FEB\u901F\u64CD\u4F5C","Views & Index":"\u8996\u5716\u8207\u7D22\u5F15","Progress Display":"\u9032\u5EA6\u986F\u793A",Workflows:"\u5DE5\u4F5C\u6D41\u7A0B","Dates & Priority":"\u65E5\u671F\u8207\u512A\u5148\u7D1A",Habits:"\u7FD2\u6163","Calendar Sync":"\u65E5\u66C6\u540C\u6B65","Beta Features":"\u6E2C\u8A66\u529F\u80FD","Core Settings":"\u6838\u5FC3\u8A2D\u5B9A","Display & Progress":"\u986F\u793A\u8207\u9032\u5EA6","Task Management":"\u4EFB\u52D9\u7BA1\u7406","Workflow & Automation":"\u5DE5\u4F5C\u6D41\u7A0B\u8207\u81EA\u52D5\u5316",Gamification:"\u904A\u6232\u5316",Integration:"\u6574\u5408",Advanced:"\u9032\u968E",Information:"\u8CC7\u8A0A","Workflow generated from task structure":"\u6839\u64DA\u4EFB\u52D9\u7D50\u69CB\u7522\u751F\u7684\u5DE5\u4F5C\u6D41\u7A0B","Workflow based on existing pattern":"\u57FA\u65BC\u73FE\u6709\u6A21\u5F0F\u7684\u5DE5\u4F5C\u6D41\u7A0B",Matrix:"\u77E9\u9663","More actions":"\u66F4\u591A\u64CD\u4F5C","Open in file":"\u5728\u6A94\u6848\u4E2D\u958B\u555F","Copy task":"\u8907\u88FD\u4EFB\u52D9","Mark as urgent":"\u6A19\u8A18\u70BA\u7DCA\u6025","Mark as important":"\u6A19\u8A18\u70BA\u91CD\u8981","Overdue by {days} days":"\u903E\u671F {days} \u5929","Due today":"\u4ECA\u5929\u5230\u671F","Due tomorrow":"\u660E\u5929\u5230\u671F","Due in {days} days":"{days} \u5929\u5F8C\u5230\u671F","Loading tasks...":"\u8F09\u5165\u4EFB\u52D9\u4E2D...",task:"\u4EFB\u52D9","No crisis tasks - great job!":"\u6C92\u6709\u5371\u6A5F\u4EFB\u52D9 - \u505A\u5F97\u597D\uFF01","No planning tasks - consider adding some goals":"\u6C92\u6709\u898F\u5283\u4EFB\u52D9 - \u8003\u616E\u65B0\u589E\u4E00\u4E9B\u76EE\u6A19","No interruptions - focus time!":"\u6C92\u6709\u5E72\u64FE - \u5C08\u6CE8\u6642\u9593\uFF01","No time wasters - excellent focus!":"\u6C92\u6709\u6642\u9593\u6D6A\u8CBB - \u5C08\u6CE8\u5EA6\u6975\u4F73\uFF01","No tasks in this quadrant":"\u6B64\u8C61\u9650\u4E2D\u6C92\u6709\u4EFB\u52D9","Handle immediately. These are critical tasks that need your attention now.":"\u7ACB\u5373\u8655\u7406\u3002\u9019\u4E9B\u662F\u9700\u8981\u60A8\u73FE\u5728\u95DC\u6CE8\u7684\u95DC\u9375\u4EFB\u52D9\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u5B89\u6392\u548C\u898F\u5283\u3002\u9019\u4E9B\u4EFB\u52D9\u662F\u60A8\u9577\u671F\u6210\u529F\u7684\u95DC\u9375\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u5982\u679C\u53EF\u80FD\u7684\u8A71\u8ACB\u59D4\u6D3E\u3002\u9019\u4E9B\u4EFB\u52D9\u5F88\u7DCA\u6025\u4F46\u4E0D\u9700\u8981\u60A8\u7684\u7279\u5B9A\u6280\u80FD\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6E1B\u5C11\u6216\u6700\u5C0F\u5316\u3002\u9019\u4E9B\u4EFB\u52D9\u53EF\u80FD\u662F\u6642\u9593\u6D6A\u8CBB\u3002","Review and categorize these tasks appropriately.":"\u5BE9\u67E5\u548C\u9069\u7576\u5730\u5206\u985E\u9019\u4E9B\u4EFB\u52D9\u3002","Urgent & Important":"\u7DCA\u6025\u4E14\u91CD\u8981","Do First - Crisis & emergencies":"\u512A\u5148\u8655\u7406 - \u5371\u6A5F\u8207\u7DCA\u6025\u72C0\u6CC1","Not Urgent & Important":"\u4E0D\u7DCA\u6025\u4F46\u91CD\u8981","Schedule - Planning & development":"\u5B89\u6392 - \u898F\u5283\u8207\u767C\u5C55","Urgent & Not Important":"\u7DCA\u6025\u4F46\u4E0D\u91CD\u8981","Delegate - Interruptions & distractions":"\u59D4\u6D3E - \u5E72\u64FE\u8207\u5206\u5FC3","Not Urgent & Not Important":"\u4E0D\u7DCA\u6025\u4E14\u4E0D\u91CD\u8981","Eliminate - Time wasters":"\u6E1B\u5C11 - \u6642\u9593\u6D6A\u8CBB","Task Priority Matrix":"\u4EFB\u52D9\u512A\u5148\u7D1A\u77E9\u9663","Created Date (Newest First)":"\u5EFA\u7ACB\u65E5\u671F\uFF08\u6700\u65B0\u512A\u5148\uFF09","Created Date (Oldest First)":"\u5EFA\u7ACB\u65E5\u671F\uFF08\u6700\u820A\u512A\u5148\uFF09","Toggle empty columns":"\u5207\u63DB\u7A7A\u6B04\u986F\u793A","Failed to update task":"\u66F4\u65B0\u4EFB\u52D9\u5931\u6557","Remove urgent tag":"\u79FB\u9664\u7DCA\u6025\u6A19\u7C64","Remove important tag":"\u79FB\u9664\u91CD\u8981\u6A19\u7C64","Loading more tasks...":"\u8F09\u5165\u66F4\u591A\u4EFB\u52D9...","Action Type":"\u64CD\u4F5C\u985E\u578B","Select action type...":"\u9078\u64C7\u64CD\u4F5C\u985E\u578B...","Delete task":"\u522A\u9664\u4EFB\u52D9","Keep task":"\u4FDD\u7559\u4EFB\u52D9","Complete related tasks":"\u5B8C\u6210\u76F8\u95DC\u4EFB\u52D9","Move task":"\u79FB\u52D5\u4EFB\u52D9","Archive task":"\u6B78\u6A94\u4EFB\u52D9","Duplicate task":"\u8907\u88FD\u4EFB\u52D9","Task IDs":"\u4EFB\u52D9 ID","Enter task IDs separated by commas":"\u8F38\u5165\u7528\u9017\u865F\u5206\u9694\u7684\u4EFB\u52D9 ID","Comma-separated list of task IDs to complete when this task is completed":"\u7576\u6B64\u4EFB\u52D9\u5B8C\u6210\u6642\u8981\u5B8C\u6210\u7684\u4EFB\u52D9 ID \u9017\u865F\u5206\u9694\u5217\u8868","Target File":"\u76EE\u6A19\u6A94\u6848","Path to target file":"\u76EE\u6A19\u6A94\u6848\u8DEF\u5F91","Target Section (Optional)":"\u76EE\u6A19\u7AE0\u7BC0\uFF08\u53EF\u9078\uFF09","Section name in target file":"\u76EE\u6A19\u6A94\u6848\u4E2D\u7684\u7AE0\u7BC0\u540D\u7A31","Archive File (Optional)":"\u6B78\u6A94\u6A94\u6848\uFF08\u53EF\u9078\uFF09","Default: Archive/Completed Tasks.md":"\u9810\u8A2D\uFF1AArchive/Completed Tasks.md","Archive Section (Optional)":"\u6B78\u6A94\u7AE0\u7BC0\uFF08\u53EF\u9078\uFF09","Default: Completed Tasks":"\u9810\u8A2D\uFF1A\u5DF2\u5B8C\u6210\u4EFB\u52D9","Target File (Optional)":"\u76EE\u6A19\u6A94\u6848\uFF08\u53EF\u9078\uFF09","Default: same file":"\u9810\u8A2D\uFF1A\u540C\u4E00\u6A94\u6848","Preserve Metadata":"\u4FDD\u7559\u5143\u6578\u64DA","Keep completion dates and other metadata in the duplicated task":"\u5728\u8907\u88FD\u7684\u4EFB\u52D9\u4E2D\u4FDD\u7559\u5B8C\u6210\u65E5\u671F\u548C\u5176\u4ED6\u5143\u6578\u64DA","Overdue by":"\u903E\u671F",days:"\u5929","Due in":"\u5230\u671F","File Filter":"\u6A94\u6848\u7BE9\u9078","Enable File Filter":"\u555F\u7528\u6A94\u6848\u7BE9\u9078","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5728\u4EFB\u52D9\u7D22\u5F15\u671F\u9593\u555F\u7528\u6A94\u6848\u548C\u8CC7\u6599\u593E\u7BE9\u9078\u3002\u9019\u53EF\u4EE5\u986F\u8457\u63D0\u9AD8\u5927\u578B\u5EAB\u7684\u6027\u80FD\u3002","File Filter Mode":"\u6A94\u6848\u7BE9\u9078\u6A21\u5F0F","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u9078\u64C7\u662F\u5426\u50C5\u5305\u542B\u6307\u5B9A\u7684\u6A94\u6848/\u8CC7\u6599\u593E\uFF08\u767D\u540D\u55AE\uFF09\u6216\u6392\u9664\u5B83\u5011\uFF08\u9ED1\u540D\u55AE\uFF09","Whitelist (Include only)":"\u767D\u540D\u55AE\uFF08\u50C5\u5305\u542B\uFF09","Blacklist (Exclude)":"\u9ED1\u540D\u55AE\uFF08\u6392\u9664\uFF09","File Filter Rules":"\u6A94\u6848\u7BE9\u9078\u898F\u5247","Configure which files and folders to include or exclude from task indexing":"\u914D\u7F6E\u8981\u5728\u4EFB\u52D9\u7D22\u5F15\u4E2D\u5305\u542B\u6216\u6392\u9664\u7684\u6A94\u6848\u548C\u8CC7\u6599\u593E","Type:":"\u985E\u578B\uFF1A",Folder:"\u8CC7\u6599\u593E","Path:":"\u8DEF\u5F91\uFF1A","Enabled:":"\u555F\u7528\uFF1A","Delete rule":"\u522A\u9664\u898F\u5247","Add Filter Rule":"\u65B0\u589E\u7BE9\u9078\u898F\u5247","Add File Rule":"\u65B0\u589E\u6A94\u6848\u898F\u5247","Add Folder Rule":"\u65B0\u589E\u8CC7\u6599\u593E\u898F\u5247","Add Pattern Rule":"\u65B0\u589E\u6A23\u5F0F\u898F\u5247","Refresh Statistics":"\u5237\u65B0\u7D71\u8A08","Manually refresh filter statistics to see current data":"\u624B\u52D5\u5237\u65B0\u7BE9\u9078\u7D71\u8A08\u4EE5\u67E5\u770B\u7576\u524D\u6578\u64DA","Refreshing...":"\u5237\u65B0\u4E2D...","Active Rules":"\u6D3B\u8E8D\u898F\u5247","Cache Size":"\u5FEB\u53D6\u5927\u5C0F","No filter data available":"\u6C92\u6709\u53EF\u7528\u7684\u7BE9\u9078\u6578\u64DA","Error loading statistics":"\u8F09\u5165\u7D71\u8A08\u932F\u8AA4","On Completion":"\u5B8C\u6210\u6642\u64CD\u4F5C","Enable OnCompletion":"\u555F\u7528\u5B8C\u6210\u6642\u64CD\u4F5C","Enable automatic actions when tasks are completed":"\u555F\u7528\u4EFB\u52D9\u5B8C\u6210\u6642\u7684\u81EA\u52D5\u64CD\u4F5C","Default Archive File":"\u9810\u8A2D\u6B78\u6A94\u6A94\u6848","Default file for archive action":"\u6B78\u6A94\u64CD\u4F5C\u7684\u9810\u8A2D\u6A94\u6848","Default Archive Section":"\u9810\u8A2D\u6B78\u6A94\u7AE0\u7BC0","Default section for archive action":"\u6B78\u6A94\u64CD\u4F5C\u7684\u9810\u8A2D\u7AE0\u7BC0","Show Advanced Options":"\u986F\u793A\u9032\u968E\u9078\u9805","Show advanced configuration options in task editors":"\u5728\u4EFB\u52D9\u7DE8\u8F2F\u5668\u4E2D\u986F\u793A\u9032\u968E\u914D\u7F6E\u9078\u9805","Configure checkbox status settings":"\u914D\u7F6E\u8907\u9078\u6846\u72C0\u614B\u8A2D\u5B9A","Auto complete parent checkbox":"\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u8907\u9078\u6846","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u5916\u639B\u7A0B\u5F0F\u5728\u6240\u6709\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u8907\u9078\u6846\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u7576\u90E8\u5206\u5B50\u4EFB\u52D9\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u5B8C\u6210\u6642\uFF0C\u5C07\u7236\u7D1A\u8907\u9078\u6846\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D\u3002\u50C5\u5728\u555F\u7528\u300C\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u300D\u6642\u624D\u6703\u4F5C\u7528\u3002","Select a predefined checkbox status collection or customize your own":"\u9078\u64C7\u9810\u5B9A\u7FA9\u7684\u8907\u9078\u6846\u72C0\u614B\u96C6\u5408\u6216\u81EA\u5B9A\u7FA9\u60A8\u81EA\u5DF1\u7684","Checkbox Switcher":"\u8907\u9078\u6846\u5207\u63DB\u5668","Enable checkbox status switcher":"\u555F\u7528\u8907\u9078\u6846\u72C0\u614B\u5207\u63DB\u5668","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u7528\u6A23\u5F0F\u5316\u7684\u6587\u5B57\u6A19\u8A18\u53D6\u4EE3\u9810\u8A2D\u8907\u9078\u6846\uFF0C\u9EDE\u64CA\u6642\u9075\u5FAA\u60A8\u7684\u8907\u9078\u6846\u72C0\u614B\u5FAA\u74B0\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u4F7F\u539F\u59CB\u6A21\u5F0F\u4E2D\u7684\u6587\u5B57\u6A19\u8A18\u5728\u9EDE\u64CA\u6642\u9075\u5FAA\u8907\u9078\u6846\u72C0\u614B\u5FAA\u74B0\u3002","Automatically manage dates based on checkbox status changes":"\u6839\u64DA\u8907\u9078\u6846\u72C0\u614B\u8B8A\u5316\u81EA\u52D5\u7BA1\u7406\u65E5\u671F","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u8907\u9078\u6846\u72C0\u614B\u8B8A\u5316\u6642\u7684\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u3002\u5C07\u6839\u64DA\u60A8\u559C\u597D\u7684\u5143\u6578\u64DA\u683C\u5F0F\uFF08\u4EFB\u52D9\u8868\u60C5\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u65B0\u589E/\u79FB\u9664\u65E5\u671F\u3002","Default view mode":"\u9810\u8A2D\u6AA2\u8996\u6A21\u5F0F","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u9078\u64C7\u6240\u6709\u6AA2\u8996\u7684\u9810\u8A2D\u986F\u793A\u6A21\u5F0F\u3002\u9019\u5F71\u97FF\u60A8\u7B2C\u4E00\u6B21\u958B\u555F\u6AA2\u8996\u6216\u5EFA\u7ACB\u65B0\u6AA2\u8996\u6642\u4EFB\u52D9\u7684\u986F\u793A\u65B9\u5F0F\u3002","List View":"\u5217\u8868\u6AA2\u8996","Tree View":"\u6A39\u72C0\u6AA2\u8996","Global Filter Configuration":"\u5168\u57DF\u7BE9\u9078\u914D\u7F6E","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u914D\u7F6E\u9810\u8A2D\u61C9\u7528\u65BC\u6240\u6709\u6AA2\u8996\u7684\u5168\u57DF\u7BE9\u9078\u898F\u5247\u3002\u500B\u5225\u6AA2\u8996\u53EF\u4EE5\u8986\u84CB\u9019\u4E9B\u8A2D\u5B9A\u3002","Cancelled Date":"\u53D6\u6D88\u65E5\u671F","Configuration is valid":"\u914D\u7F6E\u6709\u6548","Action to execute on completion":"\u5B8C\u6210\u6642\u57F7\u884C\u7684\u64CD\u4F5C","Depends On":"\u4F9D\u8CF4\u65BC","Task IDs separated by commas":"\u7528\u9017\u865F\u5206\u9694\u7684\u4EFB\u52D9 ID","Task ID":"\u4EFB\u52D9 ID","Unique task identifier":"\u552F\u4E00\u4EFB\u52D9\u6A19\u8B58\u7B26","Action to execute when task is completed":"\u4EFB\u52D9\u5B8C\u6210\u6642\u57F7\u884C\u7684\u64CD\u4F5C","Comma-separated list of task IDs this task depends on":"\u6B64\u4EFB\u52D9\u4F9D\u8CF4\u7684\u4EFB\u52D9 ID \u9017\u865F\u5206\u9694\u5217\u8868","Unique identifier for this task":"\u6B64\u4EFB\u52D9\u7684\u552F\u4E00\u6A19\u8B58\u7B26","Quadrant Classification Method":"\u8C61\u9650\u5206\u985E\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u9078\u64C7\u5982\u4F55\u5C07\u4EFB\u52D9\u5206\u985E\u5230\u8C61\u9650\u4E2D","Urgent Priority Threshold":"\u7DCA\u6025\u512A\u5148\u7D1A\u95FE\u503C","Tasks with priority >= this value are considered urgent (1-5)":"\u512A\u5148\u7D1A >= \u6B64\u503C\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u7DCA\u6025\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u512A\u5148\u7D1A\u95FE\u503C","Tasks with priority >= this value are considered important (1-5)":"\u512A\u5148\u7D1A >= \u6B64\u503C\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u91CD\u8981\uFF081-5\uFF09","Urgent Tag":"\u7DCA\u6025\u6A19\u7C64","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u8B58\u5225\u7DCA\u6025\u4EFB\u52D9\u7684\u6A19\u7C64\uFF08\u4F8B\u5982 #urgent, #fire\uFF09","Important Tag":"\u91CD\u8981\u6A19\u7C64","Tag to identify important tasks (e.g., #important, #key)":"\u8B58\u5225\u91CD\u8981\u4EFB\u52D9\u7684\u6A19\u7C64\uFF08\u4F8B\u5982 #important, #key\uFF09","Urgent Threshold Days":"\u7DCA\u6025\u95FE\u503C\u5929\u6578","Tasks due within this many days are considered urgent":"\u5728\u9019\u9EBC\u591A\u5929\u5167\u5230\u671F\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u7DCA\u6025","Auto Update Priority":"\u81EA\u52D5\u66F4\u65B0\u512A\u5148\u7D1A","Automatically update task priority when moved between quadrants":"\u5728\u8C61\u9650\u9593\u79FB\u52D5\u6642\u81EA\u52D5\u66F4\u65B0\u4EFB\u52D9\u512A\u5148\u7D1A","Auto Update Tags":"\u81EA\u52D5\u66F4\u65B0\u6A19\u7C64","Automatically add/remove urgent/important tags when moved between quadrants":"\u5728\u8C61\u9650\u9593\u79FB\u52D5\u6642\u81EA\u52D5\u65B0\u589E/\u79FB\u9664\u7DCA\u6025/\u91CD\u8981\u6A19\u7C64","Hide Empty Quadrants":"\u96B1\u85CF\u7A7A\u8C61\u9650","Hide quadrants that have no tasks":"\u96B1\u85CF\u6C92\u6709\u4EFB\u52D9\u7684\u8C61\u9650","Configure On Completion Action":"\u914D\u7F6E\u5B8C\u6210\u6642\u64CD\u4F5C","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal \u6A94\u6848\u7684 URL\uFF08\u652F\u6301 http://\u3001https:// \u548C webcal:// \u5354\u5B9A\uFF09","Task mark display style":"\u4EFB\u52D9\u6A19\u8A18\u986F\u793A\u6A23\u5F0F","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u9078\u64C7\u4EFB\u52D9\u6A19\u8A18\u7684\u986F\u793A\u65B9\u5F0F\uFF1A\u9810\u8A2D\u8907\u9078\u6846\u3001\u81EA\u5B9A\u7FA9\u6587\u5B57\u6A19\u8A18\u6216 Task Genius \u5716\u793A\u3002","Default checkboxes":"\u9810\u8A2D\u8907\u9078\u6846","Custom text marks":"\u81EA\u5B9A\u7FA9\u6587\u5B57\u6A19\u8A18","Task Genius icons":"Task Genius \u5716\u793A","Time Parsing Settings":"\u6642\u9593\u89E3\u6790\u8A2D\u5B9A","Enable Time Parsing":"\u555F\u7528\u6642\u9593\u89E3\u6790","Automatically parse natural language time expressions in Quick Capture":"\u5728\u5FEB\u901F\u6355\u7372\u4E2D\u81EA\u52D5\u89E3\u6790\u81EA\u7136\u8A9E\u8A00\u6642\u9593\u8868\u9054\u5F0F","Remove Original Time Expressions":"\u79FB\u9664\u539F\u59CB\u6642\u9593\u8868\u9054\u5F0F","Remove parsed time expressions from the task text":"\u5F9E\u4EFB\u52D9\u6587\u5B57\u4E2D\u79FB\u9664\u5DF2\u89E3\u6790\u7684\u6642\u9593\u8868\u9054\u5F0F","Supported Languages":"\u652F\u6301\u7684\u8A9E\u8A00","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u76EE\u524D\u652F\u6301\u82F1\u6587\u548C\u4E2D\u6587\u6642\u9593\u8868\u9054\u5F0F\u3002\u672A\u4F86\u66F4\u65B0\u4E2D\u53EF\u80FD\u6703\u65B0\u589E\u66F4\u591A\u8A9E\u8A00\u3002","Date Keywords Configuration":"\u65E5\u671F\u95DC\u9375\u8A5E\u914D\u7F6E","Start Date Keywords":"\u958B\u59CB\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate start dates (comma-separated)":"\u6307\u793A\u958B\u59CB\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Due Date Keywords":"\u5230\u671F\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate due dates (comma-separated)":"\u6307\u793A\u5230\u671F\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Scheduled Date Keywords":"\u5B89\u6392\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate scheduled dates (comma-separated)":"\u6307\u793A\u5B89\u6392\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Configure...":"\u914D\u7F6E...","Collapse quick input":"\u6298\u758A\u5FEB\u901F\u8F38\u5165","Expand quick input":"\u5C55\u958B\u5FEB\u901F\u8F38\u5165","Set Priority":"\u8A2D\u5B9A\u512A\u5148\u7D1A","Clear Flags":"\u6E05\u9664\u65D7\u6A19","Filter by Priority":"\u6309\u512A\u5148\u7D1A\u7BE9\u9078","New Project":"\u65B0\u5C08\u6848","Archive Completed":"\u6B78\u6A94\u5DF2\u5B8C\u6210","Project Statistics":"\u5C08\u6848\u7D71\u8A08","Manage Tags":"\u7BA1\u7406\u6A19\u7C64","Time Parsing":"\u6642\u9593\u89E3\u6790","Minimal Quick Capture":"\u6700\u5C0F\u5316\u5FEB\u901F\u6355\u7372","Enter your task...":"\u8F38\u5165\u60A8\u7684\u4EFB\u52D9...","Set date":"\u8A2D\u5B9A\u65E5\u671F","Set location":"\u8A2D\u5B9A\u4F4D\u7F6E","Add tags":"\u65B0\u589E\u6A19\u7C64","Day after tomorrow":"\u5F8C\u5929","Next week":"\u4E0B\u5468","Next month":"\u4E0B\u6708","Choose date...":"\u9078\u64C7\u65E5\u671F...","Fixed location":"\u56FA\u5B9A\u4F4D\u7F6E",Date:"\u65E5\u671F","Add date (triggers ~)":"\u65B0\u589E\u65E5\u671F\uFF08\u89F8\u767C\u7B26 ~\uFF09","Set priority (triggers !)":"\u8A2D\u5B9A\u512A\u5148\u7D1A\uFF08\u89F8\u767C\u7B26 !\uFF09","Target Location":"\u76EE\u6A19\u4F4D\u7F6E","Set target location (triggers *)":"\u8A2D\u5B9A\u76EE\u6A19\u4F4D\u7F6E\uFF08\u89F8\u767C\u7B26 *\uFF09","Add tags (triggers #)":"\u65B0\u589E\u6A19\u7C64\uFF08\u89F8\u767C\u7B26 #\uFF09","Minimal Mode":"\u6700\u5C0F\u5316\u6A21\u5F0F","Enable minimal mode":"\u555F\u7528\u6700\u5C0F\u5316\u6A21\u5F0F","Enable simplified single-line quick capture with inline suggestions":"\u555F\u7528\u7C21\u5316\u7684\u55AE\u884C\u5FEB\u901F\u6355\u7372\u548C\u5167\u5D4C\u5EFA\u8B70","Suggest trigger character":"\u5EFA\u8B70\u89F8\u767C\u5B57\u5143","Character to trigger the suggestion menu":"\u89F8\u767C\u5EFA\u8B70\u9078\u55AE\u7684\u5B57\u5143","Highest Priority":"\u6700\u9AD8\u512A\u5148\u7D1A","\u{1F53A} Highest priority task":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u7D1A\u4EFB\u52D9","Highest priority set":"\u5DF2\u8A2D\u5B9A\u6700\u9AD8\u512A\u5148\u7D1A","\u23EB High priority task":"\u23EB \u9AD8\u512A\u5148\u7D1A\u4EFB\u52D9","High priority set":"\u5DF2\u8A2D\u5B9A\u9AD8\u512A\u5148\u7D1A","\u{1F53C} Medium priority task":"\u{1F53C} \u4E2D\u7B49\u512A\u5148\u7D1A\u4EFB\u52D9","Medium priority set":"\u5DF2\u8A2D\u5B9A\u4E2D\u7B49\u512A\u5148\u7D1A","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u512A\u5148\u7D1A\u4EFB\u52D9","Low priority set":"\u5DF2\u8A2D\u5B9A\u4F4E\u512A\u5148\u7D1A","Lowest Priority":"\u6700\u4F4E\u512A\u5148\u7D1A","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u512A\u5148\u7D1A\u4EFB\u52D9","Lowest priority set":"\u5DF2\u8A2D\u5B9A\u6700\u4F4E\u512A\u5148\u7D1A","Set due date to today":"\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u4ECA\u5929","Due date set to today":"\u5DF2\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u4ECA\u5929","Set due date to tomorrow":"\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u660E\u5929","Due date set to tomorrow":"\u5DF2\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u660E\u5929","Pick Date":"\u9078\u64C7\u65E5\u671F","Open date picker":"\u958B\u555F\u65E5\u671F\u9078\u64C7\u5668","Set scheduled date":"\u8A2D\u5B9A\u5B89\u6392\u65E5\u671F","Scheduled date set":"\u5DF2\u8A2D\u5B9A\u5B89\u6392\u65E5\u671F","Save to inbox":"\u5132\u5B58\u5230\u6536\u4EF6\u5323","Target set to Inbox":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u6536\u4EF6\u5323","Daily Note":"\u65E5\u8A18","Save to today's daily note":"\u5132\u5B58\u5230\u4ECA\u5929\u7684\u65E5\u8A18","Target set to Daily Note":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u65E5\u8A18","Current File":"\u7576\u524D\u6A94\u6848","Save to current file":"\u5132\u5B58\u5230\u7576\u524D\u6A94\u6848","Target set to Current File":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u7576\u524D\u6A94\u6848","Choose File":"\u9078\u64C7\u6A94\u6848","Open file picker":"\u958B\u555F\u6A94\u6848\u9078\u64C7\u5668","Save to recent file":"\u5132\u5B58\u5230\u6700\u8FD1\u6A94\u6848","Target set to":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA",Important:"\u91CD\u8981","Tagged as important":"\u5DF2\u6A19\u8A18\u70BA\u91CD\u8981",Urgent:"\u7DCA\u6025","Tagged as urgent":"\u5DF2\u6A19\u8A18\u70BA\u7DCA\u6025",Work:"\u5DE5\u4F5C","Work related task":"\u5DE5\u4F5C\u76F8\u95DC\u4EFB\u52D9","Tagged as work":"\u5DF2\u6A19\u8A18\u70BA\u5DE5\u4F5C",Personal:"\u500B\u4EBA","Personal task":"\u500B\u4EBA\u4EFB\u52D9","Tagged as personal":"\u5DF2\u6A19\u8A18\u70BA\u500B\u4EBA","Choose Tag":"\u9078\u64C7\u6A19\u7C64","Open tag picker":"\u958B\u555F\u6A19\u7C64\u9078\u64C7\u5668","Existing tag":"\u73FE\u6709\u6A19\u7C64","Tagged with":"\u5DF2\u6A19\u8A18\u70BA","Toggle quick capture panel in editor":"\u5728\u7DE8\u8F2F\u5668\u4E2D\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F","Toggle quick capture panel in editor (Globally)":"\u5728\u7DE8\u8F2F\u5668\u4E2D\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F\uFF08\u5168\u57DF\uFF09","Selected Mode":"\u9078\u64C7\u7684\u6A21\u5F0F","Features that will be enabled":"\u5C07\u555F\u7528\u7684\u529F\u80FD","Don't worry! You can customize any of these settings later in the plugin settings.":"\u5225\u64D4\u5FC3\uFF01\u60A8\u53EF\u4EE5\u7A0D\u5F8C\u5728\u5916\u639B\u8A2D\u5B9A\u4E2D\u81EA\u8A02\u9019\u4E9B\u8A2D\u5B9A\u3002","Available views":"\u53EF\u7528\u8996\u5716","Key settings":"\u95DC\u9375\u8A2D\u5B9A","Progress bars":"\u9032\u5EA6\u689D","Enabled (both graphical and text)":"\u5DF2\u555F\u7528\uFF08\u5716\u5F62\u548C\u6587\u5B57\uFF09","Task status switching":"\u4EFB\u52D9\u72C0\u614B\u5207\u63DB","Workflow management":"\u5DE5\u4F5C\u6D41\u7A0B\u7BA1\u7406","Reward system":"\u734E\u52F5\u7CFB\u7D71","Habit tracking":"\u7FD2\u6163\u8FFD\u8E64","Performance optimization":"\u6548\u80FD\u6700\u4F73\u5316","Configuration Changes":"\u8A2D\u5B9A\u8B8A\u66F4","Your custom views will be preserved":"\u60A8\u7684\u81EA\u8A02\u8996\u5716\u5C07\u88AB\u4FDD\u7559","New views to be added":"\u8981\u65B0\u589E\u7684\u8996\u5716","Existing views to be updated":"\u8981\u66F4\u65B0\u7684\u73FE\u6709\u8996\u5716","Feature changes":"\u529F\u80FD\u8B8A\u66F4","Only template settings will be applied. Your existing custom configurations will be preserved.":"\u50C5\u5957\u7528\u7BC4\u672C\u8A2D\u5B9A\u3002\u60A8\u73FE\u6709\u7684\u81EA\u8A02\u8A2D\u5B9A\u5C07\u88AB\u4FDD\u7559\u3002","Congratulations!":"\u606D\u559C\uFF01","Task Genius has been configured with your selected preferences":"Task Genius \u5DF2\u6839\u64DA\u60A8\u9078\u64C7\u7684\u504F\u597D\u5B8C\u6210\u8A2D\u5B9A","Your Configuration":"\u60A8\u7684\u8A2D\u5B9A","Quick Start Guide":"\u5FEB\u901F\u5165\u9580\u6307\u5357","What's next?":"\u63A5\u4E0B\u4F86\u505A\u4EC0\u9EBC\uFF1F","Open Task Genius view from the left ribbon":"\u5F9E\u5DE6\u5074\u529F\u80FD\u5340\u958B\u555F Task Genius \u8996\u5716","Create your first task using Quick Capture":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Explore different views to organize your tasks":"\u63A2\u7D22\u4E0D\u540C\u8996\u5716\u4F86\u7D44\u7E54\u60A8\u7684\u4EFB\u52D9","Customize settings anytime in plugin settings":"\u96A8\u6642\u5728\u5916\u639B\u8A2D\u5B9A\u4E2D\u81EA\u8A02\u8A2D\u5B9A","Helpful Resources":"\u5BE6\u7528\u8CC7\u6E90","Complete guide to all features":"\u6240\u6709\u529F\u80FD\u7684\u5B8C\u6574\u6307\u5357",Community:"\u793E\u7FA4","Get help and share tips":"\u7372\u5F97\u5E6B\u52A9\u548C\u5206\u4EAB\u6280\u5DE7","Customize Task Genius":"\u81EA\u8A02 Task Genius","Click the Task Genius icon in the left sidebar":"\u9EDE\u64CA\u5DE6\u5074\u908A\u6B04\u7684 Task Genius \u5716\u793A","Start with the Inbox view to see all your tasks":"\u5F9E\u6536\u4EF6\u5323\u8996\u5716\u958B\u59CB\u67E5\u770B\u6240\u6709\u4EFB\u52D9","Use quick capture panel to quickly add your first task":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u5FEB\u901F\u65B0\u589E\u7B2C\u4E00\u500B\u4EFB\u52D9","Try the Forecast view to see tasks by date":"\u5617\u8A66\u9810\u6E2C\u8996\u5716\u6309\u65E5\u671F\u67E5\u770B\u4EFB\u52D9","Open Task Genius and explore the available views":"\u958B\u555F Task Genius \u4E26\u63A2\u7D22\u53EF\u7528\u8996\u5716","Set up a project using the Projects view":"\u4F7F\u7528\u5C08\u6848\u8996\u5716\u8A2D\u5B9A\u5C08\u6848","Try the Kanban board for visual task management":"\u5617\u8A66\u770B\u677F\u9032\u884C\u8996\u89BA\u5316\u4EFB\u52D9\u7BA1\u7406","Use workflow stages to track task progress":"\u4F7F\u7528\u5DE5\u4F5C\u6D41\u7A0B\u968E\u6BB5\u8FFD\u8E64\u4EFB\u52D9\u9032\u5EA6","Explore all available views and their configurations":"\u63A2\u7D22\u6240\u6709\u53EF\u7528\u8996\u5716\u53CA\u5176\u8A2D\u5B9A","Set up complex workflows for your projects":"\u70BA\u5C08\u6848\u8A2D\u5B9A\u8907\u96DC\u5DE5\u4F5C\u6D41\u7A0B","Configure habits and rewards to stay motivated":"\u8A2D\u5B9A\u7FD2\u6163\u548C\u734E\u52F5\u4EE5\u4FDD\u6301\u52D5\u529B","Integrate with external calendars and systems":"\u8207\u5916\u90E8\u65E5\u66C6\u548C\u7CFB\u7D71\u6574\u5408","Open Task Genius from the left sidebar":"\u5F9E\u5DE6\u5074\u908A\u6B04\u958B\u555F Task Genius","Create your first task":"\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Explore the different views available":"\u63A2\u7D22\u4E0D\u540C\u7684\u53EF\u7528\u8996\u5716","Customize settings as needed":"\u6839\u64DA\u9700\u8981\u81EA\u8A02\u8A2D\u5B9A","Thank you for your positive feedback!":"\u611F\u8B1D\u60A8\u7684\u6B63\u9762\u56DE\u994B\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u611F\u8B1D\u60A8\u7684\u56DE\u994B\u3002\u6211\u5011\u5C07\u7E7C\u7E8C\u6539\u5584\u4F7F\u7528\u9AD4\u9A57\u3002","Share detailed feedback":"\u5206\u4EAB\u8A73\u7D30\u56DE\u994B","Skip onboarding":"\u8DF3\u904E\u5F15\u5C0E",Back:"\u8FD4\u56DE","Welcome to Task Genius":"\u6B61\u8FCE\u4F7F\u7528 Task Genius","Transform your task management with advanced progress tracking and workflow automation":"\u900F\u904E\u9032\u968E\u9032\u5EA6\u8FFD\u8E64\u548C\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316\u8F49\u8B8A\u60A8\u7684\u4EFB\u52D9\u7BA1\u7406","Progress Tracking":"\u9032\u5EA6\u8FFD\u8E64","Visual progress bars and completion tracking for all your tasks":"\u70BA\u6240\u6709\u4EFB\u52D9\u63D0\u4F9B\u8996\u89BA\u5316\u9032\u5EA6\u689D\u548C\u5B8C\u6210\u8FFD\u8E64","Organize tasks by projects with advanced filtering and sorting":"\u4F7F\u7528\u9032\u968E\u7BE9\u9078\u548C\u6392\u5E8F\u6309\u5C08\u6848\u7D44\u7E54\u4EFB\u52D9","Workflow Automation":"\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316","Automate task status changes and improve your productivity":"\u81EA\u52D5\u5316\u4EFB\u52D9\u72C0\u614B\u8B8A\u66F4\u4E26\u63D0\u9AD8\u751F\u7522\u529B","Multiple Views":"\u591A\u91CD\u8996\u5716","Kanban boards, calendars, Gantt charts, and more visualization options":"\u770B\u677F\u3001\u65E5\u66C6\u3001\u7518\u7279\u5716\u548C\u66F4\u591A\u8996\u89BA\u5316\u9078\u9805","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u9019\u500B\u5FEB\u901F\u8A2D\u5B9A\u5C07\u6839\u64DA\u60A8\u7684\u7D93\u9A57\u6C34\u5E73\u548C\u9700\u6C42\u5E6B\u52A9\u60A8\u8A2D\u5B9A Task Genius\u3002\u60A8\u96A8\u6642\u53EF\u4EE5\u7A0D\u5F8C\u66F4\u6539\u9019\u4E9B\u8A2D\u5B9A\u3002","Choose Your Usage Mode":"\u9078\u64C7\u60A8\u7684\u4F7F\u7528\u6A21\u5F0F","Select the configuration that best matches your task management experience":"\u9078\u64C7\u6700\u7B26\u5408\u60A8\u4EFB\u52D9\u7BA1\u7406\u7D93\u9A57\u7684\u8A2D\u5B9A","Configuration Preview":"\u8A2D\u5B9A\u9810\u89BD","Review the settings that will be applied for your selected mode":"\u67E5\u770B\u5C07\u5957\u7528\u65BC\u60A8\u9078\u64C7\u6A21\u5F0F\u7684\u8A2D\u5B9A","Include task creation guide":"\u5305\u542B\u4EFB\u52D9\u5EFA\u7ACB\u6307\u5357","Show a quick tutorial on creating your first task":"\u986F\u793A\u5EFA\u7ACB\u7B2C\u4E00\u500B\u4EFB\u52D9\u7684\u5FEB\u901F\u6559\u5B78","Create Your First Task":"\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Learn how to create and format tasks in Task Genius":"\u5B78\u7FD2\u5982\u4F55\u5728 Task Genius \u4E2D\u5EFA\u7ACB\u548C\u683C\u5F0F\u5316\u4EFB\u52D9","Setup Complete!":"\u8A2D\u5B9A\u5B8C\u6210\uFF01","Task Genius is now configured and ready to use":"Task Genius \u5DF2\u8A2D\u5B9A\u5B8C\u6210\u4E14\u53EF\u4EE5\u4F7F\u7528","Start Using Task Genius":"\u958B\u59CB\u4F7F\u7528 Task Genius","Task Genius Setup":"Task Genius \u8A2D\u5B9A","Skip setup":"\u8DF3\u904E\u8A2D\u5B9A","We noticed you've already configured Task Genius":"\u6211\u5011\u6CE8\u610F\u5230\u60A8\u5DF2\u7D93\u8A2D\u5B9A\u4E86 Task Genius","Your current configuration includes:":"\u60A8\u76EE\u524D\u7684\u8A2D\u5B9A\u5305\u62EC\uFF1A","Would you like to run the setup wizard anyway?":"\u60A8\u9084\u662F\u60F3\u8981\u57F7\u884C\u8A2D\u5B9A\u7CBE\u9748\u55CE\uFF1F","Yes, show me the setup wizard":"\u662F\u7684\uFF0C\u986F\u793A\u8A2D\u5B9A\u7CBE\u9748","No, I'm happy with my current setup":"\u4E0D\u7528\uFF0C\u6211\u6EFF\u610F\u76EE\u524D\u7684\u8A2D\u5B9A","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"\u5B78\u7FD2\u5728 Task Genius \u4E2D\u5EFA\u7ACB\u548C\u683C\u5F0F\u5316\u4EFB\u52D9\u7684\u4E0D\u540C\u65B9\u5F0F\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u8868\u60C5\u7B26\u865F\u6216 Dataview \u98A8\u683C\u7684\u8A9E\u6CD5\u3002","Task Format Examples":"\u4EFB\u52D9\u683C\u5F0F\u7BC4\u4F8B","Basic Task":"\u57FA\u672C\u4EFB\u52D9","With Emoji Metadata":"\u4F7F\u7528\u8868\u60C5\u7B26\u865F\u4E2D\u7E7C\u8CC7\u6599","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u5230\u671F\u65E5\uFF0C\u{1F53A} = \u9AD8\u512A\u5148\u7D1A\uFF0C#project/ = \u6587\u4EF6\u5C08\u6848\u6A19\u7C64","With Dataview Metadata":"\u4F7F\u7528 Dataview \u4E2D\u7E7C\u8CC7\u6599","Mixed Format":"\u6DF7\u5408\u683C\u5F0F","Combine emoji and dataview syntax as needed":"\u6839\u64DA\u9700\u8981\u7D50\u5408\u8868\u60C5\u7B26\u865F\u548C Dataview \u8A9E\u6CD5","Task Status Markers":"\u4EFB\u52D9\u72C0\u614B\u6A19\u8A18","Not started":"\u672A\u958B\u59CB","In progress":"\u9032\u884C\u4E2D","Common Metadata Symbols":"\u5E38\u7528\u4E2D\u7E7C\u8CC7\u6599\u7B26\u865F","Due date":"\u5230\u671F\u65E5","Start date":"\u958B\u59CB\u65E5\u671F","Scheduled date":"\u9810\u5B9A\u65E5\u671F","Higher priority":"\u8F03\u9AD8\u512A\u5148\u7D1A","Lower priority":"\u8F03\u4F4E\u512A\u5148\u7D1A","Recurring task":"\u91CD\u8907\u4EFB\u52D9","Project/tag":"\u5C08\u6848/\u6A19\u7C64","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u5F9E Obsidian \u7684\u4EFB\u4F55\u5730\u65B9\u5FEB\u901F\u64F7\u53D6\u4EFB\u52D9\u3002","Try Quick Capture":"\u5617\u8A66\u5FEB\u901F\u64F7\u53D6","Quick capture is now enabled in your configuration!":"\u5FEB\u901F\u64F7\u53D6\u73FE\u5DF2\u5728\u60A8\u7684\u8A2D\u5B9A\u4E2D\u555F\u7528\uFF01","Failed to open quick capture. Please try again later.":"\u7121\u6CD5\u958B\u555F\u5FEB\u901F\u64F7\u53D6\u3002\u8ACB\u7A0D\u5F8C\u518D\u8A66\u3002","Try It Yourself":"\u81EA\u5DF1\u8A66\u8A66\u770B","Practice creating a task with the format you prefer:":"\u7DF4\u7FD2\u4F7F\u7528\u60A8\u504F\u597D\u7684\u683C\u5F0F\u5EFA\u7ACB\u4EFB\u52D9\uFF1A","Practice Task":"\u7DF4\u7FD2\u4EFB\u52D9","Enter a task using any of the formats shown above":"\u4F7F\u7528\u4E0A\u8FF0\u4EFB\u4F55\u683C\u5F0F\u8F38\u5165\u4EFB\u52D9","- [ ] Your task here":"- [ ] \u60A8\u7684\u4EFB\u52D9\u5728\u6B64","Validate Task":"\u9A57\u8B49\u4EFB\u52D9","Please enter a task to validate":"\u8ACB\u8F38\u5165\u4EFB\u52D9\u4EE5\u9032\u884C\u9A57\u8B49","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u9019\u770B\u8D77\u4F86\u4E0D\u50CF\u6709\u6548\u7684\u4EFB\u52D9\u3002\u4EFB\u52D9\u61C9\u4EE5 '- [ ]' \u958B\u982D","Valid task format!":"\u6709\u6548\u7684\u4EFB\u52D9\u683C\u5F0F\uFF01","Emoji metadata":"\u8868\u60C5\u7B26\u865F\u4E2D\u7E7C\u8CC7\u6599","Dataview metadata":"Dataview \u4E2D\u7E7C\u8CC7\u6599","Project tags":"\u5C08\u6848\u6A19\u7C64","Detected features: ":"\u6AA2\u6E2C\u5230\u7684\u529F\u80FD\uFF1A",Onboarding:"\u65B0\u624B\u5F15\u5C0E","Restart the welcome guide and setup wizard":"\u91CD\u65B0\u555F\u52D5\u6B61\u8FCE\u6307\u5357\u548C\u8A2D\u5B9A\u7CBE\u9748","Restart Onboarding":"\u91CD\u65B0\u958B\u59CB\u5F15\u5C0E",Copy:"\u8907\u88FD","Copied!":"\u5DF2\u8907\u88FD\uFF01","MCP integration is only available on desktop":"MCP \u6574\u5408\u50C5\u5728\u684C\u9762\u7248\u53EF\u7528","MCP Server Status":"MCP \u4F3A\u670D\u5668\u72C0\u614B","Enable MCP Server":"\u555F\u7528 MCP \u4F3A\u670D\u5668","Start the MCP server to allow external tool connections":"\u555F\u52D5 MCP \u4F3A\u670D\u5668\u4EE5\u5141\u8A31\u5916\u90E8\u5DE5\u5177\u9023\u63A5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1A\u555F\u7528 MCP \u4F3A\u670D\u5668\u5C07\u5141\u8A31\u5916\u90E8 AI \u5DE5\u5177\u548C\u61C9\u7528\u7A0B\u5F0F\u5B58\u53D6\u548C\u4FEE\u6539\u60A8\u7684\u4EFB\u52D9\u8CC7\u6599\u3002\u9019\u5305\u62EC\uFF1A \u2022 \u8B80\u53D6\u6240\u6709\u4EFB\u52D9\u53CA\u5176\u8A73\u7D30\u8CC7\u8A0A \u2022 \u5EFA\u7ACB\u65B0\u4EFB\u52D9 \u2022 \u66F4\u65B0\u73FE\u6709\u4EFB\u52D9 \u2022 \u522A\u9664\u4EFB\u52D9 \u2022 \u5B58\u53D6\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u548C\u5C6C\u6027 \u50C5\u5728\u60A8\u4FE1\u4EFB\u5C07\u9023\u63A5\u5230 MCP \u4F3A\u670D\u5668\u7684\u61C9\u7528\u7A0B\u5F0F\u6642\u624D\u555F\u7528\u6B64\u529F\u80FD\u3002\u8ACB\u78BA\u4FDD\u60A8\u7684\u8A8D\u8B49\u6191\u8B49\u5B89\u5168\u3002 \u60A8\u8981\u7E7C\u7E8C\u55CE\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u4F3A\u670D\u5668\u5DF2\u555F\u7528\u3002\u8ACB\u4FDD\u7BA1\u597D\u60A8\u7684\u8A8D\u8B49\u6191\u8B49\uFF01","Server Configuration":"\u4F3A\u670D\u5668\u8A2D\u5B9A",Host:"\u4E3B\u6A5F","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u4F3A\u670D\u5668\u4E3B\u6A5F\u4F4D\u5740\u3002\u4F7F\u7528 127.0.0.1 \u50C5\u9650\u672C\u5730\uFF0C\u4F7F\u7528 0.0.0.0 \u7528\u65BC\u6240\u6709\u4ECB\u9762","Security Warning":"\u5B89\u5168\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A\u5207\u63DB\u5230 0.0.0.0 \u5C07\u4F7F MCP \u4F3A\u670D\u5668\u53EF\u5F9E\u5916\u90E8\u7DB2\u8DEF\u5B58\u53D6\u3002 \u9019\u53EF\u80FD\u6703\u5C07\u60A8\u7684 Obsidian \u8CC7\u6599\u66B4\u9732\u7D66\uFF1A - \u60A8\u672C\u5730\u7DB2\u8DEF\u4E0A\u7684\u5176\u4ED6\u88DD\u7F6E - \u5982\u679C\u60A8\u7684\u9632\u706B\u7246\u8A2D\u5B9A\u4E0D\u7576\uFF0C\u53EF\u80FD\u66B4\u9732\u5230\u7DB2\u969B\u7DB2\u8DEF **\u50C5\u5728\u7B26\u5408\u4EE5\u4E0B\u689D\u4EF6\u6642\u7E7C\u7E8C\uFF1A** - \u60A8\u4E86\u89E3\u5B89\u5168\u5F71\u97FF - \u5DF2\u6B63\u78BA\u8A2D\u5B9A\u9632\u706B\u7246 - \u56E0\u5408\u6CD5\u539F\u56E0\u9700\u8981\u5916\u90E8\u5B58\u53D6 \u60A8\u78BA\u5B9A\u8981\u7E7C\u7E8C\u55CE\uFF1F`,"Yes, I understand the risks":"\u662F\u7684\uFF0C\u6211\u4E86\u89E3\u98A8\u96AA","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u4E3B\u6A5F\u5DF2\u66F4\u6539\u70BA 0.0.0.0\u3002\u4F3A\u670D\u5668\u73FE\u5728\u53EF\u5F9E\u5916\u90E8\u7DB2\u8DEF\u5B58\u53D6\u3002",Port:"\u9023\u63A5\u57E0","Server port number (default: 7777)":"\u4F3A\u670D\u5668\u9023\u63A5\u57E0\u865F\u78BC\uFF08\u9810\u8A2D\uFF1A7777\uFF09",Authentication:"\u8A8D\u8B49","Authentication Token":"\u8A8D\u8B49\u6191\u8B49","Bearer token for authenticating MCP requests (keep this secret)":"\u7528\u65BC\u9A57\u8B49 MCP \u8ACB\u6C42\u7684 Bearer \u6191\u8B49\uFF08\u8ACB\u4FDD\u5BC6\uFF09",Show:"\u986F\u793A",Hide:"\u96B1\u85CF","Token copied to clipboard":"\u6191\u8B49\u5DF2\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",Regenerate:"\u91CD\u65B0\u7522\u751F","New token generated":"\u5DF2\u7522\u751F\u65B0\u6191\u8B49","Advanced Settings":"\u9032\u968E\u8A2D\u5B9A","Enable CORS":"\u555F\u7528 CORS","Allow cross-origin requests (required for web clients)":"\u5141\u8A31\u8DE8\u4F86\u6E90\u8ACB\u6C42\uFF08\u7DB2\u9801\u5BA2\u6236\u7AEF\u6240\u9700\uFF09","Log Level":"\u65E5\u8A8C\u7D1A\u5225","Logging verbosity for debugging":"\u7528\u65BC\u9664\u932F\u7684\u65E5\u8A8C\u8A73\u7D30\u7A0B\u5EA6",Error:"\u932F\u8AA4",Warning:"\u8B66\u544A",Info:"\u8CC7\u8A0A",Debug:"\u9664\u932F","Server Actions":"\u4F3A\u670D\u5668\u64CD\u4F5C","Test Connection":"\u6E2C\u8A66\u9023\u63A5","Test the MCP server connection":"\u6E2C\u8A66 MCP \u4F3A\u670D\u5668\u9023\u63A5",Test:"\u6E2C\u8A66","Testing...":"\u6E2C\u8A66\u4E2D...","Connection test successful! MCP server is working.":"\u9023\u63A5\u6E2C\u8A66\u6210\u529F\uFF01MCP \u4F3A\u670D\u5668\u6B63\u5728\u904B\u4F5C\u3002","Connection test failed: ":"\u9023\u63A5\u6E2C\u8A66\u5931\u6557\uFF1A","Restart Server":"\u91CD\u65B0\u555F\u52D5\u4F3A\u670D\u5668","Stop and restart the MCP server":"\u505C\u6B62\u4E26\u91CD\u65B0\u555F\u52D5 MCP \u4F3A\u670D\u5668",Restart:"\u91CD\u65B0\u555F\u52D5","MCP server restarted":"MCP \u4F3A\u670D\u5668\u5DF2\u91CD\u65B0\u555F\u52D5","Failed to restart server: ":"\u91CD\u65B0\u555F\u52D5\u4F3A\u670D\u5668\u5931\u6557\uFF1A","Use Next Available Port":"\u4F7F\u7528\u4E0B\u4E00\u500B\u53EF\u7528\u9023\u63A5\u57E0","Port updated to ":"\u9023\u63A5\u57E0\u5DF2\u66F4\u65B0\u70BA ","No available port found in range":"\u5728\u7BC4\u570D\u5167\u627E\u4E0D\u5230\u53EF\u7528\u7684\u9023\u63A5\u57E0","Client Configuration":"\u5BA2\u6236\u7AEF\u8A2D\u5B9A","Authentication Method":"\u8A8D\u8B49\u65B9\u6CD5","Choose the authentication method for client configurations":"\u9078\u64C7\u5BA2\u6236\u7AEF\u8A2D\u5B9A\u7684\u8A8D\u8B49\u65B9\u6CD5","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7D44\u5408 Bearer\uFF08\u63A8\u85A6\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u81EA\u8A02\u6A19\u982D","Supported Authentication Methods:":"\u652F\u63F4\u7684\u8A8D\u8B49\u65B9\u6CD5\uFF1A","API Documentation":"API \u6587\u4EF6","Server Endpoint":"\u4F3A\u670D\u5668\u7AEF\u9EDE","Copy URL":"\u8907\u88FD URL","Available Tools":"\u53EF\u7528\u5DE5\u5177","Loading tools...":"\u8F09\u5165\u5DE5\u5177\u4E2D...","No tools available":"\u6C92\u6709\u53EF\u7528\u7684\u5DE5\u5177","Failed to load tools. Is the MCP server running?":"\u8F09\u5165\u5DE5\u5177\u5931\u6557\u3002MCP \u4F3A\u670D\u5668\u662F\u5426\u6B63\u5728\u904B\u4F5C\uFF1F","Example Request":"\u7BC4\u4F8B\u8ACB\u6C42","MCP Server not initialized":"MCP \u4F3A\u670D\u5668\u672A\u521D\u59CB\u5316",Running:"\u904B\u4F5C\u4E2D",Stopped:"\u5DF2\u505C\u6B62",Uptime:"\u904B\u4F5C\u6642\u9593",Requests:"\u8ACB\u6C42\u6578","Toggle this to enable Org-mode style quick capture panel.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528 Org-mode \u98A8\u683C\u7684\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u3002","Auto-add task prefix":"\u81EA\u52D5\u65B0\u589E\u4EFB\u52D9\u524D\u7DB4","Automatically add task checkbox prefix to captured content":"\u81EA\u52D5\u5728\u64F7\u53D6\u7684\u5167\u5BB9\u524D\u65B0\u589E\u4EFB\u52D9\u6838\u53D6\u65B9\u584A\u524D\u7DB4","Task prefix format":"\u4EFB\u52D9\u524D\u7DB4\u683C\u5F0F","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u5728\u64F7\u53D6\u5167\u5BB9\u524D\u65B0\u589E\u7684\u524D\u7DB4\uFF08\u4F8B\u5982\uFF0C'- [ ]' \u7528\u65BC\u4EFB\u52D9\uFF0C'- ' \u7528\u65BC\u6E05\u55AE\u9805\u76EE\uFF09","Search settings...":"\u641C\u5C0B\u8A2D\u5B9A...","Search settings":"\u641C\u5C0B\u8A2D\u5B9A","Clear search":"\u6E05\u9664\u641C\u5C0B","Search results":"\u641C\u5C0B\u7D50\u679C","No settings found":"\u627E\u4E0D\u5230\u8A2D\u5B9A","Project Tree View Settings":"\u5C08\u6848\u6A39\u72C0\u8996\u5716\u8A2D\u5B9A","Configure how projects are displayed in tree view.":"\u8A2D\u5B9A\u5C08\u6848\u5728\u6A39\u72C0\u8996\u5716\u4E2D\u7684\u986F\u793A\u65B9\u5F0F\u3002","Default project view mode":"\u9810\u8A2D\u5C08\u6848\u8996\u5716\u6A21\u5F0F","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u9078\u64C7\u9810\u8A2D\u4EE5\u5E73\u9762\u6E05\u55AE\u6216\u968E\u5C64\u6A39\u72C0\u986F\u793A\u5C08\u6848\u3002","Auto-expand project tree":"\u81EA\u52D5\u5C55\u958B\u5C08\u6848\u6A39","Automatically expand all project nodes when opening the project view in tree mode.":"\u5728\u6A39\u72C0\u6A21\u5F0F\u4E2D\u958B\u555F\u5C08\u6848\u8996\u5716\u6642\u81EA\u52D5\u5C55\u958B\u6240\u6709\u5C08\u6848\u7BC0\u9EDE\u3002","Show empty project folders":"\u986F\u793A\u7A7A\u7684\u5C08\u6848\u8CC7\u6599\u593E","Display project folders even if they don't contain any tasks.":"\u5373\u4F7F\u5C08\u6848\u8CC7\u6599\u593E\u4E0D\u5305\u542B\u4EFB\u4F55\u4EFB\u52D9\u4E5F\u986F\u793A\u3002","Project path separator":"\u5C08\u6848\u8DEF\u5F91\u5206\u9694\u7B26","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u7528\u65BC\u5206\u9694\u5C08\u6848\u5C64\u7D1A\u7684\u5B57\u5143\uFF08\u4F8B\u5982 'Project/SubProject' \u4E2D\u7684 '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u555F\u7528\u52D5\u614B\u4E2D\u7E7C\u8CC7\u6599\u5B9A\u4F4D","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u667A\u6167\u5B9A\u4F4D\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u3002\u555F\u7528\u6642\uFF0C\u4E2D\u7E7C\u8CC7\u6599\u6703\u8207\u77ED\u4EFB\u52D9\u986F\u793A\u5728\u540C\u4E00\u884C\uFF0C\u9577\u4EFB\u52D9\u5247\u986F\u793A\u5728\u4E0B\u65B9\u3002\u505C\u7528\u6642\uFF0C\u4E2D\u7E7C\u8CC7\u6599\u7E3D\u662F\u986F\u793A\u5728\u4EFB\u52D9\u5167\u5BB9\u4E0B\u65B9\u3002","Toggle tree/list view":"\u5207\u63DB\u6A39\u72C0/\u6E05\u55AE\u8996\u5716","Clear date":"\u6E05\u9664\u65E5\u671F","Clear priority":"\u6E05\u9664\u512A\u5148\u7D1A","Clear all tags":"\u6E05\u9664\u6240\u6709\u6A19\u7C64","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u7D1A","\u23EB High priority":"\u23EB \u9AD8\u512A\u5148\u7D1A","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u512A\u5148\u7D1A","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u512A\u5148\u7D1A","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u512A\u5148\u7D1A","Fixed File":"\u56FA\u5B9A\u6A94\u6848","Save to Inbox.md":"\u5132\u5B58\u81F3 Inbox.md","Open Task Genius Setup":"\u958B\u555F Task Genius \u8A2D\u5B9A","MCP Integration":"MCP \u6574\u5408",Beginner:"\u521D\u5B78\u8005","Basic task management with essential features":"\u57FA\u790E\u4EFB\u52D9\u7BA1\u7406\u8207\u5FC5\u8981\u529F\u80FD","Basic progress bars":"\u57FA\u790E\u9032\u5EA6\u689D","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u8981\u8996\u5716\uFF08\u6536\u4EF6\u5323\u3001\u9810\u6E2C\u3001\u5C08\u6848\uFF09","Simple task status tracking":"\u7C21\u55AE\u4EFB\u52D9\u72C0\u614B\u8FFD\u8E64","Quick task capture":"\u5FEB\u901F\u4EFB\u52D9\u64F7\u53D6","Date picker functionality":"\u65E5\u671F\u9078\u64C7\u529F\u80FD","Project management with enhanced workflows":"\u5C08\u6848\u7BA1\u7406\u8207\u589E\u5F37\u5DE5\u4F5C\u6D41\u7A0B","Full progress bar customization":"\u5B8C\u6574\u9032\u5EA6\u689D\u81EA\u8A02","Extended views (Kanban, Calendar, Table)":"\u5EF6\u4F38\u8996\u5716\uFF08\u770B\u677F\u3001\u65E5\u66C6\u3001\u8868\u683C\uFF09","Project management features":"\u5C08\u6848\u7BA1\u7406\u529F\u80FD","Basic workflow automation":"\u57FA\u790E\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316","Advanced filtering and sorting":"\u9032\u968E\u7BE9\u9078\u8207\u6392\u5E8F","Power User":"\u9032\u968E\u4F7F\u7528\u8005","Full-featured experience with all capabilities":"\u5B8C\u6574\u529F\u80FD\u9AD4\u9A57\u8207\u6240\u6709\u80FD\u529B","All views and advanced configurations":"\u6240\u6709\u8996\u5716\u8207\u9032\u968E\u8A2D\u5B9A","Complex workflow definitions":"\u8907\u96DC\u5DE5\u4F5C\u6D41\u7A0B\u5B9A\u7FA9","Reward and habit tracking systems":"\u734E\u52F5\u8207\u7FD2\u6163\u8FFD\u8E64\u7CFB\u7D71","Performance optimizations":"\u6548\u80FD\u6700\u4F73\u5316","Advanced integrations":"\u9032\u968E\u6574\u5408","Experimental features":"\u5BE6\u9A57\u6027\u529F\u80FD","Timeline and calendar sync":"\u6642\u9593\u8EF8\u8207\u65E5\u66C6\u540C\u6B65","Not configured":"\u672A\u8A2D\u5B9A",Custom:"\u81EA\u8A02","Custom views created":"\u5DF2\u5EFA\u7ACB\u81EA\u8A02\u8996\u5716","Progress bar settings modified":"\u5DF2\u4FEE\u6539\u9032\u5EA6\u689D\u8A2D\u5B9A","Task status settings configured":"\u5DF2\u8A2D\u5B9A\u4EFB\u52D9\u72C0\u614B\u8A2D\u5B9A","Quick capture configured":"\u5DF2\u8A2D\u5B9A\u5FEB\u901F\u64F7\u53D6","Workflow settings enabled":"\u5DF2\u555F\u7528\u5DE5\u4F5C\u6D41\u7A0B\u8A2D\u5B9A","Advanced features enabled":"\u5DF2\u555F\u7528\u9032\u968E\u529F\u80FD","File parsing customized":"\u5DF2\u81EA\u8A02\u6A94\u6848\u89E3\u6790"},GO=$$});var QO,Uw,Yw,Sg,ct,qw=D(()=>{QO=require("obsidian");NO();jO();BO();WO();$O();UO();qO();KO();Uw={en:_w,"en-gb":LO,ja:HO,"pt-br":VO,ru:zO,uk:_O,"zh-cn":YO,"zh-tw":GO},Yw=class n{constructor(){this.currentLocale="en";this.translations=new Map;this.fallbackTranslation=_w;this.lowercaseKeyMap=new Map;try{this.currentLocale=QO.moment.locale()}catch(a){this.currentLocale="en"}Object.entries(Uw).forEach(([a,e])=>{this.translations.set(a,e);let t=new Map;Object.keys(e).forEach(r=>{t.set(r.toLowerCase(),r)}),this.lowercaseKeyMap.set(a,t)})}static getInstance(){return n.instance||(n.instance=new n),n.instance}setLocale(a){a in Uw?this.currentLocale=a:this.currentLocale="en"}getSupportedLocales(){return Object.keys(Uw)}t(a,e){let t=this.translations.get(this.currentLocale)||this.fallbackTranslation,r=this.getNestedValue(t,a);if(!r){let i=a.toLowerCase(),s=this.lowercaseKeyMap.get(this.currentLocale),o=s==null?void 0:s.get(i);o&&(r=this.getNestedValue(t,o))}if(!r&&(r=this.getNestedValue(this.fallbackTranslation,a),!r)){let i=a.toLowerCase(),s=this.lowercaseKeyMap.get("en"),o=s==null?void 0:s.get(i);o?r=this.getNestedValue(this.fallbackTranslation,o):r=a}return e!=null&&e.interpolation&&(r=this.interpolate(r,e.interpolation)),r=r.replace(/^["""']|["""']$/g,""),r}getNestedValue(a,e){return a[e]}interpolate(a,e){return a.replace(/\{\{(\w+)\}\}/g,(t,r)=>{var i;return((i=e[r])==null?void 0:i.toString())||`{{${r}}}`})}},Sg=Yw.getInstance(),ct=(n,a)=>Sg.t(n,a)});var _$,d,q=D(()=>{_$=require("obsidian");qw();d=Sg.t.bind(Sg)});function G$(n,a){let e=n.vault.getFileByPath(a);if(!e&&!a.endsWith(".md")){let t=`${a}.md`;e=n.vault.getFileByPath(t)}return e}function K$(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function ZO(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?K$(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}function Xw(n){let a=/\{\{DATE?:([^}]+)\}\}/gi,e=n.replace(a,(t,r)=>{try{return!r||r.trim()===""?t:(0,Qw.moment)().format(r)}catch(i){return console.warn(`Invalid date format in template: ${r}`,i),t}});return ZO(e)}async function mn(n,a,e){let{targetFile:t,appendToFile:r,targetType:i,targetHeading:s,dailyNoteSettings:o}=e,l;if(i==="daily-note"&&o){let u=(0,Qw.moment)().format(o.format),p=o.folder?`${o.folder}/${u}.md`:`${u}.md`;l=ZO(p)}else l=Xw(t||"Quick Capture.md");let c=n.vault.getFileByPath(l);if(c)if(c instanceof hd.TFile)await n.vault.process(c,u=>{if(s)return Q$(u,a,s,r||"append");switch(r){case"append":{let p=(0,hd.getFrontMatterInfo)(u),m=u.endsWith(` `)?"":` `;if(p.exists){let f=p.contentStart;if(f!==void 0){let h=u.slice(0,f),g=u.slice(f);return h+g+m+a}else return u+m+a}else return u+m+a}case"prepend":{let p=(0,hd.getFrontMatterInfo)(u),m=` `;return p.exists&&p.contentStart!==void 0?u.slice(0,p.contentStart)+a+m+u.slice(p.contentStart):a+m+u}case"replace":default:return a}});else throw new Error("Target is not a file");else{let u=l.split("/");if(u.length>1){let m=u.slice(0,-1).join("/");try{await n.vault.createFolder(m)}catch(f){}}let p="";if(i==="daily-note"&&(o!=null&&o.template)){let m=G$(n,o.template);if(m instanceof hd.TFile)try{p=await n.vault.read(m)}catch(f){console.warn("Failed to read template file:",f)}else console.warn(`Template file not found: ${o.template} (tried with and without .md extension)`)}if(s)if(p){let m=new RegExp(`^#{1,6}\\s+${s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"m");m.test(p)?p=p.replace(m,`$& ${a}`):p+=` ## ${s} ${a}`}else p=`## ${s} ${a}`;else r==="prepend"?p=p?`${a} ${p}`:a:p=p?`${p} ${a}`:a;c=await n.vault.create(l,p)}}function Q$(n,a,e,t){let r=n.split(` `),i=new RegExp(`^(#{1,6})\\s+${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),s=-1,o=0;for(let m=0;ms+1&&r[c-1].trim()==="";)c--;let u=a.split(` `);return[...r.slice(0,c),"",...u,"",...r.slice(c)].join(` `)}var hd,Qw,gd=D(()=>{hd=require("obsidian"),Qw=require("obsidian")});var aN=ve((eT,tT)=>{(function(n,a){typeof eT=="object"&&typeof tT!="undefined"?tT.exports=a():typeof define=="function"&&define.amd?define(a):(n=typeof globalThis!="undefined"?globalThis:n||self).dayjs_plugin_quarterOfYear=a()})(eT,(function(){"use strict";var n="month",a="quarter";return function(e,t){var r=t.prototype;r.quarter=function(o){return this.$utils().u(o)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(o-1))};var i=r.add;r.add=function(o,l){return o=Number(o),this.$utils().p(l)===a?this.add(3*o,n):i.bind(this)(o,l)};var s=r.startOf;r.startOf=function(o,l){var c=this.$utils(),u=!!c.u(l)||l;if(c.p(o)===a){var p=this.quarter()-1;return u?this.month(3*p).startOf(n).startOf("day"):this.month(3*p+2).endOf(n).endOf("day")}return s.bind(this)(o,l)}}}))});var Xe=ve((aT,rT)=>{(function(n,a){typeof aT=="object"&&typeof rT!="undefined"?rT.exports=a():typeof define=="function"&&define.amd?define(a):(n=typeof globalThis!="undefined"?globalThis:n||self).dayjs=a()})(aT,(function(){"use strict";var n=1e3,a=6e4,e=36e5,t="millisecond",r="second",i="minute",s="hour",o="day",l="week",c="month",u="quarter",p="year",m="date",f="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,k={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(I){var R=["th","st","nd","rd"],j=I%100;return"["+I+(R[(j-20)%10]||R[j]||R[0])+"]"}},y=function(I,R,j){var W=String(I);return!W||W.length>=R?I:""+Array(R+1-W.length).join(j)+I},b={s:y,z:function(I){var R=-I.utcOffset(),j=Math.abs(R),W=Math.floor(j/60),B=j%60;return(R<=0?"+":"-")+y(W,2,"0")+":"+y(B,2,"0")},m:function I(R,j){if(R.date()1)return I(V[0])}else{var G=R.name;w[G]=R,B=G}return!W&&B&&(v=B),B||!W&&v},S=function(I,R){if(T(I))return I.clone();var j=typeof R=="object"?R:{};return j.date=I,j.args=arguments,new A(j)},E=b;E.l=C,E.i=T,E.w=function(I,R){return S(I,{locale:R.$L,utc:R.$u,x:R.$x,$offset:R.$offset})};var A=(function(){function I(j){this.$L=C(j.locale,null,!0),this.parse(j),this.$x=this.$x||j.x||{},this[x]=!0}var R=I.prototype;return R.parse=function(j){this.$d=(function(W){var B=W.date,X=W.utc;if(B===null)return new Date(NaN);if(E.u(B))return new Date;if(B instanceof Date)return new Date(B);if(typeof B=="string"&&!/Z$/i.test(B)){var V=B.match(h);if(V){var G=V[2]-1||0,Y=(V[7]||"0").substring(0,3);return X?new Date(Date.UTC(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,Y)):new Date(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,Y)}}return new Date(B)})(j),this.init()},R.init=function(){var j=this.$d;this.$y=j.getFullYear(),this.$M=j.getMonth(),this.$D=j.getDate(),this.$W=j.getDay(),this.$H=j.getHours(),this.$m=j.getMinutes(),this.$s=j.getSeconds(),this.$ms=j.getMilliseconds()},R.$utils=function(){return E},R.isValid=function(){return this.$d.toString()!==f},R.isSame=function(j,W){var B=S(j);return this.startOf(W)<=B&&B<=this.endOf(W)},R.isAfter=function(j,W){return S(j){ns=require("obsidian"),vk=(n,a)=>{let e=null,t=n.buttonEl,r=a.containerEl.win,i=[];try{typeof ns.getIconIds=="function"?i=(0,ns.getIconIds)():console.warn("Task Genius: getIconIds() not available.")}catch(o){console.error("Task Genius: Error calling getIconIds():",o)}let s=()=>{if(i.length,!i.length){new ns.Notice("Icon list unavailable.");return}e=a.containerEl.createDiv("tg-icon-menu bm-menu");let o=t.closest(".vertical-tab-content")||a.containerEl,l={},c=e.createEl("input",{attr:{type:"text",placeholder:"Search icons..."},cls:"tg-menu-search"});r.setTimeout(()=>c.focus(),50);let u=()=>{setTimeout(()=>{c.focus()},400)},p=()=>{c.focus()},m=e.createDiv("tg-menu-icons"),f=100,h=0,g=!1,k=(C,S=!0)=>{if(S&&(m.empty(),l={},h=0),!C.length&&h===0){m.empty(),m.createEl("p",{text:"No matching icons found."});return}let E=g?0:h*f,A=g?C.length:Math.min((h+1)*f,C.length);if(E>=A&&!g)return;C.slice(E,A).forEach(I=>{let R=m.createDiv({cls:"clickable-icon",attr:{"data-icon":I,"aria-label":I}});l[I]=R,(0,ns.setIcon)(R,I),R.addEventListener("click",()=>{a.onIconSelected(I),b()})}),g||h++,r.setTimeout(x,0)},y=()=>{let{scrollTop:C,scrollHeight:S,clientHeight:E}=m;g||S-C-E<50&&h*f{e&&(e.remove(),e=null),r.removeEventListener("click",v),o==null||o.removeEventListener("scroll",T),m.removeEventListener("scroll",y),c.removeEventListener("click",u),c.removeEventListener("blur",p)},v=C=>{e&&!e.contains(C.target)&&b()},w=(0,ns.debounce)(()=>{let C=c.value.toLowerCase().trim();if(!C)g=!1,k(i);else{g=!0;let S=i.filter(E=>E.toLowerCase().includes(C));k(S)}},250,!0),x=()=>{if(!e)return;let C=t.getBoundingClientRect(),S=e.offsetHeight,E=e.offsetWidth,A=r.innerWidth,N=r.innerHeight,I=C.bottom+2,R=C.left;I+S>N-20&&(I=C.top-S-2),I<0&&(I=5),R+E>A-20&&(R=C.right-E,R<0&&(R=5)),R<0&&(R=5),e.style.position="fixed",e.style.top=`${I}px`,e.style.left=`${R}px`},T=()=>{b()};c.addEventListener("click",u),c.addEventListener("blur",p),m.addEventListener("scroll",y),k(i),c.addEventListener("input",w),document.body.appendChild(e),x(),r.setTimeout(()=>{r.addEventListener("click",v),o==null||o.addEventListener("scroll",T)},10)};n.onClick(()=>{e||s()})}});var $L=D(()=>{});var _L={};Et(_L,{HabitEditDialog:()=>Tm});var We,Tm,$x=D(()=>{We=require("obsidian");q();zx();$L();Tm=class extends We.Modal{constructor(e,t,r=null,i){super(e);this.habitData=null;this.habitType="daily";this.iconInput="circle-check";this.dailyInputs=null;this.countInputs=null;this.mappingPropertyInput=null;this.mappingInputs=[];this.eventInputs=[];this.plugin=t,this.habitData=r,this.onSubmit=i,this.isNew=!r,r&&(this.habitType=r.type,this.iconInput=r.icon)}onOpen(){this.titleEl.setText(this.isNew?d("Create new habit"):d("Edit habit")),this.modalEl.addClass("habit-edit-dialog"),this.buildForm()}buildForm(){var h;let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"habit-type-selector"});t.createDiv({cls:"habit-type-description"}).setText(d("Habit type"));let i=t.createDiv({cls:"habit-type-grid"});[{id:"daily",name:d("Daily habit"),icon:"calendar-check",description:d("Simple daily check-in habit")},{id:"count",name:d("Count habit"),icon:"bar-chart",description:d("Record numeric values, e.g., how many cups of water")},{id:"mapping",name:d("Mapping habit"),icon:"smile",description:d("Use different values to map, e.g., emotion tracking")},{id:"scheduled",name:d("Scheduled habit"),icon:"calendar",description:d("Habit with multiple events")}].forEach(g=>{let k=i.createDiv({cls:`habit-type-item ${g.id===this.habitType?"selected":""}`,attr:{"data-type":g.id}}),y=k.createDiv({cls:"habit-type-icon"},v=>{(0,We.setIcon)(v,g.icon)}),b=k.createDiv({cls:"habit-type-text"});b.createDiv({cls:"habit-type-name",text:g.name}),b.createDiv({cls:"habit-type-desc",text:g.description}),k.addEventListener("click",()=>{document.querySelectorAll(".habit-type-item").forEach(v=>{v.removeClass("selected")}),k.addClass("selected"),this.habitType=g.id,this.buildTypeSpecificForm()})});let o=e.createDiv({cls:"habit-common-form"}),l=((h=this.habitData)==null?void 0:h.id)||this.generateId(),c;new We.Setting(o).setName(d("Habit name")).setDesc(d("Display name of the habit")).addText(g=>{var k;c=g,g.setValue(((k=this.habitData)==null?void 0:k.name)||""),g.inputEl.addClass("habit-name-input")});let u;new We.Setting(o).setName(d("Description")).setDesc(d("Optional habit description")).addText(g=>{var k;u=g,g.setValue(((k=this.habitData)==null?void 0:k.description)||""),g.inputEl.addClass("habit-desc-input")});let p;new We.Setting(o).setName(d("Icon")).addButton(g=>{try{g.setIcon(this.iconInput||"circle-check")}catch(k){console.error("Error setting icon:",k);try{g.setIcon("circle-check")}catch(y){console.error("Failed to set default icon:",y)}}vk(g,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:k=>{this.iconInput=k;try{(0,We.setIcon)(g.buttonEl,k||"circle-check")}catch(y){console.error("Error setting icon:",y);try{(0,We.setIcon)(g.buttonEl,"circle-check")}catch(b){console.error("Failed to set default icon:",b)}}this.iconInput=k}})});let m=e.createDiv({cls:"habit-type-form"}),f=e.createDiv({cls:"habit-edit-buttons"},g=>{new We.ButtonComponent(g).setWarning().setButtonText(d("Cancel")).onClick(()=>{this.close()}),new We.ButtonComponent(g).setCta().setButtonText(d("Save")).onClick(()=>{let k=c.getValue().trim();if(!k){new We.Notice(d("Please enter a habit name"));return}let y={id:l,name:k,description:u.getValue()||void 0,icon:this.iconInput||"circle-check",type:this.habitType},b=this.getTypeSpecificData();b&&(y={...y,...b},this.onSubmit(y),this.close())})});this.buildTypeSpecificForm(m)}buildTypeSpecificForm(e){if(!(!e&&(e=this.contentEl.querySelector(".habit-type-form"),!e)))switch(e.empty(),this.habitType){case"daily":this.buildDailyHabitForm(e);break;case"count":this.buildCountHabitForm(e);break;case"mapping":this.buildMappingHabitForm(e);break;case"scheduled":this.buildScheduledHabitForm(e);break}}buildDailyHabitForm(e){let t=this.habitData,r,i;new We.Setting(e).setName(d("Property name")).setDesc(d("The property name of the daily note front matter")).addText(s=>{r=s,s.setValue((t==null?void 0:t.property)||""),s.inputEl.addClass("habit-property-input")}),new We.Setting(e).setName(d("Completion text")).setDesc(d("(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed")).addText(s=>{i=s,s.setValue((t==null?void 0:t.completionText)||""),s.inputEl.addClass("habit-completion-text-input")}),this.dailyInputs={property:r,completionText:i}}buildCountHabitForm(e){let t=this.habitData,r,i,s,o,l;new We.Setting(e).setName(d("Property name")).setDesc(d("The property name in daily note front matter to store count values")).addText(c=>{r=c,c.setValue((t==null?void 0:t.property)||""),c.inputEl.addClass("habit-property-input")}),new We.Setting(e).setName(d("Minimum value")).setDesc(d("(Optional) Minimum value for the count")).addText(c=>{var u;i=c,c.setValue(((u=t==null?void 0:t.min)==null?void 0:u.toString())||""),c.inputEl.type="number",c.inputEl.addClass("habit-min-input")}),new We.Setting(e).setName(d("Maximum value")).setDesc(d("(Optional) Maximum value for the count")).addText(c=>{var u;s=c,c.setValue(((u=t==null?void 0:t.max)==null?void 0:u.toString())||""),c.inputEl.type="number",c.inputEl.addClass("habit-max-input")}),new We.Setting(e).setName(d("Unit")).setDesc(d("(Optional) Unit for the count, such as 'cups', 'times', etc.")).addText(c=>{o=c,c.setValue((t==null?void 0:t.countUnit)||""),c.inputEl.addClass("habit-unit-input")}),new We.Setting(e).setName(d("Notice threshold")).setDesc(d("(Optional) Trigger a notification when this value is reached")).addText(c=>{l=c,c.setValue((t==null?void 0:t.notice)||""),c.inputEl.addClass("habit-notice-input")}),this.countInputs={property:r,min:i,max:s,countUnit:o,notice:l}}buildMappingHabitForm(e){let t=this.habitData,r;new We.Setting(e).setName(d("Property name")).setDesc(d("The property name in daily note front matter to store mapping values")).addText(c=>{r=c,c.setValue((t==null?void 0:t.property)||""),c.inputEl.addClass("habit-property-input")}),new We.Setting(e).setName(d("Value mapping")).setDesc(d("Define mappings from numeric values to display text"));let i=e.createDiv({cls:"habit-mapping-container"}),s=(t==null?void 0:t.mapping)||{1:"\u{1F60A}",2:"\u{1F610}",3:"\u{1F614}"};this.mappingInputs=[];let o=(c,u)=>{let p=i.createDiv({cls:"habit-mapping-row"}),m=p.createEl("input",{type:"number",value:c.toString(),cls:"habit-mapping-key"});p.createSpan({text:"\u2192",cls:"habit-mapping-arrow"});let f=p.createEl("input",{type:"text",value:u,cls:"habit-mapping-value"});new We.ExtraButtonComponent(p).setIcon("trash").setTooltip(d("Delete")).onClick(()=>{p.remove();let h=this.mappingInputs.findIndex(g=>g.keyInput===m&&g.valueInput===f);h>-1&&this.mappingInputs.splice(h,1)}),this.mappingInputs.push({keyInput:m,valueInput:f})};Object.entries(s).forEach(([c,u])=>{o(parseInt(c),u)}),e.createEl("button",{cls:"habit-add-mapping-button",text:d("Add new mapping")}).addEventListener("click",()=>{let c=0;this.mappingInputs.forEach(u=>{let p=parseInt(u.keyInput.value);!isNaN(p)&&p>c&&(c=p)}),o(c+1,"")}),this.mappingPropertyInput=r}buildScheduledHabitForm(e){let t=this.habitData;new We.Setting(e).setName(d("Scheduled events")).setDesc(d("Add multiple events that need to be completed"));let r=e.createDiv({cls:"habit-events-container"}),i=(t==null?void 0:t.events)||[],s=(t==null?void 0:t.propertiesMap)||{};this.eventInputs=[];let o=(c={name:"",details:""},u="")=>{let p=r.createDiv({cls:"habit-event-row"}),m=p.createEl("input",{type:"text",value:c.name,cls:"habit-event-name",placeholder:d("Event name")}),f=p.createEl("input",{type:"text",value:c.details,cls:"habit-event-details",placeholder:d("Event details")}),h=p.createEl("input",{type:"text",value:u,cls:"habit-event-property",placeholder:d("Property name")});new We.ExtraButtonComponent(p).setIcon("trash").setTooltip(d("Delete")).onClick(()=>{p.remove();let g=this.eventInputs.findIndex(k=>k.nameInput===m&&k.detailsInput===f&&k.propertyInput===h);g>-1&&this.eventInputs.splice(g,1)}),this.eventInputs.push({nameInput:m,detailsInput:f,propertyInput:h})};i.length>0?i.forEach(c=>{let u=s[c.name]||"";o(c,u)}):o(),e.createEl("button",{cls:"habit-add-event-button",text:d("Add new event")}).addEventListener("click",()=>{o()})}getTypeSpecificData(){switch(this.habitType){case"daily":return this.getDailyHabitData();case"count":return this.getCountHabitData();case"mapping":return this.getMappingHabitData();case"scheduled":return this.getScheduledHabitData()}return null}getDailyHabitData(){if(!this.dailyInputs)return null;let e=this.dailyInputs.property.getValue().trim();return e?{type:"daily",property:e,completionText:this.dailyInputs.completionText.getValue()||void 0}:(new We.Notice(d("Please enter a property name")),null)}getCountHabitData(){if(!this.countInputs)return null;let e=this.countInputs.property.getValue().trim();if(!e)return new We.Notice(d("Please enter a property name")),null;let t=this.countInputs.min.getValue(),r=this.countInputs.max.getValue(),i=this.countInputs.notice.getValue();return{type:"count",property:e,min:t?parseInt(t):void 0,max:r?parseInt(r):void 0,notice:i||void 0,countUnit:this.countInputs.countUnit.getValue()||void 0}}getMappingHabitData(){if(!this.mappingPropertyInput||!this.mappingInputs)return null;let e=this.mappingPropertyInput.getValue().trim();if(!e)return new We.Notice(d("Please enter a property name")),null;if(this.mappingInputs.length===0)return new We.Notice(d("Please add at least one mapping value")),null;let t={};for(let r of this.mappingInputs){let i=parseInt(r.keyInput.value),s=r.valueInput.value;if(isNaN(i))return new We.Notice(d("Mapping key must be a number")),null;if(!s)return new We.Notice(d("Please enter text for all mapping values")),null;t[i]=s}return{type:"mapping",property:e,mapping:t}}getScheduledHabitData(){if(!this.eventInputs)return null;if(this.eventInputs.length===0)return new We.Notice(d("Please add at least one event")),null;let e=[],t={};for(let r of this.eventInputs){let i=r.nameInput.value.trim(),s=r.detailsInput.value.trim(),o=r.propertyInput.value.trim();if(!i)return new We.Notice(d("Event name cannot be empty")),null;e.push({name:i,details:s}),o&&(t[i]=o)}return{type:"scheduled",events:e,propertiesMap:t}}generateId(){return Date.now().toString()+Math.random().toString(36).substring(2,9)}}});var gr,$k,yj=D(()=>{gr=require("obsidian");q();$k=class extends gr.Modal{constructor(a,e,t,r){super(a),this.stage=JSON.parse(JSON.stringify(e)),this.allStages=t,this.onSave=r,this.renderStageTypeSettings=()=>{}}onOpen(){let{contentEl:a,titleEl:e}=this;this.modalEl.toggleClass("modal-stage-definition",!0),e.setText(d("Edit Stage")),new gr.Setting(a).setName(d("Stage name")).setDesc(d("A descriptive name for this workflow stage")).addText(l=>{l.setValue(this.stage.name||"").setPlaceholder(d("Stage name")).onChange(c=>{this.stage.name=c})}),new gr.Setting(a).setName(d("Stage ID")).setDesc(d("A unique identifier for the stage (used in tags)")).addText(l=>{l.setValue(this.stage.id||"").setPlaceholder("stage_id").onChange(c=>{this.stage.id=c})}),new gr.Setting(a).setName(d("Stage type")).setDesc(d("The type of this workflow stage")).addDropdown(l=>{l.addOption("linear",d("Linear (sequential)")).addOption("cycle",d("Cycle (repeatable)")).addOption("terminal",d("Terminal (end stage)")).setValue(this.stage.type||"linear").onChange(c=>{this.stage.type=c,this.renderStageTypeSettings()})});let t=a.createDiv({cls:"stage-type-settings"}),r=()=>{if(t.empty(),this.stage.type==="linear"||this.stage.type==="cycle"){if(this.allStages.length>0&&new gr.Setting(t).setName(d("Next stage")).setDesc(d("The stage to proceed to after this one")).addDropdown(p=>{this.allStages.forEach(m=>{m.id!==this.stage.id&&p.addOption(m.id,m.name)}),typeof this.stage.next=="string"&&this.stage.next&&p.setValue(this.stage.next),p.onChange(m=>{this.stage.next=m})}),this.stage.type==="cycle"){let p=t.createDiv({cls:"substages-section"});new gr.Setting(p).setName(d("Sub-stages")).setDesc(d("Define cycle sub-stages (optional)"));let m=p.createDiv({cls:"substages-container"}),f=()=>{if(m.empty(),!this.stage.subStages||this.stage.subStages.length===0)m.createEl("p",{text:d("No sub-stages defined yet."),cls:"no-substages-message"});else{let g=m.createEl("ul",{cls:"substages-list"});this.stage.subStages.forEach((k,y)=>{let b=g.createEl("li",{cls:"substage-item"}),v=b.createDiv({cls:"substage-name-container"}),w=v.createEl("input",{type:"text",value:k.name||"",placeholder:d("Sub-stage name")});w.addEventListener("change",()=>{k.name=w.value});let x=v.createEl("input",{type:"text",value:k.id||"",placeholder:d("Sub-stage ID")});if(x.addEventListener("change",()=>{k.id=x.value}),this.stage.subStages.length>1){let T=v.createDiv({cls:"substage-next-container"});T.createEl("span",{text:d("Next: ")});let C=new gr.DropdownComponent(T);this.stage.subStages.forEach(S=>{S.id!==k.id&&C.addOption(S.id,S.name)}),k.next&&C.setValue(k.next),C.onChange(S=>{k.next=S})}b.createEl("div",{},T=>{new gr.ExtraButtonComponent(T).setIcon("trash").setTooltip(d("Remove")).onClick(()=>{this.stage.subStages.splice(y,1),f()}).extraSettingsEl.toggleClass("substage-remove-button",!0)})})}m.createEl("button",{cls:"add-substage-button",text:d("Add Sub-stage")}).addEventListener("click",()=>{this.stage.subStages||(this.stage.subStages=[]);let g={id:this.generateUniqueId(),name:d("New Sub-stage")};if(this.stage.subStages.length>0){let k=this.stage.subStages[this.stage.subStages.length-1];k&&("next"in k,k.next=g.id),this.stage.subStages[0]&&(g.next=this.stage.subStages[0].id)}this.stage.subStages.push(g),f()})};f()}let l=t.createDiv({cls:"can-proceed-to-section"});new gr.Setting(l).setName(d("Can proceed to")).setDesc(d("Additional stages that can follow this one (for right-click menu)"));let c=l.createDiv({cls:"can-proceed-to-container"}),u=()=>{if(c.empty(),!this.stage.canProceedTo||this.stage.canProceedTo.length===0)c.createEl("p",{text:d("No additional destination stages defined."),cls:"no-can-proceed-message"});else{let p=c.createEl("ul",{cls:"can-proceed-list"});this.stage.canProceedTo.forEach((m,f)=>{let h=this.allStages.find(g=>g.id===m);if(h){let g=p.createEl("li",{cls:"can-proceed-item"});new gr.Setting(g).setName(h.name).addExtraButton(y=>{y.setIcon("trash").setTooltip(d("Remove")).onClick(()=>{this.stage.canProceedTo.splice(f,1),u()})})}})}if(this.allStages.length>0){let p=c.createDiv({cls:"add-can-proceed-container"}),m;p.createEl("div",{cls:"add-can-proceed-select"},h=>{m=new gr.DropdownComponent(h),this.allStages.forEach(g=>{g.id!==this.stage.id&&(!this.stage.canProceedTo||!this.stage.canProceedTo.includes(g.id))&&m.addOption(g.id,g.name)})}),p.createEl("button",{cls:"add-can-proceed-button",text:d("Add")}).addEventListener("click",()=>{m.selectEl.value&&(this.stage.canProceedTo||(this.stage.canProceedTo=[]),this.stage.canProceedTo.push(m.selectEl.value),u())})}};u()}};this.renderStageTypeSettings=r,r();let i=a.createDiv({cls:"stage-buttons"});i.createEl("button",{text:d("Cancel"),cls:"stage-cancel-button"}).addEventListener("click",()=>{this.close()}),i.createEl("button",{text:d("Save"),cls:"stage-save-button mod-cta"}).addEventListener("click",()=>{if(!this.stage.name||!this.stage.id){let l=a.createDiv({cls:"stage-error-message",text:d("Name and ID are required.")});setTimeout(()=>{l.remove()},3e3);return}this.onSave(this.stage),this.close()})}onClose(){let{contentEl:a}=this;a.empty()}generateUniqueId(){return Date.now().toString(36)+Math.random().toString(36).substring(2,9)}}});var ro,io,TC=D(()=>{ro=require("obsidian");q();yj();io=class extends ro.Modal{constructor(a,e,t,r){super(a),this.plugin=e,this.workflow=JSON.parse(JSON.stringify(t)),this.onSave=r}onOpen(){let{contentEl:a,titleEl:e}=this;this.modalEl.toggleClass("modal-workflow-definition",!0),e.setText(this.workflow.id?d("Edit Workflow")+": "+this.workflow.name:d("Create New Workflow"));let t=a.createDiv({cls:"workflow-form"});new ro.Setting(t).setName(d("Workflow name")).setDesc(d("A descriptive name for the workflow")).addText(p=>{p.setValue(this.workflow.name||"").onChange(m=>{this.workflow.name=m})}),new ro.Setting(t).setName(d("Workflow ID")).setDesc(d("A unique identifier for the workflow (used in tags)")).addText(p=>{p.setValue(this.workflow.id||"").setPlaceholder("unique_id").onChange(m=>{this.workflow.id=m})}),new ro.Setting(t).setName(d("Description")).setDesc(d("Optional description for the workflow")).addTextArea(p=>{p.setValue(this.workflow.description||"").setPlaceholder(d("Describe the purpose and use of this workflow...")).onChange(m=>{this.workflow.description=m}),p.inputEl.rows=3,p.inputEl.cols=40});let r=a.createDiv({cls:"workflow-stages-section"}),i=r.createEl("h2",{text:d("Workflow Stages")}),s=r.createDiv({cls:"workflow-stages-container"}),o=()=>{if(s.empty(),!this.workflow.stages||this.workflow.stages.length===0)s.createEl("p",{text:d("No stages defined yet. Add a stage to get started."),cls:"no-stages-message"});else{let m=s.createEl("ul",{cls:"workflow-stages-list"});this.workflow.stages.forEach((f,h)=>{let g=m.createEl("li",{cls:"workflow-stage-item"}),k=new ro.Setting(g).setName(f.name).setDesc(f.type);if(k.settingEl.toggleClass(["workflow-stage-type-cycle","workflow-stage-type-linear","workflow-stage-type-parallel","workflow-stage-type-conditional","workflow-stage-type-custom"].includes(f.type)?f.type:"workflow-stage-type-unknown",!0),k.addExtraButton(y=>{y.setIcon("pencil").setTooltip(d("Edit")).onClick(()=>{new $k(this.app,f,this.workflow.stages,b=>{this.workflow.stages[h]=b,o()}).open()})}),h>0&&k.addExtraButton(y=>{y.setIcon("arrow-up").setTooltip(d("Move up")).onClick(()=>{[this.workflow.stages[h-1],this.workflow.stages[h]]=[this.workflow.stages[h],this.workflow.stages[h-1]],o()})}),h{y.setIcon("arrow-down").setTooltip(d("Move down")).onClick(()=>{[this.workflow.stages[h],this.workflow.stages[h+1]]=[this.workflow.stages[h+1],this.workflow.stages[h]],o()})}),k.addExtraButton(y=>{y.setIcon("trash").setTooltip(d("Delete")).onClick(()=>{this.workflow.stages.splice(h,1),o()})}),f.type==="cycle"&&f.subStages&&f.subStages.length>0){let y=g.createEl("div",{cls:"workflow-substages-list"});f.subStages.forEach((b,v)=>{let x=y.createEl("div",{cls:"substage-item"}).createDiv({cls:"substage-settings-container"}),T=new ro.Setting(x);T.setName(d("Sub-stage")+" "+(v+1)),T.addText(C=>{C.setValue(b.name||"").setPlaceholder(d("Sub-stage name")).onChange(S=>{b.name=S})}),T.addText(C=>{C.setValue(b.id||"").setPlaceholder(d("Sub-stage ID")).onChange(S=>{b.id=S})}),this.workflow.stages.length>1&&T.addDropdown(C=>{var E;C.selectEl.addClass("substage-next-select");let S=createSpan({text:d("Next: "),cls:"setting-dropdown-label"});(E=C.selectEl.parentElement)==null||E.insertBefore(S,C.selectEl),this.workflow.stages.forEach(A=>{A.id!==b.id&&C.addOption(A.id,A.name)}),b.next&&C.setValue(b.next),C.onChange(A=>{b.next=A})}),T.addExtraButton(C=>{C.setIcon("trash").onClick(()=>{this.workflow.stages.splice(v,1),o()})})})}})}s.createEl("button",{cls:"workflow-add-stage-button",text:d("Add Sub-stage")}).addEventListener("click",()=>{this.workflow.stages||(this.workflow.stages=[]);let m={id:this.generateUniqueId(),name:d("New Sub-stage")};if(this.workflow.stages.length>0){let f=this.workflow.stages[this.workflow.stages.length-1];f&&("next"in f,f.next=m.id),this.workflow.stages[0]&&(m.next=this.workflow.stages[0].id)}this.workflow.stages.push(m),o()})};o();let l=a.createDiv({cls:"workflow-buttons"});l.createEl("button",{text:d("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>{this.close()}),l.createEl("button",{text:d("Save"),cls:"workflow-save-button mod-cta"}).addEventListener("click",()=>{this.workflow.metadata||(this.workflow.metadata={}),this.workflow.metadata.lastModified=new Date().toISOString().split("T")[0],this.onSave(this.workflow),this.close()})}onClose(){let{contentEl:a}=this;a.empty()}generateUniqueId(){return Date.now().toString(36)+Math.random().toString(36).substring(2,9)}}});var Kr,Xk,Pj=D(()=>{Kr=require("obsidian");q();Xk=class extends Kr.Modal{constructor(e,t,r){super(e);this.templateType="custom";this.templates={simple:{name:d("Simple Linear Workflow"),description:d("A basic linear workflow with sequential stages"),stages:[{id:"todo",name:d("To Do"),type:"linear"},{id:"in_progress",name:d("In Progress"),type:"linear"},{id:"done",name:d("Done"),type:"terminal"}]},project:{name:d("Project Management"),description:d("Standard project management workflow"),stages:[{id:"planning",name:d("Planning"),type:"linear"},{id:"development",name:d("Development"),type:"cycle",subStages:[{id:"coding",name:d("Coding")},{id:"testing",name:d("Testing")}]},{id:"review",name:d("Review"),type:"linear"},{id:"completed",name:d("Completed"),type:"terminal"}]},research:{name:d("Research Process"),description:d("Academic or professional research workflow"),stages:[{id:"literature_review",name:d("Literature Review"),type:"linear"},{id:"data_collection",name:d("Data Collection"),type:"cycle"},{id:"analysis",name:d("Analysis"),type:"cycle"},{id:"writing",name:d("Writing"),type:"linear"},{id:"published",name:d("Published"),type:"terminal"}]},custom:{name:d("Custom Workflow"),description:d("Create a custom workflow from scratch"),stages:[]}};this.plugin=t,this.onSave=r,this.workflow={id:"",name:"",description:"",stages:[],metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}}onOpen(){let{contentEl:e,titleEl:t}=this;this.modalEl.toggleClass("quick-workflow-modal",!0),t.setText(d("Quick Workflow Creation")),this.createTemplateSelection(e),this.createWorkflowForm(e),this.createButtons(e)}createTemplateSelection(e){let t=e.createDiv({cls:"workflow-template-section"});new Kr.Setting(t).setName(d("Workflow Template")).setDesc(d("Choose a template to start with or create a custom workflow")).addDropdown(i=>{Object.entries(this.templates).forEach(([s,o])=>{i.addOption(s,o.name)}),i.setValue(this.templateType).onChange(s=>{this.templateType=s,this.applyTemplate(),this.refreshForm()})});let r=t.createDiv({cls:"template-description"});this.updateTemplateDescription(r)}createWorkflowForm(e){let t=e.createDiv({cls:"workflow-form-section"});new Kr.Setting(t).setName(d("Workflow Name")).setDesc(d("A descriptive name for your workflow")).addText(r=>{r.setValue(this.workflow.name||"").setPlaceholder(d("Enter workflow name")).onChange(i=>{this.workflow.name=i,(!this.workflow.id||this.workflow.id===this.generateIdFromName(this.workflow.name||""))&&(this.workflow.id=this.generateIdFromName(i))})}),new Kr.Setting(t).setName(d("Workflow ID")).setDesc(d("Unique identifier (auto-generated from name)")).addText(r=>{r.setValue(this.workflow.id||"").setPlaceholder("workflow_id").onChange(i=>{this.workflow.id=i})}),new Kr.Setting(t).setName(d("Description")).setDesc(d("Optional description of the workflow purpose")).addTextArea(r=>{r.setValue(this.workflow.description||"").setPlaceholder(d("Describe your workflow...")).onChange(i=>{this.workflow.description=i}),r.inputEl.rows=2}),this.createStagesPreview(t)}createStagesPreview(e){let t=e.createDiv({cls:"workflow-stages-preview"});new Kr.Setting(t).setName(d("Workflow Stages")).setDesc(d("Preview of workflow stages (edit after creation for advanced options)")).addButton(i=>{i.setButtonText(d("Add Stage")).setIcon("plus").onClick(()=>{this.addQuickStage()})}),this.renderStagesPreview(t)}renderStagesPreview(e){let t=e.querySelector(".stages-preview-list");if(t&&t.remove(),!this.workflow.stages||this.workflow.stages.length===0){e.createDiv({cls:"no-stages-message",text:d("No stages defined. Choose a template or add stages manually.")});return}let r=e.createDiv({cls:"stages-preview-list"});this.workflow.stages.forEach((i,s)=>{let o=r.createDiv({cls:"stage-preview-item"}),l=o.createDiv({cls:"stage-info"});l.createSpan({cls:"stage-name",text:i.name}),l.createSpan({cls:"stage-type",text:`(${i.type})`});let c=o.createDiv({cls:"stage-actions"});new Kr.ButtonComponent(c).setIcon("trash").setTooltip(d("Remove stage")).onClick(()=>{var p;(p=this.workflow.stages)==null||p.splice(s,1),this.renderStagesPreview(e)})})}createButtons(e){let t=e.createDiv({cls:"workflow-modal-buttons"});t.createEl("button",{text:d("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>this.close()),t.createEl("button",{text:d("Create Workflow"),cls:"workflow-save-button mod-cta"}).addEventListener("click",()=>this.handleSave())}applyTemplate(){let e=this.templates[this.templateType];e&&(this.workflow.name=e.name,this.workflow.id=this.generateIdFromName(e.name),this.workflow.description=e.description,this.workflow.stages=JSON.parse(JSON.stringify(e.stages)))}updateTemplateDescription(e){e.empty();let t=this.templates[this.templateType];t&&e.createEl("p",{cls:"template-desc-text",text:t.description})}refreshForm(){this.contentEl.empty(),this.createTemplateSelection(this.contentEl),this.createWorkflowForm(this.contentEl),this.createButtons(this.contentEl)}addQuickStage(){this.workflow.stages||(this.workflow.stages=[]);let e=`Stage ${this.workflow.stages.length+1}`,t={id:this.generateIdFromName(e),name:e,type:"linear"};this.workflow.stages.push(t),this.renderStagesPreview(this.contentEl.querySelector(".workflow-stages-preview"))}generateIdFromName(e){return e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30)}handleSave(){if(!this.workflow.name||!this.workflow.id){new Kr.Notice(d("Please provide a workflow name and ID"));return}if(!this.workflow.stages||this.workflow.stages.length===0){new Kr.Notice(d("Please add at least one stage to the workflow"));return}let e={id:this.workflow.id,name:this.workflow.name,description:this.workflow.description||"",stages:this.workflow.stages,metadata:this.workflow.metadata||{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};this.onSave(e),this.close()}onClose(){this.contentEl.empty()}}});function Mj(n,a){let e=n.getValue().split(` `),t=a.line,r=y8(e,t);return r===-1?null:Ij(e,r)}function y8(n,a){for(let e=a;e>=0;e--){let r=n[e].match(/^(\s*)[-*+] \[(.)\]/);if(r){let i=r[1].length;if(i===0)return e;let s=!1;for(let o=e-1;o>=0;o--){let l=n[o],c=l.match(/^(\s*)[-*+] \[(.)\]/);if(c&&c[1].lengthr){let f=Ij(n,l);o.children.push(f),l=v8(n,l,m)||n.length}else break}else{if((((c=u.match(/^(\s*)/))==null?void 0:c[1].length)||0)<=r)break;l++}}return o}function v8(n,a,e){for(let t=a+1;t0?"linear":"terminal"}),n.children.forEach((r,i)=>{let s=b8(r,i===n.children.length-1);t.push(s)});for(let r=0;r0&&(e.type="cycle",e.subStages=n.children.map((t,r)=>({id:Xd(t.content),name:t.content,next:rMath.abs(r.stages.length-e)<=1);return t?{...t,id:Xd(n.content+"_workflow"),name:`${n.content} Workflow`,description:d("Workflow based on existing pattern"),metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}:null}var Rj=D(()=>{q()});var ry={};Et(ry,{convertTaskToWorkflowCommand:()=>Zk,convertToWorkflowRootCommand:()=>ty,createQuickWorkflowCommand:()=>Jk,duplicateWorkflowCommand:()=>ay,showWorkflowQuickActionsCommand:()=>RC,startWorkflowHereCommand:()=>ey});function Jk(n,a,e,t){return n?t.settings.workflow.enableWorkflow:(new Xk(t.app,t,r=>{t.settings.workflow.definitions.push(r),t.saveSettings(),new pa.Notice(d("Workflow created successfully"))}).open(),!0)}function Zk(n,a,e,t){if(n){if(!t.settings.workflow.enableWorkflow)return!1;let o=a.getCursor();return a.getLine(o.line).match(/^\s*[-*+] \[(.)\]/)!==null}let r=a.getCursor(),i=Mj(a,r);if(!i||!i.isTask)return new pa.Notice(d("No task structure found at cursor position")),!1;let s=Fj(i,t.settings.workflow.definitions);if(s){let o=new pa.Menu;o.addItem(l=>{l.setTitle(d("Use similar existing workflow")).setIcon("copy").onClick(()=>{Nj(i,s.name,s.id,t)})}),o.addItem(l=>{l.setTitle(d("Create new workflow")).setIcon("plus").onClick(()=>{Oj(i,t)})}),o.showAtMouseEvent(window.event)}else Oj(i,t);return!0}function ey(n,a,e,t){if(n)return t.settings.workflow.enableWorkflow&&t.settings.workflow.definitions.length>0;let r=t.settings.workflow.definitions;if(r.length===0)return new pa.Notice(d("No workflows defined. Create a workflow first.")),!1;if(r.length===1){let i=a.getCursor();AC(a,i,r[0],t),new pa.Notice(d("Workflow task created"))}else{let i=new pa.Menu;r.forEach(s=>{i.addItem(o=>{o.setTitle(s.name).setIcon("workflow").onClick(()=>{let l=a.getCursor();AC(a,l,s,t),new pa.Notice(d("Workflow task created"))})})}),i.showAtMouseEvent(window.event)}return!0}function ty(n,a,e,t){if(n){if(!t.settings.workflow.enableWorkflow)return!1;let s=a.getCursor(),o=a.getLine(s.line);return o.match(/^\s*[-*+] \[(.)\]/)!==null&&!o.includes("#workflow/")}let r=t.settings.workflow.definitions;if(r.length===0)return new pa.Notice(d("No workflows defined. Create a workflow first.")),!1;let i=a.getCursor();if(r.length===1)FC(a,i,r[0].id)?new pa.Notice(d("Task converted to workflow root")):new pa.Notice(d("Failed to convert task"));else{let s=new pa.Menu;r.forEach(o=>{s.addItem(l=>{l.setTitle(o.name).setIcon("workflow").onClick(()=>{FC(a,i,o.id)?new pa.Notice(d("Task converted to workflow root")):new pa.Notice(d("Failed to convert task"))})})}),s.showAtMouseEvent(window.event)}return!0}function ay(n,a,e,t){if(n)return t.settings.workflow.enableWorkflow&&t.settings.workflow.definitions.length>0;let r=t.settings.workflow.definitions;if(r.length===0)return new pa.Notice(d("No workflows to duplicate")),!1;let i=new pa.Menu;return r.forEach(s=>{i.addItem(o=>{o.setTitle(d("Duplicate")+": "+s.name).setIcon("copy").onClick(()=>{let l={...s,id:s.id+"_copy",name:s.name+" (Copy)",metadata:{...s.metadata,created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};new io(t.app,t,l,c=>{t.settings.workflow.definitions.push(c),t.saveSettings(),new pa.Notice(d("Workflow duplicated and saved"))}).open()})})}),i.showAtMouseEvent(window.event),!0}function Oj(n,a){let e=n.content+" Workflow",t=e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30);Nj(n,e,t,a)}function Nj(n,a,e,t){let r=Aj(n,a,e);new io(t.app,t,r,i=>{t.settings.workflow.definitions.push(i),t.saveSettings(),new pa.Notice(d("Workflow created from task structure"))}).open()}function RC(n,a,e,t){if(n)return t.settings.workflow.enableWorkflow;let r=new pa.Menu;r.addItem(o=>{o.setTitle(d("Create Quick Workflow")).setIcon("plus-circle").onClick(()=>{Jk(!1,a,e,t)})});let i=a.getCursor(),s=a.getLine(i.line);return s.match(/^\s*[-*+] \[(.)\]/)&&(r.addItem(o=>{o.setTitle(d("Convert Task to Workflow")).setIcon("convert").onClick(()=>{Zk(!1,a,e,t)})}),s.includes("#workflow/")||r.addItem(o=>{o.setTitle(d("Convert to Workflow Root")).setIcon("workflow").onClick(()=>{ty(!1,a,e,t)})})),r.addItem(o=>{o.setTitle(d("Start Workflow Here")).setIcon("play").onClick(()=>{ey(!1,a,e,t)})}),t.settings.workflow.definitions.length>0&&r.addItem(o=>{o.setTitle(d("Duplicate Workflow")).setIcon("copy").onClick(()=>{ay(!1,a,e,t)})}),r.showAtMouseEvent(window.event),!0}var pa,Vm=D(()=>{pa=require("obsidian");Pj();TC();Rj();q()});function LC(n){return o3(n.extension)}function ly(n,a,e="both"){return o3(n.extension)?a?a.shouldIncludeFile(n,e):!0:!1}function o3(n){return Object.values(s3).includes(n)}var s3,jC=D(()=>{s3=(e=>(e.MARKDOWN="md",e.CANVAS="canvas",e))(s3||{})});var I3=D(()=>{});var An,nc,t0=D(()=>{An=require("obsidian");q();I3();nc=class extends An.Component{constructor(a,e,t,r,i="\u{1F4C5}"){super(),this.hostEl=a,this.app=e,this.plugin=t,this.state={selectedDate:r||null,dateMark:i},this.currentViewDate=r?(0,An.moment)(r):(0,An.moment)()}onload(){this.render()}onunload(){this.hostEl.empty()}setOnDateChange(a){this.onDateChange=a}getSelectedDate(){return this.state.selectedDate}setSelectedDate(a){this.state.selectedDate=a,this.updateSelectedDateDisplay(),this.onDateChange&&a&&this.onDateChange(a)}render(){this.hostEl.empty(),this.hostEl.addClass("date-picker-root-container");let a=this.hostEl.createDiv({cls:"date-picker-main-panel"}),e=a.createDiv({cls:"date-picker-left-panel"}),t=a.createDiv({cls:"date-picker-right-panel"});this.renderQuickOptions(e),this.renderCalendar(t)}renderQuickOptions(a){let e=a.createDiv({cls:"quick-options-container"});[{amount:0,unit:"days",label:d("Today")},{amount:1,unit:"days",label:d("Tomorrow")},{amount:2,unit:"days",label:d("In 2 days")},{amount:3,unit:"days",label:d("In 3 days")},{amount:5,unit:"days",label:d("In 5 days")},{amount:1,unit:"weeks",label:d("In 1 week")},{amount:10,unit:"days",label:d("In 10 days")},{amount:2,unit:"weeks",label:d("In 2 weeks")},{amount:1,unit:"months",label:d("In 1 month")},{amount:2,unit:"months",label:d("In 2 months")},{amount:3,unit:"months",label:d("In 3 months")},{amount:6,unit:"months",label:d("In 6 months")},{amount:1,unit:"years",label:d("In 1 year")}].forEach(i=>{let s=e.createDiv({cls:"quick-option-item"});s.createSpan({text:i.label,cls:"quick-option-label"});let l=(0,An.moment)().add(i.amount,i.unit).format("YYYY-MM-DD");s.createSpan({text:l,cls:"quick-option-date"}),this.registerDomEvent(s,"click",c=>{c.preventDefault(),c.stopPropagation(),this.setSelectedDate(l)}),this.state.selectedDate===l&&s.addClass("selected")});let r=a.createDiv({cls:"quick-option-item clear-option"});r.createSpan({text:d("Clear Date"),cls:"quick-option-label"}),this.registerDomEvent(r,"click",i=>{i.preventDefault(),i.stopPropagation(),this.setSelectedDate(null)})}renderCalendar(a){let e=a.createDiv({cls:"calendar-container"});this.renderCalendarHeader(e,this.currentViewDate),this.renderCalendarGrid(e,this.currentViewDate)}renderCalendarHeader(a,e){let t=a.createDiv({cls:"calendar-header"}),r=t.createDiv({cls:"calendar-nav-btn"});(0,An.setIcon)(r,"chevron-left"),this.registerDomEvent(r,"click",o=>{o.preventDefault(),o.stopPropagation(),this.navigateMonth(-1)});let i=t.createDiv({cls:"calendar-month-year",text:e.format("MMMM YYYY")}),s=t.createDiv({cls:"calendar-nav-btn"});(0,An.setIcon)(s,"chevron-right"),this.registerDomEvent(s,"click",o=>{o.preventDefault(),o.stopPropagation(),this.navigateMonth(1)})}renderCalendarGrid(a,e){let t=a.createDiv({cls:"calendar-grid"});["Su","Mo","Tu","We","Th","Fr","Sa"].forEach(u=>{t.createDiv({cls:"calendar-day-header",text:u})});let i=e.clone().startOf("month"),s=e.clone().endOf("month"),o=i.clone().startOf("week"),l=s.clone().endOf("week"),c=o.clone();for(;c.isSameOrBefore(l);){let u=t.createDiv({cls:"calendar-day",text:c.format("D")}),p=c.format("YYYY-MM-DD");u.setAttribute("data-date",p),c.isSame(i,"month")||u.addClass("other-month"),c.isSame((0,An.moment)(),"day")&&u.addClass("today"),this.state.selectedDate===p&&u.addClass("selected"),this.registerDomEvent(u,"click",m=>{m.preventDefault(),m.stopPropagation(),this.setSelectedDate(p)}),c.add(1,"day")}}navigateMonth(a){`${a}`,this.currentViewDate.add(a,"month"),this.render()}updateSelectedDateDisplay(){this.hostEl.querySelectorAll(".selected").forEach(a=>{a.removeClass("selected")}),this.state.selectedDate&&(this.hostEl.querySelectorAll(".quick-option-item").forEach(a=>{let e=a.querySelector(".quick-option-date");e&&e.textContent===this.state.selectedDate&&a.addClass("selected")}),this.hostEl.querySelectorAll(".calendar-day").forEach(a=>{let e=a.getAttribute("data-date");e&&this.state.selectedDate===e&&a.addClass("selected")}))}}});var R3={};Et(R3,{DatePickerModal:()=>Gm});var F3,Gm,a0=D(()=>{F3=require("obsidian");t0();Gm=class extends F3.Modal{constructor(e,t,r,i="\u{1F4C5}"){super(e);this.onDateSelected=null;this.plugin=t,this.initialDate=r,this.dateMark=i}onOpen(){let{contentEl:e}=this;e.empty(),this.datePickerComponent=new nc(this.contentEl,this.app,this.plugin,this.initialDate,this.dateMark),this.datePickerComponent.onload(),this.datePickerComponent.setOnDateChange(t=>{this.onDateSelected&&this.onDateSelected(t),this.close()})}onClose(){let{contentEl:e}=this;this.datePickerComponent&&this.datePickerComponent.onunload(),e.empty()}}});function wo(n){let a=new Date(n);return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}var mc,ev,xH=D(()=>{mc=require("obsidian");jC();ev=class extends mc.Component{constructor(e,t,r){super();this.app=e;this.vault=t;this.metadataCache=r;this.lastIndexTime=new Map;this.indexQueue=[];this.isProcessingQueue=!1;this.taskCache=this.initEmptyCache(),this.setupEventListeners()}setParseFileCallback(e){this.parseFileCallback=e}setFileFilterManager(e){this.fileFilterManager=e}initEmptyCache(){return{tasks:new Map,files:new Map,tags:new Map,projects:new Map,contexts:new Map,dueDate:new Map,startDate:new Map,scheduledDate:new Map,completed:new Map,priority:new Map,cancelledDate:new Map,onCompletion:new Map,dependsOn:new Map,taskId:new Map,fileMtimes:new Map,fileProcessedTimes:new Map}}setupEventListeners(){this.registerEvent(this.vault.on("modify",e=>{if(e instanceof mc.TFile){let t=ly(e,this.fileFilterManager,"inline");(t||Math.random()<.1)&&e.path,t&&this.queueFileForIndexing(e)}})),this.registerEvent(this.vault.on("delete",e=>{if(e instanceof mc.TFile){let t=ly(e,this.fileFilterManager,"inline");e.path,t&&this.removeFileFromIndex(e)}})),this.app.workspace.onLayoutReady(()=>{this.registerEvent(this.vault.on("create",e=>{if(e instanceof mc.TFile){let t=ly(e,this.fileFilterManager,"inline");e.path,t&&this.queueFileForIndexing(e)}}))})}queueFileForIndexing(e){this.indexQueue.some(t=>t.path===e.path)||this.indexQueue.push(e),this.isProcessingQueue||this.processIndexQueue()}async processIndexQueue(){if(this.indexQueue.length===0){this.isProcessingQueue=!1;return}this.isProcessingQueue=!0;let e=this.indexQueue.shift();if(e&&this.parseFileCallback)try{let t=await this.parseFileCallback(e);this.updateIndexWithTasks(e.path,t)}catch(t){console.error(`Error processing file ${e.path} in queue:`,t)}setTimeout(()=>this.processIndexQueue(),50)}async initialize(){this.taskCache=this.initEmptyCache()}getCache(){return this.ensureCacheStructure(this.taskCache),this.taskCache}async indexAllFiles(){console.warn("TaskIndexer.indexAllFiles is deprecated. Use external parsing components instead."),await this.initialize()}async restoreFromSnapshot(e){this.setCache(e)}async getTotalTaskCount(){return this.taskCache.tasks.size}async getAllTasks(){return Array.from(this.taskCache.tasks.values())}async getTaskIdsByProject(e){return this.taskCache.projects.get(e)||new Set}async getTaskIdsByTag(e){return this.taskCache.tags.get(e)||new Set}async getTaskIdsByCompletionStatus(e){return this.taskCache.completed.get(e)||new Set}async getIndexSnapshot(){return this.getCache()}async clearIndex(){this.resetCache()}async removeTasksFromFile(e){this.removeFileFromIndex(e)}async indexFile(e){if(this.parseFileCallback)try{let t=await this.parseFileCallback(e);this.updateIndexWithTasks(e.path,t)}catch(t){console.error(`Error indexing file ${e.path}:`,t)}else console.warn("No parse callback set for indexFile. Use setParseFileCallback() or updateIndexWithTasks() instead.")}updateIndexWithTasks(e,t,r){this.removeFileFromIndex(e);let i=new Set;for(let s of t)this.taskCache.tasks.set(s.id,s),i.add(s.id),this.updateIndexMaps(s);this.taskCache.files.set(e,i),this.lastIndexTime.set(e,Date.now()),r!==void 0&&this.updateFileMtime(e,r)}async updateIndex(e){await this.indexFile(e)}removeFileFromIndex(e){let t=typeof e=="string"?e:e.path,r=this.taskCache.files.get(t);if(r){for(let i of r){let s=this.taskCache.tasks.get(i);s&&this.removeTaskFromIndexes(s),this.taskCache.tasks.delete(i)}this.taskCache.files.delete(t),this.lastIndexTime.delete(t)}}updateIndexMaps(e){let t=this.taskCache.completed.get(e.completed)||new Set;t.add(e.id),this.taskCache.completed.set(e.completed,t);for(let r of e.metadata.tags){let i=this.taskCache.tags.get(r)||new Set;i.add(e.id),this.taskCache.tags.set(r,i)}if(e.metadata.project){let r=this.taskCache.projects.get(e.metadata.project)||new Set;r.add(e.id),this.taskCache.projects.set(e.metadata.project,r)}if(e.metadata.context){let r=this.taskCache.contexts.get(e.metadata.context)||new Set;r.add(e.id),this.taskCache.contexts.set(e.metadata.context,r)}if(e.metadata.dueDate){let r=wo(e.metadata.dueDate),i=this.taskCache.dueDate.get(r)||new Set;i.add(e.id),this.taskCache.dueDate.set(r,i)}if(e.metadata.startDate){let r=wo(e.metadata.startDate),i=this.taskCache.startDate.get(r)||new Set;i.add(e.id),this.taskCache.startDate.set(r,i)}if(e.metadata.scheduledDate){let r=wo(e.metadata.scheduledDate),i=this.taskCache.scheduledDate.get(r)||new Set;i.add(e.id),this.taskCache.scheduledDate.set(r,i)}if(e.metadata.priority!==void 0){let r=this.taskCache.priority.get(e.metadata.priority)||new Set;r.add(e.id),this.taskCache.priority.set(e.metadata.priority,r)}if(e.metadata.cancelledDate){let r=wo(e.metadata.cancelledDate),i=this.taskCache.cancelledDate.get(r)||new Set;i.add(e.id),this.taskCache.cancelledDate.set(r,i)}if(e.metadata.onCompletion){let r=this.taskCache.onCompletion.get(e.metadata.onCompletion)||new Set;r.add(e.id),this.taskCache.onCompletion.set(e.metadata.onCompletion,r)}if(e.metadata.dependsOn&&e.metadata.dependsOn.length>0)for(let r of e.metadata.dependsOn){let i=this.taskCache.dependsOn.get(r)||new Set;i.add(e.id),this.taskCache.dependsOn.set(r,i)}if(e.metadata.id){let r=this.taskCache.taskId.get(e.metadata.id)||new Set;r.add(e.id),this.taskCache.taskId.set(e.metadata.id,r)}}removeTaskFromIndexes(e){let t=this.taskCache.completed.get(e.completed);t&&(t.delete(e.id),t.size===0&&this.taskCache.completed.delete(e.completed));for(let r of e.metadata.tags){let i=this.taskCache.tags.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.tags.delete(r))}if(e.metadata.project){let r=this.taskCache.projects.get(e.metadata.project);r&&(r.delete(e.id),r.size===0&&this.taskCache.projects.delete(e.metadata.project))}if(e.metadata.context){let r=this.taskCache.contexts.get(e.metadata.context);r&&(r.delete(e.id),r.size===0&&this.taskCache.contexts.delete(e.metadata.context))}if(e.metadata.dueDate){let r=wo(e.metadata.dueDate),i=this.taskCache.dueDate.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.dueDate.delete(r))}if(e.metadata.startDate){let r=wo(e.metadata.startDate),i=this.taskCache.startDate.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.startDate.delete(r))}if(e.metadata.scheduledDate){let r=wo(e.metadata.scheduledDate),i=this.taskCache.scheduledDate.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.scheduledDate.delete(r))}if(e.metadata.priority!==void 0){let r=this.taskCache.priority.get(e.metadata.priority);r&&(r.delete(e.id),r.size===0&&this.taskCache.priority.delete(e.metadata.priority))}if(e.metadata.cancelledDate){let r=wo(e.metadata.cancelledDate),i=this.taskCache.cancelledDate.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.cancelledDate.delete(r))}if(e.metadata.onCompletion){let r=this.taskCache.onCompletion.get(e.metadata.onCompletion);r&&(r.delete(e.id),r.size===0&&this.taskCache.onCompletion.delete(e.metadata.onCompletion))}if(e.metadata.dependsOn&&e.metadata.dependsOn.length>0)for(let r of e.metadata.dependsOn){let i=this.taskCache.dependsOn.get(r);i&&(i.delete(e.id),i.size===0&&this.taskCache.dependsOn.delete(r))}if(e.metadata.id){let r=this.taskCache.taskId.get(e.metadata.id);r&&(r.delete(e.id),r.size===0&&this.taskCache.taskId.delete(e.metadata.id))}}queryTasks(e,t=[]){if(e.length===0&&this.taskCache.tasks.size<1e3){let s=Array.from(this.taskCache.tasks.values());return this.applySorting(s,t)}let r=null;for(let s of e){let o=this.applyFilter(s);r===null?r=o:s.conjunction==="OR"?o.forEach(l=>r.add(l)):r=new Set([...r].filter(l=>o.has(l)))}r===null&&(r=new Set(this.taskCache.tasks.keys()));let i=Array.from(r).map(s=>this.taskCache.tasks.get(s)).filter(s=>s!==void 0);return this.applySorting(i,t)}applyFilter(e){switch(e.type){case"tag":return this.filterByTag(e);case"project":return this.filterByProject(e);case"context":return this.filterByContext(e);case"status":return this.filterByStatus(e);case"priority":return this.filterByPriority(e);case"dueDate":return this.filterByDueDate(e);case"startDate":return this.filterByStartDate(e);case"scheduledDate":return this.filterByScheduledDate(e);default:return console.warn(`Unsupported filter type: ${e.type}`),new Set}}filterByTag(e){if(e.operator==="contains")return this.taskCache.tags.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),r=this.taskCache.tags.get(e.value)||new Set;return new Set([...t].filter(i=>!r.has(i)))}return new Set}filterByProject(e){if(e.operator==="=")return this.taskCache.projects.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),r=this.taskCache.projects.get(e.value)||new Set;return new Set([...t].filter(i=>!r.has(i)))}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),r=new Set;for(let i of this.taskCache.projects.values())for(let s of i)r.add(s);return new Set([...t].filter(i=>!r.has(i)))}return new Set}filterByContext(e){if(e.operator==="=")return this.taskCache.contexts.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),r=this.taskCache.contexts.get(e.value)||new Set;return new Set([...t].filter(i=>!r.has(i)))}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),r=new Set;for(let i of this.taskCache.contexts.values())for(let s of i)r.add(s);return new Set([...t].filter(i=>!r.has(i)))}return new Set}filterByStatus(e){return e.operator==="="?this.taskCache.completed.get(e.value)||new Set:new Set}filterByPriority(e){if(e.operator==="=")return this.taskCache.priority.get(e.value)||new Set;if(e.operator===">"){let t=new Set;for(let[r,i]of this.taskCache.priority.entries())if(r>e.value)for(let s of i)t.add(s);return t}else if(e.operator==="<"){let t=new Set;for(let[r,i]of this.taskCache.priority.entries())if(rt)for(let l of s)r.add(l)}return r}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),r=new Set;for(let i of this.taskCache.dueDate.values())for(let s of i)r.add(s);return new Set([...t].filter(i=>!r.has(i)))}return new Set}filterByStartDate(e){if(e.operator==="=")return this.taskCache.startDate.get(e.value)||new Set;if(e.operator==="before"||e.operator==="after"){let t;typeof e.value=="string"?t=new Date(e.value):t=new Date(e.value);let r=new Set;for(let[i,s]of this.taskCache.startDate.entries()){let o=new Date(i);if(e.operator==="before"&&ot)for(let l of s)r.add(l)}return r}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),r=new Set;for(let i of this.taskCache.startDate.values())for(let s of i)r.add(s);return new Set([...t].filter(i=>!r.has(i)))}return new Set}filterByScheduledDate(e){if(e.operator==="=")return this.taskCache.scheduledDate.get(e.value)||new Set;if(e.operator==="before"||e.operator==="after"){let t;typeof e.value=="string"?t=new Date(e.value):t=new Date(e.value);let r=new Set;for(let[i,s]of this.taskCache.scheduledDate.entries()){let o=new Date(i);if(e.operator==="before"&&ot)for(let l of s)r.add(l)}return r}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),r=new Set;for(let i of this.taskCache.scheduledDate.values())for(let s of i)r.add(s);return new Set([...t].filter(i=>!r.has(i)))}return new Set}applySorting(e,t){return t.length===0?[...e].sort((r,i)=>{let s=r.metadata.priority||0,o=i.metadata.priority||0;if(s!==o)return o-s;let l=r.metadata.dueDate||Number.MAX_SAFE_INTEGER,c=i.metadata.dueDate||Number.MAX_SAFE_INTEGER;return l-c}):[...e].sort((r,i)=>{for(let{field:s,direction:o}of t){let l,c;if(s in r?(l=r[s],c=i[s]):(l=r.metadata[s],c=i.metadata[s]),!(l===void 0&&c===void 0)){{if(l===void 0)return o==="asc"?1:-1;if(c===void 0)return o==="asc"?-1:1}if(l!==c){let u=o==="asc"?1:-1;return typeof l=="string"&&typeof c=="string"?l.localeCompare(c)*u:typeof l=="number"&&typeof c=="number"?(l-c)*u:l instanceof Date&&c instanceof Date?(l.getTime()-c.getTime())*u:String(l).localeCompare(String(c))*u}}}return 0})}getTaskById(e){return this.taskCache.tasks.get(e)}removeTask(e){let t=this.taskCache.tasks.get(e);if(!t)return;this.removeTaskFromIndexes(t),this.taskCache.tasks.delete(e);let r=this.taskCache.files.get(t.filePath);r&&(r.delete(e),r.size===0&&this.taskCache.files.delete(t.filePath))}async createTask(e){throw new Error("Task creation should be handled by external components")}async updateTask(e){throw new Error("Task updates should be handled by external components")}async deleteTask(e){throw new Error("Task deletion should be handled by external components")}resetCache(){this.taskCache=this.initEmptyCache()}isFileChanged(e,t){let r=this.taskCache.fileMtimes.get(e);return r===void 0||r{(function(n){if(typeof CH=="object"&&typeof v0!="undefined")v0.exports=n();else if(typeof define=="function"&&define.amd)define([],n);else{var a;typeof window!="undefined"?a=window:typeof global!="undefined"?a=global:typeof self!="undefined"?a=self:a=this,a.localforage=n()}})(function(){var n,a,e;return(function t(r,i,s){function o(u,p){if(!i[u]){if(!r[u]){var m=typeof require=="function"&&require;if(!p&&m)return m(u,!0);if(l)return l(u,!0);var f=new Error("Cannot find module '"+u+"'");throw f.code="MODULE_NOT_FOUND",f}var h=i[u]={exports:{}};r[u][0].call(h.exports,function(g){var k=r[u][1][g];return o(k||g)},h,h.exports,t,r,i,s)}return i[u].exports}for(var l=typeof require=="function"&&require,c=0;c=43)}}).catch(function(){return!1})}function E(P){return typeof b=="boolean"?m.resolve(b):S(P).then(function(F){return b=F,b})}function A(P){var F=v[P.name],M={};M.promise=new m(function(L,H){M.resolve=L,M.reject=H}),F.deferredOperations.push(M),F.dbReady?F.dbReady=F.dbReady.then(function(){return M.promise}):F.dbReady=M.promise}function N(P){var F=v[P.name],M=F.deferredOperations.pop();if(M)return M.resolve(),M.promise}function I(P,F){var M=v[P.name],L=M.deferredOperations.pop();if(L)return L.reject(F),L.promise}function R(P,F){return new m(function(M,L){if(v[P.name]=v[P.name]||Te(),P.db)if(F)A(P),P.db.close();else return M(P.db);var H=[P.name];F&&H.push(P.version);var O=c.open.apply(c,H);F&&(O.onupgradeneeded=function(U){var Q=O.result;try{Q.createObjectStore(P.storeName),U.oldVersion<=1&&Q.createObjectStore(y)}catch(Z){if(Z.name==="ConstraintError")console.warn('The database "'+P.name+'" has been upgraded from version '+U.oldVersion+" to version "+U.newVersion+', but the storage "'+P.storeName+'" already exists.');else throw Z}}),O.onerror=function(U){U.preventDefault(),L(O.error)},O.onsuccess=function(){var U=O.result;U.onversionchange=function(Q){Q.target.close()},M(U),N(P)}})}function j(P){return R(P,!1)}function W(P){return R(P,!0)}function B(P,F){if(!P.db)return!0;var M=!P.db.objectStoreNames.contains(P.storeName),L=P.versionP.db.version;if(L&&(P.version!==F&&console.warn('The database "'+P.name+`" can't be downgraded from version `+P.db.version+" to version "+P.version+"."),P.version=P.db.version),H||M){if(M){var O=P.db.version+1;O>P.version&&(P.version=O)}return!0}return!1}function X(P){return new m(function(F,M){var L=new FileReader;L.onerror=M,L.onloadend=function(H){var O=btoa(H.target.result||"");F({__local_forage_encoded_blob:!0,data:O,type:P.type})},L.readAsBinaryString(P)})}function V(P){var F=C(atob(P.data));return p([F],{type:P.type})}function G(P){return P&&P.__local_forage_encoded_blob}function Y(P){var F=this,M=F._initReady().then(function(){var L=v[F._dbInfo.name];if(L&&L.dbReady)return L.dbReady});return h(M,P,P),M}function le(P){A(P);for(var F=v[P.name],M=F.forages,L=0;L0&&(!P.db||O.name==="InvalidStateError"||O.name==="NotFoundError"))return m.resolve().then(function(){if(!P.db||O.name==="NotFoundError"&&!P.db.objectStoreNames.contains(P.storeName)&&P.version<=P.db.version)return P.db&&(P.version=P.db.version+1),W(P)}).then(function(){return le(P).then(function(){de(P,F,M,L-1)})}).catch(M);M(O)}}function Te(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Re(P){var F=this,M={db:null};if(P)for(var L in P)M[L]=P[L];var H=v[M.name];H||(H=Te(),v[M.name]=H),H.forages.push(F),F._initReady||(F._initReady=F.ready,F.ready=Y);var O=[];function U(){return m.resolve()}for(var Q=0;Q>4,ae[H++]=(U&15)<<4|Q>>2,ae[H++]=(Q&3)<<6|Z&63;return ee}function Cb(P){var F=new Uint8Array(P),M="",L;for(L=0;L>2],M+=st[(F[L]&3)<<4|F[L+1]>>4],M+=st[(F[L+1]&15)<<2|F[L+2]>>6],M+=st[F[L+2]&63];return F.length%3===2?M=M.substring(0,M.length-1)+"=":F.length%3===1&&(M=M.substring(0,M.length-2)+"=="),M}function E4(P,F){var M="";if(P&&(M=gS.call(P)),P&&(M==="[object ArrayBuffer]"||P.buffer&&gS.call(P.buffer)==="[object ArrayBuffer]")){var L,H=pt;P instanceof ArrayBuffer?(L=P,H+=dr):(L=P.buffer,M==="[object Int8Array]"?H+=ai:M==="[object Uint8Array]"?H+=ia:M==="[object Uint8ClampedArray]"?H+=ri:M==="[object Int16Array]"?H+=qa:M==="[object Uint16Array]"?H+=Is:M==="[object Int32Array]"?H+=ii:M==="[object Uint32Array]"?H+=As:M==="[object Float32Array]"?H+=Yf:M==="[object Float64Array]"?H+=fS:F(new Error("Failed to get type for BinaryArray"))),F(H+Cb(L))}else if(M==="[object Blob]"){var O=new FileReader;O.onload=function(){var U=xa+P.type+"~"+Cb(this.result);F(pt+wr+U)},O.readAsArrayBuffer(P)}else try{F(JSON.stringify(P))}catch(U){console.error("Couldn't convert value into a JSON string: ",P),F(null,U)}}function P4(P){if(P.substring(0,Dt)!==pt)return JSON.parse(P);var F=P.substring(hS),M=P.substring(Dt,hS),L;if(M===wr&&Gt.test(F)){var H=F.match(Gt);L=H[1],F=F.substring(H[0].length)}var O=kS(F);switch(M){case dr:return O;case wr:return p([O],{type:L});case ai:return new Int8Array(O);case ia:return new Uint8Array(O);case ri:return new Uint8ClampedArray(O);case qa:return new Int16Array(O);case Is:return new Uint16Array(O);case ii:return new Int32Array(O);case As:return new Uint32Array(O);case Yf:return new Float32Array(O);case fS:return new Float64Array(O);default:throw new Error("Unkown type: "+M)}}var Sb={serialize:E4,deserialize:P4,stringToBuffer:kS,bufferToString:Cb};function yS(P,F,M,L){P.executeSql("CREATE TABLE IF NOT EXISTS "+F.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],M,L)}function M4(P){var F=this,M={db:null};if(P)for(var L in P)M[L]=typeof P[L]!="string"?P[L].toString():P[L];var H=new m(function(O,U){try{M.db=openDatabase(M.name,String(M.version),M.description,M.size)}catch(Q){return U(Q)}M.db.transaction(function(Q){yS(Q,M,function(){F._dbInfo=M,O()},function(Z,ee){U(ee)})},U)});return M.serializer=Sb,H}function Fs(P,F,M,L,H,O){P.executeSql(M,L,H,function(U,Q){Q.code===Q.SYNTAX_ERR?U.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[F.storeName],function(Z,ee){ee.rows.length?O(Z,Q):yS(Z,F,function(){Z.executeSql(M,L,H,O)},O)},O):O(U,Q)},O)}function I4(P,F){var M=this;P=g(P);var L=new m(function(H,O){M.ready().then(function(){var U=M._dbInfo;U.db.transaction(function(Q){Fs(Q,U,"SELECT * FROM "+U.storeName+" WHERE key = ? LIMIT 1",[P],function(Z,ee){var ae=ee.rows.length?ee.rows.item(0).value:null;ae&&(ae=U.serializer.deserialize(ae)),H(ae)},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function A4(P,F){var M=this,L=new m(function(H,O){M.ready().then(function(){var U=M._dbInfo;U.db.transaction(function(Q){Fs(Q,U,"SELECT * FROM "+U.storeName,[],function(Z,ee){for(var ae=ee.rows,fe=ae.length,Le=0;Le0){U(vS.apply(H,[P,Z,M,L-1]));return}Q(Le)}})})}).catch(Q)});return f(O,M),O}function F4(P,F,M){return vS.apply(this,[P,F,M,1])}function R4(P,F){var M=this;P=g(P);var L=new m(function(H,O){M.ready().then(function(){var U=M._dbInfo;U.db.transaction(function(Q){Fs(Q,U,"DELETE FROM "+U.storeName+" WHERE key = ?",[P],function(){H()},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function O4(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(U){Fs(U,O,"DELETE FROM "+O.storeName,[],function(){L()},function(Q,Z){H(Z)})})}).catch(H)});return f(M,P),M}function N4(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(U){Fs(U,O,"SELECT COUNT(key) as c FROM "+O.storeName,[],function(Q,Z){var ee=Z.rows.item(0).c;L(ee)},function(Q,Z){H(Z)})})}).catch(H)});return f(M,P),M}function L4(P,F){var M=this,L=new m(function(H,O){M.ready().then(function(){var U=M._dbInfo;U.db.transaction(function(Q){Fs(Q,U,"SELECT key FROM "+U.storeName+" WHERE id = ? LIMIT 1",[P+1],function(Z,ee){var ae=ee.rows.length?ee.rows.item(0).key:null;H(ae)},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function j4(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(U){Fs(U,O,"SELECT key FROM "+O.storeName,[],function(Q,Z){for(var ee=[],ae=0;ae '__WebKitDatabaseInfoTable__'",[],function(H,O){for(var U=[],Q=0;Q0}function _4(P){var F=this,M={};if(P)for(var L in P)M[L]=P[L];return M.keyPrefix=bS(P,F._defaultConfig),$4()?(F._dbInfo=M,M.serializer=Sb,m.resolve()):m.reject()}function U4(P){var F=this,M=F.ready().then(function(){for(var L=F._dbInfo.keyPrefix,H=localStorage.length-1;H>=0;H--){var O=localStorage.key(H);O.indexOf(L)===0&&localStorage.removeItem(O)}});return f(M,P),M}function Y4(P,F){var M=this;P=g(P);var L=M.ready().then(function(){var H=M._dbInfo,O=localStorage.getItem(H.keyPrefix+P);return O&&(O=H.serializer.deserialize(O)),O});return f(L,F),L}function q4(P,F){var M=this,L=M.ready().then(function(){for(var H=M._dbInfo,O=H.keyPrefix,U=O.length,Q=localStorage.length,Z=1,ee=0;ee=0;U--){var Q=localStorage.key(U);Q.indexOf(O)===0&&localStorage.removeItem(Q)}}):H=m.reject("Invalid arguments"),f(H,F),H}var eV={_driver:"localStorageWrapper",_initStorage:_4,_support:W4(),iterate:q4,getItem:Y4,setItem:J4,removeItem:X4,clear:U4,length:Q4,key:G4,keys:K4,dropInstance:Z4},tV=function(F,M){return F===M||typeof F=="number"&&typeof M=="number"&&isNaN(F)&&isNaN(M)},aV=function(F,M){for(var L=F.length,H=0;H{To=Oe(SH()),fc=class{constructor(a,e){this.appId=a;this.cachePrefix="taskgenius/cache/";this.initialized=!1;this.currentVersion="unknown";this.currentVersion=e||"unknown",this.persister=To.default.createInstance({name:this.cachePrefix+this.appId,driver:[To.default.INDEXEDDB],description:"TaskGenius metadata cache for files and tasks"}),this.initialize()}async initialize(){try{await this.persister.setItem(`${this.appId}:__test__`,!0),await this.persister.removeItem(`${this.appId}:__test__`),this.initialized=!0}catch(a){console.error("Failed to initialize IndexedDB cache, falling back to localStorage:",a),this.persister=To.default.createInstance({name:this.cachePrefix+this.appId,driver:[To.default.LOCALSTORAGE],description:"TaskGenius metadata fallback cache"}),this.initialized=!0}}async recreate(){try{await To.default.dropInstance({name:this.cachePrefix+this.appId})}catch(a){console.error("Error dropping storage instance:",a)}this.persister=To.default.createInstance({name:this.cachePrefix+this.appId,driver:[To.default.INDEXEDDB],description:"TaskGenius metadata cache for files and tasks"}),this.initialized=!1,await this.initialize()}async loadFile(a){this.initialized||await this.initialize();try{let e=this.fileKey(a);return await this.persister.getItem(e)}catch(e){return console.error(`Error loading cache for ${a}:`,e),null}}async storeFile(a,e){this.initialized||await this.initialize();try{let t=this.fileKey(a);await this.persister.setItem(t,{version:this.currentVersion,time:Date.now(),data:e})}catch(t){console.error(`Error storing cache for ${a}:`,t)}}async synchronize(a){this.initialized||await this.initialize();try{let e=new Set(a),t=await this.allFiles(),r=new Set;for(let i of t)e.has(i)||(r.add(i),await this.persister.removeItem(this.fileKey(i)));return r}catch(e){return console.error("Error synchronizing cache:",e),new Set}}async allKeys(){this.initialized||await this.initialize();try{return(await this.persister.keys()).filter(e=>e.startsWith(`${this.appId}:`))}catch(a){return console.error("Error getting cache keys:",a),[]}}async allFiles(){let a=`${this.appId}:file:`;try{return(await this.allKeys()).filter(t=>t.startsWith(a)).map(t=>t.substring(a.length))}catch(e){return console.error("Error getting cached files:",e),[]}}fileKey(a){return`${this.appId}:file:${a}`}async hasFile(a){this.initialized||await this.initialize();try{return await this.persister.getItem(this.fileKey(a))!==null}catch(e){return!1}}async removeFile(a){this.initialized||await this.initialize();try{await this.persister.removeItem(this.fileKey(a))}catch(e){console.error(`Error removing cache for ${a}:`,e)}}async getStats(){try{let a=await this.allFiles();return{totalFiles:a.length,cacheSize:a.length}}catch(a){return console.error("Error getting cache stats:",a),{totalFiles:0,cacheSize:0}}}async clear(){this.initialized||await this.initialize();try{let a=await this.allKeys();for(let e of a)await this.persister.removeItem(e)}catch(a){console.error("Error clearing cache:",a),await this.recreate()}}async storeConsolidatedCache(a,e){this.initialized||await this.initialize();try{let t=`${this.appId}:consolidated:${a}`;await this.persister.setItem(t,{version:this.currentVersion,time:Date.now(),data:e})}catch(t){console.error(`Error storing consolidated cache for ${a}:`,t)}}async loadConsolidatedCache(a){this.initialized||await this.initialize();try{let e=`${this.appId}:consolidated:${a}`;return await this.persister.getItem(e)}catch(e){return console.error(`Error loading consolidated cache for ${a}:`,e),null}}async getAll(){this.initialized||await this.initialize();try{let a=await this.allFiles(),e={};for(let t of a)e[t]=await this.loadFile(t);return e}catch(a){return console.error("Error getting all cached files:",a),{}}}setVersion(a){this.currentVersion=a}getVersion(){return this.currentVersion}isVersionCompatible(a,e=!1){return a.version?e?a.version===this.currentVersion:a.version===this.currentVersion:!1}async clearIncompatibleCache(){this.initialized||await this.initialize();let a=0;try{let e=await this.allKeys();for(let t of e)try{let r=await this.persister.getItem(t);r&&!this.isVersionCompatible(r)&&(await this.persister.removeItem(t),a++)}catch(r){await this.persister.removeItem(t),a++}}catch(e){console.error("Error clearing incompatible cache:",e)}return a}}});var qt,tv,DH=D(()=>{b0();qt={raw:n=>`tasks.raw:${n}`,project:n=>`project.data:${n}`,augmented:n=>`tasks.augmented:${n}`,consolidated:()=>"consolidated:taskIndex",icsEvents:()=>"ics:events",meta:{version:()=>"meta:version",schemaVersion:()=>"meta:schemaVersion",custom:n=>`meta:${n}`}},tv=class{constructor(a,e){this.schemaVersion=1;this.currentVersion=e||"1.0.0",this.cache=new fc(a,this.currentVersion),`${a}${this.currentVersion}`}generateHash(a){let e=JSON.stringify(a),t=0;for(let r=0;rt.startsWith(e)).map(t=>t.substring(e.length))}async listRawPaths(){let a=await this.cache.allFiles(),e="tasks.raw:";return a.filter(t=>t.startsWith(e)).map(t=>t.substring(e.length))}async clearFile(a){await Promise.all([this.cache.removeFile(qt.raw(a)),this.cache.removeFile(qt.project(a)),this.cache.removeFile(qt.augmented(a))])}async clear(){await this.cache.clear()}async clearNamespace(a){let e=await this.cache.allFiles(),r={raw:"tasks.raw:",project:"project.data:",augmented:"tasks.augmented:",consolidated:"consolidated:"}[a],i=e.filter(s=>s.startsWith(r));for(let s of i)await this.cache.removeFile(s)}async updateVersion(a,e){this.currentVersion=a,e!==void 0&&(this.schemaVersion=e),await this.cache.storeFile(qt.meta.version(),{version:this.currentVersion}),await this.cache.storeFile(qt.meta.schemaVersion(),{schema:this.schemaVersion})}async loadVersion(){try{let a=await this.cache.loadFile(qt.meta.version()),e=await this.cache.loadFile(qt.meta.schemaVersion());if(a&&e)return{version:a.data.version,schema:e.data.schema}}catch(a){console.error("Error loading version information:",a)}return null}async getStats(){let a=await this.cache.allFiles(),e={raw:0,project:0,augmented:0,consolidated:0,meta:0};for(let t of a)t.startsWith("tasks.raw:")?e.raw++:t.startsWith("project.data:")?e.project++:t.startsWith("tasks.augmented:")?e.augmented++:t.startsWith("consolidated:")?e.consolidated++:t.startsWith("meta:")&&e.meta++;return{totalKeys:a.length,byNamespace:e}}}});var T0={};Et(T0,{Events:()=>se,Seq:()=>Ht,emit:()=>ke,emitTaskCacheUpdated:()=>ZG,on:()=>ta,onTaskCacheUpdated:()=>JG});function ke(n,a,e){n.workspace.trigger(a,e)}function ta(n,a,e){return n.workspace.on(a,e)}var se,w0,Ht,JG,ZG,Mi=D(()=>{se={CACHE_READY:"task-genius:cache-ready",TASK_CACHE_UPDATED:"task-genius:task-cache-updated",FILE_UPDATED:"task-genius:file-updated",PROJECT_DATA_UPDATED:"task-genius:project-data-updated",SETTINGS_CHANGED:"task-genius:settings-changed",TASK_COMPLETED:"task-genius:task-completed",TASK_ADDED:"task-genius:task-added",TASK_UPDATED:"task-genius:task-updated",TASK_DELETED:"task-genius:task-deleted",WRITE_OPERATION_START:"task-genius:write-operation-start",WRITE_OPERATION_COMPLETE:"task-genius:write-operation-complete",ICS_EVENTS_UPDATED:"task-genius:ics-events-updated",FILE_TASK_UPDATED:"task-genius:file-task-updated",FILE_TASK_REMOVED:"task-genius:file-task-removed"},w0=0,Ht={next(){return w0=w0+1>>>0,w0}};JG=(n,a)=>ta(n,se.TASK_CACHE_UPDATED,a),ZG=(n,a)=>ke(n,se.TASK_CACHE_UPDATED,a)});var av,EH=D(()=>{xH();DH();Mi();av=class{constructor(a,e,t){this.app=a;this.vault=e;this.metadataCache=t;this.lastSequence=0;this.sourceSeq=0;this.icsEvents=[];this.fileTasks=new Map;this.persistQueue=new Set;this.persistTimer=null;this.lastPersistTime=0;this.PERSIST_DELAY=1e3;this.MAX_QUEUE_SIZE=10;this.MAX_PERSIST_INTERVAL=5e3;this.indexer=new ev(a,e,t),this.storage=new tv(a.appId||"obsidian-task-genius","1.0.0")}setFileFilterManager(a){var e,t;(t=(e=this.indexer).setFileFilterManager)==null||t.call(e,a)}async getIndexedFilePaths(){let a=await this.indexer.getIndexSnapshot();return Array.from(a.files.keys())}getFileTaskPaths(){return Array.from(this.fileTasks.keys())}async initialize(){var a;try{let e=await this.storage.loadConsolidated();e&&e.data&&(`${(a=e.data)!=null&&a.tasks?e.data.tasks instanceof Map?e.data.tasks.size:Object.keys(e.data.tasks).length:0}`,await this.indexer.restoreFromSnapshot(e.data),`${await this.indexer.getTotalTaskCount()}`,ke(this.app,se.CACHE_READY,{initial:!0,timestamp:Date.now(),seq:Ht.next()})),this.icsEvents=await this.storage.loadIcsEvents(),`${this.icsEvents.length}`}catch(e){console.error("[Repository] Error during initialization:",e)}}async updateFile(a,e,t,r){let i=(r==null?void 0:r.persist)!==!1,s=(r==null?void 0:r.forceEmit)===!0,o=await this.storage.loadAugmented(a),l=!o||JSON.stringify(e)!==JSON.stringify(o.data);await this.indexer.updateIndexWithTasks(a,e),i&&await this.storage.storeAugmented(a,e),i&&l&&this.schedulePersist(a),(l||s)&&(this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:[a],stats:{total:await this.indexer.getTotalTaskCount(),changed:e.length},timestamp:Date.now(),seq:this.lastSequence,sourceSeq:t||0}))}async updateBatch(a,e,t){let r=(t==null?void 0:t.persist)!==!1,i=(t==null?void 0:t.forceEmit)===!0,s=[],o=0,l=!1;for(let[c,u]of a){let p=await this.storage.loadAugmented(c),m=!p||JSON.stringify(u)!==JSON.stringify(p.data);await this.indexer.updateIndexWithTasks(c,u),r&&await this.storage.storeAugmented(c,u),m&&(s.push(c),o+=u.length,l=!0)}if(l||i){r&&l&&(await this.persist(),`${s.length}`);let c=s.length>0?s:Array.from(a.keys());this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:c,stats:{total:await this.indexer.getTotalTaskCount(),changed:o},timestamp:Date.now(),seq:this.lastSequence,sourceSeq:e||0})}}async removeFile(a){await this.indexer.removeTasksFromFile(a),await this.storage.clearFile(a),this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:[a],stats:{total:await this.indexer.getTotalTaskCount(),changed:0},timestamp:Date.now(),seq:this.lastSequence})}async removeTaskById(a){let e=await this.indexer.getTaskById(a);e&&(await this.indexer.removeTask(a),this.schedulePersist(e.filePath))}async updateIcsEvents(a,e){`${a.length}`,this.icsEvents=a,await this.storage.storeIcsEvents(a),this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:["ics:events"],stats:{total:await this.getTotalTaskCount(),changed:a.length,icsEvents:a.length},timestamp:Date.now(),seq:this.lastSequence,sourceSeq:e||0})}async getTotalTaskCount(){return await this.indexer.getTotalTaskCount()+this.icsEvents.length+this.fileTasks.size}async all(){let a=await this.indexer.getAllTasks(),e=Array.from(this.fileTasks.values());return[...a,...this.icsEvents,...e]}async byProject(a){let e=await this.indexer.getTaskIdsByProject(a),t=await this.getTasksByIds(e),r=this.icsEvents.filter(i=>{var s;return((s=i.metadata)==null?void 0:s.project)===a});return[...t,...r]}async byTags(a){let e=await Promise.all(a.map(r=>this.indexer.getTaskIdsByTag(r)));if(e.length===0)return[];let t=new Set(e[0]);for(let r=1;re[r].has(i)));return this.getTasksByIds(t)}async byStatus(a){let e=await this.indexer.getTaskIdsByCompletionStatus(a);return this.getTasksByIds(e)}async byDateRange(a){let e=a.field||"due",t=await this.indexer.getCache(),r=e==="due"?t.dueDate:e==="start"?t.startDate:t.scheduledDate,i=new Set;for(let[s,o]of r){let l=new Date(s).getTime();if(!(a.from&&la.to))for(let c of o)i.add(c)}return this.getTasksByIds(i)}async byId(a){return this.indexer.getTaskById(a)||null}async query(a,e){let t=a?[a]:[];return this.indexer.queryTasks(t,e)}async getSummary(){let a=await this.indexer.getCache(),e=new Map;for(let[i,s]of a.projects)e.set(i,s.size);let t=new Map;for(let[i,s]of a.tags)t.set(i,s.size);let r=new Map;for(let[i,s]of a.completed)r.set(i,s.size);return{total:a.tasks.size,byProject:e,byTag:t,byStatus:r}}async persist(){let a=await this.indexer.getIndexSnapshot();await this.storage.storeConsolidated(a)}schedulePersist(a){this.persistQueue.add(a),this.persistQueue.size>=this.MAX_QUEUE_SIZE||Date.now()-this.lastPersistTime>this.MAX_PERSIST_INTERVAL?this.executePersist():(this.persistTimer&&clearTimeout(this.persistTimer),this.persistTimer=setTimeout(()=>{this.executePersist()},this.PERSIST_DELAY))}async executePersist(){this.persistTimer&&(clearTimeout(this.persistTimer),this.persistTimer=null),this.persistQueue.size>0&&(`${this.persistQueue.size}`,await this.persist(),this.persistQueue.clear(),this.lastPersistTime=Date.now())}async clear(){await this.indexer.clearIndex(),await this.storage.clear()}setParseFileCallback(a){this.indexer.setParseFileCallback(a)}getIndexer(){return this.indexer}getStorage(){return this.storage}async getTasksByIds(a){let e=[],t=Array.isArray(a)?a:Array.from(a);for(let r of t){let i=await this.indexer.getTaskById(r);i&&e.push(i)}return e}async cleanup(){await this.executePersist()}async updateFileTask(a){let e=a.filePath;e&&(this.fileTasks.set(e,a),this.schedulePersist(`file-task:${e}`),this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:[`file-task:${e}`],stats:{total:await this.getTotalTaskCount(),changed:1,fileTasks:this.fileTasks.size},timestamp:Date.now(),seq:this.lastSequence}))}async removeFileTask(a){this.fileTasks.has(a)&&(this.fileTasks.delete(a),this.schedulePersist(`file-task:${a}`),this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:[`file-task:${a}`],stats:{total:await this.getTotalTaskCount(),changed:-1,fileTasks:this.fileTasks.size},timestamp:Date.now(),seq:this.lastSequence}))}async getTaskById(a){return(await this.all()).find(r=>r.id===a)}async updateSingleTask(a){let e=a.filePath;if(!e)return;`${a.id}${e}`;let t=await this.storage.loadAugmented(e);if(!t){console.warn(`[Repository] No existing tasks found for ${e}, cannot update single task`);return}let r=t.data,i=r.findIndex(s=>s.id===a.id);if(i===-1){console.warn(`[Repository] Task ${a.id} not found in ${e}`);return}r[i]=a,await this.indexer.updateIndexWithTasks(e,r),await this.storage.storeAugmented(e,r),this.schedulePersist(e),this.lastSequence=Ht.next(),ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:[e],stats:{total:await this.getTotalTaskCount(),changed:1},timestamp:Date.now(),seq:this.lastSequence,sourceSeq:void 0}),`${a.id}`}}});var x0={};Et(x0,{QueryAPI:()=>mf});var mf,rv=D(()=>{EH();mf=class{constructor(a,e,t){this.app=a;this.vault=e;this.metadataCache=t;this.taskCache=null;this.cacheTimestamp=0;this.CACHE_DURATION=100;this.pendingPromise=null;this.repository=new av(a,e,t)}async initialize(){await this.repository.initialize()}async getAllTasks(){return this.pendingPromise?this.pendingPromise:(this.pendingPromise=this.repository.all().then(a=>(this.taskCache=a,this.cacheTimestamp=Date.now(),this.pendingPromise=null,a)).catch(a=>{throw this.pendingPromise=null,a}),this.pendingPromise)}async getTasksByProject(a){return this.repository.byProject(a)}async getTasksByTags(a){return this.repository.byTags(a)}async getTasksByStatus(a){return this.repository.byStatus(a)}async getTasksByDateRange(a){return this.repository.byDateRange(a)}async getTaskById(a){return this.repository.byId(a)}async all(){return this.getAllTasks()}async byProject(a){return this.getTasksByProject(a)}async byTags(a){return this.getTasksByTags(a)}async byStatus(a){return this.getTasksByStatus(a)}async byDateRange(a){return this.getTasksByDateRange(a)}async byId(a){return this.getTaskById(a)}async query(a,e){return this.repository.query(a,e)}async getIndexSummary(){let a=await this.repository.getSummary(),e={};for(let[r,i]of a.byProject)e[r]=i;let t={};for(let[r,i]of a.byTag)t[r]=i;return{total:a.total,byProject:e,byTag:t}}async getSummary(){let a=await this.repository.getSummary(),e={};for(let[i,s]of a.byProject)e[i]=s;let t={};for(let[i,s]of a.byTag)t[i]=s;let r={};for(let[i,s]of a.byStatus)r[String(i)]=s;return{total:a.total,byProject:e,byTag:t,byStatus:r}}getRepository(){return this.repository}async updateCache(){this.taskCache=await this.repository.all(),this.cacheTimestamp=Date.now()}getAllTasksSync(){return!this.taskCache||Date.now()-this.cacheTimestamp>this.CACHE_DURATION?(console.debug("[QueryAPI] Sync cache miss, triggering async update"),this.updateCache().catch(a=>{console.error("[QueryAPI] Failed to update cache:",a)}),this.taskCache||[]):this.taskCache}getTaskByIdSync(a){return this.getAllTasksSync().find(t=>t.id===a)||null}async ensureCache(){if(!this.taskCache)try{let a=await this.repository.all();this.taskCache=a,this.cacheTimestamp=Date.now(),`${a.length}`}catch(a){console.error("[QueryAPI] Failed to populate initial cache:",a)}}async getTasksForFile(a){return(await this.getAllTasks()).filter(t=>t.filePath===a)}getTasksForFileSync(a){return this.getAllTasksSync().filter(t=>t.filePath===a)}async getIncompleteTasks(){return this.getTasksByStatus(!1)}getIncompleteTasksSync(){return this.getAllTasksSync().filter(e=>!e.completed)}async getCompletedTasks(){return this.getTasksByStatus(!0)}getCompletedTasksSync(){return this.getAllTasksSync().filter(e=>e.completed)}async getTasksDueToday(){let a=new Date;a.setHours(0,0,0,0);let e=new Date(a);return e.setDate(e.getDate()+1),this.getTasksByDateRange({from:a.getTime(),to:e.getTime(),field:"due"})}getTasksDueTodaySync(){let a=new Date;a.setHours(0,0,0,0);let e=new Date(a);return e.setDate(e.getDate()+1),this.getAllTasksSync().filter(r=>{var i;return(i=r.metadata)!=null&&i.dueDate?r.metadata.dueDate>=a.getTime()&&r.metadata.dueDate{var r;return!t.completed&&((r=t.metadata)==null?void 0:r.dueDate)&&t.metadata.dueDate{var r;return!t.completed&&((r=t.metadata)==null?void 0:r.dueDate)&&t.metadata.dueDate{var s,o,l;(s=r.metadata)!=null&&s.context&&e.add(r.metadata.context),(o=r.metadata)!=null&&o.project&&t.add(r.metadata.project);let i=r.metadata;(l=i==null?void 0:i.tgProject)!=null&&l.name&&t.add(i.tgProject.name)}),{contexts:Array.from(e).sort(),projects:Array.from(t).sort()}}getAvailableContextsAndProjectsSync(){let a=this.getAllTasksSync(),e=new Set,t=new Set;return a.forEach(r=>{var s,o,l;(s=r.metadata)!=null&&s.context&&e.add(r.metadata.context),(o=r.metadata)!=null&&o.project&&t.add(r.metadata.project);let i=r.metadata;(l=i==null?void 0:i.tgProject)!=null&&l.name&&t.add(i.tgProject.name)}),{contexts:Array.from(e).sort(),projects:Array.from(t).sort()}}}});var IH={};Et(IH,{CanvasParser:()=>nn,DEFAULT_CANVAS_PARSING_OPTIONS:()=>MH});var MH,nn,lv=D(()=>{Lo();du();MH={includeNodeIds:!1,includePositions:!1,nodeSeparator:` `,preserveLineBreaks:!0},nn=class n{constructor(a,e={}){this.markdownParser=new zi(a),this.options={...MH,...e}}parseCanvasFile(a,e){let t=null,r=null;try{return t=JSON.parse(a),t?(r=this.extractCanvasContent(t,e),r?this.parseTasksFromCanvasContent(r):[]):[]}catch(i){return console.error(`Error parsing canvas file ${e}:`,i),[]}finally{t=null,r=null}}extractCanvasContent(a,e){if(!a||!a.nodes||!Array.isArray(a.nodes))return console.warn(`Canvas file ${e} has no nodes or invalid nodes structure`),{canvasData:a,textContent:"",textNodes:[],filePath:e};let t=a.nodes.filter(s=>s.type==="text"),r=[];for(let s of t){let o=s.text;this.options.includeNodeIds&&(o=` ${o}`),this.options.includePositions&&(o=` ${o}`),this.options.preserveLineBreaks||(o=o.replace(/\n/g," ")),r.push(o)}let i=r.join(this.options.nodeSeparator||` `);return{canvasData:a,textContent:i,textNodes:t,filePath:e}}parseTasksFromCanvasContent(a){let{textContent:e,filePath:t,textNodes:r}=a;return this.markdownParser.parseLegacy(e,t).map(s=>this.enhanceTaskWithCanvasMetadata(s,a))}enhanceTaskWithCanvasMetadata(a,e){let t=this.findSourceNode(a,e);if(t){let r={...a.metadata,canvasNodeId:t.id,canvasPosition:{x:t.x,y:t.y,width:t.width,height:t.height},canvasColor:t.color,sourceType:"canvas"};a.metadata=r}else a.metadata.sourceType="canvas";return a}findSourceNode(a,e){let{textNodes:t}=e;for(let r of t)if(r.text.includes(a.originalMarkdown))return r;return null}updateParserConfig(a){this.markdownParser=new zi(a)}updateOptions(a){this.options={...this.options,...a}}getOptions(){return{...this.options}}static isValidCanvasContent(a){try{let e=JSON.parse(a);return typeof e=="object"&&e!==null&&Array.isArray(e.nodes)&&Array.isArray(e.edges)}catch(e){return!1}}extractTextOnly(a){try{return JSON.parse(a).nodes.filter(r=>r.type==="text").map(r=>r.text).join(this.options.nodeSeparator||` `)}catch(e){return console.error("Error extracting text from canvas:",e),""}}static parseCanvasJSON(a){try{return JSON.parse(a)}catch(e){return console.error("Error parsing Canvas JSON:",e),null}}static findTextNode(a,e){return a.nodes.find(r=>r.type==="text"&&r.id===e)||null}static getTextNodes(a){return a.nodes.filter(e=>e.type==="text")}static async parseCanvas(a,e,t){let r=Bs(a.settings.preferMetadataFormat,a),i=new n(r),s=e.path,o=t!=null?t:await a.app.vault.cachedRead(e);return i.parseCanvasFile(o,s)}}});var jH=ve(LH=>{var S0=class n{constructor(a){this._elements=Array.isArray(a)?a:[],this._offset=0}enqueue(a){return this._elements.push(a),this}push(a){return this.enqueue(a)}dequeue(){if(this.size()===0)return null;let a=this.front();return this._offset+=1,this._offset*20?this._elements[this._offset]:null}back(){return this.size()>0?this._elements[this._elements.length-1]:null}size(){return this._elements.length-this._offset}isEmpty(){return this.size()===0}toArray(){return this._elements.slice(this._offset)}clear(){this._elements=[],this._offset=0}clone(){return new n(this._elements.slice(this._offset))}static fromArray(a){return new n(a)}};LH.Queue=S0});var BH=ve(HH=>{var{Queue:t7}=jH();HH.Queue=t7});var N0=ve(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});var Bt=require("obsidian"),P0="YYYY-MM-DD",M0="gggg-[W]ww",_H="YYYY-MM",UH="YYYY-[Q]Q",YH="YYYY";function wf(n){var e,t;let a=window.app.plugins.getPlugin("periodic-notes");return a&&((t=(e=a.settings)==null?void 0:e[n])==null?void 0:t.enabled)}function Tf(){var n,a,e,t;try{let{internalPlugins:r,plugins:i}=window.app;if(wf("daily")){let{format:c,folder:u,template:p}=((a=(n=i.getPlugin("periodic-notes"))==null?void 0:n.settings)==null?void 0:a.daily)||{};return{format:c||P0,folder:(u==null?void 0:u.trim())||"",template:(p==null?void 0:p.trim())||""}}let{folder:s,format:o,template:l}=((t=(e=r.getPluginById("daily-notes"))==null?void 0:e.instance)==null?void 0:t.options)||{};return{format:o||P0,folder:(s==null?void 0:s.trim())||"",template:(l==null?void 0:l.trim())||""}}catch(r){}}function xf(){var n,a,e,t,r,i,s;try{let o=window.app.plugins,l=(n=o.getPlugin("calendar"))==null?void 0:n.options,c=(e=(a=o.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.weekly;if(wf("weekly"))return{format:c.format||M0,folder:((t=c.folder)==null?void 0:t.trim())||"",template:((r=c.template)==null?void 0:r.trim())||""};let u=l||{};return{format:u.weeklyNoteFormat||M0,folder:((i=u.weeklyNoteFolder)==null?void 0:i.trim())||"",template:((s=u.weeklyNoteTemplate)==null?void 0:s.trim())||""}}catch(o){}}function Cf(){var a,e,t,r;let n=window.app.plugins;try{let i=wf("monthly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.monthly)||{};return{format:i.format||_H,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function Sf(){var a,e,t,r;let n=window.app.plugins;try{let i=wf("quarterly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.quarterly)||{};return{format:i.format||UH,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function Df(){var a,e,t,r;let n=window.app.plugins;try{let i=wf("yearly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.yearly)||{};return{format:i.format||YH,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function qH(...n){let a=[];for(let t=0,r=n.length;t{let b=t(),v=n.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return h&&v.add(parseInt(g,10),k),y?v.format(y.substring(1).trim()):v.format(i)}).replace(/{{\s*yesterday\s*}}/gi,n.clone().subtract(1,"day").format(i)).replace(/{{\s*tomorrow\s*}}/gi,n.clone().add(1,"d").format(i)));return a.foldManager.save(p,l),p}catch(p){console.error(`Failed to create file: '${u}'`,p),new Bt.Notice("Unable to create new file.")}}function o7(n,a){var e;return(e=a[on(n,"day")])!=null?e:null}function l7(){let{vault:n}=window.app,{folder:a}=Tf(),e=n.getAbstractFileByPath(Bt.normalizePath(a));if(!e)throw new I0("Failed to find daily notes folder");let t={};return Bt.Vault.recurseChildren(e,r=>{if(r instanceof Bt.TFile){let i=Pc(r,"day");if(i){let s=on(i,"day");t[s]=r}}}),t}var A0=class extends Error{};function d7(){let{moment:n}=window,a=n.localeData()._week.dow,e=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;a;)e.push(e.shift()),a--;return e}function c7(n){return d7().indexOf(n.toLowerCase())}async function XH(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=xf(),[i,s]=await Ec(e),o=n.format(t),l=await Ef(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,g)=>{let k=window.moment(),y=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&y.add(parseInt(f,10),h),g?y.format(g.substring(1).trim()):y.format(t)}).replace(/{{\s*title\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(u,p,m)=>{let f=c7(p);return n.weekday(f).format(m.trim())}));return window.app.foldManager.save(c,s),c}catch(c){console.error(`Failed to create file: '${l}'`,c),new Bt.Notice("Unable to create new file.")}}function u7(n,a){var e;return(e=a[on(n,"week")])!=null?e:null}function p7(){let n={};if(!ZH())return n;let{vault:a}=window.app,{folder:e}=xf(),t=a.getAbstractFileByPath(Bt.normalizePath(e));if(!t)throw new A0("Failed to find weekly notes folder");return Bt.Vault.recurseChildren(t,r=>{if(r instanceof Bt.TFile){let i=Pc(r,"week");if(i){let s=on(i,"week");n[s]=r}}}),n}var F0=class extends Error{};async function JH(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Cf(),[i,s]=await Ec(e),o=n.format(t),l=await Ef(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,g)=>{let k=window.moment(),y=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&y.add(parseInt(f,10),h),g?y.format(g.substring(1).trim()):y.format(t)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(c,s),c}catch(c){console.error(`Failed to create file: '${l}'`,c),new Bt.Notice("Unable to create new file.")}}function m7(n,a){var e;return(e=a[on(n,"month")])!=null?e:null}function f7(){let n={};if(!eB())return n;let{vault:a}=window.app,{folder:e}=Cf(),t=a.getAbstractFileByPath(Bt.normalizePath(e));if(!t)throw new F0("Failed to find monthly notes folder");return Bt.Vault.recurseChildren(t,r=>{if(r instanceof Bt.TFile){let i=Pc(r,"month");if(i){let s=on(i,"month");n[s]=r}}}),n}var R0=class extends Error{};async function h7(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Sf(),[i,s]=await Ec(e),o=n.format(t),l=await Ef(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,g)=>{let k=window.moment(),y=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&y.add(parseInt(f,10),h),g?y.format(g.substring(1).trim()):y.format(t)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(c,s),c}catch(c){console.error(`Failed to create file: '${l}'`,c),new Bt.Notice("Unable to create new file.")}}function g7(n,a){var e;return(e=a[on(n,"quarter")])!=null?e:null}function k7(){let n={};if(!tB())return n;let{vault:a}=window.app,{folder:e}=Sf(),t=a.getAbstractFileByPath(Bt.normalizePath(e));if(!t)throw new R0("Failed to find quarterly notes folder");return Bt.Vault.recurseChildren(t,r=>{if(r instanceof Bt.TFile){let i=Pc(r,"quarter");if(i){let s=on(i,"quarter");n[s]=r}}}),n}var O0=class extends Error{};async function y7(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Df(),[i,s]=await Ec(e),o=n.format(t),l=await Ef(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,g)=>{let k=window.moment(),y=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&y.add(parseInt(f,10),h),g?y.format(g.substring(1).trim()):y.format(t)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(c,s),c}catch(c){console.error(`Failed to create file: '${l}'`,c),new Bt.Notice("Unable to create new file.")}}function v7(n,a){var e;return(e=a[on(n,"year")])!=null?e:null}function b7(){let n={};if(!aB())return n;let{vault:a}=window.app,{folder:e}=Df(),t=a.getAbstractFileByPath(Bt.normalizePath(e));if(!t)throw new O0("Failed to find yearly notes folder");return Bt.Vault.recurseChildren(t,r=>{if(r instanceof Bt.TFile){let i=Pc(r,"year");if(i){let s=on(i,"year");n[s]=r}}}),n}function w7(){var t,r;let{app:n}=window,a=n.internalPlugins.plugins["daily-notes"];if(a&&a.enabled)return!0;let e=n.plugins.getPlugin("periodic-notes");return e&&((r=(t=e.settings)==null?void 0:t.daily)==null?void 0:r.enabled)}function ZH(){var e,t;let{app:n}=window;if(n.plugins.getPlugin("calendar"))return!0;let a=n.plugins.getPlugin("periodic-notes");return a&&((t=(e=a.settings)==null?void 0:e.weekly)==null?void 0:t.enabled)}function eB(){var e,t;let{app:n}=window,a=n.plugins.getPlugin("periodic-notes");return a&&((t=(e=a.settings)==null?void 0:e.monthly)==null?void 0:t.enabled)}function tB(){var e,t;let{app:n}=window,a=n.plugins.getPlugin("periodic-notes");return a&&((t=(e=a.settings)==null?void 0:e.quarterly)==null?void 0:t.enabled)}function aB(){var e,t;let{app:n}=window,a=n.plugins.getPlugin("periodic-notes");return a&&((t=(e=a.settings)==null?void 0:e.yearly)==null?void 0:t.enabled)}function T7(n){let a={day:Tf,week:xf,month:Cf,quarter:Sf,year:Df}[n];return a()}function x7(n,a){return{day:QH,month:JH,week:XH}[n](a)}je.DEFAULT_DAILY_NOTE_FORMAT=P0;je.DEFAULT_MONTHLY_NOTE_FORMAT=_H;je.DEFAULT_QUARTERLY_NOTE_FORMAT=UH;je.DEFAULT_WEEKLY_NOTE_FORMAT=M0;je.DEFAULT_YEARLY_NOTE_FORMAT=YH;je.appHasDailyNotesPluginLoaded=w7;je.appHasMonthlyNotesPluginLoaded=eB;je.appHasQuarterlyNotesPluginLoaded=tB;je.appHasWeeklyNotesPluginLoaded=ZH;je.appHasYearlyNotesPluginLoaded=aB;je.createDailyNote=QH;je.createMonthlyNote=JH;je.createPeriodicNote=x7;je.createQuarterlyNote=h7;je.createWeeklyNote=XH;je.createYearlyNote=y7;je.getAllDailyNotes=l7;je.getAllMonthlyNotes=f7;je.getAllQuarterlyNotes=k7;je.getAllWeeklyNotes=p7;je.getAllYearlyNotes=b7;je.getDailyNote=o7;je.getDailyNoteSettings=Tf;je.getDateFromFile=Pc;je.getDateFromPath=s7;je.getDateUID=on;je.getMonthlyNote=m7;je.getMonthlyNoteSettings=Cf;je.getPeriodicNoteSettings=T7;je.getQuarterlyNote=g7;je.getQuarterlyNoteSettings=Sf;je.getTemplateInfo=Ec;je.getWeeklyNote=u7;je.getWeeklyNoteSettings=xf;je.getYearlyNote=v7;je.getYearlyNoteSettings=Df});var vr,q0=D(()=>{Mi();lv();vr=class{constructor(a,e){this.vault=a;this.plugin=e}async updateCanvasTask(a,e){var t;try{let r=this.vault.getFileByPath(a.filePath);if(!r)return{success:!1,error:`Canvas file not found: ${a.filePath}`};let i=await this.vault.read(r),s=nn.parseCanvasJSON(i);if(!s)return{success:!1,error:"Failed to parse Canvas JSON"};let o=a.metadata.canvasNodeId;if(!o)return{success:!1,error:"Task does not have a Canvas node ID"};let l=nn.findTextNode(s,o);if(!l)return{success:!1,error:`Canvas text node not found: ${o}`};let c=this.updateTaskInTextNode(l,a,e);if(!c.success)return c;e.completed&&!a.completed&&(t=this.plugin.app)!=null&&t.workspace&&this.plugin.app.workspace.trigger("task-genius:task-completed",e);let u=JSON.stringify(s,null,2);return this.plugin.app&&ke(this.plugin.app,se.WRITE_OPERATION_START,{path:r.path,taskId:a.id}),await this.vault.modify(r,u),this.plugin.app&&ke(this.plugin.app,se.WRITE_OPERATION_COMPLETE,{path:r.path,taskId:a.id}),{success:!0,updatedContent:u}}catch(r){return{success:!1,error:`Error updating Canvas task: ${r.message}`}}}updateTaskInTextNode(a,e,t){try{let r=a.text.split(` `),i=!1,s=[...r];for(let o=0;o0&&(o=o.trim(),o=`${o} ${u.join(" ")}`),s&&!o.startsWith(s)&&(o=`${s}${o.trimStart()}`),o}buildMetadataArray(a,e,t){let r=[],i=h=>{if(!h)return;let g=new Date(h);return`${g.getFullYear()}-${String(g.getMonth()+1).padStart(2,"0")}-${String(g.getDate()).padStart(2,"0")}`},s=i(a.metadata.dueDate),o=i(a.metadata.startDate),l=i(a.metadata.scheduledDate),c=i(a.metadata.completedDate),u=h=>{var g;return((g=h.metadata.tgProject)==null?void 0:g.readonly)===!0};if(a.metadata.tags&&a.metadata.tags.length>0){let h=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",g=a.metadata.tags.filter(y=>!(typeof y!="string"||y.startsWith(`#${h}/`)||y.startsWith("@")&&a.metadata.context&&y===`@${a.metadata.context}`)),k=[...new Set(g)].map(y=>y.startsWith("#")?y:`#${y}`).filter(y=>y.length>1);k.length>0&&r.push(...k)}if(a.metadata.project&&!u(e))if(t){let g=`[${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}:: ${a.metadata.project}]`;r.includes(g)||r.push(g)}else{let g=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${a.metadata.project}`;r.includes(g)||r.push(g)}if(a.metadata.context)if(t){let g=`[${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context"}:: ${a.metadata.context}]`;r.includes(g)||r.push(g)}else{let h=`@${a.metadata.context}`;r.includes(h)||r.push(h)}if(a.metadata.priority)if(t){let h;switch(a.metadata.priority){case 5:h="highest";break;case 4:h="high";break;case 3:h="medium";break;case 2:h="low";break;case 1:h="lowest";break;default:h=a.metadata.priority}r.push(`[priority:: ${h}]`)}else{let h="";switch(a.metadata.priority){case 5:h="\u{1F53A}";break;case 4:h="\u23EB";break;case 3:h="\u{1F53C}";break;case 2:h="\u{1F53D}";break;case 1:h="\u23EC";break}h&&r.push(h)}let m=a.metadata.dependsOn,f;if(Array.isArray(m)?f=m.filter(h=>typeof h=="string"&&h.trim().length>0):typeof m=="string"&&(f=m.split(",").map(h=>h.trim()).filter(h=>h.length>0)),f&&f.length>0){let h=f.join(", ");r.push(t?`[dependsOn:: ${h}]`:`\u26D4 ${h}`)}return a.metadata.id&&r.push(t?`[id:: ${a.metadata.id}]`:`\u{1F194} ${a.metadata.id}`),a.metadata.onCompletion&&r.push(t?`[onCompletion:: ${a.metadata.onCompletion}]`:`\u{1F3C1} ${a.metadata.onCompletion}`),a.metadata.recurrence&&r.push(t?`[repeat:: ${a.metadata.recurrence}]`:`\u{1F501} ${a.metadata.recurrence}`),o&&(a.metadata.useAsDateType==="start"&&i(e.metadata.startDate)===o||r.push(t?`[start:: ${o}]`:`\u{1F6EB} ${o}`)),l&&(a.metadata.useAsDateType==="scheduled"&&i(e.metadata.scheduledDate)===l||r.push(t?`[scheduled:: ${l}]`:`\u23F3 ${l}`)),s&&(a.metadata.useAsDateType==="due"&&i(e.metadata.dueDate)===s||r.push(t?`[due:: ${s}]`:`\u{1F4C5} ${s}`)),c&&a.completed&&r.push(t?`[completion:: ${c}]`:`\u2705 ${c}`),r}removeExistingMetadata(a){let e=a;e=e.replace(/📅\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/🛫\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/⏳\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/➕\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/\[(?:due|🗓️)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\[(?:completion|✅)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\[(?:created|➕)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\[(?:start|🛫)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\[(?:scheduled|⏳)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\s+(🔼|🔽|⏫|⏬|🔺|\[#[A-C]\])/g,""),e=e.replace(/\[priority::\s*\w+\]/gi,""),e=e.replace(/🔁\s*[^\s]+/g,""),e=e.replace(/\[(?:repeat|recurrence)::\s*[^\]]+\]/gi,"");let t=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",r=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";return e=e.replace(new RegExp(`\\[${t}::\\s*[^\\]]+\\]`,"gi"),""),e=e.replace(new RegExp(`\\[${r}::\\s*[^\\]]+\\]`,"gi"),""),e=e.replace(/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,""),e=e.replace(/@[^\s@]+/g,""),e}async deleteCanvasTask(a,e=!1){try{let t=this.vault.getFileByPath(a.filePath);if(!t)return{success:!1,error:`Canvas file not found: ${a.filePath}`};let r=await this.vault.read(t),i=nn.parseCanvasJSON(r);if(!i)return{success:!1,error:"Failed to parse Canvas JSON"};let s=a.metadata.canvasNodeId;if(!s)return{success:!1,error:"Task does not have a Canvas node ID"};let o=nn.findTextNode(i,s);if(!o)return{success:!1,error:`Canvas text node not found: ${s}`};let l=this.deleteTaskFromTextNode(o,a,e);if(!l.success)return l;let c=JSON.stringify(i,null,2);return await this.vault.modify(t,c),{success:!0,updatedContent:c}}catch(t){return{success:!1,error:`Error deleting Canvas task: ${t.message}`}}}async moveCanvasTask(a,e,t,r){try{let i=a.originalMarkdown||this.formatTaskLine(a),s=await this.deleteCanvasTask(a);return s.success?await this.addTaskToCanvasNode(e,i,t,r):s}catch(i){return{success:!1,error:`Error moving Canvas task: ${i.message}`}}}async duplicateCanvasTask(a,e,t,r,i=!0){try{let s=a.originalMarkdown||this.formatTaskLine(a);s=s.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2"),i||(s=this.removeCompletionMetadata(s));let o=new Date().toISOString().split("T")[0];s+=` (duplicated ${o})`;let l=e||a.filePath;return await this.addTaskToCanvasNode(l,s,t,r)}catch(s){return{success:!1,error:`Error duplicating Canvas task: ${s.message}`}}}async addTaskToCanvasNode(a,e,t,r){try{let i=this.vault.getFileByPath(a);if(!i)return{success:!1,error:`Canvas file not found: ${a}`};let s=await this.vault.read(i),o=nn.parseCanvasJSON(s);if(!o)return{success:!1,error:"Failed to parse Canvas JSON"};let l;if(t){let p=o.nodes.find(m=>m.type==="text"&&m.id===t);if(!p)return{success:!1,error:`Target Canvas text node not found: ${t}`};l=p}else l=this.createNewTextNode(o),o.nodes.push(l);let c=this.addTaskToTextNode(l,e,r);if(!c.success)return c;let u=JSON.stringify(o,null,2);return await this.vault.modify(i,u),{success:!0,updatedContent:u}}catch(i){return{success:!1,error:`Error adding task to Canvas node: ${i.message}`}}}deleteTaskFromTextNode(a,e,t=!1){try{let r=a.text.split(` `),i=!1,s=[...r],o=-1;for(let c=0;cu&&l.push(p)}}l.sort((c,u)=>u-c);for(let c of l)s.splice(c,1);return a.text=s.join(` `),{success:!0}}catch(r){return{success:!1,error:`Error deleting task from text node: ${r.message}`}}}getIndentLevel(a){let e=a.match(/^(\s*)/);return e?e[1].length:0}addTaskToTextNode(a,e,t){try{let r=a.text.split(` `);if(t){let i=this.findSectionIndex(r,t);i>=0?r.splice(i+1,0,e):r.push(e)}else a.text.trim()?r.push(e):r[0]=e;return a.text=r.join(` `),{success:!0}}catch(r){return{success:!1,error:`Error adding task to text node: ${r.message}`}}}createNewTextNode(a){let e=`task-node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,t=a.nodes,r=0,i=0;return t.length>0&&(r=Math.max(...t.map(o=>o.x+o.width))+50),{type:"text",id:e,x:r,y:i,width:250,height:60,text:""}}findSectionIndex(a,e){for(let t=0;t{Nf=["MO","TU","WE","TH","FR","SA","SU"],ha=(function(){function n(a,e){if(e===0)throw new Error("Can't create weekday with n == 0");this.weekday=a,this.n=e}return n.fromStr=function(a){return new n(Nf.indexOf(a))},n.prototype.nth=function(a){return this.n===a?this:new n(this.weekday,a)},n.prototype.equals=function(a){return this.weekday===a.weekday&&this.n===a.n},n.prototype.toString=function(){var a=Nf[this.weekday];return this.n&&(a=(this.n>0?"+":"")+String(this.n)+a),a},n.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},n})()});function Bl(n,a,e){e===void 0&&(e=" ");var t=String(n);return a=a>>0,t.length>a?String(t):(a=a-t.length,a>e.length&&(e+=$e(e,a/e.length)),e.slice(0,a)+String(t))}var xt,ei,K0,Ua,Fi,$e,MB,IB,nr,cb,ti,ra,Ge,br=D(()=>{Hl();xt=function(n){return n!=null},ei=function(n){return typeof n=="number"},K0=function(n){return typeof n=="string"&&Nf.includes(n)},Ua=Array.isArray,Fi=function(n,a){a===void 0&&(a=n),arguments.length===1&&(a=n,n=0);for(var e=[],t=n;t{br();zn=function(n,a,e,t,r,i){return t===void 0&&(t=0),r===void 0&&(r=0),i===void 0&&(i=0),new Date(Date.UTC(n,a-1,e,t,r,i))},Q7=[31,28,31,30,31,30,31,31,30,31,30,31],FB=1e3*60*60*24,ub=9999,RB=zn(1970,1,1),X7=[6,0,1,2,3,4,5],Rc=function(n){return n%4===0&&n%100!==0||n%400===0},Q0=function(n){return n instanceof Date},Vl=function(n){return Q0(n)&&!isNaN(n.getTime())},J7=function(n,a){var e=n.getTime(),t=a.getTime(),r=e-t;return Math.round(r/FB)},Lf=function(n){return J7(n,RB)},pb=function(n){return new Date(RB.getTime()+n*FB)},Z7=function(n){var a=n.getUTCMonth();return a===1&&Rc(n.getUTCFullYear())?29:Q7[a]},Cs=function(n){return X7[n.getUTCDay()]},X0=function(n,a){var e=zn(n,a+1,1);return[Cs(e),Z7(e)]},mb=function(n,a){return a=a||n,new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()))},fb=function(n){var a=new Date(n.getTime());return a},J0=function(n){for(var a=[],e=0;e{e9=(function(){function n(a,e){this.minDate=null,this.maxDate=null,this._result=[],this.total=0,this.method=a,this.args=e,a==="between"?(this.maxDate=e.inc?e.before:new Date(e.before.getTime()-1),this.minDate=e.inc?e.after:new Date(e.after.getTime()+1)):a==="before"?this.maxDate=e.inc?e.dt:new Date(e.dt.getTime()-1):a==="after"&&(this.minDate=e.inc?e.dt:new Date(e.dt.getTime()+1))}return n.prototype.accept=function(a){++this.total;var e=this.minDate&&athis.maxDate;if(this.method==="between"){if(e)return!0;if(t)return!1}else if(this.method==="before"){if(t)return!1}else if(this.method==="after")return e?!0:(this.add(a),!1);return this.add(a)},n.prototype.add=function(a){return this._result.push(a),!0},n.prototype.getValue=function(){var a=this._result;switch(this.method){case"all":case"between":return a;case"before":case"after":default:return a.length?a[a.length-1]:null}},n.prototype.clone=function(){return new n(this.method,this.args)},n})(),Ds=e9});function Nc(n,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");Z0(n,a);function e(){this.constructor=n}n.prototype=a===null?Object.create(a):(e.prototype=a.prototype,new e)}function ie(n,a,e){if(e||arguments.length===2)for(var t=0,r=a.length,i;t{Z0=function(n,a){return Z0=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},Z0(n,a)};Ya=function(){return Ya=Object.assign||function(a){for(var e,t=1,r=arguments.length;t{Es();hb();t9=(function(n){Nc(a,n);function a(e,t,r){var i=n.call(this,e,t)||this;return i.iterator=r,i}return a.prototype.add=function(e){return this.iterator(e,this._result.length)?(this._result.push(e),!0):!1},a})(Ds),eS=t9});var a9,Wl,gb=D(()=>{a9={dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],tokens:{SKIP:/^[ \r\n\t]+|^\.$/,number:/^[1-9][0-9]*/,numberAsText:/^(one|two|three)/i,every:/^every/i,"day(s)":/^days?/i,"weekday(s)":/^weekdays?/i,"week(s)":/^weeks?/i,"hour(s)":/^hours?/i,"minute(s)":/^minutes?/i,"month(s)":/^months?/i,"year(s)":/^years?/i,on:/^(on|in)/i,at:/^(at)/i,the:/^the/i,first:/^first/i,second:/^second/i,third:/^third/i,nth:/^([1-9][0-9]*)(\.|th|nd|rd|st)/i,last:/^last/i,for:/^for/i,"time(s)":/^times?/i,until:/^(un)?til/i,monday:/^mo(n(day)?)?/i,tuesday:/^tu(e(s(day)?)?)?/i,wednesday:/^we(d(n(esday)?)?)?/i,thursday:/^th(u(r(sday)?)?)?/i,friday:/^fr(i(day)?)?/i,saturday:/^sa(t(urday)?)?/i,sunday:/^su(n(day)?)?/i,january:/^jan(uary)?/i,february:/^feb(ruary)?/i,march:/^mar(ch)?/i,april:/^apr(il)?/i,may:/^may/i,june:/^june?/i,july:/^july?/i,august:/^aug(ust)?/i,september:/^sep(t(ember)?)?/i,october:/^oct(ober)?/i,november:/^nov(ember)?/i,december:/^dec(ember)?/i,comma:/^(,\s*|(and|or)\s*)+/i}},Wl=a9});var LB,r9,i9,n9,$n,jB=D(()=>{gb();Ri();br();LB=function(n,a){return n.indexOf(a)!==-1},r9=function(n){return n.toString()},i9=function(n,a,e){return"".concat(a," ").concat(e,", ").concat(n)},n9=(function(){function n(a,e,t,r){if(e===void 0&&(e=r9),t===void 0&&(t=Wl),r===void 0&&(r=i9),this.text=[],this.language=t||Wl,this.gettext=e,this.dateFormatter=r,this.rrule=a,this.options=a.options,this.origOptions=a.origOptions,this.origOptions.bymonthday){var i=[].concat(this.options.bymonthday),s=[].concat(this.options.bynmonthday);i.sort(function(u,p){return u-p}),s.sort(function(u,p){return p-u}),this.bymonthday=i.concat(s),this.bymonthday.length||(this.bymonthday=null)}if(xt(this.origOptions.byweekday)){var o=Ua(this.origOptions.byweekday)?this.origOptions.byweekday:[this.origOptions.byweekday],l=String(o);this.byweekday={allWeeks:o.filter(function(u){return!u.n}),someWeeks:o.filter(function(u){return!!u.n}),isWeekdays:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")===-1&&l.indexOf("SU")===-1,isEveryDay:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")!==-1&&l.indexOf("SU")!==-1};var c=function(u,p){return u.weekday-p.weekday};this.byweekday.allWeeks.sort(c),this.byweekday.someWeeks.sort(c),this.byweekday.allWeeks.length||(this.byweekday.allWeeks=null),this.byweekday.someWeeks.length||(this.byweekday.someWeeks=null)}else this.byweekday=null}return n.isFullyConvertible=function(a){var e=!0;if(!(a.options.freq in n.IMPLEMENTED)||a.origOptions.until&&a.origOptions.count)return!1;for(var t in a.origOptions){if(LB(["dtstart","tzid","wkst","freq"],t))return!0;if(!LB(n.IMPLEMENTED[a.options.freq],t))return!1}return e},n.prototype.isFullyConvertible=function(){return n.isFullyConvertible(this.rrule)},n.prototype.toString=function(){var a=this.gettext;if(!(this.options.freq in n.IMPLEMENTED))return a("RRule error: Unable to fully convert this rrule to text");if(this.text=[a("every")],this[ye.FREQUENCIES[this.options.freq]](),this.options.until){this.add(a("until"));var e=this.options.until;this.add(this.dateFormatter(e.getUTCFullYear(),this.language.monthNames[e.getUTCMonth()],e.getUTCDate()))}else this.options.count&&this.add(a("for")).add(this.options.count.toString()).add(this.plural(this.options.count)?a("times"):a("time"));return this.isFullyConvertible()||this.add(a("(~ approximate)")),this.text.join("")},n.prototype.HOURLY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("hours"):a("hour"))},n.prototype.MINUTELY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("minutes"):a("minute"))},n.prototype.DAILY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.byweekday&&this.byweekday.isWeekdays?this.add(this.plural(this.options.interval)?a("weekdays"):a("weekday")):this.add(this.plural(this.options.interval)?a("days"):a("day")),this.origOptions.bymonth&&(this.add(a("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday?this._byweekday():this.origOptions.byhour&&this._byhour()},n.prototype.WEEKLY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()).add(this.plural(this.options.interval)?a("weeks"):a("week")),this.byweekday&&this.byweekday.isWeekdays?this.options.interval===1?this.add(this.plural(this.options.interval)?a("weekdays"):a("weekday")):this.add(a("on")).add(a("weekdays")):this.byweekday&&this.byweekday.isEveryDay?this.add(this.plural(this.options.interval)?a("days"):a("day")):(this.options.interval===1&&this.add(a("week")),this.origOptions.bymonth&&(this.add(a("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.origOptions.byhour&&this._byhour())},n.prototype.MONTHLY=function(){var a=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()).add(a("months")),this.plural(this.options.interval)&&this.add(a("in"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("months"):a("month"))),this.bymonthday?this._bymonthday():this.byweekday&&this.byweekday.isWeekdays?this.add(a("on")).add(a("weekdays")):this.byweekday&&this._byweekday()},n.prototype.YEARLY=function(){var a=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()),this.add(a("years"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("years"):a("year"))),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.options.byyearday&&this.add(a("on the")).add(this.list(this.options.byyearday,this.nth,a("and"))).add(a("day")),this.options.byweekno&&this.add(a("in")).add(this.plural(this.options.byweekno.length)?a("weeks"):a("week")).add(this.list(this.options.byweekno,void 0,a("and")))},n.prototype._bymonthday=function(){var a=this.gettext;this.byweekday&&this.byweekday.allWeeks?this.add(a("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext,a("or"))).add(a("the")).add(this.list(this.bymonthday,this.nth,a("or"))):this.add(a("on the")).add(this.list(this.bymonthday,this.nth,a("and")))},n.prototype._byweekday=function(){var a=this.gettext;this.byweekday.allWeeks&&!this.byweekday.isWeekdays&&this.add(a("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext)),this.byweekday.someWeeks&&(this.byweekday.allWeeks&&this.add(a("and")),this.add(a("on the")).add(this.list(this.byweekday.someWeeks,this.weekdaytext,a("and"))))},n.prototype._byhour=function(){var a=this.gettext;this.add(a("at")).add(this.list(this.origOptions.byhour,void 0,a("and")))},n.prototype._bymonth=function(){this.add(this.list(this.options.bymonth,this.monthtext,this.gettext("and")))},n.prototype.nth=function(a){a=parseInt(a.toString(),10);var e,t=this.gettext;if(a===-1)return t("last");var r=Math.abs(a);switch(r){case 1:case 21:case 31:e=r+t("st");break;case 2:case 22:e=r+t("nd");break;case 3:case 23:e=r+t("rd");break;default:e=r+t("th")}return a<0?e+" "+t("last"):e},n.prototype.monthtext=function(a){return this.language.monthNames[a-1]},n.prototype.weekdaytext=function(a){var e=ei(a)?(a+1)%7:a.getJsWeekday();return(a.n?this.nth(a.n)+" ":"")+this.language.dayNames[e]},n.prototype.plural=function(a){return a%100!==1},n.prototype.add=function(a){return this.text.push(" "),this.text.push(a),this},n.prototype.list=function(a,e,t,r){var i=this;r===void 0&&(r=","),Ua(a)||(a=[a]);var s=function(l,c,u){for(var p="",m=0;m366)throw new Error("Nth out of range: "+m);return t.nextSymbol(),t.accept("last")?-m:m;default:return!1}}function u(){t.accept("on"),t.accept("the");var m=c();if(m)for(e.bymonthday=[m],t.nextSymbol();t.accept("comma");){if(m=c(),!m)throw new Error("Unexpected symbol "+t.symbol+"; expected monthday");e.bymonthday.push(m),t.nextSymbol()}}function p(){if(t.symbol==="until"){var m=Date.parse(t.text);if(!m)throw new Error("Cannot parse until date:"+t.text);e.until=new Date(m)}else t.accept("for")&&(e.count=parseInt(t.value[0],10),t.expect("number"))}}var s9,HB=D(()=>{gb();Ri();s9=(function(){function n(a){this.done=!0,this.rules=a}return n.prototype.start=function(a){return this.text=a,this.done=!1,this.nextSymbol()},n.prototype.isDone=function(){return this.done&&this.symbol===null},n.prototype.nextSymbol=function(){var a,e;this.symbol=null,this.value=null;do{if(this.done)return!1;var t=void 0;a=null;for(var r in this.rules){t=this.rules[r];var i=t.exec(this.text);i&&(a===null||i[0].length>a[0].length)&&(a=i,e=r)}if(a!=null&&(this.text=this.text.substr(a[0].length),this.text===""&&(this.done=!0)),a==null){this.done=!0,this.symbol=null,this.value=null;return}}while(e==="SKIP");return this.symbol=e,this.value=a,!0},n.prototype.accept=function(a){if(this.symbol===a){if(this.value){var e=this.value;return this.nextSymbol(),e}return this.nextSymbol(),!0}return!1},n.prototype.acceptNumber=function(){return this.accept("number")},n.prototype.expect=function(a){if(this.accept(a))return!0;throw new Error("expected "+a+" but found "+this.symbol)},n})()});function Bf(n){return n{(function(n){n[n.YEARLY=0]="YEARLY",n[n.MONTHLY=1]="MONTHLY",n[n.WEEKLY=2]="WEEKLY",n[n.DAILY=3]="DAILY",n[n.HOURLY=4]="HOURLY",n[n.MINUTELY=5]="MINUTELY",n[n.SECONDLY=6]="SECONDLY"})(He||(He={}))});var BB,Lc,VB,WB,zB=D(()=>{jB();HB();Ri();Ps();gb();BB=function(n,a){return a===void 0&&(a=Wl),new ye(Hf(n,a)||void 0)},Lc=["count","until","interval","byweekday","bymonthday","bymonth"];$n.IMPLEMENTED=[];$n.IMPLEMENTED[He.HOURLY]=Lc;$n.IMPLEMENTED[He.MINUTELY]=Lc;$n.IMPLEMENTED[He.DAILY]=["byhour"].concat(Lc);$n.IMPLEMENTED[He.WEEKLY]=Lc;$n.IMPLEMENTED[He.MONTHLY]=Lc;$n.IMPLEMENTED[He.YEARLY]=["byweekno","byyearday"].concat(Lc);VB=function(n,a,e,t){return new $n(n,a,e,t).toString()},WB=$n.isFullyConvertible});var jc,$B,kb=D(()=>{Es();Ps();br();sr();jc=(function(){function n(a,e,t,r){this.hour=a,this.minute=e,this.second=t,this.millisecond=r||0}return n.prototype.getHours=function(){return this.hour},n.prototype.getMinutes=function(){return this.minute},n.prototype.getSeconds=function(){return this.second},n.prototype.getMilliseconds=function(){return this.millisecond},n.prototype.getTime=function(){return(this.hour*60*60+this.minute*60+this.second)*1e3+this.millisecond},n})(),$B=(function(n){Nc(a,n);function a(e,t,r,i,s,o,l){var c=n.call(this,i,s,o,l)||this;return c.year=e,c.month=t,c.day=r,c}return a.fromDate=function(e){return new this(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.valueOf()%1e3)},a.prototype.getWeekday=function(){return Cs(new Date(this.getTime()))},a.prototype.getTime=function(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond)).getTime()},a.prototype.getDay=function(){return this.day},a.prototype.getMonth=function(){return this.month},a.prototype.getYear=function(){return this.year},a.prototype.addYears=function(e){this.year+=e},a.prototype.addMonths=function(e){if(this.month+=e,this.month>12){var t=Math.floor(this.month/12),r=nr(this.month,12);this.month=r,this.year+=t,this.month===0&&(this.month=12,--this.year)}},a.prototype.addWeekly=function(e,t){t>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-t))+e*7:this.day+=-(this.getWeekday()-t)+e*7,this.fixDay()},a.prototype.addDaily=function(e){this.day+=e,this.fixDay()},a.prototype.addHours=function(e,t,r){for(t&&(this.hour+=Math.floor((23-this.hour)/e)*e);;){this.hour+=e;var i=cb(this.hour,24),s=i.div,o=i.mod;if(s&&(this.hour=o,this.addDaily(s)),ti(r)||Ge(r,this.hour))break}},a.prototype.addMinutes=function(e,t,r,i){for(t&&(this.minute+=Math.floor((1439-(this.hour*60+this.minute))/e)*e);;){this.minute+=e;var s=cb(this.minute,60),o=s.div,l=s.mod;if(o&&(this.minute=l,this.addHours(o,!1,r)),(ti(r)||Ge(r,this.hour))&&(ti(i)||Ge(i,this.minute)))break}},a.prototype.addSeconds=function(e,t,r,i,s){for(t&&(this.second+=Math.floor((86399-(this.hour*3600+this.minute*60+this.second))/e)*e);;){this.second+=e;var o=cb(this.second,60),l=o.div,c=o.mod;if(l&&(this.second=c,this.addMinutes(l,!1,r,i)),(ti(r)||Ge(r,this.hour))&&(ti(i)||Ge(i,this.minute))&&(ti(s)||Ge(s,this.second)))break}},a.prototype.fixDay=function(){if(!(this.day<=28)){var e=X0(this.year,this.month-1)[1];if(!(this.day<=e))for(;this.day>e;){if(this.day-=e,++this.month,this.month===13&&(this.month=1,++this.year,this.year>ub))return;e=X0(this.year,this.month-1)[1]}}},a.prototype.add=function(e,t){var r=e.freq,i=e.interval,s=e.wkst,o=e.byhour,l=e.byminute,c=e.bysecond;switch(r){case He.YEARLY:return this.addYears(i);case He.MONTHLY:return this.addMonths(i);case He.WEEKLY:return this.addWeekly(i,s);case He.DAILY:return this.addDaily(i);case He.HOURLY:return this.addHours(i,t,o);case He.MINUTELY:return this.addMinutes(i,t,o,l);case He.SECONDLY:return this.addSeconds(i,t,o,l,c)}},a})(jc)});function tS(n){for(var a=[],e=Object.keys(n),t=0,r=e;t=-366&&t<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}}if(!(a.byweekno||ra(a.byweekno)||ra(a.byyearday)||a.bymonthday||ra(a.bymonthday)||xt(a.byweekday)||xt(a.byeaster)))switch(a.freq){case ye.YEARLY:a.bymonth||(a.bymonth=a.dtstart.getUTCMonth()+1),a.bymonthday=a.dtstart.getUTCDate();break;case ye.MONTHLY:a.bymonthday=a.dtstart.getUTCDate();break;case ye.WEEKLY:a.byweekday=[Cs(a.dtstart)];break}if(xt(a.bymonth)&&!Ua(a.bymonth)&&(a.bymonth=[a.bymonth]),xt(a.byyearday)&&!Ua(a.byyearday)&&ei(a.byyearday)&&(a.byyearday=[a.byyearday]),!xt(a.bymonthday))a.bymonthday=[],a.bynmonthday=[];else if(Ua(a.bymonthday)){for(var r=[],i=[],e=0;e0?r.push(t):t<0&&i.push(t)}a.bymonthday=r,a.bynmonthday=i}else a.bymonthday<0?(a.bynmonthday=[a.bymonthday],a.bymonthday=[]):(a.bynmonthday=[],a.bymonthday=[a.bymonthday]);if(xt(a.byweekno)&&!Ua(a.byweekno)&&(a.byweekno=[a.byweekno]),!xt(a.byweekday))a.bynweekday=null;else if(ei(a.byweekday))a.byweekday=[a.byweekday],a.bynweekday=null;else if(K0(a.byweekday))a.byweekday=[ha.fromStr(a.byweekday).weekday],a.bynweekday=null;else if(a.byweekday instanceof ha)!a.byweekday.n||a.freq>ye.MONTHLY?(a.byweekday=[a.byweekday.weekday],a.bynweekday=null):(a.bynweekday=[[a.byweekday.weekday,a.byweekday.n]],a.byweekday=null);else{for(var s=[],o=[],e=0;eye.MONTHLY?s.push(l.weekday):o.push([l.weekday,l.n])}a.byweekday=ra(s)?s:null,a.bynweekday=ra(o)?o:null}return xt(a.byhour)?ei(a.byhour)&&(a.byhour=[a.byhour]):a.byhour=a.freq{Es();Ps();br();Ri();sr();Hl();kb()});function zf(n){var a=n.split(` `).map(o9).filter(function(e){return e!==null});return Ya(Ya({},a[0]),a[1])}function Wf(n){var a={},e=/DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(n);if(!e)return a;var t=e[1],r=e[2];return t&&(a.tzid=t),a.dtstart=jf(r),a}function o9(n){if(n=n.replace(/^\s+|\s+$/,""),!n.length)return null;var a=/^([A-Z]+?)[:;]/.exec(n.toUpperCase());if(!a)return qB(n);var e=a[1];switch(e.toUpperCase()){case"RRULE":case"EXRULE":return qB(n);case"DTSTART":return Wf(n);default:throw new Error("Unsupported RFC prop ".concat(e," in ").concat(n))}}function qB(n){var a=n.replace(/^RRULE:/i,""),e=Wf(a),t=n.replace(/^(?:RRULE|EXRULE):/i,"").split(";");return t.forEach(function(r){var i=r.split("="),s=i[0],o=i[1];switch(s.toUpperCase()){case"FREQ":e.freq=He[o.toUpperCase()];break;case"WKST":e.wkst=Oi[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=l9(o),c=s.toLowerCase();e[c]=l;break;case"BYWEEKDAY":case"BYDAY":e.byweekday=d9(o);break;case"DTSTART":case"TZID":var u=Wf(n);e.tzid=u.tzid,e.dtstart=u.dtstart;break;case"UNTIL":e.until=jf(o);break;case"BYEASTER":e.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+s+"'")}}),e}function l9(n){if(n.indexOf(",")!==-1){var a=n.split(",");return a.map(GB)}return GB(n)}function GB(n){return/^[+-]?\d+$/.test(n)?Number(n):n}function d9(n){var a=n.split(",");return a.map(function(e){if(e.length===2)return Oi[e];var t=e.match(/^([+-]?\d{1,2})([A-Z]{2})$/);if(!t||t.length<3)throw new SyntaxError("Invalid weekday string: ".concat(e));var r=Number(t[1]),i=t[2],s=Oi[i].weekday;return new ha(s,r)})}var rS=D(()=>{Es();Ps();Hl();sr();Ri()});var zl,yb=D(()=>{sr();zl=(function(){function n(a,e){if(isNaN(a.getTime()))throw new RangeError("Invalid date passed to DateWithZone");this.date=a,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 a=Oc(this.date.getTime(),this.isUTC);return this.isUTC?":".concat(a):";TZID=".concat(this.tzid,":").concat(a)},n.prototype.getTime=function(){return this.date.getTime()},n.prototype.rezonedDate=function(){return this.isUTC?this.date:OB(this.date,this.tzid)},n})()});function $f(n){for(var a=[],e="",t=Object.keys(n),r=Object.keys(Vf),i=0;i{Ri();br();Hl();sr();yb()});function u9(n,a){return Array.isArray(n)?!Array.isArray(a)||n.length!==a.length?!1:n.every(function(e,t){return e.getTime()===a[t].getTime()}):n instanceof Date?a instanceof Date&&n.getTime()===a.getTime():n===a}var KB,QB=D(()=>{hb();sr();br();KB=(function(){function n(){this.all=!1,this.before=[],this.after=[],this.between=[]}return n.prototype._cacheAdd=function(a,e,t){e&&(e=e instanceof Date?fb(e):J0(e)),a==="all"?this.all=e:(t._value=e,this[a].push(t))},n.prototype._cacheGet=function(a,e){var t=!1,r=e?Object.keys(e):[],i=function(u){for(var p=0;p{Es();br();XB=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],$e(1,31),!0),$e(2,28),!0),$e(3,31),!0),$e(4,30),!0),$e(5,31),!0),$e(6,30),!0),$e(7,31),!0),$e(8,31),!0),$e(9,30),!0),$e(10,31),!0),$e(11,30),!0),$e(12,31),!0),$e(1,7),!0),JB=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],$e(1,31),!0),$e(2,29),!0),$e(3,31),!0),$e(4,30),!0),$e(5,31),!0),$e(6,30),!0),$e(7,31),!0),$e(8,31),!0),$e(9,30),!0),$e(10,31),!0),$e(11,30),!0),$e(12,31),!0),$e(1,7),!0),p9=Fi(1,29),m9=Fi(1,30),So=Fi(1,31),or=Fi(1,32),ZB=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],or,!0),m9,!0),or,!0),So,!0),or,!0),So,!0),or,!0),or,!0),So,!0),or,!0),So,!0),or,!0),or.slice(0,7),!0),e4=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],or,!0),p9,!0),or,!0),So,!0),or,!0),So,!0),or,!0),or,!0),So,!0),or,!0),So,!0),or,!0),or.slice(0,7),!0),f9=Fi(-28,0),h9=Fi(-29,0),Do=Fi(-30,0),lr=Fi(-31,0),t4=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],lr,!0),h9,!0),lr,!0),Do,!0),lr,!0),Do,!0),lr,!0),lr,!0),Do,!0),lr,!0),Do,!0),lr,!0),lr.slice(0,7),!0),a4=ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie(ie([],lr,!0),f9,!0),lr,!0),Do,!0),lr,!0),Do,!0),lr,!0),lr,!0),Do,!0),lr,!0),Do,!0),lr,!0),lr.slice(0,7),!0),r4=[0,31,60,91,121,152,182,213,244,274,305,335,366],i4=[0,31,59,90,120,151,181,212,243,273,304,334,365],nS=(function(){for(var n=[],a=0;a<55;a++)n=n.concat(Fi(7));return n})()});function s4(n,a){var e=zn(n,1,1),t=Rc(n)?366:365,r=Rc(n+1)?366:365,i=Lf(e),s=Cs(e),o=Ya(Ya({yearlen:t,nextyearlen:r,yearordinal:i,yearweekday:s},g9(n)),{wnomask:null});if(ti(a.byweekno))return o;o.wnomask=$e(0,t+7);var l,c,u=l=nr(7-s+a.wkst,7);u>=4?(u=0,c=o.yearlen+nr(s-a.wkst,7)):c=t-u;for(var p=Math.floor(c/7),m=nr(c,7),f=Math.floor(p+m/4),h=0;h0&&g<=f){var k=void 0;g>1?(k=u+(g-1)*7,u!==l&&(k-=7-l)):k=u;for(var y=0;y<7&&(o.wnomask[k]=1,k++,o.wdaymask[k]!==a.wkst);y++);}}if(Ge(a.byweekno,1)){var k=u+f*7;if(u!==l&&(k-=7-l),k=4?(w=0,T=x+nr(v-a.wkst,7)):T=t-u,b=Math.floor(52+nr(T,7)/4)}if(Ge(a.byweekno,b))for(var k=0;k{Es();sr();br();n4()});function l4(n,a,e,t,r,i){var s={lastyear:n,lastmonth:a,nwdaymask:[]},o=[];if(i.freq===ye.YEARLY)if(ti(i.bymonth))o=[[0,e]];else for(var l=0;l{Ri();br()});function c4(n,a){a===void 0&&(a=0);var e=n%19,t=Math.floor(n/100),r=n%100,i=Math.floor(t/4),s=t%4,o=Math.floor((t+8)/25),l=Math.floor((t-o+1)/3),c=Math.floor(19*e+t-i-l+15)%30,u=Math.floor(r/4),p=r%4,m=Math.floor(32+2*s+2*u-c-p)%7,f=Math.floor((e+11*c+22*m)/451),h=Math.floor((c+m-7*f+114)/31),g=(c+m-7*f+114)%31+1,k=Date.UTC(n,h-1,g+a),y=Date.UTC(n,0,1);return[Math.ceil((k-y)/(1e3*60*60*24))]}var u4=D(()=>{});var k9,p4,m4=D(()=>{br();Ps();o4();d4();u4();kb();sr();k9=(function(){function n(a){this.options=a}return n.prototype.rebuild=function(a,e){var t=this.options;if(a!==this.lastyear&&(this.yearinfo=s4(a,t)),ra(t.bynweekday)&&(e!==this.lastmonth||a!==this.lastyear)){var r=this.yearinfo,i=r.yearlen,s=r.mrange,o=r.wdaymask;this.monthinfo=l4(a,e,i,s,o,t)}xt(t.byeaster)&&(this.eastermask=c4(a,t.byeaster))},Object.defineProperty(n.prototype,"lastyear",{get:function(){return this.monthinfo?this.monthinfo.lastyear:null},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"lastmonth",{get:function(){return this.monthinfo?this.monthinfo.lastmonth:null},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"yearlen",{get:function(){return this.yearinfo.yearlen},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"yearordinal",{get:function(){return this.yearinfo.yearordinal},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mrange",{get:function(){return this.yearinfo.mrange},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"wdaymask",{get:function(){return this.yearinfo.wdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mmask",{get:function(){return this.yearinfo.mmask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"wnomask",{get:function(){return this.yearinfo.wnomask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nwdaymask",{get:function(){return this.monthinfo?this.monthinfo.nwdaymask:[]},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nextyearlen",{get:function(){return this.yearinfo.nextyearlen},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mdaymask",{get:function(){return this.yearinfo.mdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nmdaymask",{get:function(){return this.yearinfo.nmdaymask},enumerable:!1,configurable:!0}),n.prototype.ydayset=function(){return[Fi(this.yearlen),0,this.yearlen]},n.prototype.mdayset=function(a,e){for(var t=this.mrange[e-1],r=this.mrange[e],i=$e(null,this.yearlen),s=t;s{sr();br()});function vb(n,a){var e=a.dtstart,t=a.freq,r=a.interval,i=a.until,s=a.bysetpos,o=a.count;if(o===0||r===0)return Ms(n);var l=$B.fromDate(e),c=new p4(a);c.rebuild(l.year,l.month);for(var u=b9(c,l,a);;){var p=c.getdayset(t)(l.year,l.month,l.day),m=p[0],f=p[1],h=p[2],g=v9(m,f,h,c,a);if(ra(s))for(var k=f4(s,u,f,h,c,m),y=0;yi)return Ms(n);if(b>=e){var v=g4(b,a);if(!n.accept(v)||o&&(--o,!o))return Ms(n)}}else for(var y=f;yi)return Ms(n);if(b>=e){var v=g4(b,a);if(!n.accept(v)||o&&(--o,!o))return Ms(n)}}}if(a.interval===0||(l.add(a,g),l.year>ub))return Ms(n);Bf(t)||(u=c.gettimeset(t)(l.hour,l.minute,l.second,0)),c.rebuild(l.year,l.month)}}function y9(n,a,e){var t=e.bymonth,r=e.byweekno,i=e.byweekday,s=e.byeaster,o=e.bymonthday,l=e.bynmonthday,c=e.byyearday;return ra(t)&&!Ge(t,n.mmask[a])||ra(r)&&!n.wnomask[a]||ra(i)&&!Ge(i,n.wdaymask[a])||ra(n.nwdaymask)&&!n.nwdaymask[a]||s!==null&&!Ge(n.eastermask,a)||(ra(o)||ra(l))&&!Ge(o,n.mdaymask[a])&&!Ge(l,n.nmdaymask[a])||ra(c)&&(a=n.yearlen&&!Ge(c,a+1-n.yearlen)&&!Ge(c,-n.nextyearlen+a-n.yearlen))}function g4(n,a){return new zl(n,a.tzid).rezonedDate()}function Ms(n){return n.getValue()}function v9(n,a,e,t,r){for(var i=!1,s=a;s=ye.HOURLY&&ra(r)&&!Ge(r,a.hour)||t>=ye.MINUTELY&&ra(i)&&!Ge(i,a.minute)||t>=ye.SECONDLY&&ra(s)&&!Ge(s,a.second)?[]:n.gettimeset(t)(a.hour,a.minute,a.second,a.millisecond)}var sS=D(()=>{Ps();sr();m4();Ri();aS();br();yb();h4();kb()});var Oi,Vf,YB,ye,Ri=D(()=>{sr();hb();NB();zB();Ps();aS();rS();iS();QB();Hl();sS();Oi={MO:new ha(0),TU:new ha(1),WE:new ha(2),TH:new ha(3),FR:new ha(4),SA:new ha(5),SU:new ha(6)},Vf={freq:He.YEARLY,dtstart:null,interval:1,wkst:Oi.MO,count:null,until:null,tzid:null,bysetpos:null,bymonth:null,bymonthday:null,bynmonthday:null,byyearday:null,byweekno:null,byweekday:null,bynweekday:null,byhour:null,byminute:null,bysecond:null,byeaster:null},YB=Object.keys(Vf),ye=(function(){function n(a,e){a===void 0&&(a={}),e===void 0&&(e=!1),this._cache=e?null:new KB,this.origOptions=tS(a);var t=_B(a).parsedOptions;this.options=t}return n.parseText=function(a,e){return Hf(a,e)},n.fromText=function(a,e){return BB(a,e)},n.fromString=function(a){return new n(n.parseString(a)||void 0)},n.prototype._iter=function(a){return vb(a,this.options)},n.prototype._cacheGet=function(a,e){return this._cache?this._cache._cacheGet(a,e):!1},n.prototype._cacheAdd=function(a,e,t){if(this._cache)return this._cache._cacheAdd(a,e,t)},n.prototype.all=function(a){if(a)return this._iter(new eS("all",{},a));var e=this._cacheGet("all");return e===!1&&(e=this._iter(new Ds("all",{})),this._cacheAdd("all",e)),e},n.prototype.between=function(a,e,t,r){if(t===void 0&&(t=!1),!Vl(a)||!Vl(e))throw new Error("Invalid date passed in to RRule.between");var i={before:e,after:a,inc:t};if(r)return this._iter(new eS("between",i,r));var s=this._cacheGet("between",i);return s===!1&&(s=this._iter(new Ds("between",i)),this._cacheAdd("between",s,i)),s},n.prototype.before=function(a,e){if(e===void 0&&(e=!1),!Vl(a))throw new Error("Invalid date passed in to RRule.before");var t={dt:a,inc:e},r=this._cacheGet("before",t);return r===!1&&(r=this._iter(new Ds("before",t)),this._cacheAdd("before",r,t)),r},n.prototype.after=function(a,e){if(e===void 0&&(e=!1),!Vl(a))throw new Error("Invalid date passed in to RRule.after");var t={dt:a,inc:e},r=this._cacheGet("after",t);return r===!1&&(r=this._iter(new Ds("after",t)),this._cacheAdd("after",r,t)),r},n.prototype.count=function(){return this.all().length},n.prototype.toString=function(){return $f(this.origOptions)},n.prototype.toText=function(a,e,t){return VB(this,a,e,t)},n.prototype.isFullyConvertibleToText=function(){return WB(this)},n.prototype.clone=function(){return new n(this.origOptions)},n.FREQUENCIES=["YEARLY","MONTHLY","WEEKLY","DAILY","HOURLY","MINUTELY","SECONDLY"],n.YEARLY=He.YEARLY,n.MONTHLY=He.MONTHLY,n.WEEKLY=He.WEEKLY,n.DAILY=He.DAILY,n.HOURLY=He.HOURLY,n.MINUTELY=He.MINUTELY,n.SECONDLY=He.SECONDLY,n.MO=Oi.MO,n.TU=Oi.TU,n.WE=Oi.WE,n.TH=Oi.TH,n.FR=Oi.FR,n.SA=Oi.SA,n.SU=Oi.SU,n.parseString=zf,n.optionsToString=$f,n})()});function k4(n,a,e,t,r,i){var s={},o=n.accept;function l(m,f){e.forEach(function(h){h.between(m,f,!0).forEach(function(g){s[Number(g)]=!0})})}r.forEach(function(m){var f=new zl(m,i).rezonedDate();s[Number(f)]=!0}),n.accept=function(m){var f=Number(m);return isNaN(f)?o.call(this,m):!s[f]&&(l(new Date(f-1),new Date(f+1)),!s[f])?(s[f]=!0,o.call(this,m)):!0},n.method==="between"&&(l(n.args.after,n.args.before),n.accept=function(m){var f=Number(m);return s[f]?!0:(s[f]=!0,o.call(this,m))});for(var c=0;c{yb();sS();sr()});function w9(n,a){var e=[],t=[],r=[],i=[],s=Wf(n),o=s.dtstart,l=s.tzid,c=D9(n,a.unfold);return c.forEach(function(u){var p;if(u){var m=S9(u),f=m.name,h=m.parms,g=m.value;switch(f.toUpperCase()){case"RRULE":if(h.length)throw new Error("unsupported RRULE parm: ".concat(h.join(",")));e.push(zf(u));break;case"RDATE":var k=(p=/RDATE(?:;TZID=([^:=]+))?/i.exec(u))!==null&&p!==void 0?p:[],y=k[1];y&&!l&&(l=y),t=t.concat(b4(g,h));break;case"EXRULE":if(h.length)throw new Error("unsupported EXRULE parm: ".concat(h.join(",")));r.push(zf(g));break;case"EXDATE":i=i.concat(b4(g,h));break;case"DTSTART":break;default:throw new Error("unsupported property: "+f)}}}),{dtstart:o,tzid:l,rrulevals:e,rdatevals:t,exrulevals:r,exdatevals:i}}function T9(n,a){var e=w9(n,a),t=e.rrulevals,r=e.rdatevals,i=e.exrulevals,s=e.exdatevals,o=e.dtstart,l=e.tzid,c=a.cache===!1;if(a.compatible&&(a.forceset=!0,a.unfold=!0),a.forceset||t.length>1||r.length||i.length||s.length){var u=new dS(c);return u.dtstart(o),u.tzid(l||void 0),t.forEach(function(m){u.rrule(new ye(oS(m,o,l),c))}),r.forEach(function(m){u.rdate(m)}),i.forEach(function(m){u.exrule(new ye(oS(m,o,l),c))}),s.forEach(function(m){u.exdate(m)}),a.compatible&&a.dtstart&&u.rdate(o),u}var p=t[0]||{};return new ye(oS(p,p.dtstart||a.dtstart||o,p.tzid||a.tzid||l),c)}function Hc(n,a){return a===void 0&&(a={}),T9(n,x9(a))}function oS(n,a,e){return Ya(Ya({},n),{dtstart:a,tzid:e})}function x9(n){var a=[],e=Object.keys(n),t=Object.keys(v4);if(e.forEach(function(r){Ge(t,r)||a.push(r)}),a.length)throw new Error("Invalid options: "+a.join(", "));return Ya(Ya({},v4),n)}function C9(n){if(n.indexOf(":")===-1)return{name:"RRULE",value:n};var a=IB(n,":",1),e=a[0],t=a[1];return{name:e,value:t}}function S9(n){var a=C9(n),e=a.name,t=a.value,r=e.split(";");if(!r)throw new Error("empty property name");return{name:r[0].toUpperCase(),parms:r.slice(1),value:t}}function D9(n,a){if(a===void 0&&(a=!1),n=n&&n.trim(),!n)throw new Error("Invalid empty string");if(!a)return n.split(/\s/);for(var e=n.split(` `),t=0;t0&&r[0]===" "?(e[t-1]+=r.slice(1),e.splice(t,1)):t+=1:e.splice(t,1)}return e}function E9(n){n.forEach(function(a){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(a))throw new Error("unsupported RDATE/EXDATE parm: "+a)})}function b4(n,a){return E9(a),n.split(",").map(function(e){return jf(e)})}var v4,lS=D(()=>{Es();Ri();cS();sr();br();rS();v4={dtstart:null,cache:!1,unfold:!1,forceset:!1,compatible:!1,tzid:null}});function w4(n){var a=this;return function(e){if(e!==void 0&&(a["_".concat(n)]=e),a["_".concat(n)]!==void 0)return a["_".concat(n)];for(var t=0;t{Es();Ri();sr();br();y4();lS();iS();dS=(function(n){Nc(a,n);function a(e){e===void 0&&(e=!1);var t=n.call(this,{},e)||this;return t.dtstart=w4.apply(t,["dtstart"]),t.tzid=w4.apply(t,["tzid"]),t._rrule=[],t._rdate=[],t._exrule=[],t._exdate=[],t}return a.prototype._iter=function(e){return k4(e,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},a.prototype.rrule=function(e){T4(e,this._rrule)},a.prototype.exrule=function(e){T4(e,this._exrule)},a.prototype.rdate=function(e){x4(e,this._rdate)},a.prototype.exdate=function(e){x4(e,this._exdate)},a.prototype.rrules=function(){return this._rrule.map(function(e){return Hc(e.toString())})},a.prototype.exrules=function(){return this._exrule.map(function(e){return Hc(e.toString())})},a.prototype.rdates=function(){return this._rdate.map(function(e){return new Date(e.getTime())})},a.prototype.exdates=function(){return this._exdate.map(function(e){return new Date(e.getTime())})},a.prototype.valueOf=function(){var e=[];return!this._rrule.length&&this._dtstart&&(e=e.concat($f({dtstart:this._dtstart}))),this._rrule.forEach(function(t){e=e.concat(t.toString().split(` `))}),this._exrule.forEach(function(t){e=e.concat(t.toString().split(` `).map(function(r){return r.replace(/^RRULE:/,"EXRULE:")}).filter(function(r){return!/^DTSTART/.test(r)}))}),this._rdate.length&&e.push(C4("RDATE",this._rdate,this.tzid())),this._exdate.length&&e.push(C4("EXDATE",this._exdate,this.tzid())),e},a.prototype.toString=function(){return this.valueOf().join(` `)},a.prototype.clone=function(){var e=new a(!!this._cache);return this._rrule.forEach(function(t){return e.rrule(t.clone())}),this._exrule.forEach(function(t){return e.exrule(t.clone())}),this._rdate.forEach(function(t){return e.rdate(new Date(t.getTime()))}),this._exdate.forEach(function(t){return e.exdate(new Date(t.getTime()))}),e},a})(ye)});var S4=D(()=>{Ri();cS();lS();Ps();Hl();sr()});var uS={};Et(uS,{WriteAPI:()=>_f});var ja,_n,_f,bb=D(()=>{ja=require("obsidian"),_n=Oe(N0());gd();Mi();q0();S4();_f=class{constructor(a,e,t,r,i){this.app=a;this.vault=e;this.metadataCache=t;this.plugin=r;this.getTaskById=i;this.canvasTaskUpdater=new vr(e,r)}async updateTaskStatus(a){var e,t;try{let r=await Promise.resolve(this.getTaskById(a.taskId));if(!r)return{success:!1,error:"Task not found"};if(vr.isCanvasTask(r))return this.updateCanvasTask({taskId:a.taskId,updates:{status:a.status,completed:a.completed}});let i=this.vault.getAbstractFileByPath(r.filePath);if(!i)return{success:!1,error:"File not found"};let o=(await this.vault.read(i)).split(` `);if(r.line<0||r.line>=o.length)return{success:!1,error:"Invalid line number"};let l=o[r.line],c=(((e=this.plugin.settings.taskStatuses)==null?void 0:e.completed)||"x").split("|")[0],u=a.completed===!0||a.status!==void 0&&(typeof a.status.toLowerCase=="function"&&a.status.toLowerCase()==="x"||a.status===c),p=a.status!==void 0?a.status:u?"x":" ";l=l.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${p}$2`);let m=/(\[completion::|✅)/.test(l);if(u&&!r.metadata.completedDate&&!m){let h=(0,ja.moment)().format("YYYY-MM-DD"),k=this.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${h}]`:`\u2705 ${h}`;l=`${l} ${k}`}if(o[r.line]=l,u&&!r.completed&&((t=r.metadata)==null?void 0:t.recurrence))try{let h=l.match(/^(\s*)/),g=h?h[0]:"",k=this.createRecurringTask({...r,completed:!0,metadata:{...r.metadata,completedDate:Date.now()}},g);o.splice(r.line+1,0,k)}catch(h){console.error("WriteAPI: failed to create next recurring task from updateTaskStatus:",h)}if(ke(this.app,se.WRITE_OPERATION_START,{path:i.path,taskId:a.taskId}),await this.vault.modify(i,o.join(` `)),ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:i.path,taskId:a.taskId}),a.completed===!0&&!r.completed){let h={...r,completed:!0};this.app.workspace.trigger("task-genius:task-completed",h)}return{success:!0}}catch(r){return console.error("WriteAPI: Error updating task status:",r),{success:!1,error:String(r)}}}async updateTask(a){var e,t;try{let r=await Promise.resolve(this.getTaskById(a.taskId));if(!r)return{success:!1,error:"Task not found"};if(vr.isCanvasTask(r))return this.updateCanvasTask(a);if(((e=r==null?void 0:r.metadata)==null?void 0:e.source)==="file-source"||r.id.startsWith("file-source:"))return this.updateFileSourceTask(r,a.updates,a.taskId);let s=this.vault.getAbstractFileByPath(r.filePath);if(!s)return{success:!1,error:"File not found"};let l=(await this.vault.read(s)).split(` `);if(r.line<0||r.line>=l.length)return{success:!1,error:"Invalid line number"};let c={...r,...a.updates},u=l[r.line];if(a.updates.status!==void 0){let f=a.updates.status;u=u.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${f}$2`)}else if(a.updates.completed!==void 0){let f=a.updates.completed?"x":" ";u=u.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${f}$2`)}if(a.updates.content!==void 0){let f=u.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(f){let h=f[1],g=u.match(/([\s]+(🔺|⏫|🔼|🔽|⏬|🛫|⏳|📅|✅|🔁|\[[\w]+::|#|@|\+).*)?$/),k=g?g[0]:"";u=`${h}${a.updates.content}${k}`}}if(a.updates.metadata){let f=u.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*[^🔺⏫🔼🔽⏬🛫⏳📅✅🔁\[#@+]*)/);if(f){let h=f[0],g={...r.metadata,...a.updates.metadata},k=a.updates.completed!==void 0?!!a.updates.completed:!!r.completed,y=this.generateMetadata({tags:g.tags,project:g.project,context:g.context,priority:g.priority,startDate:g.startDate,dueDate:g.dueDate,scheduledDate:g.scheduledDate,recurrence:g.recurrence,completed:k,completedDate:g.completedDate,onCompletion:g.onCompletion,dependsOn:g.dependsOn,id:g.id});u=`${h}${y?` ${y}`:""}`}}if(l[r.line]=u,!r.completed&&a.updates.completed===!0&&((t=r.metadata)==null?void 0:t.recurrence))try{let f=u.match(/^(\s*)/),h=f?f[0]:"",g=this.createRecurringTask({...r,...a.updates},h);l.splice(r.line+1,0,g),`${r.line}`}catch(f){console.error("Error creating recurring task:",f)}ke(this.app,se.WRITE_OPERATION_START,{path:s.path,taskId:a.taskId}),await this.vault.modify(s,l.join(` `));let m={...r,...a.updates,originalMarkdown:u.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"")};return ke(this.app,se.TASK_UPDATED,{task:m}),a.updates.completed===!0&&!r.completed&&this.app.workspace.trigger("task-genius:task-completed",m),ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:s.path,taskId:a.taskId}),{success:!0,task:m}}catch(r){return console.error("WriteAPI: Error updating task:",r),{success:!1,error:String(r)}}}async updateFileSourceTask(a,e,t){var m,f,h,g,k,y,b,v,w,x,T,C,S;let r=this.vault.getAbstractFileByPath(a.filePath);if(!r)return{success:!1,error:"File not found"};let i=a.filePath,s=(f=(m=this.plugin.settings)==null?void 0:m.fileSource)==null?void 0:f.fileTaskProperties,o=(h=s==null?void 0:s.contentSource)!=null?h:"filename",l=(g=s==null?void 0:s.preferFrontmatterTitle)!=null?g:!0,c=(b=(y=(k=this.plugin.settings)==null?void 0:k.fileSource)==null?void 0:y.fileTaskProperties)==null?void 0:b.customContentField;try{let E=(v=e.metadata)!=null?v:{};if(e.status!==void 0||e.completed!==void 0||E.priority!==void 0||E.tags!==void 0||E.project!==void 0||E.context!==void 0||E.area!==void 0||E.dueDate!==void 0||E.startDate!==void 0||E.scheduledDate!==void 0){ke(this.app,se.WRITE_OPERATION_START,{path:r.path,taskId:t});let N=I=>I==null?I:typeof I=="number"?new Date(I).toISOString().split("T")[0]:I instanceof Date?I.toISOString().split("T")[0]:I;await this.app.fileManager.processFrontMatter(r,I=>{var R,j,W,B,X;if(e.status!==void 0){let V=(j=(R=this.plugin.settings)==null?void 0:R.fileSource)==null?void 0:j.statusMapping,G=e.status;if(V!=null&&V.enabled){let Y=(W=V.symbolToMetadata)==null?void 0:W[G];if(Y)G=Y;else{(B=this.plugin.settings)==null||B.taskStatuses;let le=((X=this.plugin.settings)==null?void 0:X.taskStatuses)||{},de=Object.entries(le).map(([Te,Re])=>({type:Te,symbols:String(Re)}));for(let Te of de){let Re=Te.symbols.split("|").filter(Boolean);for(let Pe of Re)if(Pe===G||Pe.length>1&&Pe.includes(G)){let et={completed:"completed",inProgress:"in-progress",planned:"planned",abandoned:"cancelled",notStarted:"not-started"}[Te.type];et&&(G=et);break}if(G!==e.status)break}}}I.status=G}e.completed!==void 0&&(I.completed=e.completed),E.priority!==void 0&&(I.priority=E.priority,E.priority),E.tags!==void 0&&Array.isArray(E.tags)&&E.tags.length>0&&(I.tags=Array.isArray(E.tags)?E.tags:typeof E.tags=="string"?[E.tags]:E.tags),E.project!==void 0&&(I.project=E.project),E.context!==void 0&&(I.context=E.context),E.area!==void 0&&(I.area=E.area,E.area),E.dueDate!==void 0&&(I.dueDate=N(E.dueDate),I.dueDate),E.startDate!==void 0&&(I.startDate=N(E.startDate),I.startDate),E.scheduledDate!==void 0&&(I.scheduledDate=N(E.scheduledDate),I.scheduledDate)}),ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:r.path,taskId:t})}}catch(E){return console.error("WriteAPI: Error updating file-source task frontmatter:",E),{success:!1,error:String(E)}}let u=typeof e.content=="string";if(a.content,e.content,u)try{switch(ke(this.app,se.WRITE_OPERATION_START,{path:r.path,taskId:t}),o){case"title":{if(l){await this.app.fileManager.processFrontMatter(r,A=>{A.title=e.content}),e.content;let E=this.app.metadataCache.getFileCache(r);(w=E==null?void 0:E.frontmatter)==null||w.title}else i=await this.renameFile(r,e.content);break}case"h1":{await this.updateH1Heading(r,e.content);break}case"custom":{if(c){await this.app.fileManager.processFrontMatter(r,A=>{A[c]=e.content}),e.content;let E=this.app.metadataCache.getFileCache(r);(x=E==null?void 0:E.frontmatter)==null||x[c]}else if(l){await this.app.fileManager.processFrontMatter(r,A=>{A.title=e.content}),e.content;let E=this.app.metadataCache.getFileCache(r);(T=E==null?void 0:E.frontmatter)==null||T.title}else i=await this.renameFile(r,e.content);break}case"filename":default:{if(l){await this.app.fileManager.processFrontMatter(r,A=>{A.title=e.content}),e.content;let E=this.app.metadataCache.getFileCache(r);(C=E==null?void 0:E.frontmatter)==null||C.title}else i=await this.renameFile(r,e.content);break}}ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:i,taskId:t})}catch(E){return console.error("WriteAPI: Error updating file-source task content:",E),{success:!1,error:String(E)}}let p={...a,...e,filePath:i,id:a.id.startsWith("file-source:")&&i!==a.filePath?`file-source:${i}`:a.id,originalMarkdown:`[${(S=e.content)!=null?S:a.content}](${i})`};return ke(this.app,se.FILE_TASK_UPDATED,{task:p}),{success:!0,task:p}}async updateH1Heading(a,e){let t=await this.vault.read(a),r=t.split(` `),i=-1;for(let s=0;s=0)r[i]=`# ${e}`;else{let s=0;if(t.startsWith("---")){let o=t.indexOf(` --- `,3);o>=0&&(s=t.substring(0,o+5).split(` `).length-1)}r.splice(s,0,`# ${e}`,"")}await this.vault.modify(a,r.join(` `))}async renameFile(a,e){let t=a.path,r=t.lastIndexOf("/"),i=r>0?t.substring(0,r):"",s=t.substring(t.lastIndexOf(".")),o=this.sanitizeFileName(e),l=i?`${i}/${o}${s}`:`${o}${s}`;return l!==t&&await this.vault.rename(a,l),l}sanitizeFileName(a){return a.replace(/[<>:"/\\|?*]/g,"_")}async createTask(a){try{let e=a.filePath;if(!e){let o=this.app.workspace.getActiveFile();if(o)e=o.path;else return{success:!1,error:"No filePath provided and no active file"}}let r=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,i=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,ja.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,ja.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,ja.moment)(a.completedDate).valueOf():void 0});i&&(r+=` ${i}`);let s=this.vault.getAbstractFileByPath(e);if(s){let o=await this.vault.read(s),l=a.parent?this.insertSubtask(o,a.parent,r):(o?o+` `:"")+r;ke(this.app,se.WRITE_OPERATION_START,{path:s.path}),await this.vault.modify(s,l),ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:s.path})}else{let o=e.split("/");if(o.length>1){let l=o.slice(0,-1).join("/");try{await this.vault.createFolder(l)}catch(c){}}s=await this.vault.create(e,`${r} `)}return{success:!0}}catch(e){return console.error("WriteAPI: Error creating task:",e),{success:!1,error:String(e)}}}async getDescendantTaskIds(a){let e=[],t=[a],r=new Set;for(;t.length>0;){let i=t.pop();if(r.has(i))continue;r.add(i);let s=await Promise.resolve(this.getTaskById(i));if(!s||!s.metadata)continue;let o=s.metadata.children||[];for(let l of o)r.has(l)||(e.push(l),t.push(l))}return e}async deleteTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(vr.isCanvasTask(e))return this.deleteCanvasTask(a);let t=this.vault.getAbstractFileByPath(e.filePath);if(!t)return{success:!1,error:"File not found"};let r=[a.taskId],i=[e.line];if(a.deleteChildren){let l=await this.getDescendantTaskIds(a.taskId);r.push(...l);for(let c of l){let u=await Promise.resolve(this.getTaskById(c));u&&u.filePath===e.filePath&&i.push(u.line)}}i.sort((l,c)=>c-l);let o=(await this.vault.read(t)).split(` `);for(let l of i)l>=0&&l({id:i,error:"Invalid date format"}))};for(let i of a.taskIds){let s=await this.updateTask({taskId:i,updates:{metadata:{dueDate:r}}});s.success?e.push(i):t.push({id:i,error:s.error||"Unknown error"})}return{updated:e,failed:t}}async batchUpdateText(a){let e=[];for(let t of a.taskIds){let r=await Promise.resolve(this.getTaskById(t));if(!r)continue;let i=r.content.replace(a.findText,a.replaceText);if((await this.updateTask({taskId:t,updates:{content:i}})).success){let o=await Promise.resolve(this.getTaskById(t));o&&e.push(o)}}return{tasks:e}}async batchCreateSubtasks(a){let e=await Promise.resolve(this.getTaskById(a.parentTaskId));if(!e)return{tasks:[]};let t=[];for(let r of a.subtasks){let i=await this.createTask({...r,parent:a.parentTaskId,filePath:e.filePath});i.success&&i.task&&t.push(i.task)}return{tasks:t}}async createTaskInDailyNote(a){var e,t,r,i;try{let s=null;if((0,_n.appHasDailyNotesPluginLoaded)()){let f=(0,ja.moment)().set("hour",12),h=(0,_n.getDailyNote)(f,(0,_n.getAllDailyNotes)());h?s=h:s=await(0,_n.createDailyNote)(f)}if(!s){let f=this.plugin.settings.quickCapture,h=((e=f==null?void 0:f.dailyNoteSettings)==null?void 0:e.folder)||"",g=((t=f==null?void 0:f.dailyNoteSettings)==null?void 0:t.format)||"YYYY-MM-DD";if(!h)try{h=(0,_n.getDailyNoteSettings)().folder||""}catch(w){}let k=(0,ja.moment)().format(g),y=h?`${h}/${k}.md`:`${k}.md`,b=y.split("/");if(b.length>1){let w=b.slice(0,-1).join("/");try{await this.vault.createFolder(w)}catch(x){}}let v=this.vault.getAbstractFileByPath(y);v||(v=await this.vault.create(y,"")),s=v}let l=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,c=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,ja.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,ja.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,ja.moment)(a.completedDate).valueOf():void 0});c&&(l+=` ${c}`);let u=s,p=await this.vault.read(u),m=p;if(a.parent)m=this.insertSubtask(p,a.parent,l);else{let f=a.heading||((i=(r=this.plugin.settings.quickCapture)==null?void 0:r.targetHeading)==null?void 0:i.trim());if(f){let h=new RegExp(`^#{1,6}\\s+${f.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"m");h.test(p)?m=p.replace(h,`$& ${l}`):m=`${p}${p.endsWith(` `)?"":` `} ## ${f} ${l}`}else m=p?`${p} ${l}`:l}return ke(this.app,se.WRITE_OPERATION_START,{path:u.path}),await this.vault.modify(u,m),ke(this.app,se.WRITE_OPERATION_COMPLETE,{path:u.path}),{success:!0}}catch(s){return console.error("WriteAPI: Error creating task in daily note:",s),{success:!1,error:String(s)}}}async addProjectTaskToQuickCapture(a){try{let e=this.plugin.settings.quickCapture;if(!e)throw new Error("Quick Capture settings not found");let r=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,i=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,ja.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,ja.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,ja.moment)(a.completedDate).valueOf():void 0});i&&(r+=` ${i}`);let s;if(e.targetType==="daily-note"&&e.dailyNoteSettings){let o=(0,ja.moment)().format(e.dailyNoteSettings.format||"YYYY-MM-DD");s=(e.dailyNoteSettings.folder?`${e.dailyNoteSettings.folder.replace(/\/$/,"")}/`:"")+`${o}.md`}else s=Xw(e.targetFile||"Quick Capture.md");return await mn(this.app,r,{targetFile:e.targetFile,appendToFile:e.appendToFile,targetType:e.targetType,targetHeading:a.heading||e.targetHeading,dailyNoteSettings:e.dailyNoteSettings}),{filePath:s,success:!0}}catch(e){return console.error("WriteAPI: Error adding project task to quick capture:",e),{filePath:"",success:!1}}}generateMetadata(a){var r,i,s,o,l;let e=[],t=this.plugin.settings.preferMetadataFormat==="dataview";if((r=a.tags)!=null&&r.length&&(t?e.push(`[tags:: ${a.tags.join(", ")}]`):e.push(...a.tags.map(c=>c.startsWith("#")?c:`#${c}`))),a.project)if(t){let c=((i=this.plugin.settings.projectTagPrefix)==null?void 0:i.dataview)||"project";e.push(`[${c}:: ${a.project}]`)}else{let c=((s=this.plugin.settings.projectTagPrefix)==null?void 0:s.tasks)||"project";e.push(`#${c}/${a.project}`)}if(a.context)if(t){let c=((o=this.plugin.settings.contextTagPrefix)==null?void 0:o.dataview)||"context";e.push(`[${c}:: ${a.context}]`)}else{let c=((l=this.plugin.settings.contextTagPrefix)==null?void 0:l.tasks)||"@";e.push(`${c}${a.context}`)}if(typeof a.priority=="number"&&a.priority>=1&&a.priority<=5)if(t){let c;switch(a.priority){case 5:c="highest";break;case 4:c="high";break;case 3:c="medium";break;case 2:c="low";break;case 1:c="lowest";break;default:c=String(a.priority)}e.push(`[priority:: ${c}]`)}else{let c="";switch(a.priority){case 5:c="\u{1F53A}";break;case 4:c="\u23EB";break;case 3:c="\u{1F53C}";break;case 2:c="\u{1F53D}";break;case 1:c="\u23EC";break}c&&e.push(c)}if(a.recurrence&&e.push(t?`[repeat:: ${a.recurrence}]`:`\u{1F501} ${a.recurrence}`),a.startDate){let c=(0,ja.moment)(a.startDate).format("YYYY-MM-DD");e.push(t?`[start:: ${c}]`:`\u{1F6EB} ${c}`)}if(a.scheduledDate){let c=(0,ja.moment)(a.scheduledDate).format("YYYY-MM-DD");e.push(t?`[scheduled:: ${c}]`:`\u23F3 ${c}`)}if(a.dueDate){let c=(0,ja.moment)(a.dueDate).format("YYYY-MM-DD");e.push(t?`[due:: ${c}]`:`\u{1F4C5} ${c}`)}if(a.completed&&a.completedDate){let c=(0,ja.moment)(a.completedDate).format("YYYY-MM-DD");e.push(t?`[completion:: ${c}]`:`\u2705 ${c}`)}if(a.onCompletion&&e.push(t?`[onCompletion:: ${a.onCompletion}]`:`\u{1F3C1} ${a.onCompletion}`),a.dependsOn&&(!Array.isArray(a.dependsOn)||a.dependsOn.length>0)){let c=Array.isArray(a.dependsOn)?a.dependsOn.join(", "):a.dependsOn;e.push(t?`[dependsOn:: ${c}]`:`\u26D4 ${c}`)}return a.id&&e.push(t?`[id:: ${a.id}]`:`\u{1F194} ${a.id}`),e.join(" ")}insertSubtask(a,e,t){let r=a.split(` `),i=this.findTaskLineById(r,e);if(i){let o=this.getIndent(r[i.line])+" ";r.splice(i.line+1,0,o+t.trim())}return r.join(` `)}findTaskLineById(a,e){for(let t=0;tg.getTime()){let v=y.getFullYear(),w=y.getMonth(),x=y.getDate();return Date.UTC(v,w,x,12,0,0)}let b=f.after(new Date(g.getTime()+864e5));if(b){b.setHours(0,0,0,0);let v=b.getFullYear(),w=b.getMonth(),x=b.getDate();return Date.UTC(v,w,x,12,0,0)}}}catch(f){`${a.metadata.recurrence}`}let i=a.metadata.recurrence.trim().toLowerCase(),s=new Date(e);if(i.startsWith("every")){let f=i.split(" ");if(f.length>=2){let h=1,g=f[1];switch(f.length>=3&&!isNaN(parseInt(f[1]))&&(h=parseInt(f[1]),g=f[2]),g.endsWith("s")&&(g=g.substring(0,g.length-1)),g){case"day":s.setDate(e.getDate()+h);break;case"week":s.setDate(e.getDate()+h*7);break;case"month":s.setMonth(e.getMonth()+h);break;case"year":s.setFullYear(e.getFullYear()+h);break;default:s.setDate(e.getDate()+h)}}else s.setDate(e.getDate()+1)}else if(i.includes("monday")||i.includes("tuesday")||i.includes("wednesday")||i.includes("thursday")||i.includes("friday")||i.includes("saturday")||i.includes("sunday")){let f={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6},h=-1;for(let[g,k]of Object.entries(f))if(i.includes(g)){h=k;break}if(h>=0)for(s.setDate(e.getDate()+1);s.getDay()!==h;)s.setDate(s.getDate()+1);else s.setDate(e.getDate()+1)}else s.setDate(e.getDate()+1);s.setHours(0,0,0,0);let o=new Date,l=new Date(o);if(l.setHours(0,0,0,0),s.getTime()<=l.getTime())if(i.startsWith("every")){let f=i.split(" "),h=1,g=f[1];for(f.length>=3&&!isNaN(parseInt(f[1]))&&(h=parseInt(f[1]),g=f[2]),g.endsWith("s")&&(g=g.substring(0,g.length-1));s.getTime()<=l.getTime();)switch(g){case"day":s.setDate(s.getDate()+h);break;case"week":s.setDate(s.getDate()+h*7);break;case"month":s.setMonth(s.getMonth()+h);break;case"year":s.setFullYear(s.getFullYear()+h);break;default:s.setDate(s.getDate()+h)}}else(i.includes("monday")||i.includes("tuesday")||i.includes("wednesday")||i.includes("thursday")||i.includes("friday")||i.includes("saturday")||i.includes("sunday"))&&s.getTime()<=l.getTime()&&s.setDate(s.getDate()+7);let c=s.getFullYear(),u=s.getMonth(),p=s.getDate();return Date.UTC(c,u,p,12,0,0)}catch(i){console.error("Error calculating next date:",i);let s=new Date;s.setDate(s.getDate()+1),s.setHours(0,0,0,0);let o=s.getFullYear(),l=s.getMonth(),c=s.getDate();return Date.UTC(o,l,c,12,0,0)}}}});var I9={};Et(I9,{default:()=>xb,showPopoverWithProgressBar:()=>sw});module.exports=_l(I9);var ga=require("obsidian");var xr=require("@codemirror/view"),Kn=require("@codemirror/language");var aP=Oe(tP()),mz={from:-1,to:-1,match:/.*/.exec("")},fz="gm"+(/x/.unicode==null?"":"u");Symbol.iterator;var Xl=class{constructor(a,e,t,r=0,i=a.length){this.to=i;this.curLine="";this.done=!1;this.value=mz;this.re=new RegExp(e,fz+(t!=null&&t.ignoreCase?"i":"")),this.iter=a.iter();let s=a.lineAt(r);this.curLineStart=s.from,this.matchPos=r,this.getLine(this.curLineStart)}getLine(a){this.iter.next(a),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let a=this.matchPos-this.curLineStart;;){this.re.lastIndex=a;let e=this.matchPos<=this.to&&(0,aP.default)(this.re,this.curLine);if(e){let t=this.curLineStart+e.index,r=t+e[0].length;if(this.matchPos=r+(t==r?1:0),t==this.curLine.length&&this.nextLine(),tthis.value.to)return this.value={from:t,to:r,match:e},this;a=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.lengths.trim()),i=t.path;for(let s of r)if(s&&i.startsWith(s))return!0}if(n.settings.hideProgressBarTags){let r=n.settings.hideProgressBarTags.split(",").map(s=>s.trim()),i=n.app.metadataCache.getFileCache(t);if(i&&i.tags){for(let s of r)if(i.tags.some(o=>o.tag==="#"+s))return!0}}if(n.settings.hideProgressBarMetadata){let r=n.app.metadataCache.getFileCache(t);if(r&&r.frontmatter){let i=n.settings.hideProgressBarMetadata;if(i&&r.frontmatter[i]!==void 0)return!!r.frontmatter[i]}}return!1}function iP(n,a){if(n.settings.progressBarDisplayMode==="none")return!0;if(!n.settings.hideProgressBarBasedOnConditions)return!1;let e=a.state.field(gh.editorInfoField);if(!e)return!1;let t=e.file;if(!t)return!1;if(n.settings.hideProgressBarFolders){let r=n.settings.hideProgressBarFolders.split(",").map(s=>s.trim()),i=t.path;for(let s of r)if(s&&i.startsWith(s))return!0}if(n.settings.hideProgressBarTags){let r=n.settings.hideProgressBarTags.split(",").map(s=>s.trim()),i=n.app.metadataCache.getFileCache(t);if(i&&i.tags){for(let s of r)if(i.tags.some(o=>o.tag==="#"+s))return!0}}if(n.settings.hideProgressBarMetadata){let r=n.app.metadataCache.getFileCache(t);if(r&&r.frontmatter){let i=n.settings.hideProgressBarMetadata;if(i&&i in r.frontmatter)return!!r.frontmatter[i]}}return!1}function Ni(n){var a,e,t,r;try{let i=n.vault;return((a=i.getConfig)==null?void 0:a.call(i,"useTab"))===void 0||((e=i.getConfig)==null?void 0:e.call(i,"useTab"))===!0?(((t=i.getConfig)==null?void 0:t.call(i,"tabSize"))||4)/4:((r=i.getConfig)==null?void 0:r.call(i,"tabSize"))||4}catch(i){return console.error("Error getting tab size:",i),4}}function Ha(n){var a,e;try{let t=n.vault,r=((a=t.getConfig)==null?void 0:a.call(t,"useTab"))===void 0||((e=t.getConfig)==null?void 0:e.call(t,"useTab"))===!0,i=Ni(n);return r?" ":" ".repeat(i)}catch(t){return console.error("Error building indent string:",t),""}}function Ls(n){let a=n.app.plugins.plugins["obsidian-tasks-plugin"];return!a||!a._loaded?null:a.apiV1}var Jl=/\b(g|goal)::\s{0,1}(\d+)\b/i;function hz(n){if(!n)return null;let a=n.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]\s*(.*?)$/);return a&&a[3]?a[3].trim():null}function gz(n){if(!n)return null;let a=n.match(Jl);return a?Number(a[2]):null}function nw(n){if(!n)return null;let a=hz(n);return a?gz(a):null}function Qn(n,a){if(!n.total)return"";let e=Math.round(n.completed/n.total*1e4)/100,t=n.inProgress?Math.round(n.inProgress/n.total*1e4)/100:0,r=n.abandoned?Math.round(n.abandoned/n.total*1e4)/100:0,i=n.planned?Math.round(n.planned/n.total*1e4)/100:0,s={...n,percentages:{completed:e,inProgress:t,abandoned:r,planned:i,notStarted:n.notStarted?Math.round(n.notStarted/n.total*1e4)/100:0}},o="\u2713",l="\u27F3",c="\u2717",u="?",p=(a==null?void 0:a.settings.displayMode)||(((a==null?void 0:a.settings.progressBarDisplayMode)==="text"||(a==null?void 0:a.settings.progressBarDisplayMode)==="both")&&a!=null&&a.settings.showPercentage?"percentage":"bracketFraction"),m="";switch(p){case"percentage":m=`${e}%`;break;case"bracketPercentage":m=`[${e}%]`;break;case"fraction":m=`${n.completed}/${n.total}`;break;case"bracketFraction":m=`[${n.completed}/${n.total}]`;break;case"detailed":m=`[${n.completed}${o} ${n.inProgress||0}${l} ${n.abandoned||0}${c} ${n.planned||0}${u} / ${n.total}]`;break;case"custom":a!=null&&a.settings.customFormat?m=a.settings.customFormat.replace(/{{COMPLETED}}/g,n.completed.toString()).replace(/{{TOTAL}}/g,n.total.toString()).replace(/{{IN_PROGRESS}}/g,(n.inProgress||0).toString()).replace(/{{ABANDONED}}/g,(n.abandoned||0).toString()).replace(/{{PLANNED}}/g,(n.planned||0).toString()).replace(/{{NOT_STARTED}}/g,(n.notStarted||0).toString()).replace(/{{PERCENT}}/g,e.toString()).replace(/{{PROGRESS}}/g,e.toString()).replace(/{{PERCENT_IN_PROGRESS}}/g,t.toString()).replace(/{{PERCENT_ABANDONED}}/g,r.toString()).replace(/{{PERCENT_PLANNED}}/g,i.toString()).replace(/{{COMPLETED_SYMBOL}}/g,o).replace(/{{IN_PROGRESS_SYMBOL}}/g,l).replace(/{{ABANDONED_SYMBOL}}/g,c).replace(/{{PLANNED_SYMBOL}}/g,u):m=`[${n.completed}/${n.total}]`;break;case"range-based":if(a!=null&&a.settings.customizeProgressRanges){let f=a.settings.progressRanges.find(h=>e>=h.min&&e<=h.max);f?m=f.text.replace("{{PROGRESS}}",e.toString()):m=`${e}%`}else m=`${e}%`;break;default:(a==null?void 0:a.settings.progressBarDisplayMode)==="text"||(a==null?void 0:a.settings.progressBarDisplayMode)==="both"?a!=null&&a.settings.showPercentage?m=`${e}%`:n.inProgress&&n.inProgress>0||n.abandoned&&n.abandoned>0||n.planned&&n.planned>0?m=`[${n.completed}\u2713 ${n.inProgress||0}\u27F3 ${n.abandoned||0}\u2717 ${n.planned||0}? / ${n.total}]`:m=`[${n.completed}/${n.total}]`:m=`[${n.completed}/${n.total}]`}return m=m.replace(/\${=(.+?)}/g,(f,h)=>{try{return new Function("data",`return ${h}`)(s)}catch(g){return console.error("Error evaluating expression:",h,g),f}}),m}var Qc=class extends xr.WidgetType{constructor(e,t,r,i,s,o,l,c=0,u=0,p=0,m=0){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.completed=o;this.total=l;this.inProgress=c;this.abandoned=u;this.notStarted=p;this.planned=m}eq(e){return this.from===e.from&&this.to===e.to&&this.inProgress===e.inProgress&&this.abandoned===e.abandoned&&this.notStarted===e.notStarted&&this.planned===e.planned&&this.completed===e.completed&&this.total===e.total?!0:e.completed===this.completed&&e.total===this.total&&e.inProgress===this.inProgress&&e.abandoned===this.abandoned&&e.notStarted===this.notStarted&&e.planned===this.planned}changePercentage(){if(this.total===0)return;let e=Math.round(this.completed/this.total*1e4)/100,t=Math.round(this.inProgress/this.total*1e4)/100,r=Math.round(this.abandoned/this.total*1e4)/100,i=Math.round(this.planned/this.total*1e4)/100;this.progressEl.style.width=e+"%",this.inProgressEl&&(this.inProgressEl.style.width=t+"%",this.inProgressEl.style.left=e+"%"),this.abandonedEl&&(this.abandonedEl.style.width=r+"%",this.abandonedEl.style.left=e+t+"%"),this.plannedEl&&(this.plannedEl.style.width=i+"%",this.plannedEl.style.left=e+t+r+"%");let s="progress-bar-inline";switch(!0){case e===0:s+=" progress-bar-inline-empty";break;case(e>0&&e<25):s+=" progress-bar-inline-0";break;case(e>=25&&e<50):s+=" progress-bar-inline-1";break;case(e>=50&&e<75):s+=" progress-bar-inline-2";break;case(e>=75&&e<100):s+=" progress-bar-inline-3";break;case e>=100:s+=" progress-bar-inline-complete";break}t>0&&(s+=" has-in-progress"),r>0&&(s+=" has-abandoned"),i>0&&(s+=" has-planned"),this.progressEl.className=s}changeNumber(){var e,t;if(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="both"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="text"){let r=Qn({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl?this.numberEl.innerText=r:this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:r})}}toDOM(){var r,i,s,o,l,c,u,p;if((((r=this.plugin)==null?void 0:r.settings.progressBarDisplayMode)==="both"||((i=this.plugin)==null?void 0:i.settings.progressBarDisplayMode)==="text")&&this.numberEl!==void 0&&this.numberEl.detach(),this.progressBarEl!==void 0)return this.changePercentage(),this.numberEl!==void 0&&this.changeNumber(),this.progressBarEl;if(this.progressBarEl=createSpan(((s=this.plugin)==null?void 0:s.settings.progressBarDisplayMode)==="both"||((o=this.plugin)==null?void 0:o.settings.progressBarDisplayMode)==="text"?"cm-task-progress-bar with-number":"cm-task-progress-bar",m=>{var f;m.dataset.completed=this.completed.toString(),m.dataset.total=this.total.toString(),m.dataset.inProgress=this.inProgress.toString(),m.dataset.abandoned=this.abandoned.toString(),m.dataset.notStarted=this.notStarted.toString(),m.dataset.planned=this.planned.toString(),(f=this.plugin)!=null&&f.settings.supportHoverToShowProgressInfo&&(m.onmouseover=()=>{sw(this.plugin,{progressBar:m,data:{completed:this.completed.toString(),total:this.total.toString(),inProgress:this.inProgress.toString(),abandoned:this.abandoned.toString(),notStarted:this.notStarted.toString(),planned:this.planned.toString()},view:this.view})})}),(((l=this.plugin)==null?void 0:l.settings.progressBarDisplayMode)==="graphical"||((c=this.plugin)==null?void 0:c.settings.progressBarDisplayMode)==="both")&&(this.progressBackGroundEl=this.progressBarEl.createEl("div",{cls:"progress-bar-inline-background"}),this.progressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-completed"}),this.inProgress>0&&(this.inProgressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-in-progress"})),this.abandoned>0&&(this.abandonedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-abandoned"})),this.planned>0&&(this.plannedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-planned"})),this.changePercentage()),(((u=this.plugin)==null?void 0:u.settings.progressBarDisplayMode)==="text"||((p=this.plugin)==null?void 0:p.settings.progressBarDisplayMode)==="both")&&this.total){let m=Qn({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:m})}return this.progressBarEl}ignoreEvent(){return!1}};function nP(n,a){return xr.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.progressDecorations=xr.Decoration.none;let{progress:t}=this.getDeco(e);this.progressDecorations=t}update(e){if(e.docChanged||e.viewportChanged){let{progress:t}=this.getDeco(e.view);this.progressDecorations=t}}getDeco(e){let{state:t}=e,r=[];if(iP(a,e))return{progress:xr.Decoration.none};for(let i of e.visibleRanges){let s,o,l;try{s=new Xl(t.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s\\[(.)\\]",{},i.from,i.to)}catch(c){console.debug(c);continue}if(a!=null&&a.settings.addTaskProgressBarToHeading){try{o=new Xl(t.doc,"^(#){1,6} ",{},i.from,i.to)}catch(c){console.debug(c);continue}this.processHeadings(o,r,e)}if(a!=null&&a.settings.addProgressBarToNonTaskBullet){try{l=new Xl(t.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s(?!\\[.\\])",{},i.from,i.to)}catch(c){console.debug(c);continue}this.processNonTaskBullets(l,r,e)}this.processBullets(s,r,e)}return{progress:xr.Decoration.set(r.sort((i,s)=>i.from-s.from))}}processHeadings(e,t,r){for(;!e.next().done;){let{from:i,to:s}=e.value,o=r.state.doc.lineAt(i);if(!this.isPositionEnabledByHeading(r.state,o.from))continue;let l=this.calculateRangeForTransform(r.state,o.from);if(!l)continue;let c=this.extractTasksFromRange(l,r.state,!1);if(c.total===0)continue;let u=xr.Decoration.widget({widget:new Qc(n,a,r,o.to,o.to,c.completed,c.total,c.inProgress||0,c.abandoned||0,c.notStarted||0,c.planned||0)});t.push(u.range(o.to,o.to))}}processBullets(e,t,r){var i;for(;!e.next().done;){let{from:s}=e.value,o=(i=r.state.doc.lineAt(s))==null?void 0:i.from;if(!this.isPositionEnabledByHeading(r.state,o))continue;let c=(0,Kn.syntaxTree)(r.state).resolveInner(o+1).type.prop(Kn.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(b=>c==null?void 0:c.split(" ").includes(b)))continue;let p=r.state.doc.lineAt(o),m=this.getDocumentText(r.state.doc,p.from,p.to),f=a!=null&&a.settings.allowCustomProgressGoal?nw(m):null;if(!m||!/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/.test(m))continue;let h=this.calculateRangeForTransform(r.state,p.to);if(!h)continue;let g=this.getDocumentText(r.state.doc,h.from,h.to);if(!g||g.length===1)continue;let k=this.extractTasksFromRange(h,r.state,!0,f);if(k.total===0)continue;let y=xr.Decoration.widget({widget:new Qc(n,a,r,p.to,p.to,k.completed,k.total,k.inProgress||0,k.abandoned||0,k.notStarted||0,k.planned||0),side:1});t.push(y.range(p.to,p.to))}}processNonTaskBullets(e,t,r){var i;for(;!e.next().done;){let{from:s}=e.value,o=(i=r.state.doc.lineAt(s))==null?void 0:i.from;if(!this.isPositionEnabledByHeading(r.state,o))continue;let c=(0,Kn.syntaxTree)(r.state).resolveInner(o+1).type.prop(Kn.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(y=>c==null?void 0:c.split(" ").includes(y)))continue;let p=r.state.doc.lineAt(o);if(!this.getDocumentText(r.state.doc,p.from,p.to))continue;let f=this.calculateRangeForTransform(r.state,p.to);if(!f)continue;let h=this.getDocumentText(r.state.doc,f.from,f.to);if(!h||h.length===1)continue;let g=this.extractTasksFromRange(f,r.state,!0);if(g.total===0)continue;let k=xr.Decoration.widget({widget:new Qc(n,a,r,p.to,p.to,g.completed,g.total,g.inProgress||0,g.abandoned||0,g.notStarted||0,g.planned||0),side:1});t.push(k.range(p.to,p.to))}}extractTasksFromRange(e,t,r,i){let s=this.getDocumentTextArray(t.doc,e.from,e.to);return this.calculateTasksNum(s,r,i)}getDocumentText(e,t,r){try{return e.sliceString(t,r)}catch(i){return console.error("Error getting document text:",i),null}}getDocumentTextArray(e,t,r){let i=this.getDocumentText(e,t,r);return i?i.split(` `):[]}calculateRangeForTransform(e,t){let r=e.doc.lineAt(t),i=(0,Kn.foldable)(e,r.from,r.to);return i?{from:r.from,to:i.to}:null}createTotalTaskRegex(e,t=0,r=4){if(a!=null&&a.settings.useOnlyCountMarks){let o=(a==null?void 0:a.settings.onlyCountTaskMarks)||"";if(!o.trim())return new RegExp("^$");let l=`\\[([ ${o}])\\]`;return e?new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${l}`):a!=null&&a.settings.countSubLevel?new RegExp(`^[\\t|\\s]*?([-*+]|\\d+\\.)\\s${l}`):new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${l}`)}let i=(a==null?void 0:a.settings.excludeTaskMarks)||"",s="\\[(.)\\]";return i&&i.length>0&&(s=`\\[([^${i.split("").map(l=>"\\"+l).join("")}])\\]`),e?new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${s}`):a!=null&&a.settings.countSubLevel?new RegExp(`^[\\t|\\s]*?([-*+]|\\d+\\.)\\s${s}`):new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${s}`)}createCompletedTaskRegex(e,t,r=0,i=4){var m;let s=e==null?void 0:e.settings.useOnlyCountMarks,o=(e==null?void 0:e.settings.onlyCountTaskMarks)||"x|X";if(s&&!o.trim())return new RegExp("^$");let l=(e==null?void 0:e.settings.excludeTaskMarks)||"",c=((m=e==null?void 0:e.settings.taskStatuses)==null?void 0:m.completed)||"x|X",u=t?"^[\\t|\\s]*":e!=null&&e.settings.countSubLevel?"^[\\t|\\s]*?":"^[\\t|\\s]*",p=(t||e!=null&&e.settings.countSubLevel,"([-*+]|\\d+\\.)\\s");if(s)return new RegExp(u+p+"\\[("+o+")\\]");if(l){let f=c.split("|"),h=l.split(""),g=f.filter(k=>!h.includes(k)).join("|");return new RegExp(u+p+"\\[("+g+")\\]")}else return new RegExp(u+p+"\\[("+c+")\\]")}isCompletedTask(e){var s,o;let t=e.match(/\[(.)]/);if(!t||!t[1])return!1;let r=t[1];return a!=null&&a.settings.useOnlyCountMarks?(a==null?void 0:a.settings.onlyCountTaskMarks.split("|")).includes(r):a!=null&&a.settings.excludeTaskMarks&&a.settings.excludeTaskMarks.includes(r)?!1:(((o=(s=a==null?void 0:a.settings.taskStatuses)==null?void 0:s.completed)==null?void 0:o.split("|"))||["x","X"]).includes(r)}getTaskStatus(e){let t=e.match(/\[(.)]/);if(!t||!t[1])return"notStarted";let r=t[1];return a!=null&&a.settings.useOnlyCountMarks?(a==null?void 0:a.settings.onlyCountTaskMarks.split("|")).includes(r)?"completed":this.determineNonCompletedStatus(r):a!=null&&a.settings.excludeTaskMarks&&a.settings.excludeTaskMarks.includes(r)?"notStarted":this.determineTaskStatus(r)}determineNonCompletedStatus(e){var s,o,l,c,u,p;return(((o=(s=a==null?void 0:a.settings.taskStatuses)==null?void 0:s.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(e)?"inProgress":(((c=(l=a==null?void 0:a.settings.taskStatuses)==null?void 0:l.abandoned)==null?void 0:c.split("|"))||[">"]).includes(e)?"abandoned":(((p=(u=a==null?void 0:a.settings.taskStatuses)==null?void 0:u.planned)==null?void 0:p.split("|"))||["?"]).includes(e)?"planned":(a==null?void 0:a.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,c,u,p,m,f,h,g,k,y;return(((c=(l=a==null?void 0:a.settings.taskStatuses)==null?void 0:l.completed)==null?void 0:c.split("|"))||["x","X"]).includes(e)?"completed":(((p=(u=a==null?void 0:a.settings.taskStatuses)==null?void 0:u.inProgress)==null?void 0:p.split("|"))||["-","/"]).includes(e)?"inProgress":(((f=(m=a==null?void 0:a.settings.taskStatuses)==null?void 0:m.abandoned)==null?void 0:f.split("|"))||[">"]).includes(e)?"abandoned":(((g=(h=a==null?void 0:a.settings.taskStatuses)==null?void 0:h.planned)==null?void 0:g.split("|"))||["?"]).includes(e)?"planned":(((y=(k=a==null?void 0:a.settings.taskStatuses)==null?void 0:k.notStarted)==null?void 0:y.split("|"))||[" "]).includes(e)?"notStarted":(a==null?void 0:a.settings.countOtherStatusesAs)||"notStarted"}shouldExcludeTask(e){if(!(a!=null&&a.settings.excludeTaskMarks)||a.settings.excludeTaskMarks.length===0)return!1;let t=e.match(/\[(.)]/);if(t&&t[1]){let r=t[1];return a.settings.excludeTaskMarks.includes(r)}return!1}getTabSize(){var e,t,r;try{let i=n.vault,s=((e=i.getConfig)==null?void 0:e.call(i,"useTab"))===void 0||((t=i.getConfig)==null?void 0:t.call(i,"useTab"))===!0,o=(r=i.getConfig)==null?void 0:r.call(i,"tabSize"),l=typeof o=="number"?o:4;return s?l/4:l}catch(i){return console.error("Error getting tab size:",i),4}}findNearestPrecedingHeadingText(e,t){let r=e.doc.lineAt(t),i=e.doc.sliceString(r.from,r.to);if(/^#{1,6}\s+/.test(i.trim()))return i.trim();let s=null,o=-1;return(0,Kn.syntaxTree)(e).iterate({to:t,enter:l=>{if(l.type.name.startsWith("header")&&l.fromo){o=l.from;let c=e.doc.lineAt(l.from);s=e.doc.sliceString(c.from,c.to).trim()}}}),s}isPositionEnabledByHeading(e,t){var i;if(!((i=a.settings.showProgressBarBasedOnHeading)!=null&&i.trim()))return!0;let r=this.findNearestPrecedingHeadingText(e,t);return!!(r&&a.settings.showProgressBarBasedOnHeading.split(",").includes(r))}calculateTasksNum(e,t,r){var y,b;if(!e||e.length===0)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0};if(e.length>1&&t){let v=((y=e[0].match(/^[\s|\t]*/))==null?void 0:y[0])||"",w=((b=e[1].match(/^[\s|\t]*/))==null?void 0:b[0])||"";if(v===w)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0}}let i=0,s=0,o=0,l=0,c=0,u=0,p=0,m=this.getTabSize(),f=[];if(!(a!=null&&a.settings.countSubLevel)&&t&&e[0]){let v=e[0].match(/^[\s|\t]*/);v&&(p=v[0].length/m)}let h=this.createTotalTaskRegex(!1,p,m),g=this.createTotalTaskRegex(!0),k=(a==null?void 0:a.settings.allowCustomProgressGoal)&&r!==null;for(let v=0;v[xr.EditorView.decorations.of(t=>{var r;return((r=t.plugin(e))==null?void 0:r.progressDecorations)||xr.Decoration.none})]})}var ji=require("@codemirror/view"),bh=require("@codemirror/state"),cn=require("obsidian");var kh=class{constructor(a,e){this.settings=a,this.metadataCache=e}isTaskTimerEnabled(a){return!this.settings.enabled||!a?!1:this.checkFrontmatterCondition(a)||this.checkFolderCondition(a)||this.checkTagCondition(a)}checkFrontmatterCondition(a){if(!this.settings.metadataDetection.frontmatter)return!1;let e=this.metadataCache.getFileCache(a);if(!e||!e.frontmatter)return!1;let t=this.settings.metadataDetection.frontmatter;return!!e.frontmatter[t]}checkFolderCondition(a){let e=this.settings.metadataDetection.folders;if(!e||e.length===0)return!1;let t=a.path;return e.some(r=>{if(!r.trim())return!1;let i=r.endsWith("/")?r:r+"/";return t.startsWith(i)||t.startsWith(r)})}checkTagCondition(a){let e=this.settings.metadataDetection.tags;if(!e||e.length===0)return!1;let t=this.metadataCache.getFileCache(a);if(!t||!t.tags)return!1;let r=t.tags.map(i=>i.tag.replace("#",""));return e.some(i=>{let s=i.replace("#","");return r.includes(s)})}updateSettings(a){this.settings=a}};var Po=class{constructor(a){this.STORAGE_PREFIX="taskTimer_";this.TIMER_LIST_KEY="taskTimer_activeList";this.settings=a}generateBlockId(a){let e=a||this.settings.blockRefPrefix,t=Date.now().toString().slice(-6),r=Math.floor(Math.random()*1e4).toString().padStart(4,"0");return`${e}-${t}-${r}`}getStorageKey(a,e){return`${this.STORAGE_PREFIX}${a}#${e}`}startTimer(a,e){try{`${a}${e||"new"}`;let t=e||this.generateBlockId(),r=this.getStorageKey(a,t),i=Date.now();if(!t)throw console.error("[TaskTimerManager] Failed to generate or use block ID"),new Error("Block ID generation failed");let s=this.getTimerState(r);if(s)return`${s.status}`,s.status==="paused"&&this.resumeTimer(r),t;let o={taskId:r,filePath:a,blockId:t,segments:[{startTime:i}],status:"running",createdAt:i};try{localStorage.setItem(r,JSON.stringify(o)),this.addToActiveList(r),`${r}`}catch(l){throw console.error("[TaskTimerManager] Failed to save timer to localStorage:",l),new Error("Failed to save timer state - localStorage may be full or unavailable")}return t}catch(t){throw console.error("[TaskTimerManager] Critical error starting timer:",t),t}}pauseTimer(a){let e=this.getTimerState(a);if(!e||e.status!=="running")return;let t=Date.now(),r=e.segments[e.segments.length-1];r&&!r.endTime&&(r.endTime=t,r.duration=t-r.startTime),e.status="paused",localStorage.setItem(a,JSON.stringify(e))}resumeTimer(a){let e=this.getTimerState(a);if(!e||e.status!=="paused")return;let t=Date.now();e.segments.push({startTime:t}),e.status="running",localStorage.setItem(a,JSON.stringify(e))}resetTimer(a){let e=this.getTimerState(a);if(!e)return;let t=Date.now();e.segments=[{startTime:t}],e.status="running",localStorage.setItem(a,JSON.stringify(e))}completeTimer(a){try{`${a}`;let e=this.getTimerState(a);if(!e)return console.warn(`[TaskTimerManager] Timer not found for completion: ${a}`),"";let t=Date.now();if(e.status==="running"){let s=e.segments[e.segments.length-1];s&&!s.endTime&&(s.endTime=t,s.duration=t-s.startTime)}let r=this.calculateTotalDuration(e);if(`${e.segments.length}${r}`,r<0)return console.error(`[TaskTimerManager] Invalid duration calculated: ${r}ms`),this.formatDuration(0);try{this.removeTimer(a)}catch(s){console.error("[TaskTimerManager] Failed to remove timer from storage:",s)}let i=this.formatDuration(r);return`${i}`,i}catch(e){return console.error("[TaskTimerManager] Critical error completing timer:",e),""}}getTimerState(a){try{let e=localStorage.getItem(a);if(!e)return null;let t=JSON.parse(e);if(this.isLegacyFormat(t)){`${a}`;let r=this.migrateLegacyState(t);return localStorage.setItem(a,JSON.stringify(r)),r}return this.validateTimerState(t)?t:(console.error(`[TaskTimerManager] Invalid timer state structure for ${a}:`,t),localStorage.removeItem(a),null)}catch(e){console.error(`[TaskTimerManager] Error retrieving timer state for ${a}:`,e);try{localStorage.removeItem(a)}catch(t){console.error("[TaskTimerManager] Failed to clean up corrupted timer data:",t)}return null}}isLegacyFormat(a){return a&&typeof a.startTime=="number"&&!a.segments&&typeof a.totalPausedDuration=="number"}migrateLegacyState(a){let e=[];return a.status==="running"?e.push({startTime:a.startTime+a.totalPausedDuration}):a.status==="paused"&&a.pausedTime&&e.push({startTime:a.startTime+a.totalPausedDuration,endTime:a.pausedTime,duration:a.pausedTime-a.startTime-a.totalPausedDuration}),{taskId:a.taskId,filePath:a.filePath,blockId:a.blockId,segments:e,status:a.status,createdAt:a.createdAt,legacyStartTime:a.startTime,legacyPausedTime:a.pausedTime,legacyTotalPausedDuration:a.totalPausedDuration}}validateTimerState(a){return a&&typeof a.taskId=="string"&&typeof a.filePath=="string"&&typeof a.blockId=="string"&&Array.isArray(a.segments)&&typeof a.createdAt=="number"&&["idle","running","paused"].includes(a.status)}getAllActiveTimers(){let a=this.getActiveList(),e=[];for(let t of a){let r=this.getTimerState(t);r?e.push(r):this.removeFromActiveList(t)}return e}getTimerByFileAndBlock(a,e){let t=this.getStorageKey(a,e);return this.getTimerState(t)}removeTimer(a){localStorage.removeItem(a),this.removeFromActiveList(a)}calculateTotalDuration(a){let e=Date.now();return a.segments.reduce((t,r)=>{let i;return r.duration?i=r.duration:r.endTime?i=r.endTime-r.startTime:i=e-r.startTime,t+i},0)}getCurrentDuration(a){let e=this.getTimerState(a);return e?this.calculateTotalDuration(e):0}getSegmentCount(a){let e=this.getTimerState(a);return e?e.segments.length:0}getSegments(a){let e=this.getTimerState(a);return e?e.segments:[]}formatDuration(a){let e=Math.floor(a/1e3),t=Math.floor(e/60),r=Math.floor(t/60),i=t%60,s=e%60,o=this.settings.timeFormat;return o=o.replace("{h}",r.toString()),o=o.replace("{m}",i.toString()),o=o.replace("{s}",s.toString()),o=o.replace("{ms}",a.toString()),o=o.replace(/\b0hrs\b/g,""),o=o.replace(/\b0mins\b/g,""),o=o.replace(/\s+/g," ").trim(),o||"0s"}getActiveList(){let a=localStorage.getItem(this.TIMER_LIST_KEY);if(!a)return[];try{return JSON.parse(a)}catch(e){return console.error("Error parsing active timer list:",e),[]}}addToActiveList(a){let e=this.getActiveList();e.includes(a)||(e.push(a),localStorage.setItem(this.TIMER_LIST_KEY,JSON.stringify(e)))}removeFromActiveList(a){let t=this.getActiveList().filter(r=>r!==a);localStorage.setItem(this.TIMER_LIST_KEY,JSON.stringify(t))}updateSettings(a){this.settings=a}cleanup(a=24){let e=this.getActiveList(),t=Date.now(),r=a*60*60*1e3;for(let i of e){let s=this.getTimerState(i);if(!s){this.removeFromActiveList(i);continue}t-s.createdAt>r&&this.removeTimer(i)}}};var Zl=class{static parseTimeComponents(a){let e=Math.floor(a/1e3),t=Math.floor(e/3600),r=Math.floor(e%3600/60),i=e%60;return{hours:t,minutes:r,seconds:i,totalMilliseconds:a}}static formatDuration(a,e){a<0&&(a=0);let t=this.parseTimeComponents(a),r=e;return r=r.replace(/\{h\}/g,t.hours.toString()),r=r.replace(/\{m\}/g,t.minutes.toString()),r=r.replace(/\{s\}/g,t.seconds.toString()),r=r.replace(/\{ms\}/g,t.totalMilliseconds.toString()),r=this.cleanupZeroValues(r),r=r.replace(/\s+/g," ").trim(),r||"0s"}static formatDurationSmart(a){let e=this.parseTimeComponents(a);return e.hours>0?e.minutes>0?`${e.hours}hrs${e.minutes}mins`:`${e.hours}hrs`:e.minutes>0?e.seconds>30?`${e.minutes+1}mins`:`${e.minutes}mins`:e.seconds>0?`${e.seconds}s`:"0s"}static formatForContext(a,e){let t=this.parseTimeComponents(a);switch(e){case"compact":return this.formatDurationSmart(a);case"detailed":let r=[];return t.hours>0&&r.push(`${t.hours}h`),t.minutes>0&&r.push(`${t.minutes}m`),t.seconds>0&&r.push(`${t.seconds}s`),r.join(" ")||"0s";case"precise":return t.hours>0?`${t.hours}:${t.minutes.toString().padStart(2,"0")}:${t.seconds.toString().padStart(2,"0")}`:`${t.minutes}:${t.seconds.toString().padStart(2,"0")}`;default:return this.formatDurationSmart(a)}}static validateTemplate(a){let e=/\{[hms]\}/g,t=/\{[^hms\}]*\}/g,r=e.test(a),i=t.test(a);return r&&!i}static getTemplateSuggestions(){return[{template:"{h}hrs{m}mins",description:"Hours and minutes (default)",example:this.formatDuration(9342e3,"{h}hrs{m}mins")},{template:"{h}h {m}m {s}s",description:"Full time with spaces",example:this.formatDuration(9342e3,"{h}h {m}m {s}s")},{template:"{h}:{m}:{s}",description:"Clock format",example:this.formatDuration(9342e3,"{h}:{m}:{s}")},{template:"{m}mins",description:"Minutes only",example:this.formatDuration(9342e3,"{m}mins")},{template:"({h}h{m}m)",description:"Parentheses format",example:this.formatDuration(9342e3,"({h}h{m}m)")}]}static cleanupZeroValues(a){return a=a.replace(/^0hrs?\b/i,""),a=a.replace(/^0mins?\b/i,""),a=a.replace(/^0secs?\b/i,""),a=a.replace(/^0s\b/i,""),a=a.replace(/\s+0hrs?\b/gi,""),a=a.replace(/\s+0mins?\b/gi,""),a=a.replace(/\s+0secs?\b/gi,""),a=a.replace(/\s+0s\b/gi,""),a=a.replace(/\b0[hm]\b\s*/g,""),a}static parseTimeString(a){let e=0,t=a.match(/(\d+)hrs?/i);t&&(e+=parseInt(t[1])*36e5);let r=a.match(/(\d+)mins?/i);r&&(e+=parseInt(r[1])*6e4);let i=a.match(/(\d+)s(?:ecs?)?/i);return i&&(e+=parseInt(i[1])*1e3),e}static formatForExport(a){let e=this.parseTimeComponents(a);return`PT${e.hours}H${e.minutes}M${e.seconds}S`}static parseFromExport(a){let e=a.match(/PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?/);if(!e)return 0;let t=parseInt(e[1]||"0"),r=parseInt(e[2]||"0"),i=parseInt(e[3]||"0");return t*36e5+r*6e4+i*1e3}};var Li=require("@codemirror/view"),Xn=require("obsidian"),Xc=require("@codemirror/state"),vh=require("@codemirror/language");var ft=Xc.Annotation.define(),sP={TODO:" ",DOING:"-","IN-PROGRESS":">",DONE:"x"},yh=class extends Li.WidgetType{constructor(e,t,r,i,s,o,l){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.currentState=o;this.listPrefix=l;this.cycle=[];this.marks={};let c=this.getStatusConfig();this.cycle=c.cycle,this.marks=c.marks,this.isLivePreview=r.state.field(Xn.editorLivePreviewField),this.bulletText=l.trim()}eq(e){return this.from===e.from&&this.to===e.to&&this.currentState===e.currentState&&this.bulletText===e.bulletText}toDOM(){let{cycle:e,marks:t,excludeMarksFromCycle:r}=this.getStatusConfig(),i=this.currentState,s=e.filter(p=>!r.includes(p));if(s.length>0){let m=(s.indexOf(this.currentState)+1)%s.length;i=s[m]}let o=createEl("span",{cls:"task-status-widget",attr:{"aria-label":"Next status: "+i}});if(this.isLivePreview){let p=/^\d+[.)]$/.test(this.bulletText);o.createEl("span",{cls:p?"cm-formatting cm-formatting-list cm-formatting-list-ol":"cm-formatting cm-formatting-list cm-formatting-list-ul"},m=>{m.createEl("span",{cls:p?"list-number":"list-bullet",text:this.bulletText})})}let l=document.createElement("span");l.toggleClass(["task-state",this.isLivePreview?"live-preview-mode":"source-mode"],!0),this.isLivePreview?l.classList.add("live-preview-mode"):l.classList.add("source-mode");let c=t[this.currentState]||" ";l.setAttribute("data-task-state",c),l.textContent=this.currentState;let u=createEl("input",{attr:{type:"checkbox"}});return u.hide(),o.appendChild(u),l.addEventListener("click",p=>{if(p.preventDefault(),p.stopPropagation(),Ls(this.plugin)){u.click();return}if(Xn.Keymap.isModEvent(p)){let{cycle:m}=this.getStatusConfig();m.length>0&&(this.currentState!==m[m.length-1]?this.setTaskState(m[m.length-1]):this.setTaskState(m[0]))}else this.cycleTaskState()}),l.addEventListener("contextmenu",p=>{p.preventDefault(),p.stopPropagation();let m=new Xn.Menu;for(let f of this.cycle)m.addItem(h=>{h.setTitle(f),h.onClick(()=>{this.setTaskState(f)})});m.showAtMouseEvent(p)}),o.appendChild(l),o}setTaskState(e){let t=this.view.state.doc.sliceString(this.from,this.to);if(!t.match(/\[(.)]/))return;let i=this.marks[e]||" ",s=t.replace(/\[(.)]/,`[${i}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:s},annotations:ft.of("taskStatusChange")})}getStatusConfig(){return this.plugin.settings.enableTaskStatusSwitcher?{cycle:this.plugin.settings.taskStatusCycle,excludeMarksFromCycle:this.plugin.settings.excludeMarksFromCycle||[],marks:this.plugin.settings.taskStatusMarks}:{cycle:Object.keys(sP),marks:sP,excludeMarksFromCycle:[]}}cycleTaskState(){var h,g;let e=this.view.state.doc.sliceString(this.from,this.to),t=e.match(/\[(.)]/);if(!t)return;let r=t[1],{cycle:i,marks:s,excludeMarksFromCycle:o}=this.getStatusConfig(),l=i.filter(k=>!o.includes(k));if(l.length===0){let k=this.view.state.field(Xn.editorInfoField);k&&((g=(h=k==null?void 0:k.editor)==null?void 0:h.cm)==null||g.dispatch({selection:Xc.EditorSelection.range(this.to+1,this.to+1)})),this.app.commands.executeCommandById("editor:toggle-checklist-status");return}let c=-1;for(let k=0;k{if(!this.shouldRender(c,s,o))return;let u=l[4],p=l[2],m=p.trim(),h=l[3].trim(),g=this.isLivePreview(c.state),k=a.settings.taskStatusCycle,y=a.settings.taskStatusMarks,b=a.settings.excludeMarksFromCycle||[],v=k.filter(x=>!b.includes(x));if(v.length===0&&!a.settings.enableCustomTaskMarks)return;let w=Object.keys(y).find(x=>y[x]===u)||v[0];if(!g&&a.settings.enableTextMarkInSourceMode){let x=s+l[1].length+p.length,T=x+h.length;i(x,T,Li.Decoration.replace({widget:new yh(n,a,c,x,T,w,m)}))}else i(s+l[1].length,s+l[1].length+p.length+h.length,Li.Decoration.replace({widget:new yh(n,a,c,s+l[1].length,s+l[1].length+p.length+h.length,w,m)}))}});this.view=i,this.updateDecorations(i)}update(i){let s=Date.now();(i.docChanged||i.viewportChanged||s-this.lastUpdate>this.updateThreshold&&i.selectionSet)&&(this.lastUpdate=s,this.updateDecorations(i.view,i))}destroy(){this.decorations=Li.Decoration.none}updateDecorations(i,s){!s||s.docChanged||s.selectionSet||this.decorations.size===0?this.decorations=this.match.createDeco(i):this.decorations=this.match.updateDeco(s,this.decorations)}isLivePreview(i){return i.field(Xn.editorLivePreviewField)}shouldRender(i,s,o){let c=(0,vh.syntaxTree)(i.state).resolveInner(s+1).type.prop(vh.tokenClassNodeProp);if(c){let m=c.split(" ");if(m.includes("hmd-codeblock")||m.includes("hmd-frontmatter"))return!1}return!i.state.selection.ranges.some(m=>!(m.to<=s||m.from>=o))&&(this.isLivePreview(i.state)||a.settings.enableTextMarkInSourceMode)}}let t={decorations:r=>r.decorations.update({filter:(i,s,o)=>{var u;if(((u=o.spec)==null?void 0:u.widget).error)return!1;let c=r.view.state.selection;for(let p of c.ranges)if(!(p.to<=i||p.from>=s))return!1;return!0}})};return Li.ViewPlugin.fromClass(e,t)}var cw=bh.Facet.define({combine:n=>n[0]||null}),ow=class extends ji.WidgetType{constructor(e,t,r,i,s,o,l,c){super();this.state=e;this.settings=t;this.timerManager=r;this.lineFrom=i;this.lineTo=s;this.filePath=o;this.plugin=l;this.existingBlockId=c;this.dom=null;this.updateInterval=null;this.timerState=null;this.currentTaskStatus=null;this.existingBlockId&&this.loadTimerState()}eq(e){let t=this.state.doc.lineAt(this.lineFrom),r=this.getTaskStatus(t.text);return this.currentTaskStatus&&this.currentTaskStatus!==r?(this.currentTaskStatus,!1):r==="completed"?!1:this.lineFrom===e.lineFrom&&this.lineTo===e.lineTo&&this.filePath===e.filePath&&this.existingBlockId===e.existingBlockId}toDOM(){if(this.dom)return this.refreshUI(),this.dom;this.dom=createDiv({cls:"task-timer-widget"});let e=this.state.doc.lineAt(this.lineFrom);return this.currentTaskStatus=this.getTaskStatus(e.text),this.lineFrom,this.currentTaskStatus,this.existingBlockId,this.existingBlockId?this.loadTimerState():this.updateTimerState(),this.createContent(),this.dom}getTaskStatus(e){var s,o;let t=e.match(/\[([^\]]+)\]/);if(!t)return"pending";let r=t[1],i=((o=(s=this.plugin)==null?void 0:s.settings)==null?void 0:o.taskStatuses)||{completed:"x|X",inProgress:">|/",abandoned:"-",planned:"?",notStarted:" "};return i.completed.split("|").includes(r)?"completed":i.inProgress.split("|").includes(r)?"in-progress":i.abandoned.split("|").includes(r)?"cancelled":(i.notStarted.split("|").includes(r)||r===" ","pending")}createContent(){if(!this.dom)return;this.dom.empty();let e=this.state.doc.lineAt(this.lineFrom),t=this.getTaskStatus(e.text);if(this.currentTaskStatus=t,t!=="completed"){if(this.existingBlockId&&this.timerState&&this.timerState.status!=="idle"){let r=this.getTaskId(),i=r?this.timerManager.getCurrentDuration(r):0,s=Zl.formatDuration(i,this.settings.timeFormat),o=this.dom.createSpan();this.timerState.status==="paused"?o.setText(`\u23F8 ${s} (Paused) `):o.setText(`\u23F1 ${s} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer()),this.startRealtimeUpdates()):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer());return}if(t==="in-progress"&&this.existingBlockId)if(this.timerState&&this.timerState.status!=="idle"){let r=this.getTaskId(),i=r?this.timerManager.getCurrentDuration(r):0,s=Zl.formatDuration(i,this.settings.timeFormat),o=this.dom.createSpan();this.timerState.status==="paused"?o.setText(`\u23F8 ${s} (Paused) `):o.setText(`\u23F1 ${s} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer())}else{this.startTimer();return}else if(!this.timerState||this.timerState.status==="idle"){let r=this.dom.createSpan({cls:"task-timer-start"});r.setText("Start Task"),r.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),this.startTimer()})}else{let r=this.getTaskId(),i=r?this.timerManager.getCurrentDuration(r):0,s=Zl.formatDuration(i,this.settings.timeFormat),o=this.dom.createSpan();this.timerState.status==="paused"?o.setText(`\u23F8 ${s} (Paused) `):o.setText(`\u23F1 ${s} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer())}}}addActionLink(e,t){if(!this.dom)return;let r=this.dom.createSpan({cls:"task-timer-action"});r.setText(e),r.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),t()})}getEditorView(){var i,s,o;let e=this.state.field(cn.editorEditorField,!1);if(e)return e;if((i=this.plugin)!=null&&i.app){let l=this.plugin.app.workspace.getActiveViewOfType(cn.MarkdownView);if(l!=null&&l.editor){let c=l.editor;if(c.cm)return c.cm;if(c.cm6)return c.cm6}}let t=window.app,r=(s=t==null?void 0:t.workspace)==null?void 0:s.activeLeaf;if((o=r==null?void 0:r.view)!=null&&o.editor){let l=r.view.editor;if(l.cm)return l.cm;if(l.cm6)return l.cm6}if(this.dom&&this.dom.parentElement){let l=this.dom.closest(".cm-content");if(l){let c=l.closest(".cm-editor");if(c&&c.cmView)return c.cmView.view}}return console.error("[TaskTimer] Could not find EditorView through any method"),null}updateTaskStatus(e){var c,u,p;let t=this.state.doc.lineAt(this.lineFrom),r=t.text,i=/^[\s|\t]*([-*+]|\d+\.)\s+\[[^]]*\]/;if(!r.match(i))return!1;let o=r.replace(/\[([^\]]*)\]/,e);if(`${r}`,`${e}`,`${o}`,o===r)return!1;let l=this.getEditorView();if(!l){let m=(p=(u=(c=this.plugin)==null?void 0:c.app)==null?void 0:u.workspace)==null?void 0:p.getActiveViewOfType(cn.MarkdownView);if(!(m!=null&&m.editor)||!m.file||m.file.path!==this.filePath)return!1;let f=t.number-1;return m.editor.setLine(f,o),!0}return l.dispatch({changes:{from:t.from,to:t.to,insert:o},annotations:ft.of("taskTimer")}),!0}startTimer(){var e,t,r,i,s,o,l,c,u;try{let p=this.getTaskId();if(!p){let m=this.timerManager.generateBlockId(this.settings.blockRefPrefix),f=this.getEditorView();if(f){let h=this.state.doc.lineAt(this.lineFrom),g=h.text,k=` ^${m}`,b=(((r=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:r.inProgress)||">|/").split("|")[0]||"/",v=g.replace(/\[([^\]]+)\]/,`[${b}]`).trimEnd()+k;`${h.number}`;try{f.dispatch({changes:{from:h.from,to:h.to,insert:v},annotations:ft.of("taskTimer")}),this.existingBlockId=m,p=`${this.filePath}#^${m}`,`${p}`,this.timerManager.startTimer(this.filePath,m),this.startRealtimeUpdates(),this.updateTimerState()}catch(w){console.error("[TaskTimer] Error dispatching change:",w);return}}else{console.error("[TaskTimer] No EditorView available");let h=this.state.field(cn.editorInfoField);if(h!=null&&h.editor){let g=this.state.doc.lineAt(this.lineFrom),k=g.text,b=(((o=(s=(i=this.plugin)==null?void 0:i.settings)==null?void 0:s.taskStatuses)==null?void 0:o.inProgress)||">|/").split("|")[0]||"/",v=k.replace(/\[([^\]]+)\]/,`[${b}]`).trimEnd()+` ^${m}`;try{h.editor.replaceRange(v,{line:g.number-1,ch:0},{line:g.number-1,ch:k.length}),this.existingBlockId=m,p=`${this.filePath}#^${m}`,`${p}`,this.timerManager.startTimer(this.filePath,m),this.startRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(w){console.error("[TaskTimer] Fallback also failed:",w);return}}return}}if(p&&this.existingBlockId){let m=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(m.text)!=="in-progress"){let g=(((u=(c=(l=this.plugin)==null?void 0:l.settings)==null?void 0:c.taskStatuses)==null?void 0:u.inProgress)||">|/").split("|")[0]||"/";this.updateTaskStatus(`[${g}]`)}`${p}`,this.timerManager.startTimer(this.filePath,this.existingBlockId),this.updateTimerState(),this.refreshUI()}}catch(p){console.error("[TaskTimer] Error starting timer:",p),this.updateTimerState()}}pauseTimer(){try{let e=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(e.text)==="completed"){console.warn("[TaskTimer] Cannot pause a completed task");return}let r=this.getTaskId();if(!r){console.warn("[TaskTimer] Cannot pause timer - no task ID found");return}`${r}`,this.timerManager.pauseTimer(r),this.stopRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error pausing timer:",e),this.updateTimerState()}}resumeTimer(){try{let e=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(e.text)==="completed"){console.warn("[TaskTimer] Cannot resume a completed task");return}let r=this.getTaskId();if(!r){console.warn("[TaskTimer] Cannot resume timer - no task ID found");return}`${r}`,this.timerManager.resumeTimer(r),this.startRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error resuming timer:",e),this.stopRealtimeUpdates(),this.updateTimerState()}}resetTimer(){try{let e=this.getTaskId();if(!e){console.warn("[TaskTimer] Cannot reset timer - no task ID found");return}`${e}`,this.timerManager.resetTimer(e),this.stopRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error resetting timer:",e),this.updateTimerState()}}completeTimer(){var e,t,r;try{let i=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(i.text)==="completed"){console.warn("[TaskTimer] Task is already completed");return}let o=this.getTaskId();if(!o){console.warn("[TaskTimer] Cannot complete timer - no task ID found");return}if(`${o}`,!this.timerManager.getTimerState(o)){console.warn("[TaskTimer] No timer state found for task:",o);return}let c=this.timerManager.completeTimer(o),u=this.getEditorView();if(u){let p=this.state.doc.lineAt(this.lineFrom),m=p.text,h=(((r=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:r.completed)||"x|X").split("|")[0]||"x",g=m.replace(/\[([^\]]+)\]/,`[${h}]`),k=g.match(/\s*\^[\w-]+\s*$/);if(k){let y=g.length-k[0].length;g=g.slice(0,y)+` (${c})`+g.slice(y)}else g=g.replace(/\s*$/,` (${c})`);try{u.dispatch({changes:{from:p.from,to:p.to,insert:g}})}catch(y){console.error("[TaskTimer] Error updating task:",y);let b=this.state.field(cn.editorInfoField);b!=null&&b.editor&&b.editor.replaceRange(g,{line:p.number-1,ch:0},{line:p.number-1,ch:m.length})}}else{console.error("[TaskTimer] No view available to complete task");return}this.stopRealtimeUpdates(),this.updateTimerState(),`${c}`}catch(i){console.error("[TaskTimer] Error completing timer:",i),this.updateTimerState()}}loadTimerState(){if(!this.existingBlockId)return;let e=this.getTaskId();e&&(this.timerState=this.timerManager.getTimerState(e),this.timerState&&(this.filePath,this.existingBlockId,this.timerState,this.timerState.status==="running"&&this.startRealtimeUpdates()))}updateTimerState(){let e=this.getTaskId();e&&(this.timerState=this.timerManager.getTimerState(e))}getTaskId(){return this.existingBlockId?`taskTimer_${this.filePath}#${this.existingBlockId}`:null}startRealtimeUpdates(){this.updateInterval&&clearInterval(this.updateInterval),this.updateInterval=window.setInterval(()=>{this.createContent()},1e3)}stopRealtimeUpdates(){this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=null)}refreshUI(){this.dom&&(this.existingBlockId?this.loadTimerState():this.updateTimerState(),this.createContent())}destroy(){this.stopRealtimeUpdates(),this.dom&&(this.dom.remove(),this.dom=null)}},kz=bh.StateField.define({create(n){return lP(n)},update(n,a){let e=a.isUserEvent("undo")||a.isUserEvent("redo");return a.docChanged||a.effects.length>0||e?(a.docChanged&&yz(a),lP(a.state)):n},provide:n=>ji.EditorView.decorations.from(n)});function lP(n){var c,u,p,m,f;let a=n.facet(cw);if(!((c=a==null?void 0:a.settings)!=null&&c.enabled))return ji.Decoration.none;let e=n.field(cn.editorInfoField);if(!(e!=null&&e.app))return ji.Decoration.none;let t=e.app.workspace.getActiveFile();if(!t)return ji.Decoration.none;if(t.path,!new kh(a.settings,a.metadataCache).isTaskTimerEnabled(t))return t.path,ji.Decoration.none;let i=new Po(a.settings),s=[],o=n.doc;o.lines;let l=1/0;for(let h=1;h<=o.lines;h++){let k=o.line(h).text;if(lw(k)){let y=((u=k.match(/^(\s*)/))==null?void 0:u[1].length)||0;y{var f,h;let p=i.lineAt(c).number,m=i.lineAt(u).number;for(let g=p;g<=m;g++){if(g>i.lines)continue;let y=i.line(g).text;if(!lw(y))continue;let b=dw(y);if(!b)continue;let v=y.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(!v)continue;let w=v[1],x=((h=(f=a==null?void 0:a.plugin)==null?void 0:f.settings)==null?void 0:h.taskStatuses)||{completed:"x|X",inProgress:">|/",abandoned:"-",notStarted:" "},T=x.inProgress.split("|"),C=x.abandoned.split("|"),S=x.completed.split("|"),E=x.notStarted.split("|"),A=`taskTimer_${t.path}#${b}`,N=r.getTimerState(A);`${w}${A}`,T.includes(w)?!N||N.status==="idle"?r.startTimer(t.path,b):N.status==="paused"?r.resumeTimer(A):N.status:C.includes(w)?N&&N.status==="running"?r.pauseTimer(A):N&&N.status:S.includes(w)?N&&(N.status==="running"||N.status==="paused")&&r.pauseTimer(A):E.includes(w)&&N&&r.resetTimer(A)}})}function dP(n){let a={settings:n.settings.taskTimer,metadataCache:n.app.metadataCache,plugin:n};return[cw.of(a),kz]}var wh=require("obsidian");function uw(n){let a=n.cloneNode(!0);a.querySelectorAll("ul").forEach(i=>i.remove());let t=a.querySelector(".cm-task-progress-bar");t&&t.remove();let r=a.textContent||"";return r=r.trim(),r}function vz(n){if(!n)return null;let a=n.match(Jl);return a?Number(a[2]):null}function cP(n){if(!n)return null;let a=uw(n);return a?vz(a):null}function uP(n){if(!n)return null;let a=n.getAttribute("data-custom-goal");if(a){let i=parseInt(a,10);if(!isNaN(i))return i}let e=uw(n);if(!e)return null;let t=e.match(Jl);if(!t)return null;let r=parseInt(t[2],10);return n.setAttribute("data-custom-goal",r.toString()),r}function pP(n){if(!n)return!1;let a=uw(n);return a?!!a.match(Jl):!1}function pw(n){let a=new Map;n.forEach(t=>{let r=t.parentElement;r&&(a.has(r)?a.get(r).push(t):a.set(r,[t]))});let e=[];return a.forEach((t,r)=>{e.push({parentElement:r,childrenElement:t})}),e}function mw(n){var s;let a=n.findAll(".task-list-item"),e=n.findAll("h1, h2, h3, h4, h5, h6"),t=new Map;if(t.set(null,[]),e.length===0)return t.set(null,a),t;let r=null,i=[...e,...a].sort((o,l)=>{let c=o.getBoundingClientRect().top,u=l.getBoundingClientRect().top;return c-u});for(let o of i)o.matches("h1, h2, h3, h4, h5, h6")?(r=o,t.has(r)||t.set(r,[])):o.matches(".task-list-item")&&((s=t.get(r))==null||s.push(o));return t}function fw(n,a,e){var t,r;for(let i of a)if(i.parentElement.parentElement&&((t=i.parentElement)!=null&&t.parentElement.hasClass("task-list-item"))){let s=new Jc(n,i,e).onload(),o=i.parentElement.previousElementSibling;o&&o.tagName==="P"?(r=n.app.plugins.getPlugin("dataview"))!=null&&r._loaded?i.parentElement.parentElement.insertBefore(s,i.parentElement):o.appendChild(s):i.parentElement.parentElement.insertBefore(s,i.parentElement)}}function hw(n,a,e){n.settings.addTaskProgressBarToHeading&&a.forEach((t,r)=>{if(!r||t.length===0)return;let i={parentElement:r,childrenElement:t},s=new Jc(n,i,e).onload();r.appendChild(s)})}function mP({plugin:n,element:a,ctx:e}){var t,r;if(!rP(n,e)){if((t=n.settings.showProgressBarBasedOnHeading)!=null&&t.trim()){let i=e.getSectionInfo(a);if(i){let s=i.text.split(` `),o=null,l=-1;for(let c=i.lineStart;c>=0;c--){let u=s[c];if(u.match(/^(#{1,6})\s+(.+)$/)){o=u.trim(),l=c;break}}if(o){if(!n.settings.showProgressBarBasedOnHeading.split(",").map(u=>u.trim()).includes(o)){a.addClass("no-progress-bar");return}}else a.addClass("no-progress-bar")}}if(n.settings.addTaskProgressBarToHeading&&a.children[0]&&a.children[0].matches("h1, h2, h3, h4, h5, h6")){if(a.find(".cm-task-progress-bar"))return;let i=e.getSectionInfo(a);if(i){let s=i.text.split(` `),o=[],l=s[i.lineStart],c=l.match(/^(#{1,6})\s/);if(!c)return;let u=c[1].length,p=!1;for(let f of s.slice(i.lineStart)){let h=f.match(/^(#{1,6})\s/);if(h){let g=h[1].length;if(p&&g<=u)break}p||(p=!0),o.push(f)}if((r=n.settings.showProgressBarBasedOnHeading)!=null&&r.trim()&&!n.settings.showProgressBarBasedOnHeading.split(",").map(h=>h.trim()).includes(l.trim())){a.addClass("no-progress-bar");return}let m=o.filter(f=>f.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(m.length>0){let f=[];for(let k of m){let y=createEl("li",{cls:"task-list-item"}),b=k.match(/\[(.)\]/);if(b&&b[1]){let w=b[1];y.setAttribute("data-task",w);let x=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});n.settings.taskStatuses.completed.split("|").includes(w)&&(x.checked=!0),y.prepend(x)}let v=k.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");y.appendChild(createSpan({text:v})),f.push(y)}let h={parentElement:a.children[0],childrenElement:f},g=new Jc(n,h,"normal",{sectionInfo:i,ctx:e,element:a}).onload();a.children[0].appendChild(g)}}}if(a.find("ul.contains-task-list")){let i=a.findAll(".task-list-item"),s=pw(i);if(fw(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=mw(a);hw(n,o,"normal")}}else if(a.find("ol.contains-task-list")){let i=a.findAll(".task-list-item"),s=pw(i);if(fw(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=mw(a);hw(n,o,"normal")}}else if(a.closest(".dataview-container")){let i=a.closest(".dataview-container");if(!i||i.getAttribute("data-task-progress-bar")==="true")return;let s=i.findAll(".task-list-item"),o=pw(s);if(fw(n,o,"dataview"),n.settings.addTaskProgressBarToHeading){let l=mw(i);hw(n,l,"dataview")}i.setAttribute("data-task-progress-bar","true")}}}var Jc=class extends wh.Component{constructor(e,t,r,i){super();this.type=r;this.debounceUpdateFromModifiedFile=(0,wh.debounce)(()=>{this.updateFromModifiedFile()},200);this.plugin=e,this.group=t,this.info=i,this.completed=0,this.total=0,this.inProgress=0,this.abandoned=0,this.notStarted=0,this.planned=0,r==="dataview"?this.updateCompletedAndTotalDataview():this.updateCompletedAndTotal();for(let s of this.group.childrenElement)this.type==="normal"?s.on("click","input",()=>{setTimeout(()=>{if(this.updateCompletedAndTotal(),this.changePercentage(),this.changeNumber(),this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let o=this.group.parentElement.closest(".markdown-reading-view");o&&(o.hide(),setTimeout(()=>{o.show()},10))}},200)}):this.type==="dataview"&&this.registerDomEvent(s,"mousedown",o=>{o.target&&o.target.tagName==="INPUT"&&setTimeout(()=>{if(this.updateCompletedAndTotalDataview(),this.changePercentage(),this.changeNumber(),this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let l=this.group.parentElement.closest(".markdown-reading-view");l&&(l.hide(),setTimeout(()=>{l.show()},10))}},200)});this.setupFileMonitoring()}setupFileMonitoring(){var t;if(!this.info)return;let e=(t=this.info.ctx)==null?void 0:t.sourcePath;e&&this.registerEvent(this.plugin.app.vault.on("modify",r=>{e===r.path&&this.debounceUpdateFromModifiedFile()}))}updateFromModifiedFile(){var g,k,y;if(!this.info||!this.info.ctx||!this.info.element||!this.info.sectionInfo){this.unload();return}let{ctx:e,element:t,sectionInfo:r}=this.info,i=e.getSectionInfo(t);if(!i){this.unload();return}this.info.sectionInfo=i;let s=i.text.split(` `),o=[],c=s[i.lineStart].match(/^(#{1,6})\s/);if(!c){this.unload();return}let u=c[1].length,p=!1;for(let b of s.slice(i.lineStart)){let v=b.match(/^(#{1,6})\s/);if(v){let w=v[1].length;if(p&&w<=u)break}p||(p=!0),o.push(b)}let m=o.filter(b=>b.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(m.length===0){this.unload();return}let f=[];for(let b of m){let v=createEl("li",{cls:"task-list-item"}),w=b.match(/\[(.)\]/);if(w&&w[1]){let T=w[1];v.setAttribute("data-task",T);let C=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});this.plugin.settings.taskStatuses.completed.split("|").includes(T)&&(C.checked=!0),v.prepend(C)}let x=b.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");v.appendChild(createSpan({text:x})),f.push(v)}if(this.group.childrenElement=f,this.updateCompletedAndTotal(),this.inProgress>0&&!this.inProgressEl||this.inProgress===0&&this.inProgressEl||this.abandoned>0&&!this.abandonedEl||this.abandoned===0&&this.abandonedEl||this.planned>0&&!this.plannedEl||this.planned===0&&this.plannedEl){if(this.progressBarEl&&this.progressBarEl.parentElement){let b=this.progressBarEl.parentElement;(g=this.progressBarEl)==null||g.detach(),this.onunload();let v=this.onload();this.progressBarEl.remove(),b.appendChild(v),(((k=this.plugin)==null?void 0:k.settings.progressBarDisplayMode)==="text"||((y=this.plugin)==null?void 0:y.settings.progressBarDisplayMode)==="none")&&this.progressBackGroundEl.hide()}}else this.changePercentage(),this.changeNumber()}getTaskStatusFromDataTask(e){var t,r,i;return(t=this.plugin)!=null&&t.settings.useOnlyCountMarks?((r=this.plugin)==null?void 0:r.settings.onlyCountTaskMarks.split("|")).includes(e)?"completed":this.determineNonCompletedStatusFromDataTask(e):(i=this.plugin)!=null&&i.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(e)?"notStarted":this.determineTaskStatusFromDataTask(e)}getTaskStatus(e){var i,s,o;let t=e.match(/\[(.)]/);if(!t||!t[1])return"notStarted";let r=t[1];return(i=this.plugin)!=null&&i.settings.useOnlyCountMarks?((s=this.plugin)==null?void 0:s.settings.onlyCountTaskMarks.split("|")).includes(r)?"completed":this.determineNonCompletedStatus(r):(o=this.plugin)!=null&&o.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(r)?"notStarted":this.determineTaskStatus(r)}determineNonCompletedStatusFromDataTask(e){var s,o,l,c,u,p,m;return(((o=(s=this.plugin)==null?void 0:s.settings.taskStatuses.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(e)?"inProgress":(((c=(l=this.plugin)==null?void 0:l.settings.taskStatuses.abandoned)==null?void 0:c.split("|"))||[">"]).includes(e)?"abandoned":(((p=(u=this.plugin)==null?void 0:u.settings.taskStatuses.planned)==null?void 0:p.split("|"))||["?"]).includes(e)?"planned":((m=this.plugin)==null?void 0:m.settings.countOtherStatusesAs)||"notStarted"}determineNonCompletedStatus(e){var s,o,l,c,u,p,m;return(((o=(s=this.plugin)==null?void 0:s.settings.taskStatuses.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(e)?"inProgress":(((c=(l=this.plugin)==null?void 0:l.settings.taskStatuses.abandoned)==null?void 0:c.split("|"))||[">"]).includes(e)?"abandoned":(((p=(u=this.plugin)==null?void 0:u.settings.taskStatuses.planned)==null?void 0:p.split("|"))||["?"]).includes(e)?"planned":((m=this.plugin)==null?void 0:m.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatusFromDataTask(e){var l,c,u,p,m,f,h,g,k,y,b;return(((c=(l=this.plugin)==null?void 0:l.settings.taskStatuses.completed)==null?void 0:c.split("|"))||["x","X"]).includes(e)?"completed":(((p=(u=this.plugin)==null?void 0:u.settings.taskStatuses.inProgress)==null?void 0:p.split("|"))||["-","/"]).includes(e)?"inProgress":(((f=(m=this.plugin)==null?void 0:m.settings.taskStatuses.abandoned)==null?void 0:f.split("|"))||[">"]).includes(e)?"abandoned":(((g=(h=this.plugin)==null?void 0:h.settings.taskStatuses.planned)==null?void 0:g.split("|"))||["?"]).includes(e)?"planned":(((y=(k=this.plugin)==null?void 0:k.settings.taskStatuses.notStarted)==null?void 0:y.split("|"))||[" "]).includes(e)?"notStarted":((b=this.plugin)==null?void 0:b.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,c,u,p,m,f,h,g,k;return((l=this.plugin)==null?void 0:l.settings.taskStatuses.completed.split("|")).includes(e)?"completed":((u=(c=this.plugin)==null?void 0:c.settings.taskStatuses.inProgress)==null?void 0:u.split("|")).includes(e)?"inProgress":((m=(p=this.plugin)==null?void 0:p.settings.taskStatuses.abandoned)==null?void 0:m.split("|")).includes(e)?"abandoned":((h=(f=this.plugin)==null?void 0:f.settings.taskStatuses.planned)==null?void 0:h.split("|")).includes(e)?"planned":(((k=(g=this.plugin)==null?void 0:g.settings.taskStatuses.notStarted)==null?void 0:k.split("|")).includes(e),"notStarted")}isCompletedTaskFromDataTask(e){var r,i,s,o;return(r=this.plugin)!=null&&r.settings.useOnlyCountMarks?((i=this.plugin)==null?void 0:i.settings.onlyCountTaskMarks.split("|")).includes(e):(s=this.plugin)!=null&&s.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(e)?!1:((o=this.plugin)==null?void 0:o.settings.taskStatuses.completed.split("|")).includes(e)}isCompletedTask(e){var s,o,l,c;let t=e.match(/\[(.)]/);if(!t||!t[1])return!1;let r=t[1];return(s=this.plugin)!=null&&s.settings.useOnlyCountMarks?((o=this.plugin)==null?void 0:o.settings.onlyCountTaskMarks.split("|")).includes(r):(l=this.plugin)!=null&&l.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(r)?!1:((c=this.plugin)==null?void 0:c.settings.taskStatuses.completed.split("|")).includes(r)}updateCompletedAndTotalDataview(){var c,u,p,m;let e=0,t=0,r=0,i=0,s=0,o=0,l=new Map;for(let f of this.group.childrenElement){let h=f.parentElement;h&&(l.has(h)||l.set(h,[]),(c=l.get(h))==null||c.push(f))}for(let f of this.group.childrenElement){let h=f.querySelector(".task-list-item-checkbox");if(!h)continue;if(!((u=this.plugin)!=null&&u.settings.countSubLevel)){let k=f.parentElement;if(k&&k.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let y=f.closest("li");if(y){let b=y.parentElement;if((p=b==null?void 0:b.parentElement)==null?void 0:p.closest("li"))continue}}}o++;let g=f.getAttribute("data-task");if(g){let k=this.getTaskStatusFromDataTask(g);this.isCompletedTaskFromDataTask(g)?e++:k==="inProgress"?t++:k==="abandoned"?r++:k==="planned"?i++:k==="notStarted"&&s++}else{let k=((m=f.textContent)==null?void 0:m.trim())||"",y=k.match(/\[(.)]/);if(y&&y[1]){let b=this.getTaskStatus(k);this.isCompletedTask(k)?e++:b==="inProgress"?t++:b==="abandoned"?r++:b==="planned"?i++:b==="notStarted"&&s++}else h.checked?e++:s++}}this.completed=e,this.inProgress=t,this.abandoned=r,this.planned=i,this.notStarted=s,this.total=o}countTasks(e){var c,u,p;let t=0,r=0,i=0,s=0,o=0,l=0;for(let m of e){let f=null,h=((c=this.plugin)==null?void 0:c.settings.allowCustomProgressGoal)&&pP((u=m.parentElement)==null?void 0:u.parentElement),g=m.querySelector(".task-list-item-checkbox");if(!g)continue;let k=m.getAttribute("data-task");if(k){let y=this.getTaskStatusFromDataTask(k);h&&(f=cP(m)),this.isCompletedTaskFromDataTask(k)?(h||t++,f!==null&&(t+=f)):y==="inProgress"?(h||r++,h&&f!==null&&(r+=f)):y==="abandoned"?(h||i++,h&&f!==null&&(i+=f)):y==="planned"?(h||s++,h&&f!==null&&(s+=f)):y==="notStarted"&&(h||o++,h&&f!==null&&(o+=f))}else{let y=((p=m.textContent)==null?void 0:p.trim())||"",b=g,v=y.match(/\[(.)]/);if(v&&v[1]){let w=this.getTaskStatus(y);this.isCompletedTask(y)?t++:w==="inProgress"?r++:w==="abandoned"?i++:w==="planned"?s++:w==="notStarted"&&o++}else b.checked?t++:o++}l++}return{completed:t,inProgress:r,abandoned:i,planned:s,notStarted:o,total:l}}updateCompletedAndTotal(){var u,p,m,f,h;let e=0,t=new Map;for(let g of this.group.childrenElement){let k=g.parentElement;k&&(t.has(k)||t.set(k,[]),(u=t.get(k))==null||u.push(g))}let r=[];for(let g of this.group.childrenElement){if(!g.querySelector(".task-list-item-checkbox"))continue;if(r.push(g),(p=this.plugin)!=null&&p.settings.countSubLevel){if((f=this.plugin)!=null&&f.settings.countSubLevel){let b=g.findAll(".task-list-item");for(let v of b)e++,r.push(v)}}else{let b=g.parentElement;if(b&&b.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let v=g.closest("li");if(v){let w=v.parentElement;if((m=w==null?void 0:w.parentElement)==null?void 0:m.closest("li"))continue}}}let y=uP((h=g.parentElement)==null?void 0:h.parentElement);y?e=y:e++}let{completed:i,inProgress:s,abandoned:o,planned:l,notStarted:c}=this.countTasks(r);this.completed=i,this.inProgress=s,this.abandoned=o,this.planned=l,this.notStarted=c,this.total=e}changePercentage(){if(this.total===0)return;let e=Math.round(this.completed/this.total*1e4)/100,t=Math.round(this.inProgress/this.total*1e4)/100,r=Math.round(this.abandoned/this.total*1e4)/100,i=Math.round(this.planned/this.total*1e4)/100;this.progressEl.style.width=e+"%",this.inProgressEl&&(this.inProgressEl.style.width=t+"%",this.inProgressEl.style.left=e+"%"),this.abandonedEl&&(this.abandonedEl.style.width=r+"%",this.abandonedEl.style.left=e+t+"%"),this.plannedEl&&(this.plannedEl.style.width=i+"%",this.plannedEl.style.left=e+t+r+"%");let s="progress-bar-inline";switch(!0){case e===0:s+=" progress-bar-inline-empty";break;case(e>0&&e<25):s+=" progress-bar-inline-0";break;case(e>=25&&e<50):s+=" progress-bar-inline-1";break;case(e>=50&&e<75):s+=" progress-bar-inline-2";break;case(e>=75&&e<100):s+=" progress-bar-inline-3";break;case e>=100:s+=" progress-bar-inline-complete";break}t>0&&(s+=" has-in-progress"),r>0&&(s+=" has-abandoned"),i>0&&(s+=" has-planned"),this.progressEl.className=s}changeNumber(){var e,t;if(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="text"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="both"){let r=Qn({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl?this.numberEl.innerText=r:this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:r})}}onload(){var e,t,r,i,s,o;if(this.progressBarEl=createSpan(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="both"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="text"?"cm-task-progress-bar with-number":"cm-task-progress-bar"),this.progressBackGroundEl=this.progressBarEl.createEl("div",{cls:"progress-bar-inline-background"}),this.progressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-completed"}),this.inProgress>0&&(this.inProgressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-in-progress"})),this.abandoned>0&&(this.abandonedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-abandoned"})),this.planned>0&&(this.plannedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-planned"})),((r=this.plugin)==null?void 0:r.settings.progressBarDisplayMode)==="both"||((i=this.plugin)==null?void 0:i.settings.progressBarDisplayMode)==="text"){let l=Qn({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:l})}return this.changePercentage(),(((s=this.plugin)==null?void 0:s.settings.progressBarDisplayMode)==="text"||((o=this.plugin)==null?void 0:o.settings.progressBarDisplayMode)==="none")&&this.progressBackGroundEl.hide(),this.plugin.addChild(this),this.progressBarEl}onunload(){super.onunload()}};var ud=require("obsidian");var fP=/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g;var js={prioritySymbols:{Highest:"\u{1F53A}",High:"\u23EB",Medium:"\u{1F53C}",Low:"\u{1F53D}",Lowest:"\u23EC",None:""},startDateSymbol:"\u{1F6EB}",createdDateSymbol:"\u2795",scheduledDateSymbol:"\u23F3",dueDateSymbol:"\u{1F4C5}",doneDateSymbol:"\u2705",cancelledDateSymbol:"\u274C",recurrenceSymbol:"\u{1F501}",onCompletionSymbol:"\u{1F3C1}",dependsOnSymbol:"\u26D4",idSymbol:"\u{1F194}"},ed={"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1,"[#A]":5,"[#B]":4,"[#C]":3,"[#D]":2,"[#E]":1,highest:5,high:4,medium:3,low:2,lowest:1};Wi();Ww();Lo();du();var zw=null,AO=null,FO=null;function N$(n,a){return(!zw||FO!==n||AO!==a)&&(zw=new zi(Bs(n,a)),FO=n,AO=a),zw}function Vs(n,a,e,t,r){let s=N$(t,r).parseLegacy(a,n);if(s.length>0){let o=s[0];return o.line=e,o}return null}function Vt(n){if(n.metadata){if(n.metadata.project&&n.metadata.project.trim())return n.metadata.project;if(n.metadata.tgProject&&typeof n.metadata.tgProject=="object"&&n.metadata.tgProject.name&&n.metadata.tgProject.name.trim())return n.metadata.tgProject.name}}function ci(n){return!n.metadata||n.metadata.project&&n.metadata.project.trim()?!1:n.metadata.tgProject&&typeof n.metadata.tgProject=="object"&&n.metadata.tgProject.name&&n.metadata.tgProject.name.trim()&&n.metadata.tgProject.readonly||!1}function RO(n){return n.metadata?!!(n.metadata.project&&n.metadata.project.trim()||n.metadata.tgProject&&typeof n.metadata.tgProject=="object"&&n.metadata.tgProject.name&&n.metadata.tgProject.name.trim()):!1}function OO({plugin:n,element:a,ctx:e}){let t=a.findAll(".task-list-item"),r=new Set;for(let i of t){if(i.querySelector(".task-text-mark")||r.has(i))continue;r.add(i);let s=i.querySelector(".task-list-item-checkbox");if(!s)continue;let o=i.getAttribute("data-task")||" ";new $w(n,i,s,o,e).load()}}var $w=class extends ud.Component{constructor(e,t,r,i,s){super();this.plugin=e;this.taskItem=t;this.originalCheckbox=r;this.currentMark=i;this.ctx=s;this.debounceCycleTaskStatus=(0,ud.debounce)(()=>{this.cycleTaskStatus()},200)}load(){var e,t,r,i;if(!((t=(e=this.ctx)==null?void 0:e.el)!=null&&t.hasClass("planner-sticky-block-content"))){if(this.plugin.settings.enableCustomTaskMarks)this.markContainerEl=createEl("span",{cls:"task-state-container",attr:{"data-task-state":this.currentMark}}),this.bulletEl=this.markContainerEl.createEl("span",{cls:"task-fake-bullet"}),this.markEl=this.markContainerEl.createEl("span",{cls:"task-state",attr:{"data-task-state":this.currentMark}}),this.styleMarkByStatus(),(r=this.originalCheckbox.parentElement)==null||r.insertBefore(this.markContainerEl,this.originalCheckbox.nextSibling),this.registerDomEvent(this.markEl,"click",s=>{s.preventDefault(),s.stopPropagation(),this.debounceCycleTaskStatus()});else{let s=this.originalCheckbox.cloneNode(!0);(i=this.originalCheckbox.parentElement)==null||i.insertBefore(s,this.originalCheckbox.nextSibling),this.registerDomEvent(s,"click",o=>{o.preventDefault(),o.stopPropagation(),this.debounceCycleTaskStatus()})}return this.originalCheckbox.hide(),this}}styleMarkByStatus(){this.markEl.empty();let e=this.getTaskStatusFromMark(this.currentMark);e?this.markEl.setText(e):this.markEl.setText(this.currentMark)}triggerMarkUpdate(e){this.plugin.settings.enableCustomTaskMarks&&(this.taskItem.setAttribute("data-task",e),this.markEl.setAttribute("data-task-state",e),this.styleMarkByStatus())}cycleTaskStatus(){var y;let e=this.ctx.getSectionInfo(this.taskItem),t=this.ctx.sourcePath?this.plugin.app.vault.getFileByPath(this.ctx.sourcePath):null;if(!t||!(t instanceof ud.TFile))return;let r=null;if(!e){if((y=this.ctx.containerEl)!=null&&y.cmView){let b=this.ctx.containerEl.cmView;b.widget.clazz==="cm-callout"&&(r={lineStart:0,start:b.widget.start,end:b.widget.end,text:b.widget.text})}if(!r)return}let i=this.plugin.settings.taskStatusCycle||[],s=this.plugin.settings.taskStatusMarks||{},o=this.plugin.settings.excludeMarksFromCycle||[],l=i.filter(b=>!o.includes(b));if(l.length===0)return;let c=Object.keys(s).find(b=>s[b]===this.currentMark)||l[0],p=(l.indexOf(c)+1)%l.length,m=l[p],f=s[m]||" ",h=Ls(this.plugin),g=m==="DONE"&&h,k=c==="DONE";this.plugin.app.vault.process(t,b=>{var T;let v=b.split(` `),w,x;if(e){let C=parseInt(this.taskItem.getAttribute("data-line")||"0");w=e.lineStart+C,x=v[w]}else if(r){let C=parseInt(((T=this.taskItem.querySelector("input"))==null?void 0:T.getAttribute("data-line"))||"0");w=b.substring(0,r.start).split(` `).length-1+C,x=v[w]}else return b;if(g){let C=h.executeToggleTaskDoneCommand(x,t.path),S=C.split(` `);S.length===1?v[w]=C:v.splice(w,1,...S),this.currentMark=f,this.triggerMarkUpdate(f),this.originalCheckbox.checked=!0}else{let C=x;if(k&&(C=C.replace(/\s+✅\s+\d{4}-\d{2}-\d{2}/,"")),C=C.replace(/(\s*[-*+]\s*\[)(.)(])/,`$1${f}$3`),C!==x){v[w]=C,this.currentMark=f,this.triggerMarkUpdate(f);let S=this.plugin.settings.taskStatuses.completed.split("|");this.originalCheckbox.checked=S.includes(f)}}if(f==="x"||f==="X"){let C=Vs(t.path,x,w,this.plugin.settings.preferMetadataFormat,this.plugin);C&&this.plugin.app.workspace.trigger("task-genius:task-completed",C)}return v.join(` `)})}getTaskStatusFromMark(e){let t=this.plugin.settings.taskStatusCycle,r=this.plugin.settings.taskStatusMarks,i=this.plugin.settings.excludeMarksFromCycle||[],s=t.filter(l=>!i.includes(l));return s.length===0?null:Object.keys(r).find(l=>r[l]===e)||s[0]}unload(){this.markEl&&this.markEl.remove(),this.bulletEl&&this.bulletEl.remove(),this.originalCheckbox&&(this.originalCheckbox.style.display=""),super.unload()}};q();var me={progressBarDisplayMode:"both",supportHoverToShowProgressInfo:!1,addProgressBarToNonTaskBullet:!1,addTaskProgressBarToHeading:!1,addProgressBarToProjectsView:!1,enableProgressbarInReadingMode:!1,notifications:{enabled:!1,dailySummary:{enabled:!0,time:"09:00"},perTask:{enabled:!1,leadMinutes:10}},desktopIntegration:{enableTray:!1},countSubLevel:!1,displayMode:"bracketFraction",customFormat:"[{{COMPLETED}}/{{TOTAL}}]",showPercentage:!1,customizeProgressRanges:!1,progressRanges:[{min:0,max:20,text:d("Just started")+" {{PROGRESS}}%"},{min:20,max:40,text:d("Making progress")+" {{PROGRESS}}% "},{min:40,max:60,text:d("Half way")+" {{PROGRESS}}% "},{min:60,max:80,text:d("Good progress")+" {{PROGRESS}}% "},{min:80,max:100,text:d("Almost there")+" {{PROGRESS}}% "}],allowCustomProgressGoal:!1,hideProgressBarBasedOnConditions:!1,hideProgressBarTags:"no-progress,hide-progress",hideProgressBarFolders:"",hideProgressBarMetadata:"hide-progress-bar",showProgressBarBasedOnHeading:"",projectViewDefaultMode:"list",projectTreeAutoExpand:!1,projectTreeShowEmptyFolders:!1,projectPathSeparator:"/",autoCompleteParent:!1,markParentInProgressWhenPartiallyComplete:!1,taskStatuses:{completed:"x|X",inProgress:">|/",abandoned:"-",planned:"?",notStarted:" "},countOtherStatusesAs:"notStarted",excludeTaskMarks:"",useOnlyCountMarks:!1,onlyCountTaskMarks:"x|X|>|/",enableTaskStatusSwitcher:!1,enableCustomTaskMarks:!1,enableTextMarkInSourceMode:!1,enableCycleCompleteStatus:!1,taskStatusCycle:["Not Started","In Progress","Completed","Abandoned","Planned"],taskStatusMarks:{"Not Started":" ","In Progress":"/",Completed:"x",Abandoned:"-",Planned:"?"},excludeMarksFromCycle:[],enableTaskGeniusIcons:!1,enablePriorityPicker:!1,enablePriorityKeyboardShortcuts:!1,enableDatePicker:!1,recurrenceDateBase:"due",taskFilter:{enableTaskFilter:!1,presetTaskFilters:[]},taskGutter:{enableTaskGutter:!1},completedTaskMover:{enableCompletedTaskMover:!1,taskMarkerType:"date",versionMarker:"version 1.0",dateMarker:d("archived on")+" {{date}}",customMarker:d("moved")+" {{DATE:YYYY-MM-DD HH:mm}}",treatAbandonedAsCompleted:!1,completeAllMovedTasks:!0,withCurrentFileLink:!0,enableAutoMove:!1,defaultTargetFile:"Archive.md",defaultInsertionMode:"end",defaultHeadingName:"Completed Tasks",enableIncompletedTaskMover:!0,incompletedTaskMarkerType:"date",incompletedVersionMarker:"version 1.0",incompletedDateMarker:d("moved on")+" {{date}}",incompletedCustomMarker:d("moved")+" {{DATE:YYYY-MM-DD HH:mm}}",withCurrentFileLinkForIncompleted:!0,enableIncompletedAutoMove:!1,incompletedDefaultTargetFile:"Backlog.md",incompletedDefaultInsertionMode:"end",incompletedDefaultHeadingName:"Incomplete Tasks"},quickCapture:{enableQuickCapture:!1,targetFile:"QuickCapture.md",placeholder:d("Capture your thoughts..."),appendToFile:"append",targetType:"fixed",targetHeading:"",dailyNoteSettings:{format:"YYYY-MM-DD",folder:"",template:""},enableMinimalMode:!1,minimalModeSettings:{suggestTrigger:"/"}},workflow:{enableWorkflow:!1,autoAddTimestamp:!1,timestampFormat:"YYYY-MM-DD HH:mm:ss",removeTimestampOnTransition:!1,calculateSpentTime:!1,spentTimeFormat:"HH:mm:ss",calculateFullSpentTime:!1,autoRemoveLastStageMarker:!1,autoAddNextTask:!1,definitions:[{id:"project_workflow",name:d("Project Workflow"),description:d("Standard project management workflow"),stages:[{id:"planning",name:d("Planning"),type:"linear",next:"in_progress"},{id:"in_progress",name:d("In Progress"),type:"cycle",subStages:[{id:"development",name:d("Development"),next:"testing"},{id:"testing",name:d("Testing"),next:"development"}],canProceedTo:["review","cancelled"]},{id:"review",name:d("Review"),type:"cycle",canProceedTo:["in_progress","completed"]},{id:"completed",name:d("Completed"),type:"terminal"},{id:"cancelled",name:d("Cancelled"),type:"terminal"}],metadata:{version:"1.0",created:"2024-03-20",lastModified:"2024-03-20"}}]},useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",preferMetadataFormat:"tasks",projectTagPrefix:{tasks:"project",dataview:"project"},contextTagPrefix:{tasks:"@",dataview:"context"},areaTagPrefix:{tasks:"area",dataview:"area"},fileMetadataInheritance:{enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!1},projectConfig:{enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1,detectionMethods:[{type:"metadata",propertyKey:"project",enabled:!1},{type:"tag",propertyKey:"project",enabled:!1},{type:"link",propertyKey:"category",linkFilter:"",enabled:!1}]},configFile:{fileName:"project.md",searchRecursively:!1,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!1,enabled:!1}},fileParsingConfig:{enableFileMetadataParsing:!1,metadataFieldsToParseAsTasks:["dueDate","todo","complete","task"],enableTagBasedTaskParsing:!1,tagsToParseAsTasks:["#todo","#task","#action","#due"],taskContentFromMetadata:"title",defaultTaskStatus:" ",enableWorkerProcessing:!0,enableMtimeOptimization:!0,mtimeCacheSize:1e4},useRelativeTimeForDate:!1,ignoreHeading:"",focusHeading:"",enableIndexer:!0,enableView:!0,enableInlineEditor:!0,enableDynamicMetadataPositioning:!0,defaultViewMode:"list",globalFilterRules:{},viewConfiguration:[{id:"inbox",name:d("Inbox"),icon:"inbox",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"forecast",name:d("Forecast"),icon:"calendar-days",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"forecast",firstDayOfWeek:void 0,hideWeekends:!1}},{id:"projects",name:d("Projects"),icon:"folders",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"tags",name:d("Tags"),icon:"tag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"flagged",name:d("Flagged"),icon:"flag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"review",name:d("Review"),icon:"eye",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"calendar",name:d("Events"),icon:"calendar",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom",specificConfig:{viewType:"calendar",firstDayOfWeek:void 0,hideWeekends:!1}},{id:"kanban",name:d("Status"),icon:"kanban",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom",specificConfig:{viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}},{id:"gantt",name:d("Plan"),icon:"chart-gantt",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom",specificConfig:{viewType:"gantt",showTaskLabels:!0,useMarkdownRenderer:!0}},{id:"habit",name:d("Habit"),icon:"calendar-clock",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom"},{id:"table",name:d("Table"),icon:"table",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"table",enableTreeView:!0,enableLazyLoading:!0,pageSize:50,enableInlineEditing:!0,visibleColumns:["status","content","priority","dueDate","startDate","scheduledDate","tags","project","context","filePath"],columnWidths:{status:80,content:300,priority:100,dueDate:120,startDate:120,scheduledDate:120,createdDate:120,completedDate:120,tags:150,project:150,context:120,recurrence:120,estimatedTime:120,actualTime:120,filePath:200},sortableColumns:!0,resizableColumns:!0,showRowNumbers:!0,enableRowSelection:!0,enableMultiSelect:!0,defaultSortField:"",defaultSortOrder:"asc"}},{id:"quadrant",name:d("Matrix"),icon:"layout-grid",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"quadrant",hideEmptyQuadrants:!1,autoUpdatePriority:!0,autoUpdateTags:!0,showTaskCount:!0,defaultSortField:"priority",defaultSortOrder:"desc",urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3,usePriorityForClassification:!1,urgentPriorityThreshold:4,importantPriorityThreshold:3,customQuadrantColors:!1,quadrantColors:{urgentImportant:"#dc3545",notUrgentImportant:"#28a745",urgentNotImportant:"#ffc107",notUrgentNotImportant:"#6c757d"}}}],reviewSettings:{},rewards:{enableRewards:!1,rewardItems:[{id:"reward-tea",name:d("Drink a cup of good tea"),occurrence:"common",inventory:-1},{id:"reward-series-episode",name:d("Watch an episode of a favorite series"),occurrence:"rare",inventory:20},{id:"reward-champagne-project",name:d("Play a game"),occurrence:"legendary",inventory:1,condition:"#project AND #milestone"},{id:"reward-chocolate-quick",name:d("Eat a piece of chocolate"),occurrence:"common",inventory:10,condition:"#quickwin",imageUrl:""}],occurrenceLevels:[{name:d("common"),chance:70},{name:d("rare"),chance:25},{name:d("legendary"),chance:5}],showRewardType:"modal"},habit:{enableHabits:!1,habits:[]},filterConfig:{enableSavedFilters:!0,savedConfigs:[]},sortTasks:!0,sortCriteria:[{field:"completed",order:"asc"},{field:"status",order:"asc"},{field:"priority",order:"asc"},{field:"dueDate",order:"asc"}],autoDateManager:{enabled:!1,manageCompletedDate:!0,manageStartDate:!0,manageCancelledDate:!0,completedDateFormat:"YYYY-MM-DD",startDateFormat:"YYYY-MM-DD",cancelledDateFormat:"YYYY-MM-DD",completedDateMarker:"\u2705",startDateMarker:"\u{1F680}",cancelledDateMarker:"\u274C"},betaTest:{enableBaseView:!1},icsIntegration:{sources:[],globalRefreshInterval:60,maxCacheAge:24,enableBackgroundRefresh:!1,networkTimeout:30,maxEventsPerSource:1e3,showInCalendar:!1,showInTaskLists:!1,defaultEventColor:"#3b82f6"},timelineSidebar:{enableTimelineSidebar:!1,autoOpenOnStartup:!1,showCompletedTasks:!0,focusModeByDefault:!1,maxEventsToShow:100,quickInputCollapsed:!1,quickInputDefaultHeight:150,quickInputAnimationDuration:300,quickInputCollapseOnCapture:!1,quickInputShowQuickActions:!0},fileFilter:{enabled:!1,mode:"blacklist",rules:[]},onCompletion:{enableOnCompletion:!0,defaultArchiveFile:"Archive/Completed Tasks.md",defaultArchiveSection:"Completed Tasks",showAdvancedOptions:!1},timeParsing:{enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","starting","begins","\u5F00\u59CB","\u4ECE","\u8D77\u59CB","\u8D77","\u59CB\u4E8E","\u81EA"],due:["due","deadline","by","until","before","expires","ends","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D","\u671F\u9650","\u6700\u665A","\u7ED3\u675F","\u7EC8\u6B62","\u5B8C\u6210\u4E8E"],scheduled:["scheduled","on","at","planned","set for","arranged","\u5B89\u6392","\u8BA1\u5212","\u5728","\u5B9A\u4E8E","\u9884\u5B9A","\u7EA6\u5B9A","\u8BBE\u5B9A"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!0,timePatterns:{singleTime:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g],timeRange:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\s*[-~~]\s*([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)?\s*[-~~]\s*(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g],rangeSeparators:["-","~","\uFF5E"," - "," ~ "," \uFF5E "]},timeDefaults:{preferredFormat:"24h",defaultPeriod:"AM",midnightCrossing:"next-day"}},taskTimer:{enabled:!1,metadataDetection:{frontmatter:"task-timer",folders:[],tags:["timer","tracked"]},timeFormat:"{h}hrs {m}mins",blockRefPrefix:"timer"},enableCustomDateFormats:!1,customDateFormats:[],experimental:{},onboarding:{completed:!1,version:"",configMode:"beginner",skipOnboarding:!1,completedAt:""},fileSource:{enabled:!1,recognitionStrategies:{metadata:{enabled:!0,taskFields:["dueDate","status","priority","assigned"],requireAllFields:!1},tags:{enabled:!0,taskTags:["#task","#actionable","#todo"],matchMode:"exact"},templates:{enabled:!1,templatePaths:["Templates/Task Template.md"],checkTemplateMetadata:!0},paths:{enabled:!1,taskPaths:["Projects/","Tasks/"],matchMode:"prefix"}},fileTaskProperties:{contentSource:"filename",stripExtension:!0,defaultStatus:" ",defaultPriority:void 0,preferFrontmatterTitle:!0},relationships:{enableChildRelationships:!0,enableMetadataInheritance:!0,inheritanceFields:["project","priority","context"]},performance:{enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5},statusMapping:{enabled:!0,metadataToSymbol:{completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-","not-started":" ","not started":" "},symbolToMetadata:{x:"completed",X:"completed","/":"in-progress",">":"in-progress","?":"planned","-":"cancelled"," ":"not-started"},autoDetect:!0,caseSensitive:!1}}};function gt(n,a){let e=n.settings.viewConfiguration||me.viewConfiguration,t=e.find(l=>l.id===a),s=me.viewConfiguration.find(l=>l.id===a)||{id:a,name:a,icon:"list-plus",type:"custom",visible:!0,filterBlanks:!1,hideCompletedAndAbandonedTasks:!1,filterRules:{}},o={...s,...t||{},filterRules:t!=null&&t.filterRules?{...s.filterRules||{},...t.filterRules}:s.filterRules||{},specificConfig:(t==null?void 0:t.specificConfig)!==void 0?{...s.specificConfig||{},...t.specificConfig}:s.specificConfig};if(o.filterRules=o.filterRules||{},a==="gantt"&&Array.isArray(e)&&e.filter(c=>c.id==="gantt").length>1){let c=e.map((u,p)=>u.id==="gantt"?p:-1).filter(u=>u!==-1).slice(1);for(let u of c.reverse())e.splice(u,1);n.saveSettings()}return o}var Wa=require("obsidian");q();var Yi=require("obsidian");q();var bn=require("obsidian");q();q();var Ws=class{constructor(a){this.plugin=a}getOnboardingConfigs(){return[this.getBeginnerConfig(),this.getAdvancedConfig(),this.getPowerUserConfig()]}getBeginnerConfig(){let a=me.viewConfiguration.filter(e=>["inbox","forecast","projects"].includes(e.id));return{mode:"beginner",name:d("Beginner"),description:d("Basic task management with essential features"),features:[d("Basic progress bars"),d("Essential views (Inbox, Forecast, Projects)"),d("Simple task status tracking"),d("Quick task capture"),d("Date picker functionality")],settings:{progressBarDisplayMode:"both",displayMode:"bracketFraction",showPercentage:!1,customizeProgressRanges:!1,allowCustomProgressGoal:!1,hideProgressBarBasedOnConditions:!1,enableTaskStatusSwitcher:!1,enableCustomTaskMarks:!1,enableCycleCompleteStatus:!1,enableView:!0,enableInlineEditor:!1,viewConfiguration:a,enableDatePicker:!0,enablePriorityPicker:!1,quickCapture:{...me.quickCapture,enableQuickCapture:!0},workflow:{...me.workflow,enableWorkflow:!1},rewards:{...me.rewards,enableRewards:!1},habit:{...me.habit,enableHabits:!1},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!1,enableFileMetadataParsing:!1,enableTagBasedTaskParsing:!1},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!1},betaTest:{enableBaseView:!1}}}}getAdvancedConfig(){let a=me.viewConfiguration.filter(e=>["inbox","forecast","projects","tags","kanban","calendar","table"].includes(e.id));return{mode:"advanced",name:d("Advanced"),description:d("Project management with enhanced workflows"),features:[d("Full progress bar customization"),d("Extended views (Kanban, Calendar, Table)"),d("Project management features"),d("Basic workflow automation"),d("Task status switching"),d("Advanced filtering and sorting")],settings:{progressBarDisplayMode:"both",displayMode:"bracketFraction",showPercentage:!0,customizeProgressRanges:!0,allowCustomProgressGoal:!0,hideProgressBarBasedOnConditions:!1,enableTaskStatusSwitcher:!0,enableCycleCompleteStatus:!0,enableCustomTaskMarks:!1,enableView:!0,enableInlineEditor:!0,viewConfiguration:a,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...me.quickCapture,enableQuickCapture:!0},projectConfig:{...me.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...me.fileMetadataInheritance,enabled:!0},workflow:{...me.workflow,enableWorkflow:!0,autoAddTimestamp:!0},autoDateManager:{...me.autoDateManager,enabled:!0},completedTaskMover:{...me.completedTaskMover,enableCompletedTaskMover:!0},rewards:{...me.rewards,enableRewards:!1},habit:{...me.habit,enableHabits:!1},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!1},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!1}}}}getPowerUserConfig(){return{mode:"power",name:d("Power User"),description:d("Full-featured experience with all capabilities"),features:[d("All views and advanced configurations"),d("Complex workflow definitions"),d("Reward and habit tracking systems"),d("Performance optimizations"),d("Advanced integrations"),d("Experimental features"),d("Timeline and calendar sync")],settings:{progressBarDisplayMode:"both",displayMode:"custom",showPercentage:!0,customizeProgressRanges:!0,allowCustomProgressGoal:!0,hideProgressBarBasedOnConditions:!0,enableTaskStatusSwitcher:!0,enableCustomTaskMarks:!0,enableCycleCompleteStatus:!0,enableView:!0,enableInlineEditor:!0,viewConfiguration:me.viewConfiguration,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...me.quickCapture,enableQuickCapture:!0,enableMinimalMode:!0},projectConfig:{...me.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...me.fileMetadataInheritance,enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!0},workflow:{...me.workflow,enableWorkflow:!0,autoAddTimestamp:!0,calculateSpentTime:!0},rewards:{...me.rewards,enableRewards:!0},habit:{...me.habit,enableHabits:!0},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!0,enableTagBasedTaskParsing:!0,enableMtimeOptimization:!0},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!0},autoDateManager:{...me.autoDateManager,enabled:!0,manageCompletedDate:!0,manageStartDate:!0},completedTaskMover:{...me.completedTaskMover,enableCompletedTaskMover:!0,enableAutoMove:!0},betaTest:{enableBaseView:!0}}}}async applyConfiguration(a){let t=this.getOnboardingConfigs().find(u=>u.mode===a);if(!t)throw new Error(`Configuration mode ${a} not found`);let i=(this.plugin.settings.viewConfiguration||[]).filter(u=>u.type==="custom"),s=t.settings.viewConfiguration||[],o=this.mergeViewConfigurations(s,i),l={...t.settings};delete l.viewConfiguration;let c=this.deepMerge(this.plugin.settings,l);c.viewConfiguration=o,c.onboarding||(c.onboarding=me.onboarding),c.onboarding.configMode=a,this.plugin.settings=c,await this.plugin.saveSettings(),`${a}${i.length}`}async completeOnboarding(a){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.completed=!0,this.plugin.settings.onboarding.configMode=a,this.plugin.settings.onboarding.completedAt=new Date().toISOString(),this.plugin.settings.onboarding.version=this.plugin.manifest.version,await this.plugin.saveSettings(),`${a}`}shouldShowOnboarding(){var a,e;return!((a=this.plugin.settings.onboarding)!=null&&a.completed)&&!((e=this.plugin.settings.onboarding)!=null&&e.skipOnboarding)}async skipOnboarding(){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.skipOnboarding=!0,this.plugin.settings.onboarding.version=this.plugin.manifest.version,await this.plugin.saveSettings()}async resetOnboarding(){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.completed=!1,this.plugin.settings.onboarding.skipOnboarding=!1,this.plugin.settings.onboarding.completedAt="",await this.plugin.saveSettings()}getCurrentConfigModeDisplay(){var r;let a=(r=this.plugin.settings.onboarding)==null?void 0:r.configMode;if(!a)return d("Not configured");let t=this.getOnboardingConfigs().find(i=>i.mode===a);return t?t.name:d("Custom")}mergeViewConfigurations(a,e){let t=[...a];return e.forEach(r=>{t.find(i=>i.id===r.id)||t.push(r)}),t}getConfigurationPreview(a){var p,m,f,h,g,k;let t=this.getOnboardingConfigs().find(y=>y.mode===a);if(!t)throw new Error(`Configuration mode ${a} not found`);let r=this.plugin.settings.viewConfiguration||[],i=r.filter(y=>y.type==="custom"),s=t.settings.viewConfiguration||[],o=new Set(r.map(y=>y.id)),l=s.filter(y=>!o.has(y.id)),c=s.filter(y=>o.has(y.id)),u=[];return t.settings.enableView!==this.plugin.settings.enableView&&u.push(`Views ${t.settings.enableView?"enabled":"disabled"}`),((p=t.settings.quickCapture)==null?void 0:p.enableQuickCapture)!==((m=this.plugin.settings.quickCapture)==null?void 0:m.enableQuickCapture)&&u.push(`Quick Capture ${(f=t.settings.quickCapture)!=null&&f.enableQuickCapture?"enabled":"disabled"}`),((h=t.settings.workflow)==null?void 0:h.enableWorkflow)!==((g=this.plugin.settings.workflow)==null?void 0:g.enableWorkflow)&&u.push(`Workflow ${(k=t.settings.workflow)!=null&&k.enableWorkflow?"enabled":"disabled"}`),{viewsToAdd:l,viewsToUpdate:c,userCustomViewsPreserved:i,settingsChanges:u}}deepMerge(a,e){let t={...a};for(let r in e)e.hasOwnProperty(r)&&(e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])?t[r]=this.deepMerge(t[r]||{},e[r]):t[r]=e[r]);return t}};var XO=require("obsidian"),pd=class{constructor(a){this.selectedConfig=null;this.onSelectionChange=()=>{};this.configManager=a}render(a,e){this.onSelectionChange=e,a.empty();let t=this.configManager.getOnboardingConfigs(),r=a.createDiv("user-level-cards");t.forEach(i=>{this.createConfigCard(r,i)})}createConfigCard(a,e){let t=a.createDiv("user-level-card");t.setAttribute("data-mode",e.mode);let r=t.createDiv("card-header"),i=r.createDiv("card-icon");(0,XO.setIcon)(i,this.getConfigIcon(e.mode));let s=r.createEl("h3",{text:e.name,cls:"card-title"}),o=t.createEl("p",{text:e.description,cls:"card-description"}),c=t.createDiv("card-features").createEl("ul");e.features.forEach(u=>{c.createEl("li").setText(u)}),t.addEventListener("click",()=>{this.selectConfig(e)}),t.addEventListener("mouseenter",()=>{t.addClass("card-hover")}),t.addEventListener("mouseleave",()=>{t.removeClass("card-hover")})}getConfigIcon(a){switch(a){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}selectConfig(a){if(this.selectedConfig){let t=document.querySelector(`[data-mode="${this.selectedConfig.mode}"]`);t==null||t.removeClass("selected")}this.selectedConfig=a;let e=document.querySelector(`[data-mode="${a.mode}"]`);e==null||e.addClass("selected"),this.onSelectionChange(a)}getSelectedConfig(){return this.selectedConfig}};q();var un=require("obsidian"),md=class{constructor(a){this.configManager=a}render(a,e){a.empty();let r=a.createDiv("config-overview").createDiv("selected-mode");r.createEl("h3",{text:d("Selected Mode")});let i=r.createDiv("mode-card"),s=i.createDiv("mode-icon");(0,un.setIcon)(s,this.getConfigIcon(e.mode));let o=i.createDiv("mode-content");o.createEl("h4",{text:e.name}),o.createEl("p",{text:e.description});let l=a.createDiv("config-features");l.createEl("h3",{text:d("Features that will be enabled")});let c=l.createEl("ul",{cls:"enabled-features-list"});e.features.forEach(p=>{let m=c.createEl("li"),f=m.createSpan("feature-check");(0,un.setIcon)(f,"check"),m.createSpan("feature-text").setText(p)}),this.renderViewsPreview(a,e),this.renderSettingsSummary(a,e),a.createDiv("customization-note").createEl("p",{text:d("Don't worry! You can customize any of these settings later in the plugin settings."),cls:"note-text"})}renderViewsPreview(a,e){if(!e.settings.viewConfiguration)return;let t=a.createDiv("config-views");t.createEl("h3",{text:d("Available views")});let r=t.createDiv("views-grid");e.settings.viewConfiguration.forEach(i=>{let s=r.createDiv("view-item"),o=s.createDiv("view-icon");(0,un.setIcon)(o,i.icon||"list"),s.createDiv("view-name").setText(i.name)})}renderSettingsSummary(a,e){var i,s,o,l,c;let t=a.createDiv("config-settings");t.createEl("h3",{text:d("Key settings")});let r=t.createEl("ul",{cls:"settings-summary-list"});if(e.settings.progressBarDisplayMode){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Progress bars")+":"),u.createSpan("setting-value").setText(e.settings.progressBarDisplayMode==="both"?d("Enabled (both graphical and text)"):e.settings.progressBarDisplayMode)}if(e.settings.enableTaskStatusSwitcher!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Task status switching")+":"),u.createSpan("setting-value").setText(e.settings.enableTaskStatusSwitcher?d("Enabled"):d("Disabled"))}if(((i=e.settings.quickCapture)==null?void 0:i.enableQuickCapture)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Quick capture")+":"),u.createSpan("setting-value").setText(e.settings.quickCapture.enableQuickCapture?d("Enabled"):d("Disabled"))}if(((s=e.settings.workflow)==null?void 0:s.enableWorkflow)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Workflow management")+":"),u.createSpan("setting-value").setText(e.settings.workflow.enableWorkflow?d("Enabled"):d("Disabled"))}if(((o=e.settings.rewards)==null?void 0:o.enableRewards)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Reward system")+":"),u.createSpan("setting-value").setText(e.settings.rewards.enableRewards?d("Enabled"):d("Disabled"))}if(((l=e.settings.habit)==null?void 0:l.enableHabits)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Habit tracking")+":"),u.createSpan("setting-value").setText(e.settings.habit.enableHabits?d("Enabled"):d("Disabled"))}if(((c=e.settings.fileParsingConfig)==null?void 0:c.enableWorkerProcessing)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(d("Performance optimization")+":"),u.createSpan("setting-value").setText(e.settings.fileParsingConfig.enableWorkerProcessing?d("Enabled"):d("Disabled"))}this.renderConfigurationChanges(a,e)}renderConfigurationChanges(a,e){try{let t=this.configManager.getConfigurationPreview(e.mode),r=a.createDiv("config-changes-summary");if(r.createEl("h3",{text:d("Configuration Changes")}),t.userCustomViewsPreserved.length>0){let o=r.createDiv("preserved-views"),l=o.createDiv("preserved-header"),c=l.createSpan("preserved-icon");(0,un.setIcon)(c,"shield-check"),l.createSpan("preserved-text").setText(d("Your custom views will be preserved")+` (${t.userCustomViewsPreserved.length})`);let u=o.createEl("ul",{cls:"preserved-views-list"});t.userCustomViewsPreserved.forEach(p=>{let m=u.createEl("li"),f=m.createSpan();(0,un.setIcon)(f,p.icon||"list"),m.createSpan().setText(" "+p.name)})}if(t.viewsToAdd.length>0){let o=r.createDiv("added-views"),l=o.createSpan("change-icon");(0,un.setIcon)(l,"plus-circle"),o.createSpan("change-text").setText(d("New views to be added")+` (${t.viewsToAdd.length})`)}if(t.viewsToUpdate.length>0){let o=r.createDiv("updated-views"),l=o.createSpan("change-icon");(0,un.setIcon)(l,"refresh-cw"),o.createSpan("change-text").setText(d("Existing views to be updated")+` (${t.viewsToUpdate.length})`)}if(t.settingsChanges.length>0){let o=r.createDiv("settings-changes"),l=o.createSpan("change-icon");(0,un.setIcon)(l,"settings"),o.createSpan("change-text").setText(d("Feature changes"));let c=o.createEl("ul",{cls:"settings-changes-list"});t.settingsChanges.forEach(u=>{c.createEl("li").setText(u)})}let i=r.createDiv("safety-note"),s=i.createSpan("safety-icon");(0,un.setIcon)(s,"info"),i.createSpan("safety-text").setText(d("Only template settings will be applied. Your existing custom configurations will be preserved."))}catch(t){console.warn("Could not generate configuration preview:",t)}}getConfigIcon(a){switch(a){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}};var ol=require("obsidian");q();var Ma=require("obsidian");var JO=require("obsidian"),Dg=require("@codemirror/state"),fd=require("@codemirror/view");function Gw(n,a){let e=Object.keys(a).map(t=>U$(n,t,a[t]));return e.length===1?e[0]:function(){e.forEach(t=>t())}}function U$(n,a,e){let t=n[a],r=n.hasOwnProperty(a),i=r?t:function(){return Object.getPrototypeOf(n)[a].apply(this,arguments)},s=e(i);return t&&Object.setPrototypeOf(s,t),Object.setPrototypeOf(o,s),n[a]=o,l;function o(...c){return s===i&&n[a]===o&&l(),s.apply(this,c)}function l(){n[a]===o&&(r?n[a]=i:delete n[a]),s!==i&&(s=i,Object.setPrototypeOf(o,t||Function))}}function pn(n,a,e){let t=Y$(n);return new Kw(n,t,a,e)}function Y$(n){let a=n.embedRegistry.embedByExtension.md({app:n,containerEl:createDiv()},null,"");a.editable=!0,a.showEditor();let e=Object.getPrototypeOf(Object.getPrototypeOf(a.editMode));return a.unload(),e.constructor}var q$={cursorLocation:{anchor:0,head:0},value:"",singleLine:!1,cls:"",placeholder:"",onEnter:()=>!1,onEscape:()=>{},onSubmit:()=>{},onBlur:()=>{},onPaste:()=>{},onChange:()=>{}},Kw=class{get editorEl(){return this.editor.editorEl}get containerEl(){return this.editor.containerEl}get activeCM(){return this.editor.activeCM}get app(){return this.editor.app}get owner(){return this.editor.owner}get _loaded(){return this.editor._loaded}constructor(a,e,t,r){var l;this.options={...q$,...r},this.initial_value=this.options.value,this.scope=new JO.Scope(a.scope),this.scope.register(["Mod"],"Enter",()=>!0);let i=this,s=Gw(e.prototype,{buildLocalExtensions:c=>function(){let u=c.call(this);if(this===i.editor){i.options.placeholder&&u.push((0,fd.placeholder)(i.options.placeholder)),u.push(fd.EditorView.domEventHandlers({paste:m=>{i.options.onPaste(m,i)},blur:()=>{a.keymap.popScope(i.scope),i.options.onBlur&&i.options.onBlur(i)},focusin:()=>{a.keymap.pushScope(i.scope),a.workspace.activeEditor=i.owner}}));let p=[{key:"Enter",run:()=>i.options.onEnter(i,!1,!1),shift:()=>i.options.onEnter(i,!1,!0)},{key:"Mod-Enter",run:()=>i.options.onEnter(i,!0,!1),shift:()=>i.options.onEnter(i,!0,!0)},{key:"Escape",run:()=>(i.options.onEscape(i),!0),preventDefault:!0}];i.options.singleLine&&(p[0]={key:"Enter",run:()=>i.options.onEnter(i,!1,!1),shift:()=>i.options.onEnter(i,!1,!0)}),u.push(Dg.Prec.highest(fd.keymap.of(p)))}return u}});this.editor=new e(a,t,{app:a,onMarkdownScroll:()=>{},getMode:()=>"source"}),this.register(s),this.owner&&(this.owner.editMode=this,this.owner.editor=this.editor.editor),this.set(r.value||"",!1),this.register(Gw(a.workspace,{setActiveLeaf:c=>(u,...p)=>{var m;(m=this.activeCM)!=null&&m.hasFocus||c.call(a.workspace,u,...p)}})),r.cls&&this.editorEl&&this.editorEl.classList.add(r.cls),r.cursorLocation&&((l=this.editor.editor)!=null&&l.cm)&&this.editor.editor.cm.dispatch({selection:Dg.EditorSelection.range(r.cursorLocation.anchor,r.cursorLocation.head)});let o=this.editor.onUpdate.bind(this.editor);this.editor.onUpdate=(c,u)=>{o(c,u),u&&this.options.onChange(c)}}get value(){var a,e;return((e=(a=this.editor.editor)==null?void 0:a.cm)==null?void 0:e.state.doc.toString())||""}set(a,e=!1){this.editor.set(a,e)}register(a){this.editor.register(a)}destroy(){this._loaded&&typeof this.editor.unload=="function"&&this.editor.unload(),this.app.keymap.popScope(this.scope),this.app.workspace.activeEditor=null,this.containerEl.empty(),this.editor.destroy()}onunload(){typeof this.editor.onunload=="function"&&this.editor.onunload(),this.destroy()}unload(){typeof this.editor.unload=="function"&&this.editor.unload()}};gd();var $i=require("obsidian"),Eg=null,X$=3e4;async function Zw(n){let a=Date.now();if(!Eg||a-Eg.lastUpdate>X$){let e=Object.keys(n.app.metadataCache.getTags()||{}).map(i=>i.substring(1)),t=[],r=[];if(n.dataflowOrchestrator)try{let s=await n.dataflowOrchestrator.getQueryAPI().getAvailableContextsAndProjects();t=s.projects,r=s.contexts}catch(i){console.warn("Failed to get projects/contexts from dataflow:",i)}Eg={tags:e,projects:t,contexts:r,lastUpdate:a}}return Eg}var Jw=class extends $i.AbstractInputSuggest{constructor(e,t){super(e,t);this.inputEl=t}renderSuggestion(e,t){t.setText(this.getSuggestionText(e))}selectSuggestion(e,t){if(!this.inputEl){console.warn("BaseSuggest: inputEl is undefined, cannot set value"),this.close();return}this.inputEl.value=this.getSuggestionValue(e),this.inputEl.trigger("input"),this.close()}},zs=class extends Jw{constructor(e,t,r){super(e,t);this.availableChoices=[];this.availableChoices=r}getSuggestions(e){if(!e)return this.availableChoices.slice(0,100);let t=(0,$i.prepareFuzzySearch)(e.toLowerCase());return this.availableChoices.filter(r=>t(r.toLowerCase())).slice(0,100)}getSuggestionText(e){return e}getSuggestionValue(e){return e}},Dr=class extends zs{constructor(a,e,t){super(a,e,[]),Zw(t).then(r=>{this.availableChoices=r.projects})}},Er=class extends zs{constructor(a,e,t){super(a,e,[]),Zw(t).then(r=>{this.availableChoices=r.contexts})}},ui=class extends zs{constructor(a,e,t){super(a,e,[]),Zw(t).then(r=>{this.availableChoices=r.tags})}getSuggestions(a){let e=a.split(","),t=e[e.length-1].trim();if(!t)return this.availableChoices.slice(0,100);let r=(0,$i.prepareFuzzySearch)(t.toLowerCase());return this.availableChoices.filter(i=>r(i.toLowerCase())).slice(0,100)}getSuggestionValue(a){let t=this.inputEl.value.split(",");return t[t.length-1]=`#${a}`,`${t.join(",")},`}getSuggestionText(a){return`#${a}`}},Pg=class extends zs{constructor(a,e,t){let i=a.vault.getAllFolders().map(s=>s.path);super(a,e,["/",...i])}},Mg=class extends zs{constructor(a,e,t,r="multiple"){let s=a.vault.getAllFolders().map(o=>o.path);super(a,e,s),this.plugin=t,this.outputType=r}getSuggestions(a){if(this.outputType==="multiple"){let e=a.split(","),t=e[e.length-1].trim();if(!t)return this.availableChoices.slice(0,20);let r=(0,$i.prepareFuzzySearch)(t.toLowerCase());return this.availableChoices.filter(i=>r(i.toLowerCase())).sort((i,s)=>i.length-s.length).slice(0,20)}else{if(!a.trim())return this.availableChoices.slice(0,20);let e=(0,$i.prepareFuzzySearch)(a.toLowerCase());return this.availableChoices.filter(t=>e(t.toLowerCase())).sort((t,r)=>t.length-r.length).slice(0,20)}}getSuggestionText(a){return a}getSuggestionValue(a){if(this.outputType==="multiple"){let t=this.inputEl.value.split(",");return t[t.length-1]=a,t.join(",")}else return a}},Ig=class extends zs{constructor(a,e,t){let i=a.vault.getFiles().filter(s=>s.extension==="png"||s.extension==="jpg"||s.extension==="jpeg"||s.extension==="gif"||s.extension==="svg"||s.extension==="webp").map(s=>s.path);super(a,e,i)}},jo=class extends $i.AbstractInputSuggest{constructor(e,t,r,i){super(e,t);this.currentTarget="Quick Capture.md";this.suggestEl.addClass("quick-capture-file-suggest"),this.currentTarget=r.targetFile||"Quick Capture.md",this.onFileSelected=i||(s=>{this.setValue(s.path)}),this.scope.register(["Alt"],"x",s=>(t.focus(),!0)),this.setValue(this.currentTarget),this.onSelect((s,o)=>{this.onFileSelected(s)})}getSuggestions(e){let t=this.app.vault.getMarkdownFiles(),r=e.toLowerCase(),i=(0,$i.prepareFuzzySearch)(r);return t.map(s=>{let o=i(s.path);return o?{file:s,score:o.score}:null}).filter(s=>s!==null).sort((s,o)=>o.score-s.score).map(s=>s.file).slice(0,10)}renderSuggestion(e,t){t.setText(e.path)}selectSuggestion(e,t){this.setValue(e.path),this.onFileSelected(e),this.close()}},Ag=class extends $i.AbstractInputSuggest{constructor(a,e,t){super(e.app,a),this.onFileSelected=t||(()=>{})}getSuggestions(a){let e=this.app.vault.getMarkdownFiles(),t=a.toLowerCase(),r=(0,$i.prepareFuzzySearch)(t);return e.map(i=>{let s=r(i.path);return s?{file:i,score:s.score}:null}).filter(i=>i!==null).sort((i,s)=>s.score-i.score).map(i=>i.file).slice(0,10)}renderSuggestion(a,e){e.setText(a.path)}selectSuggestion(a,e){var t;this.setValue(a.path),(t=this.onFileSelected)==null||t.call(this,a),this.close()}};q();var cu=require("obsidian");function J$(n){let a="",e=0;for(;e0;){if(n[t]==="]"&&n[t+1]==="]"){if(r--,r===0){t+=2;break}}else n[t]==="["&&n[t+1]==="["&&(r++,t++);t++}a+=n.substring(e,t),e=t}else if(n[e]==="#"){let t=n.substring(e).match(fP);t&&t.index===0?e+=t[0].length:(a+=n[e],e++)}else a+=n[e],e++;return a}function Ka(n){if(!n)return n;let a=n,e=[js.startDateSymbol,js.createdDateSymbol,js.scheduledDateSymbol,js.dueDateSymbol,js.doneDateSymbol,"\u274C"].filter(Boolean);if(a=a.replace(/\s*~\s*📅\s*/g," "),e.forEach(p=>{if(!p)return;let m=p.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),f=new RegExp(`${m}\\uFE0F? *\\d{4}-\\d{2}-\\d{2}`,"gu");a=a.replace(f,"")}),a=a.replace(/(?:🔺|⏫|🔼|🔽|⏬️?|\[#[A-E]\])/gu,""),a=a.replace(/\s+!+(?:\s|$)/g," "),a=a.replace(/^!+\s*/,""),a=a.replace(/\s*!+$/,""),a=a.replace(/🆔\s*[^\s]+/g,""),a=a.replace(/⛔\s*[^\s]+/g,""),a=a.replace(/🏁\s*[^\s]+/g,""),js.recurrenceSymbol){let p=js.recurrenceSymbol.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),m=e.map(g=>g.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),f=["\u{1F194}","\u26D4","\u{1F3C1}"].map(g=>g.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),h=new RegExp(`${p}\\uFE0F? *.*?(?=s(?:[${m}${f}${p}]|@|#)|$)`,"gu");a=a.replace(h,"")}a=a.replace(/\[(?:due|📅|completion|✅|created|➕|start|🛫|scheduled|⏳|cancelled|❌|id|🆔|dependsOn|⛔|onCompletion|🏁|priority|repeat|recurrence|🔁|project|context)::\s*[^\]]+\]/gi,"");let t=[],r=/`([^`]+?)`/g,i=/\[\[([^\]]+)\]\]/g,s=/\[([^\[\]]*)\]\((.*?)\)/g,o,l=0;for(r.lastIndex=0;(o=r.exec(a))!==null;)t.push({text:o[0],index:o.index,length:o[0].length,id:`code_${l++}`});for(i.lastIndex=0;(o=i.exec(a))!==null;){let p=o.index,m=p+o[0].length;t.some(h=>Math.max(h.index,p)Math.max(h.index,p)0){t.sort((p,m)=>m.index-p.index);for(let p of t){let m=`__PRESERVED_${p.id}__`;u.set(m,p.text),c=c.substring(0,p.index)+m+c.substring(p.index+p.length)}}c=J$(c),c=c.replace(/@[\w-]+/g,""),c=c.replace(/\btarget:\s*/gi,""),c=c.replace(/\s*📁\s*/g," "),c=c.replace(/#(?![0-9-]+\b)[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,""),c=c.replace(/\s+~\s+/g," "),c=c.replace(/\s+~(?=\s|$)/g,""),c=c.replace(/^~\s+/,"");for(let[p,m]of u)c=c.replace(p,m);return c=c.replace(/^([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\]\s*/,""),c=c.replace(/^# /,""),c=c.replace(/\s+/g," ").trim(),c}var Lt=class extends cu.Component{constructor(e,t,r="",i=!0){super();this.app=e;this.hideMarks=i;this.currentFile=null;this.renderQueue=[];this.isRendering=!1;this.blockElements=new Map;this.container=t,this.sourcePath=r}setFile(e){this.currentFile=e,this.sourcePath=e.path}get file(){return this.currentFile}async render(e,t=!0){t&&this.clear();let r=this.splitIntoBlocks(e);for(let i=0;it.trim().length>0):e.split(/\n\s*\n/).filter(t=>t.trim().length>0)}queueRender(e,t){this.renderQueue.push({markdown:e,blockId:t}),this.processRenderQueue()}async processRenderQueue(){if(!(this.isRendering||this.renderQueue.length===0)){this.isRendering=!0;try{for(;this.renderQueue.length>0;){let e=this.renderQueue.shift();if(!e)continue;let{markdown:t,blockId:r}=e;if(r){let i=this.blockElements.get(r);i&&(i.empty(),await cu.MarkdownRenderer.render(this.app,t,i,this.sourcePath,this))}else await cu.MarkdownRenderer.render(this.app,t,this.container,this.sourcePath,this);await new Promise(i=>setTimeout(i,0))}}finally{this.isRendering=!1}}}updateBlock(e,t){this.blockElements.has(e)&&this.queueRender(t,e)}update(e){this.renderQueue=[],this.render(e,!0)}addBlock(e){let t=`block-${Date.now()}-${this.blockElements.size}`,r=this.container.createEl("div",{cls:"markdown-block"});return r.dataset.blockId=t,this.blockElements.set(t,r),this.queueRender(e,t),t}removeBlock(e){let t=this.blockElements.get(e);t&&(t.remove(),this.blockElements.delete(e))}clear(){this.container.empty(),this.blockElements.clear(),this.renderQueue=[]}onunload(){this.clear(),super.onunload()}};var Bo=require("obsidian"),tN=require("obsidian");var Qa=require("obsidian");q();var Pr=require("obsidian");q();var Rg=require("obsidian"),Fg=class extends Rg.AbstractInputSuggest{constructor(e,t,r,i){super(e,t);this.plugin=r;this.onChoose=i;this.inputEl=t}getSuggestions(e){if(!this.plugin.dataflowOrchestrator)return[];try{return this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasksSync().filter(s=>{var o;return(o=s.metadata)==null?void 0:o.id}).map(s=>s.metadata.id).filter(s=>s.toLowerCase().includes(e.toLowerCase())).slice(0,10)}catch(t){return console.warn("Failed to get task IDs from dataflow:",t),[]}}renderSuggestion(e,t){if(t.createDiv({text:e,cls:"task-id-suggestion"}),this.plugin.dataflowOrchestrator)try{let i=this.plugin.dataflowOrchestrator.getQueryAPI().getTaskByIdSync(e);i&&i.content&&t.createDiv({text:i.content,cls:"task-content-preview"})}catch(r){console.warn("Failed to get task from dataflow:",r)}}selectSuggestion(e){if(!this.inputEl){console.warn("TaskIdSuggest: inputEl is undefined, cannot set value"),this.close();return}let t=this.inputEl.value,r=t.lastIndexOf(",");if(r!==-1){let i=t.substring(0,r+1);this.inputEl.value=i+" "+e}else this.inputEl.value=e;this.inputEl.trigger("input"),this.onChoose(e),this.close()}},kd=class extends Rg.AbstractInputSuggest{constructor(e,t,r){super(e,t);this.onChoose=r;this.inputEl=t,this.onChoose=r}getSuggestions(e){return this.app.vault.getMarkdownFiles().filter(r=>r.path.toLowerCase().includes(e.toLowerCase())).slice(0,10)}renderSuggestion(e,t){t.createDiv({text:e.name,cls:"file-name"}),t.createDiv({text:e.path,cls:"file-path"})}selectSuggestion(e){if(!this.inputEl){console.warn("FileLocationSuggest: inputEl is undefined, cannot set value"),this.close();return}this.inputEl.value=e.path,this.inputEl.trigger("input"),this.onChoose(e),this.close()}};var $s=class extends Pr.Component{constructor(e,t,r={}){super();this.plugin=t;this.options=r;this.currentConfig=null;this.currentRawValue="";this.isInternalUpdate=!1;this.lastActionType=null;this.isUserConfiguring=!1;this.containerEl=e.createDiv({cls:"oncompletion-configurator"}),this.initializeUI(),this.options.initialValue&&this.setValue(this.options.initialValue)}initializeUI(){let e=this.containerEl.createDiv({cls:"oncompletion-action-type"});e.createDiv({cls:"oncompletion-label",text:d("Action Type")}),this.actionTypeDropdown=new Pr.DropdownComponent(e),this.actionTypeDropdown.addOption("",d("Select action type...")),this.actionTypeDropdown.addOption("delete",d("Delete task")),this.actionTypeDropdown.addOption("keep",d("Keep task")),this.actionTypeDropdown.addOption("complete",d("Complete related tasks")),this.actionTypeDropdown.addOption("move",d("Move task")),this.actionTypeDropdown.addOption("archive",d("Archive task")),this.actionTypeDropdown.addOption("duplicate",d("Duplicate task")),this.actionTypeDropdown.onChange(t=>{this.onActionTypeChange(t)}),this.configContainer=this.containerEl.createDiv({cls:"oncompletion-config"})}onActionTypeChange(e){if(this.isInternalUpdate=!0,this.lastActionType=e,this.isUserConfiguring=!1,this.configContainer.empty(),this.currentConfig=null,!e){this.updateValue(),this.isInternalUpdate=!1;return}switch(e){case"delete":this.currentConfig={type:"delete"};break;case"keep":this.currentConfig={type:"keep"};break;case"complete":this.createCompleteConfiguration();break;case"move":this.createMoveConfiguration();break;case"archive":this.createArchiveConfiguration();break;case"duplicate":this.createDuplicateConfiguration();break}this.updateValue(),this.isInternalUpdate=!1}initializeUIForActionType(e,t){if(this.isInternalUpdate=!0,this.configContainer.empty(),!e){this.isInternalUpdate=!1;return}switch(e){case"delete":this.currentConfig=t||{type:"delete"};break;case"keep":this.currentConfig=t||{type:"keep"};break;case"complete":this.createCompleteConfiguration(t);break;case"move":this.createMoveConfiguration(t);break;case"archive":this.createArchiveConfiguration(t);break;case"duplicate":this.createDuplicateConfiguration(t);break}this.isInternalUpdate=!1}createCompleteConfiguration(e){let t=e&&e.type==="complete"?e:{type:"complete",taskIds:[]};this.currentConfig=t;let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:d("Task IDs")}),this.taskIdsInput=new Pr.TextComponent(r),this.taskIdsInput.setPlaceholder(d("Enter task IDs separated by commas")),t.taskIds&&t.taskIds.length>0&&this.taskIdsInput.setValue(t.taskIds.join(", ")),this.taskIdsInput.onChange(i=>{this.currentConfig&&this.currentConfig.type==="complete"&&(this.isUserConfiguring=!0,this.currentConfig.taskIds=i.split(",").map(s=>s.trim()).filter(s=>s),this.updateValue())}),new Fg(this.plugin.app,this.taskIdsInput.inputEl,this.plugin,i=>{}),r.createDiv({cls:"oncompletion-description",text:d("Comma-separated list of task IDs to complete when this task is completed")})}createMoveConfiguration(e){let t=e&&e.type==="move"?e:{type:"move",targetFile:""};this.currentConfig=t;let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:d("Target File")}),this.targetFileInput=new Pr.TextComponent(r),this.targetFileInput.setPlaceholder(d("Path to target file")),t.targetFile&&this.targetFileInput.setValue(t.targetFile),this.targetFileInput.onChange(s=>{this.currentConfig&&this.currentConfig.type==="move"&&(this.isUserConfiguring=!0,this.currentConfig.targetFile=s,this.updateValue())}),new kd(this.plugin.app,this.targetFileInput.inputEl,s=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:d("Target Section (Optional)")}),this.targetSectionInput=new Pr.TextComponent(i),this.targetSectionInput.setPlaceholder(d("Section name in target file")),t.targetSection&&this.targetSectionInput.setValue(t.targetSection),this.targetSectionInput.onChange(s=>{this.currentConfig&&this.currentConfig.type==="move"&&(this.isUserConfiguring=!0,this.currentConfig.targetSection=s||void 0,this.updateValue())})}createArchiveConfiguration(e){let t=e&&e.type==="archive"?e:{type:"archive"};this.currentConfig=t;let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:d("Archive File (Optional)")}),this.archiveFileInput=new Pr.TextComponent(r),this.archiveFileInput.setPlaceholder(d("Default: Archive/Completed Tasks.md")),t.archiveFile&&this.archiveFileInput.setValue(t.archiveFile),this.archiveFileInput.onChange(s=>{this.currentConfig&&this.currentConfig.type==="archive"&&(this.isUserConfiguring=!0,this.currentConfig.archiveFile=s||void 0,this.updateValue())}),new kd(this.plugin.app,this.archiveFileInput.inputEl,s=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:d("Archive Section (Optional)")}),this.archiveSectionInput=new Pr.TextComponent(i),this.archiveSectionInput.setPlaceholder(d("Default: Completed Tasks")),t.archiveSection&&this.archiveSectionInput.setValue(t.archiveSection),this.archiveSectionInput.onChange(s=>{this.currentConfig&&this.currentConfig.type==="archive"&&(this.isUserConfiguring=!0,this.currentConfig.archiveSection=s||void 0,this.updateValue())})}createDuplicateConfiguration(e){let t=e&&e.type==="duplicate"?e:{type:"duplicate"};this.currentConfig=t;let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:d("Target File (Optional)")}),this.targetFileInput=new Pr.TextComponent(r),this.targetFileInput.setPlaceholder(d("Default: same file")),t.targetFile&&this.targetFileInput.setValue(t.targetFile),this.targetFileInput.onChange(o=>{this.currentConfig&&this.currentConfig.type==="duplicate"&&(this.isUserConfiguring=!0,this.currentConfig.targetFile=o||void 0,this.currentConfig,this.updateValue())}),new kd(this.plugin.app,this.targetFileInput.inputEl,o=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:d("Target Section (Optional)")}),this.targetSectionInput=new Pr.TextComponent(i),this.targetSectionInput.setPlaceholder(d("Section name in target file")),t.targetSection&&this.targetSectionInput.setValue(t.targetSection),this.targetSectionInput.onChange(o=>{this.currentConfig&&this.currentConfig.type==="duplicate"&&(this.isUserConfiguring=!0,this.currentConfig.targetSection=o||void 0,this.updateValue())});let s=this.configContainer.createDiv({cls:"oncompletion-field"});s.createDiv({cls:"oncompletion-label",text:d("Preserve Metadata")}),this.preserveMetadataToggle=new Pr.ToggleComponent(s),t.preserveMetadata!==void 0&&this.preserveMetadataToggle.setValue(t.preserveMetadata),this.preserveMetadataToggle.onChange(o=>{this.currentConfig&&this.currentConfig.type==="duplicate"&&(this.isUserConfiguring=!0,this.currentConfig.preserveMetadata=o,this.updateValue())}),s.createDiv({cls:"oncompletion-description",text:d("Keep completion dates and other metadata in the duplicated task")})}updateValue(){this.currentConfig?this.currentRawValue=this.generateRawValue(this.currentConfig):this.currentRawValue="";let e=!0;(!this.isInternalUpdate||this.isUserConfiguring)&&this.options.onChange&&this.options.onChange(this.currentRawValue),this.options.onValidationChange&&this.options.onValidationChange(e,void 0)}generateRawValue(e){switch(e.type){case"delete":return"delete";case"keep":return"keep";case"archive":let t=e;return t.archiveFile?`archive:${t.archiveFile}`:"archive";case"complete":let r=e;return r.taskIds&&r.taskIds.length>0?`complete:${r.taskIds.join(",")}`:"complete:";case"move":let i=e;return i.targetFile?`move:${i.targetFile}`:"move:";case"duplicate":let s=e;return s.targetFile||s.targetSection||s.preserveMetadata?JSON.stringify(e):"duplicate";default:return JSON.stringify(e)}}setValue(e){this.currentRawValue=e;try{let t=this.parseOnCompletionValue(e);t?(this.currentConfig=t,this.updateUIFromConfig(t)):(this.currentConfig=null,this.actionTypeDropdown.setValue(""),this.configContainer.empty())}catch(t){this.currentConfig=null,this.actionTypeDropdown.setValue(""),this.configContainer.empty()}}updateUIFromConfig(e){this.actionTypeDropdown.setValue(e.type),this.initializeUIForActionType(e.type,e)}getValue(){return this.currentRawValue}getConfig(){return this.currentConfig}isValid(){return this.currentConfig!==null}parseOnCompletionValue(e){if(!e)return null;let t=e.trim();if(t==="delete")return{type:"delete"};if(t==="keep")return{type:"keep"};if(t==="duplicate")return{type:"duplicate"};if(t==="archive")return{type:"archive"};if(t.startsWith("archive:")){let r=t.substring(8).trim();return{type:"archive",archiveFile:r}}if(t.startsWith("complete:")){let r=t.substring(9).trim(),i=r?r.split(",").map(s=>s.trim()):[];return{type:"complete",taskIds:i}}if(t.startsWith("move:")){let r=t.substring(5).trim();return{type:"move",targetFile:r}}try{let r=JSON.parse(t);if(r&&r.type)return r}catch(r){}return null}onunload(){this.containerEl.remove()}};function fn(n){if(!n)return"";let a=new Date(n),e=a.getUTCHours()===12&&a.getUTCMinutes()===0,t,r,i;if(e){t=a.getUTCFullYear(),r=a.getUTCMonth(),i=a.getUTCDate();let s=new Date(t,r,i),o=s.getFullYear(),l=String(s.getMonth()+1).padStart(2,"0"),c=String(s.getDate()).padStart(2,"0");return`${o}-${l}-${c}`}else return t=a.getFullYear(),r=a.getMonth(),i=a.getDate(),`${t}-${String(r+1).padStart(2,"0")}-${String(i).padStart(2,"0")}`}function es(n){if(!n)return;let[a,e,t]=n.split("-").map(Number);if(!(!a||!e||!t))return new Date(Date.UTC(a,e-1,t,12,0,0)).getTime()}function Z$(n,a){let e=Object.keys(a.taskStatuses).find(r=>a.taskStatuses[r].split("|").includes(n.status));return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[e]||"No status"}function eN(n,a){return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[n]||"No status"}function e_(n){var t;if(!n)return" ";if(n.length===1)return n;let a={completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-",canceled:"-","not-started":" ","not started":" "},e=n.toLowerCase();return(t=a[e])!=null?t:n}function Pt(n,a,e){let t=e.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"}),r=e_(n);return t.dataset.task=r,t.checked=r!==" ",t}var hn=class extends Qa.Component{constructor(e,t,r){super();this.parentEl=e;this.app=t;this.plugin=r;this.currentTask=null;this.isVisible=!0;this.isEditing=!1;this.editFormEl=null}onload(){this.containerEl=this.parentEl.createDiv({cls:"task-details"}),this.showEmptyState()}showEmptyState(){this.containerEl.empty(),this.containerEl.createDiv({cls:"details-empty"}).setText(d("Select a task to view details"))}getTaskStatus(){var e;return((e=this.currentTask)==null?void 0:e.status)||""}showTaskDetails(e){if(!e){this.currentTask=null,this.showEmptyState();return}this.currentTask=e,this.isEditing=!1,this.containerEl.empty();let t=this.containerEl.createDiv({cls:"details-header"});t.setText(d("Task Details")),t.createEl("div",{cls:"details-close-btn"},u=>{new Qa.ExtraButtonComponent(u).setIcon("x").onClick(()=>{this.toggleDetailsVisibility&&this.toggleDetailsVisibility(!1)})}),this.contentEl=this.containerEl.createDiv({cls:"details-content"}),this.contentEl.createEl("h2",{cls:"details-name"}).setText(Ka(e.content)),this.contentEl.createDiv({cls:"details-status-container"},u=>{u.createDiv({cls:"details-status-label"}).setText(d("Status")),u.createDiv({cls:"details-status"}).setText(Z$(e,this.plugin.settings))});let i=new _s(this.plugin,this.contentEl,e,{onTaskUpdate:this.onTaskUpdate});this.addChild(i);let s=this.contentEl.createDiv({cls:"details-metadata"});this.addMetadataField(s,d("File"),e.filePath);let o=this.contentEl.createDiv({cls:"details-actions"});this.showEditForm(e);let l=o.createEl("button",{cls:"details-edit-file-btn"});l.setText(d("Edit in File")),this.registerDomEvent(l,"click",()=>{this.onTaskEdit?this.onTaskEdit(e):this.editTask(e)});let c=o.createEl("button",{cls:"details-toggle-btn"});c.setText(e.completed?d("Mark Incomplete"):d("Mark Complete")),this.registerDomEvent(c,"click",()=>{this.onTaskToggleComplete&&this.onTaskToggleComplete(e)})}showEditForm(e){if(!e)return;this.isEditing=!0,this.editFormEl=this.contentEl.createDiv({cls:"details-edit-form"});let t=this.createFormField(this.editFormEl,d("Task Title")),r=new Qa.TextComponent(t);e.content,r.setValue(Ka(e.content)),r.inputEl.addClass("details-edit-content");let i=this.createFormField(this.editFormEl,d("Project")),s=Vt(e),o=ci(e),l=new Qa.TextComponent(i);if(l.setValue(s||""),e.metadata.tgProject&&(!e.metadata.project||!e.metadata.project.trim())){let V=e.metadata.tgProject,G=i.createDiv({cls:"project-source-indicator"}),Y="",le="";switch(V.type){case"path":Y=d("Auto-assigned from path")+`: ${V.source}`,le="\u{1F4C1}";break;case"metadata":Y=d("Auto-assigned from file metadata")+`: ${V.source}`,le="\u{1F4C4}";break;case"config":Y=d("Auto-assigned from config file")+`: ${V.source}`,le="\u2699\uFE0F";break;default:Y=d("Auto-assigned")+`: ${V.source}`,le="\u{1F517}"}G.createEl("span",{cls:"indicator-icon",text:le}),G.createEl("span",{cls:"indicator-text",text:Y}),o?(G.addClass("readonly-indicator"),l.setDisabled(!0),i.createDiv({cls:"field-description readonly-description",text:d("This project is automatically assigned and cannot be changed")})):(G.addClass("override-indicator"),i.createDiv({cls:"field-description override-description",text:d("You can override the auto-assigned project by entering a different value")}))}new Dr(this.app,l.inputEl,this.plugin);let c=this.createFormField(this.editFormEl,d("Tags")),u=new Qa.TextComponent(c);e.metadata.tags,u.setValue(e.metadata.tags?e.metadata.tags.map(V=>V.startsWith("#")?V.slice(1):V).join(", "):""),c.createSpan({cls:"field-description"}).setText(d("Comma separated")+" "+d("e.g. #tag1, #tag2, #tag3")),new ui(this.app,u.inputEl,this.plugin);let p=this.createFormField(this.editFormEl,d("Context")),m=new Qa.TextComponent(p);m.setValue(e.metadata.context||""),new Er(this.app,m.inputEl,this.plugin);let f=this.createFormField(this.editFormEl,d("Priority")),h=new Qa.DropdownComponent(f);h.addOption("",d("None")),h.addOption("1","\u23EC\uFE0F "+d("Lowest")),h.addOption("2","\u{1F53D} "+d("Low")),h.addOption("3","\u{1F53C} "+d("Medium")),h.addOption("4","\u23EB "+d("High")),h.addOption("5","\u{1F53A} "+d("Highest")),e.metadata.priority?h.setValue(e.metadata.priority.toString()):h.setValue("");let k=this.createFormField(this.editFormEl,d("Due Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.dueDate&&(k.value=fn(e.metadata.dueDate));let b=this.createFormField(this.editFormEl,d("Start Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.startDate&&(b.value=fn(e.metadata.startDate));let w=this.createFormField(this.editFormEl,d("Scheduled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.scheduledDate&&(w.value=fn(e.metadata.scheduledDate));let T=this.createFormField(this.editFormEl,d("Cancelled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.cancelledDate&&(T.value=fn(e.metadata.cancelledDate));let C=this.createFormField(this.editFormEl,d("On Completion")),S=(0,Qa.debounce)(async()=>{let V={...e},G=r.getValue();V.content=G;let Y={...V.metadata},le=l.getValue();o?Y.project=e.metadata.project:Y.project=le||void 0;let de=u.getValue();Y.tags=de?de.split(",").map(ue=>ue.trim()).map(ue=>ue.startsWith("#")?ue.slice(1):ue).filter(ue=>ue):[];let Te=m.getValue();Y.context=Te||void 0;let Re=h.getValue();Y.priority=Re?parseInt(Re):void 0;let Pe=k.value;if(Pe){let ue=es(Pe);e.metadata.dueDate!==ue?Y.dueDate=ue:Y.dueDate=e.metadata.dueDate}else!Pe&&e.metadata.dueDate?Y.dueDate=void 0:Y.dueDate=e.metadata.dueDate;let nt=b.value;if(nt){let ue=es(nt);e.metadata.startDate!==ue?Y.startDate=ue:Y.startDate=e.metadata.startDate}else!nt&&e.metadata.startDate?Y.startDate=void 0:Y.startDate=e.metadata.startDate;let et=w.value;if(et){let ue=es(et);e.metadata.scheduledDate!==ue?Y.scheduledDate=ue:Y.scheduledDate=e.metadata.scheduledDate}else!et&&e.metadata.scheduledDate?Y.scheduledDate=void 0:Y.scheduledDate=e.metadata.scheduledDate;let Ne=T.value;if(Ne){let ue=es(Ne);e.metadata.cancelledDate!==ue?Y.cancelledDate=ue:Y.cancelledDate=e.metadata.cancelledDate}else!Ne&&e.metadata.cancelledDate?Y.cancelledDate=void 0:Y.cancelledDate=e.metadata.cancelledDate;let oe=N.getValue();Y.dependsOn=oe?oe.split(",").map(ue=>ue.trim()).filter(ue=>ue):void 0;let ge=E.getValue();Y.onCompletion=ge||void 0;let Ee=R.getValue();Y.id=Ee||void 0;let tt=W.getValue();Y.recurrence=tt||void 0,V.metadata=Y;let Ke=this.hasTaskChanges(e,V);if(this.onTaskUpdate&&Ke)try{await this.onTaskUpdate(e,V),this.currentTask=V,this.isEditing=!1,this.showTaskDetails(V)}catch(ue){console.error("Failed to update task:",ue)}},800),E=new $s(C,this.plugin,{initialValue:e.metadata.onCompletion||"",onChange:V=>{let G=E.getConfig();this.shouldTriggerOnCompletionSave(G,V)&&S()},onValidationChange:(V,G)=>{let Y=C.querySelector(".oncompletion-validation-message");if(Y&&Y.remove(),G){let le=C.createDiv({cls:"oncompletion-validation-message error",text:G})}else if(V){let le=C.createDiv({cls:"oncompletion-validation-message success",text:d("Configuration is valid")})}}});this.addChild(E);let A=this.createFormField(this.editFormEl,d("Depends On")),N=new Qa.TextComponent(A);N.setValue(Array.isArray(e.metadata.dependsOn)?e.metadata.dependsOn.join(", "):e.metadata.dependsOn||""),A.createSpan({cls:"field-description"}).setText(d("Comma-separated list of task IDs this task depends on"));let I=this.createFormField(this.editFormEl,d("Task ID")),R=new Qa.TextComponent(I);R.setValue(e.metadata.id||""),I.createSpan({cls:"field-description"}).setText(d("Unique identifier for this task"));let j=this.createFormField(this.editFormEl,d("Recurrence")),W=new Qa.TextComponent(j);W.setValue(e.metadata.recurrence||""),j.createSpan({cls:"field-description"}).setText(d("e.g. every day, every 2 weeks"));let B=V=>{this.registerDomEvent(V,"blur",()=>{S()})},X=V=>{this.registerDomEvent(V,"change",()=>{S()})};B(r.inputEl),B(l.inputEl),B(u.inputEl),B(m.inputEl),B(h.selectEl),B(N.inputEl),B(R.inputEl),B(W.inputEl),X(k),X(b),X(w),X(T)}hasTaskChanges(e,t){if("isFileTask"in e&&e.isFileTask){let i={...e},s={...t};"sourceEntry"in i&&delete i.sourceEntry,"sourceEntry"in s&&delete s.sourceEntry;try{return JSON.stringify(i)!==JSON.stringify(s)}catch(o){return console.warn("Failed to compare tasks with JSON.stringify, falling back to property comparison:",o),this.compareTaskProperties(e,t)}}else try{return JSON.stringify(e)!==JSON.stringify(t)}catch(i){return console.warn("Failed to compare tasks with JSON.stringify, falling back to property comparison:",i),this.compareTaskProperties(e,t)}}compareTaskProperties(e,t){let r=["content","originalMarkdown","project","tags","context","priority","dueDate","startDate","scheduledDate","cancelledDate","onCompletion","dependsOn","id","recurrence"];for(let i of r){let s=e[i],o=t[i];if(i==="tags"){let l=Array.isArray(s)?s:[],c=Array.isArray(o)?o:[];if(l.length!==c.length)return!0;for(let u=0;u{this.isVisible||this.containerEl.hide()},300))}getCurrentTask(){return this.currentTask}isCurrentlyEditing(){return this.isEditing}shouldTriggerOnCompletionSave(e,t){return!t||!t.trim()||!e?!1:e.type==="delete"||e.type==="keep"||e.type==="archive"||e.type==="duplicate"?!0:e.type==="complete"?t.startsWith("complete:"):e.type==="move"?t.startsWith("move:"):!0}onunload(){this.containerEl.empty(),this.containerEl.remove()}};q();var _s=class extends tN.Component{constructor(e,t,r,i){super();this.plugin=e;this.containerEl=t;this.task=r;this.params=i}onload(){this.containerEl.createDiv({cls:"details-status-selector"},e=>{let t=e;this.params.type==="quick-capture"&&(e.createEl("div",{cls:"quick-capture-status-selector-label",text:d("Status")}),t=e.createDiv({cls:"quick-capture-status-selector"})),Object.keys(this.plugin.settings.taskStatuses).map(o=>({status:o,text:this.plugin.settings.taskStatuses[o].split("|")[0]})).forEach(o=>{let l=t.createEl("div",{cls:"status-option"+(o.text===this.task.status?" current":""),attr:{"aria-label":eN(o.status,this.plugin.settings)}}),c=l;this.plugin.settings.enableTaskGeniusIcons?(0,Bo.setIcon)(c,o.status):c=Pt(o.text,{...this.task,status:o.text},l),this.registerDomEvent(c,"click",u=>{var m,f,h,g;u.stopPropagation(),u.preventDefault();let p={...this.task,status:o.text};o.text==="x"&&!this.task.completed&&(p.completed=!0,p.metadata.completedDate=new Date().getTime()),(f=(m=this.params).onTaskUpdate)==null||f.call(m,this.task,p),(g=(h=this.params).onTaskStatusSelected)==null||g.call(h,o.text),this.task={...this.task,status:o.text},this.containerEl.querySelectorAll(".status-option").forEach(k=>{k.removeClass("current")}),l.addClass("current")})});let i=e.createEl("div",{cls:"more-status"}),s=new Bo.ExtraButtonComponent(i).setIcon("ellipsis").onClick(()=>{var p;let o=new Bo.Menu,l=this.plugin.settings.taskStatusMarks,c=new Map;for(let m of Object.keys(l)){let f=l[m];Array.from(c.values()).includes(f)||c.set(m,f)}for(let[m,f]of c)o.addItem(h=>{let k={" ":"notStarted","/":"inProgress",x:"completed","-":"abandoned","?":"planned",">":"inProgress",X:"completed"}[f];this.plugin.settings.enableTaskGeniusIcons&&k?h.titleEl.createEl("span",{cls:"status-option-icon"},y=>{(0,Bo.setIcon)(y,k)}):h.titleEl.createEl("span",{cls:"status-option-checkbox"},y=>{Pt(f,this.task,y)}),h.titleEl.createEl("span",{cls:"status-option",text:m}),h.onClick(()=>{var y,b,v,w;(b=(y=this.params).onTaskUpdate)==null||b.call(y,this.task,{...this.task,status:f}),(w=(v=this.params).onTaskStatusSelected)==null||w.call(v,f)})});let u=(p=s.extraSettingsEl)==null?void 0:p.getBoundingClientRect();u&&o.showAtPosition({x:u.left,y:u.bottom+10})})})}getTaskStatus(){return this.task.status||""}};var Bx={};Et(Bx,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingContext:()=>Nu,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>Hx,de:()=>xT,en:()=>hT,es:()=>Ex,fr:()=>RT,ja:()=>jT,nl:()=>QT,parse:()=>l6,parseDate:()=>d6,pt:()=>zT,ru:()=>wx,strict:()=>o6,uk:()=>jx,zh:()=>ux});var hT={};Et(hT,{Chrono:()=>be,GB:()=>lU,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>Lu,configuration:()=>$g,parse:()=>dU,parseDate:()=>cU,strict:()=>fT});var lN=Oe(aN(),1),nT=Oe(Xe(),1);var $;(function(n){n[n.AM=0]="AM",n[n.PM=1]="PM"})($||($={}));var we;(function(n){n[n.SUNDAY=0]="SUNDAY",n[n.MONDAY=1]="MONDAY",n[n.TUESDAY=2]="TUESDAY",n[n.WEDNESDAY=3]="WEDNESDAY",n[n.THURSDAY=4]="THURSDAY",n[n.FRIDAY=5]="FRIDAY",n[n.SATURDAY=6]="SATURDAY"})(we||(we={}));var _r;(function(n){n[n.JANUARY=1]="JANUARY",n[n.FEBRUARY=2]="FEBRUARY",n[n.MARCH=3]="MARCH",n[n.APRIL=4]="APRIL",n[n.MAY=5]="MAY",n[n.JUNE=6]="JUNE",n[n.JULY=7]="JULY",n[n.AUGUST=8]="AUGUST",n[n.SEPTEMBER=9]="SEPTEMBER",n[n.OCTOBER=10]="OCTOBER",n[n.NOVEMBER=11]="NOVEMBER",n[n.DECEMBER=12]="DECEMBER"})(_r||(_r={}));function rN(n,a){n.assign("day",a.getDate()),n.assign("month",a.getMonth()+1),n.assign("year",a.getFullYear())}function iN(n,a){n.assign("hour",a.getHours()),n.assign("minute",a.getMinutes()),n.assign("second",a.getSeconds()),n.assign("millisecond",a.getMilliseconds()),n.assign("meridiem",a.getHours()<12?$.AM:$.PM)}function Og(n,a){n.imply("day",a.getDate()),n.imply("month",a.getMonth()+1),n.imply("year",a.getFullYear())}function nN(n,a){n.imply("hour",a.getHours()),n.imply("minute",a.getMinutes()),n.imply("second",a.getSeconds()),n.imply("millisecond",a.getMilliseconds()),n.imply("meridiem",a.getHours()<12?$.AM:$.PM)}var iT=Oe(Xe(),1);var a_={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:{timezoneOffsetDuringDst:120,timezoneOffsetNonDst:60,dstStart:n=>sN(n,_r.MARCH,we.SUNDAY,2),dstEnd:n=>sN(n,_r.OCTOBER,we.SUNDAY,3)},CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CT:{timezoneOffsetDuringDst:-300,timezoneOffsetNonDst:-360,dstStart:n=>Us(n,_r.MARCH,we.SUNDAY,2,2),dstEnd:n=>Us(n,_r.NOVEMBER,we.SUNDAY,1,2)},CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:{timezoneOffsetDuringDst:-240,timezoneOffsetNonDst:-300,dstStart:n=>Us(n,_r.MARCH,we.SUNDAY,2,2),dstEnd:n=>Us(n,_r.NOVEMBER,we.SUNDAY,1,2)},FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:180,MST:-420,MT:{timezoneOffsetDuringDst:-360,timezoneOffsetNonDst:-420,dstStart:n=>Us(n,_r.MARCH,we.SUNDAY,2,2),dstEnd:n=>Us(n,_r.NOVEMBER,we.SUNDAY,1,2)},MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:{timezoneOffsetDuringDst:-420,timezoneOffsetNonDst:-480,dstStart:n=>Us(n,_r.MARCH,we.SUNDAY,2,2),dstEnd:n=>Us(n,_r.NOVEMBER,we.SUNDAY,1,2)},PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360};function Us(n,a,e,t,r=0){let i=0,s=0;for(;s0&&(a.month=(t=a==null?void 0:a.month)!=null?t:0,a.month+=p*12)}if("quarter"in a){let u=Math.floor(a.quarter);e.setMonth(e.getMonth()+u*3)}if("month"in a){let u=Math.floor(a.month);e.setMonth(e.getMonth()+u);let p=a.month-u;p>0&&(a.week=(r=a==null?void 0:a.week)!=null?r:0,a.week+=p*4)}if("week"in a){let u=Math.floor(a.week);e.setDate(e.getDate()+u*7);let p=a.week-u;p>0&&(a.day=(i=a==null?void 0:a.day)!=null?i:0,a.day+=Math.round(p*7))}if("day"in a){let u=Math.floor(a.day);e.setDate(e.getDate()+u);let p=a.day-u;p>0&&(a.hour=(s=a==null?void 0:a.hour)!=null?s:0,a.hour+=Math.round(p*24))}if("hour"in a){let u=Math.floor(a.hour);e.setHours(e.getHours()+u);let p=a.hour-u;p>0&&(a.minute=(o=a==null?void 0:a.minute)!=null?o:0,a.minute+=Math.round(p*60))}if("minute"in a){let u=Math.floor(a.minute);e.setMinutes(e.getMinutes()+u);let p=a.minute-u;p>0&&(a.second=(l=a==null?void 0:a.second)!=null?l:0,a.second+=Math.round(p*60))}if("second"in a){let u=Math.floor(a.second);e.setSeconds(e.getSeconds()+u);let p=a.second-u;p>0&&(a.millisecond=(c=a==null?void 0:a.millisecond)!=null?c:0,a.millisecond+=Math.round(p*1e3))}if("millisecond"in a){let u=Math.floor(a.millisecond);e.setMilliseconds(e.getMilliseconds()+u)}return e}function yd(n){let a={};for(let e in n)a[e]=-n[e];return a}nT.default.extend(lN.default);var Je=class{constructor(a){z(this,"instant");z(this,"timezoneOffset");var e;a=a!=null?a:new Date,a instanceof Date?(this.instant=a,this.timezoneOffset=null):(this.instant=(e=a.instant)!=null?e:new Date,this.timezoneOffset=Ng(a.timezone,this.instant))}getDateWithAdjustedTimezone(){let a=new Date(this.instant);return this.timezoneOffset!==null&&a.setMinutes(a.getMinutes()-this.getSystemTimezoneAdjustmentMinute(this.instant)),a}getSystemTimezoneAdjustmentMinute(a,e){var i;(!a||a.getTime()<0)&&(a=new Date);let t=-a.getTimezoneOffset(),r=(i=e!=null?e:this.timezoneOffset)!=null?i:t;return t-r}getTimezoneOffset(){var a;return(a=this.timezoneOffset)!=null?a:-this.instant.getTimezoneOffset()}},K=class n{constructor(a,e){z(this,"knownValues");z(this,"impliedValues");z(this,"reference");z(this,"_tags",new Set);if(this.reference=a,this.knownValues={},this.impliedValues={},e)for(let r in e)this.knownValues[r]=e[r];let t=a.getDateWithAdjustedTimezone();this.imply("day",t.getDate()),this.imply("month",t.getMonth()+1),this.imply("year",t.getFullYear()),this.imply("hour",12),this.imply("minute",0),this.imply("second",0),this.imply("millisecond",0)}get(a){return a in this.knownValues?this.knownValues[a]:a in this.impliedValues?this.impliedValues[a]:null}isCertain(a){return a in this.knownValues}getCertainComponents(){return Object.keys(this.knownValues)}imply(a,e){return a in this.knownValues?this:(this.impliedValues[a]=e,this)}assign(a,e){return this.knownValues[a]=e,delete this.impliedValues[a],this}delete(a){delete this.knownValues[a],delete this.impliedValues[a]}clone(){let a=new n(this.reference);a.knownValues={},a.impliedValues={};for(let e in this.knownValues)a.knownValues[e]=this.knownValues[e];for(let e in this.impliedValues)a.impliedValues[e]=this.impliedValues[e];return a}isOnlyDate(){return!this.isCertain("hour")&&!this.isCertain("minute")&&!this.isCertain("second")}isOnlyTime(){return!this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")&&!this.isCertain("year")}isOnlyWeekdayComponent(){return this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isDateWithUnknownYear(){return this.isCertain("month")&&!this.isCertain("year")}isValidDate(){let a=this.dateWithoutTimezoneAdjustment();return!(a.getFullYear()!==this.get("year")||a.getMonth()!==this.get("month")-1||a.getDate()!==this.get("day")||this.get("hour")!=null&&a.getHours()!=this.get("hour")||this.get("minute")!=null&&a.getMinutes()!=this.get("minute"))}toString(){return`[ParsingComponents { tags: ${JSON.stringify(Array.from(this._tags).sort())}, knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`}dayjs(){return(0,nT.default)(this.dateWithoutTimezoneAdjustment())}date(){let a=this.dateWithoutTimezoneAdjustment(),e=this.reference.getSystemTimezoneAdjustmentMinute(a,this.get("timezoneOffset"));return new Date(a.getTime()+e*6e4)}addTag(a){return this._tags.add(a),this}addTags(a){for(let e of a)this._tags.add(e);return this}tags(){return new Set(this._tags)}dateWithoutTimezoneAdjustment(){let a=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return a.setFullYear(this.get("year")),a}static createRelativeFromReference(a,e){let t=oN(a.getDateWithAdjustedTimezone(),e),r=new n(a);return r.addTag("result/relativeDate"),e.hour||e.minute||e.second?(r.addTag("result/relativeDateAndTime"),iN(r,t),rN(r,t),r.assign("timezoneOffset",a.getTimezoneOffset())):(nN(r,t),r.imply("timezoneOffset",a.getTimezoneOffset()),e.day?(r.assign("day",t.getDate()),r.assign("month",t.getMonth()+1),r.assign("year",t.getFullYear()),r.assign("weekday",t.getDay())):e.week?(r.assign("day",t.getDate()),r.assign("month",t.getMonth()+1),r.assign("year",t.getFullYear()),r.imply("weekday",t.getDay())):(r.imply("day",t.getDate()),e.month?(r.assign("month",t.getMonth()+1),r.assign("year",t.getFullYear())):(r.imply("month",t.getMonth()+1),e.year?r.assign("year",t.getFullYear()):r.imply("year",t.getFullYear())))),r}},Ue=class n{constructor(a,e,t,r,i){z(this,"refDate");z(this,"index");z(this,"text");z(this,"reference");z(this,"start");z(this,"end");this.reference=a,this.refDate=a.instant,this.index=e,this.text=t,this.start=r||new K(a),this.end=i}clone(){let a=new n(this.reference,this.index,this.text);return a.start=this.start?this.start.clone():null,a.end=this.end?this.end.clone():null,a}date(){return this.start.date()}addTag(a){return this.start.addTag(a),this.end&&this.end.addTag(a),this}addTags(a){return this.start.addTags(a),this.end&&this.end.addTags(a),this}tags(){let a=new Set(this.start.tags());if(this.end)for(let e of this.end.tags())a.add(e);return a}toString(){let a=Array.from(this.tags()).sort();return`[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(a)} ...}]`}};function pr(n,a,e="\\s{0,5},?\\s{0,5}"){let t=a.replace(/\((?!\?)/g,"(?:");return`${n}${t}(?:${e}${t}){0,10}`}function r_(n){let a;return n instanceof Array?a=[...n]:n instanceof Map?a=Array.from(n.keys()):a=Object.keys(n),a}function te(n){return`(?:${r_(n).sort((e,t)=>t.length-e.length).join("|").replace(/\./g,"\\.")})`}var dN=Oe(Xe(),1);function Mr(n){return n<100&&(n>50?n=n+1900:n=n+2e3),n}function rt(n,a,e){let t=(0,dN.default)(n),r=t;r=r.month(e-1),r=r.date(a),r=r.year(t.year());let i=r.add(1,"y"),s=r.add(-1,"y");return Math.abs(i.diff(t)){K.createRelativeFromReference(e.reference,r)}),K.createRelativeFromReference(e.reference,r)):null}};var c_=new RegExp(`(?:on\\s{0,3})?(${vd})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${vd}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${te(pi)})(?:(?:-|/|,?\\s{0,3})(${Ys}(?!\\w)))?(?=\\W|$)`,"i"),hN=1,gN=2,u_=3,kN=4,mu=class extends _{innerPattern(){return c_}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=pi[e[u_].toLowerCase()],i=bd(e[hN]);if(i>31)return e.index=e.index+e[hN].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[kN]){let s=qs(e[kN]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[gN]){let s=bd(e[gN]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var p_=new RegExp(`(${te(pi)})(?:-|/|\\s*,?\\s*)(${vd})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${vd})\\s*)?(?:(?:-|/|\\s*,\\s*|\\s+)(${Ys}))?(?=\\W|$)(?!\\:\\d)`,"i"),m_=1,yN=2,dT=3,cT=4,fu=class extends _{constructor(e){super();z(this,"shouldSkipYearLikeDate");this.shouldSkipYearLikeDate=e}innerPattern(){return p_}innerExtract(e,t){let r=pi[t[m_].toLowerCase()],i=bd(t[yN]);if(i>31||this.shouldSkipYearLikeDate&&!t[dT]&&!t[cT]&&t[yN].match(/^2[0-5]$/))return null;let s=e.createParsingComponents({day:i,month:r}).addTag("parser/ENMonthNameMiddleEndianParser");if(t[cT]){let c=qs(t[cT]);s.assign("year",c)}else{let c=rt(e.refDate,i,r);s.imply("year",c)}if(!t[dT])return s;let o=bd(t[dT]),l=e.createParsingResult(t.index,t[0]);return l.start=s,l.end=s.clone(),l.end.assign("day",o),l}};var f_=new RegExp(`((?:in)\\s*)?(${te(pi)})\\s*(?:(?:,|-|of)?\\s*(${Ys})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),h_=1,g_=2,vN=3,hu=class extends _{innerPattern(){return f_}innerExtract(a,e){let t=e[g_].toLowerCase();if(e[0].length<=3&&!lT[t])return null;let r=a.createParsingResult(e.index+(e[h_]||"").length,e.index+e[0].length);r.start.imply("day",1),r.start.addTag("parser/ENMonthNameParser");let i=pi[t];if(r.start.assign("month",i),e[vN]){let s=qs(e[vN]);r.start.assign("year",s)}else{let s=rt(a.refDate,1,i);r.start.imply("year",s)}return r}};var k_=new RegExp(`([0-9]{4})[-\\.\\/\\s](?:(${te(pi)})|([0-9]{1,2}))[-\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),y_=1,v_=2,bN=3,b_=4,gu=class extends _{constructor(e){super();z(this,"strictMonthDateOrder");this.strictMonthDateOrder=e}innerPattern(){return k_}innerExtract(e,t){let r=parseInt(t[y_]),i=parseInt(t[b_]),s=t[bN]?parseInt(t[bN]):pi[t[v_].toLowerCase()];if(s<1||s>12){if(this.strictMonthDateOrder)return null;i>=1&&i<=12&&([s,i]=[i,s])}return i<1||i>31?null:{day:i,month:s,year:r}}};var w_=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),T_=1,x_=2,ku=class extends _{innerPattern(){return w_}innerExtract(a,e){let t=parseInt(e[x_]),r=parseInt(e[T_]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};function C_(n,a,e,t){return new RegExp(`${n}${a}(\\d{1,4})(?:(?:\\.|:|\uFF1A)(\\d{1,2})(?:(?::|\uFF1A)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${e}`,t)}function S_(n,a){return new RegExp(`^(${n})(\\d{1,4})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${a}`,"i")}var wN=2,wd=3,jg=4,Hg=5,yu=6,Ca=class{constructor(a=!1){z(this,"strictMode");z(this,"cachedPrimaryPrefix",null);z(this,"cachedPrimarySuffix",null);z(this,"cachedPrimaryTimePattern",null);z(this,"cachedFollowingPhase",null);z(this,"cachedFollowingSuffix",null);z(this,"cachedFollowingTimePatten",null);this.strictMode=a}patternFlags(){return"i"}primaryPatternLeftBoundary(){return"(^|\\s|T|\\b)"}primarySuffix(){return"(?!/)(?=\\W|$)"}followingSuffix(){return"(?!/)(?=\\W|$)"}pattern(a){return this.getPrimaryTimePatternThroughCache()}extract(a,e){let t=this.extractPrimaryTimeComponents(a,e);if(!t)return e[0].match(/^\d{4}/)?(e.index+=4,null):(e.index+=e[0].length,null);let r=e.index+e[1].length,i=e[0].substring(e[1].length),s=a.createParsingResult(r,i,t);e.index+=e[0].length;let o=a.text.substring(e.index),c=this.getFollowingTimePatternThroughCache().exec(o);return i.match(/^\d{3,4}/)&&c&&(c[0].match(/^\s*([+-])\s*\d{2,4}$/)||c[0].match(/^\s*([+-])\s*\d{2}\W\d{2}/))?null:!c||c[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(s):(s.end=this.extractFollowingTimeComponents(a,c,s),s.end&&(s.text+=c[0]),this.checkAndReturnWithFollowingPattern(s))}extractPrimaryTimeComponents(a,e,t=!1){let r=a.createParsingComponents(),i=0,s=null,o=parseInt(e[wN]);if(o>100){if(this.strictMode||e[wd]!=null)return null;i=o%100,o=Math.floor(o/100)}if(o>24)return null;if(e[wd]!=null){if(e[wd].length==1&&!e[yu])return null;i=parseInt(e[wd])}if(i>=60)return null;if(o>12&&(s=$.PM),e[yu]!=null){if(o>12)return null;let l=e[yu][0].toLowerCase();l=="a"&&(s=$.AM,o==12&&(o=0)),l=="p"&&(s=$.PM,o!=12&&(o+=12))}if(r.assign("hour",o),r.assign("minute",i),s!==null?r.assign("meridiem",s):o<12?r.imply("meridiem",$.AM):r.imply("meridiem",$.PM),e[Hg]!=null){let l=parseInt(e[Hg].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[jg]!=null){let l=parseInt(e[jg]);if(l>=60)return null;r.assign("second",l)}return r}extractFollowingTimeComponents(a,e,t){let r=a.createParsingComponents();if(e[Hg]!=null){let l=parseInt(e[Hg].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[jg]!=null){let l=parseInt(e[jg]);if(l>=60)return null;r.assign("second",l)}let i=parseInt(e[wN]),s=0,o=-1;if(e[wd]!=null?s=parseInt(e[wd]):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=$.PM),e[yu]!=null){if(i>12)return null;let l=e[yu][0].toLowerCase();l=="a"&&(o=$.AM,i==12&&(i=0,r.isCertain("day")||r.imply("day",r.get("day")+1))),l=="p"&&(o=$.PM,i!=12&&(i+=12)),t.start.isCertain("meridiem")||(o==$.AM?(t.start.imply("meridiem",$.AM),t.start.get("hour")==12&&t.start.assign("hour",0)):(t.start.imply("meridiem",$.PM),t.start.get("hour")!=12&&t.start.assign("hour",t.start.get("hour")+12)))}return r.assign("hour",i),r.assign("minute",s),o>=0?r.assign("meridiem",o):t.start.isCertain("meridiem")&&t.start.get("hour")>12?t.start.get("hour")-12>i?r.imply("meridiem",$.AM):i<=12&&(r.assign("hour",i+12),r.assign("meridiem",$.PM)):i>12?r.imply("meridiem",$.PM):i<=12&&r.imply("meridiem",$.AM),r.date().getTime()24)return null}return a}checkAndReturnWithFollowingPattern(a){if(a.text.match(/^\d+-\d+$/))return null;let e=a.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(e){if(this.strictMode)return null;let t=e[1],r=e[2];if(r.includes(".")&&!r.match(/\d(\.\d{2})+$/))return null;let i=parseInt(r),s=parseInt(t);if(i>24||s>24)return null}return a}getPrimaryTimePatternThroughCache(){let a=this.primaryPrefix(),e=this.primarySuffix();return this.cachedPrimaryPrefix===a&&this.cachedPrimarySuffix===e?this.cachedPrimaryTimePattern:(this.cachedPrimaryTimePattern=C_(this.primaryPatternLeftBoundary(),a,e,this.patternFlags()),this.cachedPrimaryPrefix=a,this.cachedPrimarySuffix=e,this.cachedPrimaryTimePattern)}getFollowingTimePatternThroughCache(){let a=this.followingPhase(),e=this.followingSuffix();return this.cachedFollowingPhase===a&&this.cachedFollowingSuffix===e?this.cachedFollowingTimePatten:(this.cachedFollowingTimePatten=S_(a,e),this.cachedFollowingPhase=a,this.cachedFollowingSuffix=e,this.cachedFollowingTimePatten)}};var vu=class extends Ca{constructor(a){super(a)}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|to|until|through|till|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(a,e){let t=super.extractPrimaryTimeComponents(a,e);if(!t)return t;if(e[0].endsWith("night")){let r=t.get("hour");r>=6&&r<12?(t.assign("hour",t.get("hour")+12),t.assign("meridiem",$.PM)):r<6&&t.assign("meridiem",$.AM)}if(e[0].endsWith("afternoon")){t.assign("meridiem",$.PM);let r=t.get("hour");r>=0&&r<=6&&t.assign("hour",t.get("hour")+12)}return e[0].endsWith("morning")&&(t.assign("meridiem",$.AM),t.get("hour")<12&&t.assign("hour",t.get("hour"))),t.addTag("parser/ENTimeExpressionParser")}extractFollowingTimeComponents(a,e,t){let r=super.extractFollowingTimeComponents(a,e,t);return r&&r.addTag("parser/ENTimeExpressionParser"),r}};var D_=new RegExp(`(${ts})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),E_=new RegExp(`(${Gs})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),bu=class extends _{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?E_:D_}innerExtract(e,t){let r=mi(t[1]);return r?K.createRelativeFromReference(e.reference,yd(r)):null}};var P_=new RegExp(`(${ts})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),M_=new RegExp(`(${Gs})\\s{0,5}(later|after|from now)(?=\\W|$)`,"i"),I_=1,wu=class extends _{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?M_:P_}innerExtract(e,t){let r=mi(t[I_]);return r?K.createRelativeFromReference(e.reference,r):null}};var Td=class{refine(a,e){return e.filter(t=>this.isValid(a,t))}},Ir=class{refine(a,e){if(e.length<2)return e;let t=[],r=e[0],i=null;for(let s=1;s{`${this.constructor.name}${l}${c}${u}`}),r=u}}return r!=null&&t.push(r),t}};var Ct=class extends Ir{shouldMergeResults(a,e,t){return!e.end&&!t.end&&a.match(this.patternBetween())!=null}mergeResults(a,e,t){if(!e.start.isOnlyWeekdayComponent()&&!t.start.isOnlyWeekdayComponent()&&(t.start.getCertainComponents().forEach(i=>{e.start.isCertain(i)||e.start.imply(i,t.start.get(i))}),e.start.getCertainComponents().forEach(i=>{t.start.isCertain(i)||t.start.imply(i,e.start.get(i))})),e.start.date().getTime()>t.start.date().getTime()){let i=e.start.dayjs(),s=t.start.dayjs();t.start.isOnlyWeekdayComponent()&&s.add(7,"days").isAfter(i)?(s=s.add(7,"days"),t.start.imply("day",s.date()),t.start.imply("month",s.month()+1),t.start.imply("year",s.year())):e.start.isOnlyWeekdayComponent()&&i.add(-7,"days").isBefore(s)?(i=i.add(-7,"days"),e.start.imply("day",i.date()),e.start.imply("month",i.month()+1),e.start.imply("year",i.year())):t.start.isDateWithUnknownYear()&&s.add(1,"years").isAfter(i)?(s=s.add(1,"years"),t.start.imply("year",s.year())):e.start.isDateWithUnknownYear()&&i.add(-1,"years").isBefore(s)?(i=i.add(-1,"years"),e.start.imply("year",i.year())):[t,e]=[e,t]}let r=e.clone();return r.start=e.start,r.end=t.start,r.index=Math.min(e.index,t.index),e.index{var f,h;let s=a.text.substring(i.index+i.text.length),o=A_.exec(s);if(!o)return;let l=o[1].toUpperCase(),c=(h=(f=i.start.date())!=null?f:i.refDate)!=null?h:new Date,u={...this.timezoneOverrides,...t},p=Ng(l,c,u);if(p==null)return;a.debug(()=>{`${l}${p}${i.start}`});let m=i.start.get("timezoneOffset");m!==null&&p!=m&&(i.start.isCertain("timezoneOffset")||l!=o[1])||i.start.isOnlyDate()&&l!=o[1]||(i.text+=o[0],i.start.isCertain("timezoneOffset")||i.start.assign("timezoneOffset",p),i.end!=null&&!i.end.isCertain("timezoneOffset")&&i.end.assign("timezoneOffset",p))}),e}};var F_=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),R_=1,O_=2,N_=3,Ui=class{refine(a,e){return e.forEach(function(t){if(t.start.isCertain("timezoneOffset"))return;let r=a.text.substring(t.index+t.text.length),i=F_.exec(r);if(!i)return;a.debug(()=>{`${i[0]}${t}`});let s=parseInt(i[O_]),o=parseInt(i[N_]||"0"),l=s*60+o;l>840||(i[R_]==="-"&&(l=-l),t.end!=null&&t.end.assign("timezoneOffset",l),t.start.assign("timezoneOffset",l),t.text+=i[0])}),e}};var Ks=class{refine(a,e){if(e.length<2)return e;let t=[],r=e[0];for(let i=1;i=r.index+r.text.length){t.push(r),r=s;continue}let o=null,l=null;s.text.length>r.text.length?(o=s,l=r):(o=r,l=s),a.debug(()=>{`${this.constructor.name}${l}${o}`}),r=o}return r!=null&&t.push(r),t}};var SN=Oe(Xe(),1);var Cu=class{refine(a,e){return a.option.forwardDate&&e.forEach(t=>{let r=(0,SN.default)(a.reference.getDateWithAdjustedTimezone());if(t.start.isOnlyTime()&&a.reference.instant>t.start.date()){let i=a.reference.getDateWithAdjustedTimezone(),s=new Date(i);s.setDate(s.getDate()+1),Og(t.start,s),a.debug(()=>{`${this.constructor.name}${t}${i}${s}`}),t.end&&t.end.isOnlyTime()&&(Og(t.end,s),t.start.date()>t.end.date()&&(s.setDate(s.getDate()+1),Og(t.end,s)))}if(t.start.isOnlyWeekdayComponent()&&r.isAfter(t.start.dayjs())&&(r.day()>=t.start.get("weekday")?r=r.day(t.start.get("weekday")+7):r=r.day(t.start.get("weekday")),t.start.imply("day",r.date()),t.start.imply("month",r.month()+1),t.start.imply("year",r.year()),a.debug(()=>{`${this.constructor.name}${t}${t.start}`}),t.end&&t.end.isOnlyWeekdayComponent()&&(r.day()>t.end.get("weekday")?r=r.day(t.end.get("weekday")+7):r=r.day(t.end.get("weekday")),t.end.imply("day",r.date()),t.end.imply("month",r.month()+1),t.end.imply("year",r.year()),a.debug(()=>{`${this.constructor.name}${t}${t.end}`}))),t.start.isDateWithUnknownYear()&&r.isAfter(t.start.dayjs()))for(let i=0;i<3&&r.isAfter(t.start.dayjs());i++)t.start.imply("year",t.start.get("year")+1),a.debug(()=>{`${this.constructor.name}${t}${t.start}`}),t.end&&!t.end.isCertain("year")&&(t.end.imply("year",t.end.get("year")+1),a.debug(()=>{`${this.constructor.name}${t}${t.start}`}))}),e}};var Su=class extends Td{constructor(e){super();z(this,"strictMode");this.strictMode=e}isValid(e,t){return t.text.replace(" ","").match(/^\d*(\.\d*)?$/)?(e.debug(()=>{`${t.text}`}),!1):t.start.isValidDate()?t.end&&!t.end.isValidDate()?(e.debug(()=>{`${t}${t.end}`}),!1):this.strictMode?this.isStrictModeValid(e,t):!0:(e.debug(()=>{`${t}${t.start}`}),!1)}isStrictModeValid(e,t){return t.start.isOnlyWeekdayComponent()?(e.debug(()=>{`${t}${t.end}`}),!1):!0}};var L_=new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})(?:T([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?(Z|([+-]\\d{2}):?(\\d{2})?)?)?(?=\\W|$)","i"),j_=1,H_=2,B_=3,DN=4,V_=5,EN=6,PN=7,W_=8,MN=9,IN=10,as=class extends _{innerPattern(){return L_}innerExtract(a,e){let t=a.createParsingComponents({year:parseInt(e[j_]),month:parseInt(e[H_]),day:parseInt(e[B_])});if(e[DN]!=null&&(t.assign("hour",parseInt(e[DN])),t.assign("minute",parseInt(e[V_])),e[EN]!=null&&t.assign("second",parseInt(e[EN])),e[PN]!=null&&t.assign("millisecond",parseInt(e[PN])),e[W_]!=null)){let r=0;if(e[MN]){let i=parseInt(e[MN]),s=0;e[IN]!=null&&(s=parseInt(e[IN])),r=i*60,r<0?r-=s:r+=s}t.assign("timezoneOffset",r)}return t.addTag("parser/ISOFormatParser")}};var Vo=class extends Ir{mergeResults(a,e,t){let r=t.clone();return r.index=e.index,r.text=e.text+a+r.text,r.start.assign("weekday",e.start.get("weekday")),r.end&&r.end.assign("weekday",e.start.get("weekday")),r}shouldMergeResults(a,e,t){return e.start.isOnlyWeekdayComponent()&&!e.start.isCertain("hour")&&t.start.isCertain("day")&&a.match(/^,?\s*$/)!=null}};function Mt(n,a=!1){return n.parsers.unshift(new as),n.refiners.unshift(new Vo),n.refiners.unshift(new Ui),n.refiners.unshift(new Ks),n.refiners.push(new xu),n.refiners.push(new Ks),n.refiners.push(new Cu),n.refiners.push(new Su(a)),n}var RN=Oe(Xe(),1);var Qs=Oe(Xe(),1);function Xa(n){let a=(0,Qs.default)(n.getDateWithAdjustedTimezone()),e=new K(n,{});return Tt(e,a),xN(e,a),e.assign("timezoneOffset",n.getTimezoneOffset()),e.addTag("casualReference/now"),e}function Sa(n){let a=(0,Qs.default)(n.getDateWithAdjustedTimezone()),e=new K(n,{});return Tt(e,a),gn(e,a),e.addTag("casualReference/today"),e}function Ja(n){return Wo(n,1).addTag("casualReference/yesterday")}function Wo(n,a){return kn(n,-a)}function Za(n){return kn(n,1).addTag("casualReference/tomorrow")}function kn(n,a){let e=(0,Qs.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e=e.add(a,"day"),Tt(t,e),gn(t,e),t}function AN(n,a=22){let e=(0,Qs.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return Tt(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/tonight"),t}function Bg(n,a=0){let e=(0,Qs.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e.hour()<6&&(e=e.add(-1,"day")),Tt(t,e),t.imply("hour",a),t}function Cd(n,a=20){let e=new K(n,{});return e.imply("meridiem",$.PM),e.imply("hour",a),e.addTag("casualReference/evening"),e}function Vg(n,a=20){let e=(0,Qs.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e=e.add(-1,"day"),Tt(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/yesterday"),t.addTag("casualReference/evening"),t}function zo(n){let a=new K(n,{}),e=(0,Qs.default)(n.getDateWithAdjustedTimezone());return e.hour()>2&&TN(a,e),a.assign("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("millisecond",0),a.addTag("casualReference/midnight"),a}function Sd(n,a=6){let e=new K(n,{});return e.imply("meridiem",$.AM),e.imply("hour",a),e.imply("minute",0),e.imply("second",0),e.imply("millisecond",0),e.addTag("casualReference/morning"),e}function FN(n,a=15){let e=new K(n,{});return e.imply("meridiem",$.PM),e.imply("hour",a),e.imply("minute",0),e.imply("second",0),e.imply("millisecond",0),e.addTag("casualReference/afternoon"),e}function Dd(n){let a=new K(n,{});return a.imply("meridiem",$.AM),a.assign("hour",12),a.imply("minute",0),a.imply("second",0),a.imply("millisecond",0),a.addTag("casualReference/noon"),a}var z_=/(now|today|tonight|tomorrow|overmorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,Du=class extends _{innerPattern(a){return z_}innerExtract(a,e){let t=(0,RN.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"now":i=Xa(a.reference);break;case"today":i=Sa(a.reference);break;case"yesterday":i=Ja(a.reference);break;case"tomorrow":case"tmr":case"tmrw":i=Za(a.reference);break;case"tonight":i=AN(a.reference);break;case"overmorrow":i=kn(a.reference,2);break;default:r.match(/last\s*night/)&&(t.hour()>6&&(t=t.add(-1,"day")),Tt(i,t),i.imply("hour",0));break}return i.addTag("parser/ENCasualDateParser"),i}};var $_=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i,Eu=class extends _{innerPattern(){return $_}innerExtract(a,e){let t=null;switch(e[1].toLowerCase()){case"afternoon":t=FN(a.reference);break;case"evening":case"night":t=Cd(a.reference);break;case"midnight":t=zo(a.reference);break;case"morning":t=Sd(a.reference);break;case"noon":case"midday":t=Dd(a.reference);break}return t&&t.addTag("parser/ENCasualTimeParser"),t}};function oa(n){let a={};for(let e in n)a[e]=-n[e];return a}function Wg(n,a){let e=n.clone(),t=n.dayjs();for(let r in a)t=t.add(a[r],r);return("day"in a||"d"in a||"week"in a||"month"in a||"year"in a)&&(e.imply("day",t.date()),e.imply("month",t.month()+1),e.imply("year",t.year())),("second"in a||"minute"in a||"hour"in a)&&(e.imply("second",t.second()),e.imply("minute",t.minute()),e.imply("hour",t.hour())),e}function la(n,a,e){let t=n.getDateWithAdjustedTimezone(),r=__(t,a,e),i=new K(n);return i=Wg(i,{day:r}),i.assign("weekday",a),i}function __(n,a,e){let t=n.getDay();switch(e){case"this":return zg(n,a);case"last":return ON(n,a);case"next":return t==we.SUNDAY?a==we.SUNDAY?7:a:t==we.SATURDAY?a==we.SATURDAY?7:a==we.SUNDAY?8:1+a:a=0&&(t-=7),t}var Y_=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${te(Lg)}|weekend|weekday)(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),q_=1,G_=2,K_=3,Pu=class extends _{innerPattern(){return Y_}innerExtract(a,e){let t=e[q_],r=e[K_],i=t||r;i=i||"",i=i.toLowerCase();let s=null;i=="last"||i=="past"?s="last":i=="next"?s="next":i=="this"&&(s="this");let o=e[G_].toLowerCase(),l;if(Lg[o]!==void 0)l=Lg[o];else if(o=="weekend")l=s=="last"?we.SUNDAY:we.SATURDAY;else if(o=="weekday"){let c=a.reference.getDateWithAdjustedTimezone().getDay();c==we.SUNDAY||c==we.SATURDAY?l=s=="last"?we.FRIDAY:we.MONDAY:(l=c-1,l=s=="last"?l-1:l+1,l=l%5+1)}else return null;return la(a.reference,l,s)}};var NN=Oe(Xe(),1);var Q_=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${te(uu)})(?=\\s*)(?=\\W|$)`,"i"),X_=1,J_=2,Mu=class extends _{innerPattern(){return Q_}innerExtract(a,e){let t=e[X_].toLowerCase(),r=e[J_].toLowerCase(),i=uu[r];if(t=="next"||t.startsWith("after")){let l={};return l[i]=1,K.createRelativeFromReference(a.reference,l)}if(t=="last"||t=="past"){let l={};return l[i]=-1,K.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=(0,NN.default)(a.reference.instant);return r.match(/week/i)?(o=o.add(-o.get("d"),"d"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.imply("year",o.year())):r.match(/month/i)?(o=o.add(-o.date()+1,"d"),s.imply("day",o.date()),s.assign("year",o.year()),s.assign("month",o.month()+1)):r.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.assign("year",o.year())),s}};var Z_=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i"),eU=1,tU=5,LN=2,jN=3,mT=4,ka=class{constructor(a){z(this,"groupNumberMonth");z(this,"groupNumberDay");this.groupNumberMonth=a?jN:LN,this.groupNumberDay=a?LN:jN}pattern(){return Z_}extract(a,e){let t=e.index+e[eU].length,r=e.index+e[0].length-e[tU].length;if(t>0&&a.text.substring(0,t).match("\\d/?$")||r12)&&o>12)if(l>=1&&l<=12&&o<=31)[l,o]=[o,l];else return null;if(l<1||l>31)return null;if(s.start.assign("day",l),s.start.assign("month",o),e[mT]){let c=parseInt(e[mT]),u=Mr(c);s.start.assign("year",u)}else{let c=rt(a.refDate,l,o);s.start.imply("year",c)}return s.addTag("parser/SlashDateFormatParser")}};var aU=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${ts})(?=\\W|$)`,"i"),rU=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${Gs})(?=\\W|$)`,"i"),Iu=class extends _{constructor(e=!0){super();z(this,"allowAbbreviations");this.allowAbbreviations=e}innerPattern(){return this.allowAbbreviations?aU:rU}innerExtract(e,t){let r=t[1].toLowerCase(),i=mi(t[2]);if(!i)return null;switch(r){case"last":case"past":case"-":i=yd(i);break}return K.createRelativeFromReference(e.reference,i)}};function iU(n){return n.text.match(/^[+-]/i)!=null}function HN(n){return n.text.match(/^-/i)!=null}var Au=class extends Ir{shouldMergeResults(a,e,t){return a.match(/^\s*$/i)?iU(t)||HN(t):!1}mergeResults(a,e,t,r){let i=mi(t.text);HN(t)&&(i=oa(i));let s=K.createRelativeFromReference(new Je(e.start.date()),i);return new Ue(e.reference,e.index,`${e.text}${a}${t.text}`,s)}};function BN(n){return n.text.match(/\s+(before|from)$/i)!=null}function nU(n){return n.text.match(/\s+(after|since)$/i)!=null}var Fu=class extends Ir{patternBetween(){return/^\s*$/i}shouldMergeResults(a,e,t){return!a.match(this.patternBetween())||!BN(e)&&!nU(e)?!1:!!t.start.get("day")&&!!t.start.get("month")&&!!t.start.get("year")}mergeResults(a,e,t){let r=mi(e.text);BN(e)&&(r=yd(r));let i=K.createRelativeFromReference(new Je(t.start.date()),r);return new Ue(t.reference,e.index,`${e.text}${a}${t.text}`,i)}};var sU=new RegExp(`^\\s*(${Ys})`,"i"),oU=1,Ru=class{refine(a,e){return e.forEach(function(t){if(!t.start.isDateWithUnknownYear())return;let r=a.text.substring(t.index+t.text.length),i=sU.exec(r);if(!i||i[0].trim().length<=3)return;a.debug(()=>{`${i[0]}${t}`});let s=qs(i[oU]);t.end!=null&&t.end.assign("year",s),t.start.assign("year",s),t.text+=i[0]}),e}};var Ou=class extends Td{constructor(){super()}isValid(a,e){let t=e.text.trim();return t===a.text.trim()?!0:t.toLowerCase()==="may"&&!a.text.substring(0,e.index).trim().match(/\b(in)$/i)?(a.debug(()=>{`${e}`}),!1):t.toLowerCase().endsWith("the second")?(a.text.substring(e.index+e.text.length).trim().length>0&&a.debug(()=>{`${e}`}),!1):!0}};var $o=class{createCasualConfiguration(a=!1){let e=this.createConfiguration(!1,a);return e.parsers.push(new Du),e.parsers.push(new Eu),e.parsers.push(new hu),e.parsers.push(new Mu),e.parsers.push(new Iu),e.refiners.push(new Ou),e}createConfiguration(a=!0,e=!1){let t=Mt({parsers:[new ka(e),new pu(a),new mu,new fu(e),new Pu,new ku,new vu(a),new bu(a),new wu(a)],refiners:[new xd]},a);return t.parsers.unshift(new gu(a)),t.refiners.unshift(new Fu),t.refiners.unshift(new Au),t.refiners.unshift(new Ks),t.refiners.push(new xd),t.refiners.push(new Ru),t.refiners.push(new Tu),t}};var be=class n{constructor(a){z(this,"parsers");z(this,"refiners");z(this,"defaultConfig",new $o);a=a||this.defaultConfig.createCasualConfiguration(),this.parsers=[...a.parsers],this.refiners=[...a.refiners]}clone(){return new n({parsers:[...this.parsers],refiners:[...this.refiners]})}parseDate(a,e,t){let r=this.parse(a,e,t);return r.length>0?r[0].start.date():null}parse(a,e,t){let r=new Nu(a,e,t),i=[];return this.parsers.forEach(s=>{let o=n.executeParser(r,s);i=i.concat(o)}),i.sort((s,o)=>s.index-o.index),this.refiners.forEach(function(s){i=s.refine(r,i)}),i}static executeParser(a,e){let t=[],r=e.pattern(a),i=a.text,s=a.text,o=r.exec(s);for(;o;){let l=o.index+i.length-s.length;o.index=l;let c=e.extract(a,o);if(!c){s=i.substring(o.index+1),o=r.exec(s);continue}let u=null;c instanceof Ue?u=c:c instanceof K?(u=a.createParsingResult(o.index,o[0]),u.start=c):u=a.createParsingResult(o.index,o[0],c);let p=u.index,m=u.text;a.debug(()=>console.log(`${e.constructor.name} extracted (at index=${p}) '${m}'`)),t.push(u),s=i.substring(p+m.length),o=r.exec(s)}return t}},Nu=class{constructor(a,e,t){z(this,"text");z(this,"option");z(this,"reference");z(this,"refDate");this.text=a,this.reference=new Je(e),this.option=t!=null?t:{},this.refDate=this.reference.instant}createParsingComponents(a){return a instanceof K?a:new K(this.reference,a)}createParsingResult(a,e,t,r){let i=typeof e=="string"?e:this.text.substring(a,e),s=t?this.createParsingComponents(t):null,o=r?this.createParsingComponents(r):null;return new Ue(this.reference,a,i,s,o)}debug(a){this.option.debug&&(this.option.debug instanceof Function?this.option.debug(a):this.option.debug.debug(a))}};var $g=new $o,Lu=new be($g.createCasualConfiguration(!1)),fT=new be($g.createConfiguration(!0,!1)),lU=new be($g.createCasualConfiguration(!0));function dU(n,a,e){return Lu.parse(n,a,e)}function cU(n,a,e){return Lu.parseDate(n,a,e)}var xT={};Et(xT,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>wT,createCasualConfiguration:()=>e2,createConfiguration:()=>TT,parse:()=>SU,parseDate:()=>DU,strict:()=>CU});var ju=class extends Ca{primaryPrefix(){return"(?:(?:um|von)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|bis)\\s*"}extractPrimaryTimeComponents(a,e){return e[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(a,e)}};var kT={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6},yT={januar:1,j\u00E4nner:1,janner:1,jan:1,"jan.":1,februar:2,feber:2,feb:2,"feb.":2,m\u00E4rz:3,maerz:3,m\u00E4r:3,"m\xE4r.":3,mrz:3,"mrz.":3,april:4,apr:4,"apr.":4,mai:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,august:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,dezember:12,dez:12,"dez.":12},gT={eins:1,eine:1,einem:1,einen:1,einer:1,zwei:2,drei:3,vier:4,f\u00FCnf:5,fuenf:5,sechs:6,sieben:7,acht:8,neun:9,zehn:10,elf:11,zw\u00F6lf:12,zwoelf:12},Hu={sek:"second",sekunde:"second",sekunden:"second",min:"minute",minute:"minute",minuten:"minute",h:"hour",std:"hour",stunde:"hour",stunden:"hour",tag:"d",tage:"d",tagen:"d",woche:"week",wochen:"week",monat:"month",monate:"month",monaten:"month",monats:"month",quartal:"quarter",quartals:"quarter",quartale:"quarter",quartalen:"quarter",a:"year",j:"year",jr:"year",jahr:"year",jahre:"year",jahren:"year",jahres:"year"},vT=`(?:${te(gT)}|[0-9]+|[0-9]+\\.[0-9]+|halb?|halbe?|einigen?|wenigen?|mehreren?)`;function bT(n){let a=n.toLowerCase();return gT[a]!==void 0?gT[a]:a==="ein"||a==="einer"||a==="einem"||a==="einen"||a==="eine"?1:a.match(/wenigen/)?2:a.match(/halb/)||a.match(/halben/)?.5:a.match(/einigen/)?3:a.match(/mehreren/)?7:parseFloat(a)}var WN="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";function zN(n){if(/v/i.test(n))return-parseInt(n.replace(/[^0-9]+/gi,""));if(/n/i.test(n))return parseInt(n.replace(/[^0-9]+/gi,""));if(/z/i.test(n))return parseInt(n.replace(/[^0-9]+/gi,""));let a=parseInt(n);return Mr(a)}var $N=`(${vT})\\s{0,5}(${te(Hu)})\\s{0,5}`,VN=new RegExp($N,"i"),_N=pr("",$N);function UN(n){let a={},e=n,t=VN.exec(e);for(;t;)uU(a,t),e=e.substring(t[0].length),t=VN.exec(e);return a}function uU(n,a){let e=bT(a[1]),t=Hu[a[2].toLowerCase()];n[t]=e}var pU=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${te(kT)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),mU=1,fU=3,hU=2,Bu=class extends _{innerPattern(){return pU}innerExtract(a,e){let t=e[hU].toLowerCase(),r=kT[t],i=e[mU],s=e[fU],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o.match(/letzte/)?l="last":o.match(/chste/)?l="next":o.match(/diese/)&&(l="this"),la(a.reference,r,l)}};var gU=new RegExp("(^|\\s|T)(?:(?:um|von)\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),kU=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|bis(?:\\s+um)?|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),yU=2,YN=3,qN=4,GN=5,Vu=class n{pattern(a){return gU}extract(a,e){let t=a.createParsingResult(e.index+e[1].length,e[0].substring(e[1].length));if(t.text.match(/^\d{4}$/)||(t.start=n.extractTimeComponent(t.start.clone(),e),!t.start))return e.index+=e[0].length,null;let r=a.text.substring(e.index+e[0].length),i=kU.exec(r);return i&&(t.end=n.extractTimeComponent(t.start.clone(),i),t.end&&(t.text+=i[0])),t}static extractTimeComponent(a,e){let t=0,r=0,i=null;if(t=parseInt(e[yU]),e[YN]!=null&&(r=parseInt(e[YN])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[GN]!=null){if(t>12)return null;let s=e[GN].toLowerCase();s.match(/morgen|vormittag/)&&(i=$.AM,t==12&&(t=0)),s.match(/nachmittag|abend/)&&(i=$.PM,t!=12&&(t+=12)),s.match(/nacht/)&&(t==12?(i=$.AM,t=0):t<6?i=$.AM:(i=$.PM,t+=12))}if(a.assign("hour",t),a.assign("minute",r),i!==null?a.assign("meridiem",i):t<12?a.imply("meridiem",$.AM):a.imply("meridiem",$.PM),e[qN]!=null){let s=parseInt(e[qN]);if(s>=60)return null;a.assign("second",s)}return a}};var Wu=class extends Ct{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}};var zu=class extends St{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}};var QN=Oe(Xe(),1);var KN=Oe(Xe(),1);var _o=class n extends _{innerPattern(a){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(a,e){let t=(0,KN.default)(a.refDate),r=e[2].toLowerCase(),i=a.createParsingComponents();return gn(i,t),n.extractTimeComponents(i,r)}static extractTimeComponents(a,e){switch(e){case"morgen":a.imply("hour",6),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break;case"vormittag":a.imply("hour",9),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break;case"mittag":case"mittags":a.imply("hour",12),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break;case"nachmittag":a.imply("hour",15),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.PM);break;case"abend":a.imply("hour",18),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.PM);break;case"nacht":a.imply("hour",22),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.PM);break;case"mitternacht":a.get("hour")>1&&(a=Wg(a,{day:1})),a.imply("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break}return a}};var vU=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),bU=1,wU=2,$u=class extends _{innerPattern(a){return vU}innerExtract(a,e){let t=(0,QN.default)(a.refDate),r=(e[bU]||"").toLowerCase(),i=(e[wU]||"").toLowerCase(),s=a.createParsingComponents();switch(r){case"jetzt":s=Xa(a.reference);break;case"heute":s=Sa(a.reference);break;case"morgen":_i(s,t);break;case"\xFCbermorgen":case"uebermorgen":t=t.add(1,"day"),_i(s,t);break;case"gestern":t=t.add(-1,"day"),Tt(s,t),gn(s,t);break;case"vorgestern":t=t.add(-2,"day"),Tt(s,t),gn(s,t);break;default:r.match(/letzte\s*nacht/)&&(t.hour()>6&&(t=t.add(-1,"day")),Tt(s,t),s.imply("hour",0));break}return i&&(s=_o.extractTimeComponents(s,i)),s}};var TU=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${te(yT)})(?:(?:-|/|,?\\s*)(${WN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),XN=1,JN=2,xU=3,ZN=4,_u=class extends _{innerPattern(){return TU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=yT[e[xU].toLowerCase()],i=parseInt(e[XN]);if(i>31)return e.index=e.index+e[XN].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[ZN]){let s=zN(e[ZN]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[JN]){let s=parseInt(e[JN]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Uu=class extends _{constructor(){super()}innerPattern(){return new RegExp(`(?:\\s*((?:n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\s*)?(${vT})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${te(Hu)})`,"i")}innerExtract(a,e){let t=e[2]?bT(e[2]):1,r=Hu[e[4].toLowerCase()],i={};i[r]=t;let s=e[1]||e[3]||"";if(s=s.toLowerCase(),!!s)return(/vor/.test(s)||/letzte/.test(s)||/vergangen/.test(s))&&(i=oa(i)),K.createRelativeFromReference(a.reference,i)}};var Yu=class extends _{innerPattern(){return new RegExp(`(?:in|f\xFCr|w\xE4hrend)\\s*(${_N})(?=\\W|$)`,"i")}innerExtract(a,e){let t=UN(e[1]);return K.createRelativeFromReference(a.reference,t)}};var wT=new be(e2()),CU=new be(TT(!0));function SU(n,a,e){return wT.parse(n,a,e)}function DU(n,a,e){return wT.parseDate(n,a,e)}function e2(n=!0){let a=TT(!1,n);return a.parsers.unshift(new _o),a.parsers.unshift(new $u),a.parsers.unshift(new Uu),a}function TT(n=!0,a=!0){return Mt({parsers:[new as,new ka(a),new ju,new Vu,new _u,new Bu,new Yu],refiners:[new Wu,new zu]},n)}var RT={};Et(RT,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>AT,createCasualConfiguration:()=>p2,createConfiguration:()=>FT,parse:()=>jU,parseDate:()=>HU,strict:()=>LU});var t2=Oe(Xe(),1);var qu=class extends _{innerPattern(a){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(a,e){let t=(0,t2.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"maintenant":return Xa(a.reference);case"aujourd'hui":return Sa(a.reference);case"hier":return Ja(a.reference);case"demain":return Za(a.reference);default:r.match(/cette\s*nuit/)?(Tt(i,t),i.imply("hour",22),i.imply("meridiem",$.PM)):r.match(/la\s*veille/)&&(t=t.add(-1,"day"),Tt(i,t),i.imply("hour",0))}return i}};var Gu=class extends _{innerPattern(a){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(a,e){let t=e[2].toLowerCase(),r=a.createParsingComponents();switch(t){case"apr\xE8s-midi":case"aprem":r.imply("hour",14),r.imply("minute",0),r.imply("meridiem",$.PM);break;case"soir":r.imply("hour",18),r.imply("minute",0),r.imply("meridiem",$.PM);break;case"matin":r.imply("hour",8),r.imply("minute",0),r.imply("meridiem",$.AM);break;case"a midi":r.imply("hour",12),r.imply("minute",0),r.imply("meridiem",$.AM);break;case"\xE0 minuit":r.imply("hour",0),r.imply("meridiem",$.AM);break}return r}};var Ku=class extends Ca{primaryPrefix(){return"(?:(?:[\xE0a])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*"}extractPrimaryTimeComponents(a,e){return e[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(a,e)}};var Qu=class extends St{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|au|vers|de|,|-)?\\s*$")}};var Xu=class extends Ct{patternBetween(){return/^\s*(à|a|au|-)\s*$/i}};var ST={dimanche:0,dim:0,lundi:1,lun:1,mardi:2,mar:2,mercredi:3,mer:3,jeudi:4,jeu:4,vendredi:5,ven:5,samedi:6,sam:6},DT={janvier:1,jan:1,"jan.":1,f\u00E9vrier:2,f\u00E9v:2,"f\xE9v.":2,fevrier:2,fev:2,"fev.":2,mars:3,mar:3,"mar.":3,avril:4,avr:4,"avr.":4,mai:5,juin:6,jun:6,juillet:7,juil:7,jul:7,"jul.":7,ao\u00FBt:8,aout:8,septembre:9,sep:9,"sep.":9,sept:9,"sept.":9,octobre:10,oct:10,"oct.":10,novembre:11,nov:11,"nov.":11,d\u00E9cembre:12,decembre:12,dec:12,"dec.":12},CT={un:1,deux:2,trois:3,quatre:4,cinq:5,six:6,sept:7,huit:8,neuf:9,dix:10,onze:11,douze:12,treize:13},Ju={sec:"second",seconde:"second",secondes:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",heure:"hour",heures:"hour",jour:"d",jours:"d",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year",ann\u00E9e:"year",ann\u00E9es:"year"},ET=`(?:${te(CT)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;function PT(n){let a=n.toLowerCase();return CT[a]!==void 0?CT[a]:a==="une"||a==="un"?1:a.match(/quelques?/)?3:a.match(/demi-?/)?.5:parseFloat(a)}var MT="(?:[0-9]{1,2}(?:er)?)";function IT(n){let a=n.toLowerCase();return a=a.replace(/(?:er)$/i,""),parseInt(a)}var r2="(?:[1-9][0-9]{0,3}\\s*(?:AC|AD|p\\.\\s*C(?:hr?)?\\.\\s*n\\.)|[1-2][0-9]{3}|[5-9][0-9])";function i2(n){if(/AC/i.test(n))return n=n.replace(/BC/i,""),-parseInt(n);if(/AD/i.test(n)||/C/i.test(n))return n=n.replace(/[^\d]+/i,""),parseInt(n);let a=parseInt(n);return a<100&&(a>50?a=a+1900:a=a+2e3),a}var n2=`(${ET})\\s{0,5}(${te(Ju)})\\s{0,5}`,a2=new RegExp(n2,"i"),_g=pr("",n2);function Ug(n){let a={},e=n,t=a2.exec(e);for(;t;)EU(a,t),e=e.substring(t[0].length),t=a2.exec(e);return a}function EU(n,a){let e=PT(a[1]),t=Ju[a[2].toLowerCase()];n[t]=e}var PU=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${te(ST)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),MU=1,IU=2,Zu=class extends _{innerPattern(){return PU}innerExtract(a,e){let t=e[MU].toLowerCase(),r=ST[t];if(r===void 0)return null;let i=e[IU];i=i||"",i=i.toLowerCase();let s=null;return i=="dernier"?s="last":i=="prochain"&&(s="next"),la(a.reference,r,s)}};var AU=new RegExp("(^|\\s|T)(?:(?:[\xE0a])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),FU=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),RU=2,s2=3,o2=4,l2=5,ep=class n{pattern(a){return AU}extract(a,e){let t=a.createParsingResult(e.index+e[1].length,e[0].substring(e[1].length));if(t.text.match(/^\d{4}$/)||(t.start=n.extractTimeComponent(t.start.clone(),e),!t.start))return e.index+=e[0].length,null;let r=a.text.substring(e.index+e[0].length),i=FU.exec(r);return i&&(t.end=n.extractTimeComponent(t.start.clone(),i),t.end&&(t.text+=i[0])),t}static extractTimeComponent(a,e){let t=0,r=0,i=null;if(t=parseInt(e[RU]),e[s2]!=null&&(r=parseInt(e[s2])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[l2]!=null){if(t>12)return null;let s=e[l2][0].toLowerCase();s=="a"&&(i=$.AM,t==12&&(t=0)),s=="p"&&(i=$.PM,t!=12&&(t+=12))}if(a.assign("hour",t),a.assign("minute",r),i!==null?a.assign("meridiem",i):t<12?a.imply("meridiem",$.AM):a.imply("meridiem",$.PM),e[o2]!=null){let s=parseInt(e[o2]);if(s>=60)return null;a.assign("second",s)}return a}};var OU=new RegExp(`(?:on\\s*?)?(${MT})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${MT}))?(?:-|/|\\s*(?:de)?\\s*)(${te(DT)})(?:(?:-|/|,?\\s*)(${r2}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),d2=1,c2=2,NU=3,u2=4,tp=class extends _{innerPattern(){return OU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=DT[e[NU].toLowerCase()],i=IT(e[d2]);if(i>31)return e.index=e.index+e[d2].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[u2]){let s=i2(e[u2]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[c2]){let s=IT(e[c2]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var ap=class extends _{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${_g})(?=(?:\\W|$))`,"i")}innerExtract(a,e){let t=Ug(e[1]),r=oa(t);return K.createRelativeFromReference(a.reference,r)}};var rp=class extends _{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${_g})(?=\\W|$)`,"i")}innerExtract(a,e){let t=Ug(e[1]);return K.createRelativeFromReference(a.reference,t)}};var ip=class extends _{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${ET})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${te(Ju)})(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?`,"i")}innerExtract(a,e){let t=e[1]?PT(e[1]):1,r=Ju[e[3].toLowerCase()],i={};i[r]=t;let s=e[2]||e[4]||"";if(s=s.toLowerCase(),!!s)return(/derni[eè]re?s?/.test(s)||/pass[ée]e?s?/.test(s)||/pr[ée]c[ée]dents?/.test(s))&&(i=oa(i)),K.createRelativeFromReference(a.reference,i)}};var AT=new be(p2()),LU=new be(FT(!0));function jU(n,a,e){return AT.parse(n,a,e)}function HU(n,a,e){return AT.parseDate(n,a,e)}function p2(n=!0){let a=FT(!1,n);return a.parsers.unshift(new qu),a.parsers.unshift(new Gu),a.parsers.unshift(new ip),a}function FT(n=!0,a=!0){return Mt({parsers:[new ka(a),new tp,new Ku,new ep,new ap,new rp,new Zu],refiners:[new Qu,new Xu]},n)}var jT={};Et(jT,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>NT,createCasualConfiguration:()=>k2,createConfiguration:()=>LT,parse:()=>tY,parseDate:()=>aY,strict:()=>eY});var yn={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},Ed={\u65E5:0,\u6708:1,\u706B:2,\u6C34:3,\u6728:4,\u91D1:5,\u571F:6};function mr(n){return String(n).replace(/\u2019/g,"'").replace(/\u201D/g,'"').replace(/\u3000/g," ").replace(/\uFFE5/g,"\xA5").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,BU)}function BU(n){return String.fromCharCode(n.charCodeAt(0)-65248)}function Uo(n){let a=0;for(let e=0;e\u524D\u306E|\u6B21\u306E|\u4ECA\u9031))?(?"+Object.keys(Ed).join("|")+")(?:\u66DC\u65E5|\u66DC)","i"),lp=class{pattern(){return qU}extract(a,e){let t=e.groups.weekday,r=Ed[t];if(r===void 0)return null;let i=e.groups.prefix||"",s=null;return i.match(/前の/)?s="last":i.match(/次の/)?s="next":i.match(/今週/)&&(s="this"),la(a.reference,r,s)}};var GU=new RegExp("([0-9\uFF10-\uFF19]{4}[\\/|\\\uFF0F])?([0-1\uFF10-\uFF11]{0,1}[0-9\uFF10-\uFF19]{1})(?:[\\/|\\\uFF0F]([0-3\uFF10-\uFF13]{0,1}[0-9\uFF10-\uFF19]{1}))","i"),g2=1,KU=2,QU=3,dp=class{pattern(){return GU}extract(a,e){let t=a.createParsingComponents(),r=parseInt(mr(e[KU])),i=parseInt(mr(e[QU]));if(r<1||r>12||i<1||i>31)return null;if(t.assign("day",i),t.assign("month",r),e[g2]){let s=parseInt(mr(e[g2])),o=Mr(s);t.assign("year",o)}else{let s=rt(a.reference.instant,i,r);t.imply("year",s)}return t}};var XU=new RegExp("(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(yn).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(yn).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(yn).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),JU=new RegExp("(?:^\\s*(?:\u304B\u3089|\\-|\\\u2013|\\\uFF0D|\\~|\\\u301C)\\s*)(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(yn).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(yn).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(yn).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Yg=1,qg=2,Xs=3,Pd=4,Gg=5,cp=class extends _{innerPattern(){return XU}innerExtract(a,e){if(e.index>0&&a.text[e.index-1].match(/\w/))return null;let t=a.createParsingResult(e.index,e[0]),r=0,i=0,s=-1;if(e[Pd]){let o=parseInt(mr(e[Pd]));if(isNaN(o)&&(o=Uo(e[Pd])),o>=60)return null;t.start.assign("second",o)}if(r=parseInt(mr(e[qg])),isNaN(r)&&(r=Uo(e[qg])),e[Xs]?e[Xs]==="\u534A"?i=30:(i=parseInt(mr(e[Xs])),isNaN(i)&&(i=Uo(e[Xs]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(s=$.PM),e[Yg]){if(r>12)return null;let o=e[Yg],l=o[0].toLowerCase();o==="\u5348\u524D"||l==="a"?(s=$.AM,r===12&&(r=0)):(o==="\u5348\u5F8C"||l==="p")&&(s=$.PM,r!=12&&(r+=12))}else if(e[Gg]){if(r>12)return null;let o=e[Gg][0].toLowerCase();o==="a"&&(s=$.AM,r===12&&(r=0)),o==="p"&&(s=$.PM,r!=12&&(r+=12))}if(t.start.assign("hour",r),t.start.assign("minute",i),s>=0?t.start.assign("meridiem",s):r<12?t.start.imply("meridiem",0):t.start.imply("meridiem",1),e=JU.exec(a.text.substring(t.index+t.text.length)),!e)return t.text.match(/^\d+$/)?null:t;if(t.end=a.createParsingComponents(),r=0,i=0,s=-1,e[Pd]){let o=parseInt(mr(e[Pd]));if(isNaN(o)&&(o=Uo(e[Pd])),o>=60)return null;t.end.assign("second",o)}if(r=parseInt(mr(e[qg])),isNaN(r)&&(r=Uo(e[qg])),e[Xs]?e[Xs]==="\u534A"?i=30:(i=parseInt(mr(e[Xs])),isNaN(i)&&(i=Uo(e[Xs]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(s=$.PM),e[Yg]){if(r>12)return null;let o=e[Yg],l=o[0].toLowerCase();o==="\u5348\u524D"||l==="a"?(s=$.AM,r===12&&(r=0)):(o==="\u5348\u5F8C"||l==="p")&&(s=$.PM,r!=12&&(r+=12)),t.start.isCertain("meridiem")||(s===$.AM?(t.start.imply("meridiem",$.AM),t.start.get("hour")===12&&t.start.assign("hour",0)):(t.start.imply("meridiem",1),t.start.get("hour")!=12&&t.start.assign("hour",t.start.get("hour")+12)))}else if(e[Gg]){if(r>12)return null;let o=e[Gg][0].toLowerCase();o==="a"&&(s=$.AM,r===12&&(r=0)),o==="p"&&(s=$.PM,r!=12&&(r+=12))}return t.text=t.text+e[0],t.end.assign("hour",r),t.end.assign("minute",i),s>=0?t.end.assign("meridiem",s):t.start.isCertain("meridiem")&&t.start.get("hour")>12?t.start.get("hour")-12>r?t.end.imply("meridiem",$.AM):r<=12&&(t.end.assign("hour",r+12),t.end.assign("meridiem",$.PM)):r>12?t.end.imply("meridiem",$.PM):r<=12&&t.end.imply("meridiem",$.AM),t.end.date().getTime()"+Object.keys(Ed).join("|")+")(?:\\)|\\\uFF09)","i"),mp=class{pattern(){return ZU}extract(a,e){let t=e.groups.weekday,r=Ed[t];return r===void 0?null:la(a.reference,r)}};var NT=new be(k2()),eY=new be(LT(!0));function tY(n,a,e){return NT.parse(n,a,e)}function aY(n,a,e){return NT.parseDate(n,a,e)}function k2(){let n=LT(!1);return n.parsers.unshift(new op),n}function LT(n=!0){let a=Mt({parsers:[new np,new lp,new mp,new dp,new cp],refiners:[new pp,new up,new sp]},n);return a.refiners=a.refiners.filter(e=>!(e instanceof Vo)),a}var zT={};Et(zT,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>VT,createCasualConfiguration:()=>C2,createConfiguration:()=>WT,parse:()=>cY,parseDate:()=>uY,strict:()=>dY});var HT={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,ter\u00E7a:2,"ter\xE7a-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,s\u00E1bado:6,sabado:6,sab:6},BT={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,mar\u00E7o:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12},y2="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function v2(n){if(n.match(/^[0-9]{1,4}$/)){let a=parseInt(n);return a<100&&(a>50?a=a+1900:a=a+2e3),a}return n.match(/a\.?\s*c\.?/i)?(n=n.replace(/a\.?\s*c\.?/i,""),-parseInt(n)):parseInt(n)}var rY=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${te(HT)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),iY=1,nY=2,sY=3,fp=class extends _{innerPattern(){return rY}innerExtract(a,e){let t=e[nY].toLowerCase(),r=HT[t];if(r===void 0)return null;let i=e[iY],s=e[sY],o=i||s||"";o=o.toLowerCase();let l=null;return o=="passado"?l="this":o=="pr\xF3ximo"||o=="proximo"?l="next":o=="este"&&(l="this"),la(a.reference,r,l)}};var hp=class extends Ca{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}};var gp=class extends St{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}};var kp=class extends Ct{patternBetween(){return/^\s*(?:-)\s*$/i}};var oY=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${te(BT)})(?:\\s*(?:de|,)?\\s*(${y2}))?(?=\\W|$)`,"i"),b2=1,w2=2,lY=3,T2=4,yp=class extends _{innerPattern(){return oY}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=BT[e[lY].toLowerCase()],i=parseInt(e[b2]);if(i>31)return e.index=e.index+e[b2].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[T2]){let s=v2(e[T2]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[w2]){let s=parseInt(e[w2]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var vp=class extends _{innerPattern(a){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(a,e){let t=e[0].toLowerCase(),r=a.createParsingComponents();switch(t){case"agora":return Xa(a.reference);case"hoje":return Sa(a.reference);case"amanha":case"amanh\xE3":return Za(a.reference);case"ontem":return Ja(a.reference)}return r}};var x2=Oe(Xe(),1),bp=class extends _{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(a,e){let t=(0,x2.default)(a.refDate),r=a.createParsingComponents();switch(e[1].toLowerCase()){case"tarde":r.imply("meridiem",$.PM),r.imply("hour",15);break;case"noite":r.imply("meridiem",$.PM),r.imply("hour",22);break;case"manha":case"manh\xE3":r.imply("meridiem",$.AM),r.imply("hour",6);break;case"meia-noite":_i(r,t),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"meio-dia":r.imply("meridiem",$.AM),r.imply("hour",12);break}return r}};var VT=new be(C2()),dY=new be(WT(!0));function cY(n,a,e){return VT.parse(n,a,e)}function uY(n,a,e){return VT.parseDate(n,a,e)}function C2(n=!0){let a=WT(!1,n);return a.parsers.push(new vp),a.parsers.push(new bp),a}function WT(n=!0,a=!0){return Mt({parsers:[new ka(a),new fp,new hp,new yp],refiners:[new gp,new kp]},n)}var QT={};Et(QT,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>GT,createCasualConfiguration:()=>N2,createConfiguration:()=>KT,parse:()=>YY,parseDate:()=>qY,strict:()=>UY});var wp=class extends Ct{patternBetween(){return/^\s*(tot|-)\s*$/i}};var Tp=class extends St{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}};var xp=class extends _{innerPattern(a){return/(nu|vandaag|morgen|morgend|gisteren)(?=\W|$)/i}innerExtract(a,e){let t=e[0].toLowerCase(),r=a.createParsingComponents();switch(t){case"nu":return Xa(a.reference);case"vandaag":return Sa(a.reference);case"morgen":case"morgend":return Za(a.reference);case"gisteren":return Ja(a.reference)}return r}};var S2=Oe(Xe(),1);var pY=1,mY=2,Cp=class extends _{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(a,e){let t=(0,S2.default)(a.refDate),r=a.createParsingComponents();switch(e[pY]==="deze"&&(r.assign("day",a.refDate.getDate()),r.assign("month",a.refDate.getMonth()+1),r.assign("year",a.refDate.getFullYear())),e[mY].toLowerCase()){case"namiddag":case"'s namiddags":r.imply("meridiem",$.PM),r.imply("hour",15);break;case"avond":case"'s avonds'":r.imply("meridiem",$.PM),r.imply("hour",20);break;case"middernacht":_i(r,t),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"ochtend":case"'s ochtends":r.imply("meridiem",$.AM),r.imply("hour",6);break;case"middag":case"'s middags":r.imply("meridiem",$.AM),r.imply("hour",12);break}return r}};var UT={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6},rs={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,mrt:3,"mrt.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12},$T={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},_T={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,twee\u00EBntwintigste:22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31},Sp={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"},fY=`(?:${te($T)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;function hY(n){let a=n.toLowerCase();return $T[a]!==void 0?$T[a]:a==="paar"?2:a==="half"||a.match(/halve?/)?.5:parseFloat(a.replace(",","."))}var YT=`(?:${te(_T)}|[0-9]{1,2}(?:ste|de)?)`;function qT(n){let a=n.toLowerCase();return _T[a]!==void 0?_T[a]:(a=a.replace(/(?:ste|de)$/i,""),parseInt(a))}var Kg="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";function Qg(n){if(/voor Christus/i.test(n))return n=n.replace(/voor Christus/i,""),-parseInt(n);if(/na Christus/i.test(n))return n=n.replace(/na Christus/i,""),parseInt(n);let a=parseInt(n);return Mr(a)}var E2=`(${fY})\\s{0,5}(${te(Sp)})\\s{0,5}`,D2=new RegExp(E2,"i"),vn=pr("(?:(?:binnen|in)\\s*)?",E2);function Js(n){let a={},e=n,t=D2.exec(e);for(;t;)gY(a,t),e=e.substring(t[0].length),t=D2.exec(e);return a}function gY(n,a){let e=hY(a[1]),t=Sp[a[2].toLowerCase()];n[t]=e}var Dp=class extends _{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+vn+")(?=\\W|$)","i")}innerExtract(a,e){let t=Js(e[1]);return K.createRelativeFromReference(a.reference,t)}};var kY=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${te(UT)})(?=\\W|$)`,"i"),yY=1,vY=2,bY=3,Ep=class extends _{innerPattern(){return kY}innerExtract(a,e){let t=e[vY].toLowerCase(),r=UT[t],i=e[yY],s=e[bY],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o=="vorige"?l="last":o=="volgende"?l="next":o=="deze"&&(l="this"),la(a.reference,r,l)}};var wY=new RegExp(`(?:on\\s*?)?(${YT})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${YT}))?(?:-|/|\\s*(?:of)?\\s*)(`+te(rs)+`)(?:(?:-|/|,?\\s*)(${Kg}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),TY=3,P2=1,M2=2,I2=4,Pp=class extends _{innerPattern(){return wY}innerExtract(a,e){let t=rs[e[TY].toLowerCase()],r=qT(e[P2]);if(r>31)return e.index=e.index+e[P2].length,null;let i=a.createParsingComponents({day:r,month:t});if(e[I2]){let l=Qg(e[I2]);i.assign("year",l)}else{let l=rt(a.refDate,r,t);i.imply("year",l)}if(!e[M2])return i;let s=qT(e[M2]),o=a.createParsingResult(e.index,e[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",s),o}};var xY=new RegExp(`(${te(rs)})\\s*(?:[,-]?\\s*(${Kg})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),CY=1,A2=2,Md=class extends _{innerPattern(){return xY}innerExtract(a,e){let t=a.createParsingComponents();t.imply("day",1);let r=e[CY],i=rs[r.toLowerCase()];if(t.assign("month",i),e[A2]){let s=Qg(e[A2]);t.assign("year",s)}else{let s=rt(a.refDate,1,i);t.imply("year",s)}return t}};var SY=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),DY=1,EY=2,Mp=class extends _{innerPattern(){return SY}innerExtract(a,e){let t=parseInt(e[EY]),r=parseInt(e[DY]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};var Ip=class extends Ca{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(a,e){return e[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(a,e)}};var PY=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${te(rs)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),MY=1,IY=2,F2=3,AY=4,Ap=class extends _{innerPattern(){return PY}innerExtract(a,e){let t=e[F2]?parseInt(e[F2]):rs[e[IY].toLowerCase()];if(t<1||t>12)return null;let r=parseInt(e[MY]);return{day:parseInt(e[AY]),month:t,year:r}}};var R2=Oe(Xe(),1),FY=1,RY=2,Fp=class extends _{innerPattern(a){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(a,e){let t=e[FY].toLowerCase(),r=e[RY].toLowerCase(),i=a.createParsingComponents(),s=(0,R2.default)(a.refDate);switch(t){case"gisteren":Tt(i,s.add(-1,"day"));break;case"van":Tt(i,s);break;case"morgen":_i(i,s);break}switch(r){case"ochtend":i.imply("meridiem",$.AM),i.imply("hour",6);break;case"middag":i.imply("meridiem",$.AM),i.imply("hour",12);break;case"namiddag":i.imply("meridiem",$.PM),i.imply("hour",15);break;case"avond":i.imply("meridiem",$.PM),i.imply("hour",20);break}return i}};var OY=new RegExp(`(dit|deze|vorig|afgelopen|(?:aan)?komend|over|\\+|-)e?\\s*(${vn})(?=\\W|$)`,"i"),NY=1,LY=2,Rp=class extends _{innerPattern(){return OY}innerExtract(a,e){let t=e[NY].toLowerCase(),r=Js(e[LY]);switch(t){case"vorig":case"afgelopen":case"-":r=oa(r);break}return K.createRelativeFromReference(a.reference,r)}};var O2=Oe(Xe(),1);var jY=new RegExp(`(dit|deze|(?:aan)?komend|volgend|afgelopen|vorig)e?\\s*(${te(Sp)})(?=\\s*)(?=\\W|$)`,"i"),HY=1,BY=2,Op=class extends _{innerPattern(){return jY}innerExtract(a,e){let t=e[HY].toLowerCase(),r=e[BY].toLowerCase(),i=Sp[r];if(t=="volgend"||t=="komend"||t=="aankomend"){let l={};return l[i]=1,K.createRelativeFromReference(a.reference,l)}if(t=="afgelopen"||t=="vorig"){let l={};return l[i]=-1,K.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=(0,O2.default)(a.reference.instant);return r.match(/week/i)?(o=o.add(-o.get("d"),"d"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.imply("year",o.year())):r.match(/maand/i)?(o=o.add(-o.date()+1,"d"),s.imply("day",o.date()),s.assign("year",o.year()),s.assign("month",o.month()+1)):r.match(/jaar/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.assign("year",o.year())),s}};var VY=new RegExp("("+vn+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),WY=new RegExp("("+vn+")geleden(?=(?:\\W|$))","i"),Np=class extends _{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?WY:VY}innerExtract(e,t){let r=Js(t[1]),i=oa(r);return K.createRelativeFromReference(e.reference,i)}};var zY=new RegExp("("+vn+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),$Y=new RegExp("("+vn+")(later|vanaf nu)(?=(?:\\W|$))","i"),_Y=1,Lp=class extends _{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?$Y:zY}innerExtract(e,t){let r=Js(t[_Y]);return K.createRelativeFromReference(e.reference,r)}};var GT=new be(N2()),UY=new be(KT(!0));function YY(n,a,e){return GT.parse(n,a,e)}function qY(n,a,e){return GT.parseDate(n,a,e)}function N2(n=!0){let a=KT(!1,n);return a.parsers.unshift(new xp),a.parsers.unshift(new Cp),a.parsers.unshift(new Fp),a.parsers.unshift(new Md),a.parsers.unshift(new Op),a.parsers.unshift(new Rp),a}function KT(n=!0,a=!0){return Mt({parsers:[new ka(a),new Dp,new Pp,new Md,new Ep,new Ap,new Mp,new Ip(n),new Np(n),new Lp(n)],refiners:[new Tp,new wp]},n)}var ux={};Et(ux,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>dx,createCasualConfiguration:()=>iL,createConfiguration:()=>cx,hans:()=>pk,hant:()=>uk,parse:()=>wq,parseDate:()=>Tq,strict:()=>bq});var H2=Oe(Xe(),1);var Da={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},Id={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function hi(n){let a=0;for(let e=0;e\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?"+Object.keys(Id).join("|")+")"),Go=class extends _{innerPattern(){return QY}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Id[r];if(i===void 0)return null;let s=null,o=e.groups.prefix;o=="\u4E0A"?s="last":o=="\u4E0B"?s="next":o=="\u8FD9"&&(s="this");let l=(0,V2.default)(a.refDate),c=!1,u=l.day();return s=="last"||s=="past"?(l=l.day(i-7),c=!0):s=="next"?(l=l.day(i+7),c=!0):s=="this"?l=l.day(i):Math.abs(i-7-u)0&&a.text[e.index-1].match(/\w/))return null;let t=(0,W2.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=t.clone();if(e[Xg]){let u=e[Xg];u=="\u660E"?t.hour()>1&&(i=i.add(1,"day")):u=="\u6628"?i=i.add(-1,"day"):u=="\u524D"?i=i.add(-2,"day"):u=="\u5927\u524D"?i=i.add(-3,"day"):u=="\u540E"?i=i.add(2,"day"):u=="\u5927\u540E"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else if(e[ek]){let u=e[ek];u=="\u660E"?i=i.add(1,"day"):u=="\u6628"?i=i.add(-1,"day"):u=="\u524D"?i=i.add(-2,"day"):u=="\u5927\u524D"?i=i.add(-3,"day"):u=="\u540E"?i=i.add(2,"day"):u=="\u5927\u540E"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else r.start.imply("day",i.date()),r.start.imply("month",i.month()+1),r.start.imply("year",i.year());let s=0,o=0,l=-1;if(e[Ad]){let u=parseInt(e[Ad]);if(isNaN(u)&&(u=hi(e[Ad])),u>=60)return null;r.start.assign("second",u)}if(s=parseInt(e[ak]),isNaN(s)&&(s=hi(e[ak])),e[gi]?e[gi]=="\u534A"?o=30:e[gi]=="\u6B63"||e[gi]=="\u6574"?o=0:(o=parseInt(e[gi]),isNaN(o)&&(o=hi(e[gi]))):s>100&&(o=s%100,s=Math.floor(s/100)),o>=60||s>24)return null;if(s>=12&&(l=1),e[rk]){if(s>12)return null;let u=e[rk][0].toLowerCase();u=="a"&&(l=0,s==12&&(s=0)),u=="p"&&(l=1,s!=12&&(s+=12))}else if(e[Jg]){let p=e[Jg][0];p=="\u65E9"?(l=0,s==12&&(s=0)):p=="\u665A"&&(l=1,s!=12&&(s+=12))}else if(e[Zg]){let p=e[Zg][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,s==12&&(s=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,s!=12&&(s+=12))}else if(e[tk]){let p=e[tk][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,s==12&&(s=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,s!=12&&(s+=12))}if(r.start.assign("hour",s),r.start.assign("minute",o),l>=0?r.start.assign("meridiem",l):s<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),e=JY.exec(a.text.substring(r.index+r.text.length)),!e)return r.text.match(/^\d+$/)?null:r;let c=i.clone();if(r.end=a.createParsingComponents(),e[Xg]){let u=e[Xg];u=="\u660E"?t.hour()>1&&(c=c.add(1,"day")):u=="\u6628"?c=c.add(-1,"day"):u=="\u524D"?c=c.add(-2,"day"):u=="\u5927\u524D"?c=c.add(-3,"day"):u=="\u540E"?c=c.add(2,"day"):u=="\u5927\u540E"&&(c=c.add(3,"day")),r.end.assign("day",c.date()),r.end.assign("month",c.month()+1),r.end.assign("year",c.year())}else if(e[ek]){let u=e[ek];u=="\u660E"?c=c.add(1,"day"):u=="\u6628"?c=c.add(-1,"day"):u=="\u524D"?c=c.add(-2,"day"):u=="\u5927\u524D"?c=c.add(-3,"day"):u=="\u540E"?c=c.add(2,"day"):u=="\u5927\u540E"&&(c=c.add(3,"day")),r.end.assign("day",c.date()),r.end.assign("month",c.month()+1),r.end.assign("year",c.year())}else r.end.imply("day",c.date()),r.end.imply("month",c.month()+1),r.end.imply("year",c.year());if(s=0,o=0,l=-1,e[Ad]){let u=parseInt(e[Ad]);if(isNaN(u)&&(u=hi(e[Ad])),u>=60)return null;r.end.assign("second",u)}if(s=parseInt(e[ak]),isNaN(s)&&(s=hi(e[ak])),e[gi]?e[gi]=="\u534A"?o=30:e[gi]=="\u6B63"||e[gi]=="\u6574"?o=0:(o=parseInt(e[gi]),isNaN(o)&&(o=hi(e[gi]))):s>100&&(o=s%100,s=Math.floor(s/100)),o>=60||s>24)return null;if(s>=12&&(l=1),e[rk]){if(s>12)return null;let u=e[rk][0].toLowerCase();u=="a"&&(l=0,s==12&&(s=0)),u=="p"&&(l=1,s!=12&&(s+=12)),r.start.isCertain("meridiem")||(l==0?(r.start.imply("meridiem",0),r.start.get("hour")==12&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),r.start.get("hour")!=12&&r.start.assign("hour",r.start.get("hour")+12)))}else if(e[Jg]){let p=e[Jg][0];p=="\u65E9"?(l=0,s==12&&(s=0)):p=="\u665A"&&(l=1,s!=12&&(s+=12))}else if(e[Zg]){let p=e[Zg][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,s==12&&(s=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,s!=12&&(s+=12))}else if(e[tk]){let p=e[tk][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,s==12&&(s=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,s!=12&&(s+=12))}return r.text=r.text+e[0],r.end.assign("hour",s),r.end.assign("minute",o),l>=0?r.end.assign("meridiem",l):r.start.isCertain("meridiem")&&r.start.get("meridiem")==1&&r.start.get("hour")>s?r.end.imply("meridiem",0):s>12&&r.end.imply("meridiem",1),r.end.date().getTime()"+Object.keys(Id).join("|")+")"),Qo=class extends _{innerPattern(){return ZY}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Id[r];if(i===void 0)return null;let s=(0,z2.default)(a.refDate),o=!1,l=s.day();return Math.abs(i-7-l)1&&(s=s.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s=s.add(-1,"day"):o=="\u524D"?s=s.add(-2,"day"):o=="\u5927\u524D"?s=s.add(-3,"day"):o=="\u5F8C"?s=s.add(2,"day"):o=="\u5927\u5F8C"&&(s=s.add(3,"day")),l=="\u65E9"||l=="\u671D"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(e[_2]){let l=e[_2][0];l=="\u65E9"||l=="\u671D"||l=="\u4E0A"?r.start.imply("hour",6):l=="\u4E0B"||l=="\u664F"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):l=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):l=="\u51CC"&&r.start.imply("hour",0)}else if(e[U2]){let o=e[U2];o=="\u660E"||o=="\u807D"?i.hour()>1&&(s=s.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s=s.add(-1,"day"):o=="\u524D"?s=s.add(-2,"day"):o=="\u5927\u524D"?s=s.add(-3,"day"):o=="\u5F8C"?s=s.add(2,"day"):o=="\u5927\u5F8C"&&(s=s.add(3,"day"));let l=e[aq];if(l){let c=l[0];c=="\u65E9"||c=="\u671D"||c=="\u4E0A"?r.start.imply("hour",6):c=="\u4E0B"||c=="\u664F"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):c=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):c=="\u591C"||c=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):c=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",s.date()),r.start.assign("month",s.month()+1),r.start.assign("year",s.year()),r}};var K2=Oe(Xe(),1);var Ea={\u96F6:0,\u4E00:1,\u4E8C:2,\u5169:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10,\u5EFF:20,\u5345:30},Fd={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function ki(n){let a=0;for(let e=0;e\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?"+Object.keys(Fd).join("|")+")"),el=class extends _{innerPattern(){return nq}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Fd[r];if(i===void 0)return null;let s=null,o=e.groups.prefix;o=="\u4E0A"?s="last":o=="\u4E0B"?s="next":(o=="\u4ECA"||o=="\u9019"||o=="\u5462")&&(s="this");let l=(0,X2.default)(a.refDate),c=!1,u=l.day();return s=="last"||s=="past"?(l=l.day(i-7),c=!0):s=="next"?(l=l.day(i+7),c=!0):s=="this"?l=l.day(i):Math.abs(i-7-u)0&&a.text[e.index-1].match(/\w/))return null;let t=(0,J2.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=t.clone();if(e[ik]){var s=e[ik];s=="\u660E"||s=="\u807D"?t.hour()>1&&(i=i.add(1,"day")):s=="\u6628"||s=="\u5C0B"||s=="\u7434"?i=i.add(-1,"day"):s=="\u524D"?i=i.add(-2,"day"):s=="\u5927\u524D"?i=i.add(-3,"day"):s=="\u5F8C"?i=i.add(2,"day"):s=="\u5927\u5F8C"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else if(e[ok]){var o=e[ok];o=="\u660E"||o=="\u807D"?i=i.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?i=i.add(-1,"day"):o=="\u524D"?i=i.add(-2,"day"):o=="\u5927\u524D"?i=i.add(-3,"day"):o=="\u5F8C"?i=i.add(2,"day"):o=="\u5927\u5F8C"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else r.start.imply("day",i.date()),r.start.imply("month",i.month()+1),r.start.imply("year",i.year());let l=0,c=0,u=-1;if(e[Rd]){var p=parseInt(e[Rd]);if(isNaN(p)&&(p=ki(e[Rd])),p>=60)return null;r.start.assign("second",p)}if(l=parseInt(e[dk]),isNaN(l)&&(l=ki(e[dk])),e[yi]?e[yi]=="\u534A"?c=30:e[yi]=="\u6B63"||e[yi]=="\u6574"?c=0:(c=parseInt(e[yi]),isNaN(c)&&(c=ki(e[yi]))):l>100&&(c=l%100,l=Math.floor(l/100)),c>=60||l>24)return null;if(l>=12&&(u=1),e[ck]){if(l>12)return null;var m=e[ck][0].toLowerCase();m=="a"&&(u=0,l==12&&(l=0)),m=="p"&&(u=1,l!=12&&(l+=12))}else if(e[nk]){var f=e[nk],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(e[sk]){var g=e[sk],k=g[0];k=="\u4E0A"||k=="\u671D"||k=="\u65E9"||k=="\u51CC"?(u=0,l==12&&(l=0)):(k=="\u4E0B"||k=="\u664F"||k=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(e[lk]){var y=e[lk],b=y[0];b=="\u4E0A"||b=="\u671D"||b=="\u65E9"||b=="\u51CC"?(u=0,l==12&&(l=0)):(b=="\u4E0B"||b=="\u664F"||b=="\u665A")&&(u=1,l!=12&&(l+=12))}if(r.start.assign("hour",l),r.start.assign("minute",c),u>=0?r.start.assign("meridiem",u):l<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),e=oq.exec(a.text.substring(r.index+r.text.length)),!e)return r.text.match(/^\d+$/)?null:r;let v=i.clone();if(r.end=a.createParsingComponents(),e[ik]){var s=e[ik];s=="\u660E"||s=="\u807D"?t.hour()>1&&(v=v.add(1,"day")):s=="\u6628"||s=="\u5C0B"||s=="\u7434"?v=v.add(-1,"day"):s=="\u524D"?v=v.add(-2,"day"):s=="\u5927\u524D"?v=v.add(-3,"day"):s=="\u5F8C"?v=v.add(2,"day"):s=="\u5927\u5F8C"&&(v=v.add(3,"day")),r.end.assign("day",v.date()),r.end.assign("month",v.month()+1),r.end.assign("year",v.year())}else if(e[ok]){var o=e[ok];o=="\u660E"||o=="\u807D"?v=v.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?v=v.add(-1,"day"):o=="\u524D"?v=v.add(-2,"day"):o=="\u5927\u524D"?v=v.add(-3,"day"):o=="\u5F8C"?v=v.add(2,"day"):o=="\u5927\u5F8C"&&(v=v.add(3,"day")),r.end.assign("day",v.date()),r.end.assign("month",v.month()+1),r.end.assign("year",v.year())}else r.end.imply("day",v.date()),r.end.imply("month",v.month()+1),r.end.imply("year",v.year());if(l=0,c=0,u=-1,e[Rd]){var p=parseInt(e[Rd]);if(isNaN(p)&&(p=ki(e[Rd])),p>=60)return null;r.end.assign("second",p)}if(l=parseInt(e[dk]),isNaN(l)&&(l=ki(e[dk])),e[yi]?e[yi]=="\u534A"?c=30:e[yi]=="\u6B63"||e[yi]=="\u6574"?c=0:(c=parseInt(e[yi]),isNaN(c)&&(c=ki(e[yi]))):l>100&&(c=l%100,l=Math.floor(l/100)),c>=60||l>24)return null;if(l>=12&&(u=1),e[ck]){if(l>12)return null;var m=e[ck][0].toLowerCase();m=="a"&&(u=0,l==12&&(l=0)),m=="p"&&(u=1,l!=12&&(l+=12)),r.start.isCertain("meridiem")||(u==0?(r.start.imply("meridiem",0),r.start.get("hour")==12&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),r.start.get("hour")!=12&&r.start.assign("hour",r.start.get("hour")+12)))}else if(e[nk]){var f=e[nk],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(e[sk]){var g=e[sk],k=g[0];k=="\u4E0A"||k=="\u671D"||k=="\u65E9"||k=="\u51CC"?(u=0,l==12&&(l=0)):(k=="\u4E0B"||k=="\u664F"||k=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(e[lk]){var y=e[lk],b=y[0];b=="\u4E0A"||b=="\u671D"||b=="\u65E9"||b=="\u51CC"?(u=0,l==12&&(l=0)):(b=="\u4E0B"||b=="\u664F"||b=="\u665A")&&(u=1,l!=12&&(l+=12))}return r.text=r.text+e[0],r.end.assign("hour",l),r.end.assign("minute",c),u>=0?r.end.assign("meridiem",u):r.start.isCertain("meridiem")&&r.start.get("meridiem")==1&&r.start.get("hour")>l?r.end.imply("meridiem",0):l>12&&r.end.imply("meridiem",1),r.end.date().getTime()"+Object.keys(Fd).join("|")+")"),al=class extends _{innerPattern(){return lq}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Fd[r];if(i===void 0)return null;let s=(0,Z2.default)(a.refDate),o=!1,l=s.day();return Math.abs(i-7-l)be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>rx,createCasualConfiguration:()=>ix,createConfiguration:()=>nx,hant:()=>dq,parse:()=>uq,parseDate:()=>pq,strict:()=>cq});var dq=new be(ix()),rx=new be(ix()),cq=new be(nx());function uq(n,a,e){return rx.parse(n,a,e)}function pq(n,a,e){return rx.parseDate(n,a,e)}function ix(){let n=nx();return n.parsers.unshift(new Xo),n}function nx(){let n=Mt({parsers:[new Jo,new el,new al,new tl,new Zo],refiners:[new rl,new il]});return n.refiners=n.refiners.filter(a=>!(a instanceof Ui)),n}var pk={};Et(pk,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>sx,createCasualConfiguration:()=>ox,createConfiguration:()=>lx,hans:()=>gq,parse:()=>yq,parseDate:()=>vq,strict:()=>kq});var rL=Oe(Xe(),1);var mq=1,eL=2,fq=3,tL=4,aL=5,hq=6,jp=class extends _{innerPattern(a){return new RegExp("(\u73B0\u5728|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(a,e){let t=e.index,r=a.createParsingResult(t,e[0]),i=(0,rL.default)(a.refDate),s=i;if(e[mq])r.start.imply("hour",i.hour()),r.start.imply("minute",i.minute()),r.start.imply("second",i.second()),r.start.imply("millisecond",i.millisecond());else if(e[eL]){let o=e[eL],l=e[fq];o=="\u660E"?i.hour()>1&&(s=s.add(1,"day")):o=="\u6628"?s=s.add(-1,"day"):o=="\u524D"?s=s.add(-2,"day"):o=="\u5927\u524D"?s=s.add(-3,"day"):o=="\u540E"?s=s.add(2,"day"):o=="\u5927\u540E"&&(s=s.add(3,"day")),l=="\u65E9"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(e[tL]){let l=e[tL][0];l=="\u65E9"||l=="\u4E0A"?r.start.imply("hour",6):l=="\u4E0B"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):l=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):l=="\u51CC"&&r.start.imply("hour",0)}else if(e[aL]){let o=e[aL];o=="\u660E"?i.hour()>1&&(s=s.add(1,"day")):o=="\u6628"?s=s.add(-1,"day"):o=="\u524D"?s=s.add(-2,"day"):o=="\u5927\u524D"?s=s.add(-3,"day"):o=="\u540E"?s=s.add(2,"day"):o=="\u5927\u540E"&&(s=s.add(3,"day"));let l=e[hq];if(l){let c=l[0];c=="\u65E9"||c=="\u4E0A"?r.start.imply("hour",6):c=="\u4E0B"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):c=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):c=="\u591C"||c=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):c=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",s.date()),r.start.assign("month",s.month()+1),r.start.assign("year",s.year()),r}};var Hp=class extends Ct{patternBetween(){return/^\s*(至|到|-|~|~|-|ー)\s*$/i}};var Bp=class extends St{patternBetween(){return/^\s*$/i}};var gq=new be(ox()),sx=new be(ox()),kq=new be(lx());function yq(n,a,e){return sx.parse(n,a,e)}function vq(n,a,e){return sx.parseDate(n,a,e)}function ox(){let n=lx();return n.parsers.unshift(new jp),n}function lx(){let n=Mt({parsers:[new Yo,new Go,new Qo,new Ko,new qo],refiners:[new Hp,new Bp]});return n.refiners=n.refiners.filter(a=>!(a instanceof Ui)),n}var dx=new be(iL()),bq=new be(cx());function wq(n,a,e){return dx.parse(n,a,e)}function Tq(n,a,e){return dx.parseDate(n,a,e)}function iL(){let n=cx();return n.parsers.unshift(new Xo),n}function cx(){let n=Mt({parsers:[new Jo,new Yo,new el,new Go,new al,new Qo,new tl,new Ko,new Zo,new qo],refiners:[new rl,new il]});return n.refiners=n.refiners.filter(a=>!(a instanceof Ui)),n}var wx={};Et(wx,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>vx,createCasualConfiguration:()=>fL,createConfiguration:()=>bx,parse:()=>Oq,parseDate:()=>Nq,strict:()=>Rq});var Ur={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},hx={\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435:0,\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u044F:0,\u0432\u0441\u043A:0,"\u0432\u0441\u043A.":0,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0442\u043E\u0440\u043D\u0438\u043A:2,\u0432\u0442\u043E\u0440\u043D\u0438\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0440\u0435\u0434\u0430:3,\u0441\u0440\u0435\u0434\u044B:3,\u0441\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440\u0433:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0442:4,"\u0447\u0442.":4,\u043F\u044F\u0442\u043D\u0438\u0446\u0430:5,\u043F\u044F\u0442\u043D\u0438\u0446\u0443:5,\u043F\u044F\u0442\u043D\u0438\u0446\u044B:5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u0431\u043E\u0442\u0443:6,\u0441\u0443\u0431\u0431\u043E\u0442\u044B:6,\u0441\u0431:6,"\u0441\u0431.":6},gx={\u044F\u043D\u0432\u0430\u0440\u044C:1,\u044F\u043D\u0432\u0430\u0440\u044F:1,\u044F\u043D\u0432\u0430\u0440\u0435:1,\u0444\u0435\u0432\u0440\u0430\u043B\u044C:2,\u0444\u0435\u0432\u0440\u0430\u043B\u044F:2,\u0444\u0435\u0432\u0440\u0430\u043B\u0435:2,\u043C\u0430\u0440\u0442:3,\u043C\u0430\u0440\u0442\u0430:3,\u043C\u0430\u0440\u0442\u0435:3,\u0430\u043F\u0440\u0435\u043B\u044C:4,\u0430\u043F\u0440\u0435\u043B\u044F:4,\u0430\u043F\u0440\u0435\u043B\u0435:4,\u043C\u0430\u0439:5,\u043C\u0430\u044F:5,\u043C\u0430\u0435:5,\u0438\u044E\u043D\u044C:6,\u0438\u044E\u043D\u044F:6,\u0438\u044E\u043D\u0435:6,\u0438\u044E\u043B\u044C:7,\u0438\u044E\u043B\u044F:7,\u0438\u044E\u043B\u0435:7,\u0430\u0432\u0433\u0443\u0441\u0442:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0430:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0435:8,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u0435:9,\u043E\u043A\u0442\u044F\u0431\u0440\u044C:10,\u043E\u043A\u0442\u044F\u0431\u0440\u044F:10,\u043E\u043A\u0442\u044F\u0431\u0440\u0435:10,\u043D\u043E\u044F\u0431\u0440\u044C:11,\u043D\u043E\u044F\u0431\u0440\u044F:11,\u043D\u043E\u044F\u0431\u0440\u0435:11,\u0434\u0435\u043A\u0430\u0431\u0440\u044C:12,\u0434\u0435\u043A\u0430\u0431\u0440\u044F:12,\u0434\u0435\u043A\u0430\u0431\u0440\u0435:12},Od={...gx,\u044F\u043D\u0432:1,"\u044F\u043D\u0432.":1,\u0444\u0435\u0432:2,"\u0444\u0435\u0432.":2,\u043C\u0430\u0440:3,"\u043C\u0430\u0440.":3,\u0430\u043F\u0440:4,"\u0430\u043F\u0440.":4,\u0430\u0432\u0433:8,"\u0430\u0432\u0433.":8,\u0441\u0435\u043D:9,"\u0441\u0435\u043D.":9,\u043E\u043A\u0442:10,"\u043E\u043A\u0442.":10,\u043D\u043E\u044F:11,"\u043D\u043E\u044F.":11,\u0434\u0435\u043A:12,"\u0434\u0435\u043A.":12},mx={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0439:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0435:2,\u0434\u0432\u0430:2,\u0434\u0432\u0443\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u0435\u0445:3,\u0442\u0440\u0451\u0445:3,\u0447\u0435\u0442\u044B\u0440\u0435:4,\u0447\u0435\u0442\u044B\u0440\u0435\u0445:4,\u0447\u0435\u0442\u044B\u0440\u0451\u0445:4,\u043F\u044F\u0442\u044C:5,\u043F\u044F\u0442\u0438:5,\u0448\u0435\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0435\u043C\u044C:7,\u0441\u0435\u043C\u0438:7,\u0432\u043E\u0441\u0435\u043C\u044C:8,\u0432\u043E\u0441\u044C\u043C\u0438:8,\u0434\u0435\u0432\u044F\u0442\u044C:9,\u0434\u0435\u0432\u044F\u0442\u0438:9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u044C:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u0438:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u044C:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u0438:12},fx={\u043F\u0435\u0440\u0432\u043E\u0435:1,\u043F\u0435\u0440\u0432\u043E\u0433\u043E:1,\u0432\u0442\u043E\u0440\u043E\u0435:2,\u0432\u0442\u043E\u0440\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u044C\u0435:3,\u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,\u043F\u044F\u0442\u043E\u0435:5,\u043F\u044F\u0442\u043E\u0433\u043E:5,\u0448\u0435\u0441\u0442\u043E\u0435:6,\u0448\u0435\u0441\u0442\u043E\u0433\u043E:6,\u0441\u0435\u0434\u044C\u043C\u043E\u0435:7,\u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u043E\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,\u0434\u0435\u0432\u044F\u0442\u043E\u0435:9,\u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E:9,\u0434\u0435\u0441\u044F\u0442\u043E\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:13,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:14,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:14,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:15,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:15,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:16,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:16,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:17,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:17,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:18,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:18,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:19,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:19,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0435:20,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0435:30,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":31},Vp={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u044B:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u043C\u0438\u043D:"minute",\u043C\u0438\u043D\u0443\u0442\u0430:"minute",\u043C\u0438\u043D\u0443\u0442:"minute",\u043C\u0438\u043D\u0443\u0442\u044B:"minute",\u043C\u0438\u043D\u0443\u0442\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u0435\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u043A\u0443:"minute",\u0447\u0430\u0441:"hour",\u0447\u0430\u0441\u043E\u0432:"hour",\u0447\u0430\u0441\u0430:"hour",\u0447\u0430\u0441\u0443:"hour",\u0447\u0430\u0441\u0438\u043A\u043E\u0432:"hour",\u0447\u0430\u0441\u0438\u043A\u0430:"hour",\u0447\u0430\u0441\u0438\u043A\u0435:"hour",\u0447\u0430\u0441\u0438\u043A:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0435\u0439:"d",\u0441\u0443\u0442\u043E\u043A:"d",\u0441\u0443\u0442\u043A\u0438:"d",\u043D\u0435\u0434\u0435\u043B\u044F:"week",\u043D\u0435\u0434\u0435\u043B\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u044E:"week",\u043D\u0435\u0434\u0435\u043B\u044C:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u0435\u043A:"week",\u043C\u0435\u0441\u044F\u0446:"month",\u043C\u0435\u0441\u044F\u0446\u0435:"month",\u043C\u0435\u0441\u044F\u0446\u0435\u0432:"month",\u043C\u0435\u0441\u044F\u0446\u0430:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0435:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u043E\u0432:"quarter",\u0433\u043E\u0434:"year",\u0433\u043E\u0434\u0430:"year",\u0433\u043E\u0434\u0443:"year",\u0433\u043E\u0434\u043E\u0432:"year",\u043B\u0435\u0442:"year",\u0433\u043E\u0434\u0438\u043A:"year",\u0433\u043E\u0434\u0438\u043A\u0430:"year",\u0433\u043E\u0434\u0438\u043A\u043E\u0432:"year"},xq=`(?:${te(mx)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u043E\u043B|\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E|\u043F\u0430\u0440(?:\u044B|\u0443)|\\s{0,3})`;function Cq(n){let a=n.toLowerCase();return mx[a]!==void 0?mx[a]:a.match(/несколько/)?3:a.match(/пол/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var kx=`(?:${te(fx)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;function yx(n){let a=n.toLowerCase();return fx[a]!==void 0?fx[a]:parseInt(a)}var px="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?",mk=`(?:[1-9][0-9]{0,3}${px}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${px}|[5-9][0-9]${px})`;function fk(n){if(/(год|года|г|г.)/i.test(n)&&(n=n.replace(/(год|года|г|г.)/i,"")),/(до н.э.|до н. э.)/i.test(n))return n=n.replace(/(до н.э.|до н. э.)/i,""),-parseInt(n);if(/(н. э.|н.э.)/i.test(n))return n=n.replace(/(н. э.|н.э.)/i,""),parseInt(n);let a=parseInt(n);return Mr(a)}var sL=`(${xq})\\s{0,3}(${te(Vp)})`,nL=new RegExp(sL,"i"),Nd=pr("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",sL);function Ld(n){let a={},e=n,t=nL.exec(e);for(;t;)Sq(a,t),e=e.substring(t[0].length).trim(),t=nL.exec(e);return a}function Sq(n,a){let e=Cq(a[1]),t=Vp[a[2].toLowerCase()];n[t]=e}var oL=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${Nd})${Ur.rightBoundary}`,Wp=class extends _{patternLeftBoundary(){return Ur.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(oL,Ur.flags):new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${oL}`,Ur.flags)}innerExtract(a,e){let t=Ld(e[1]);return K.createRelativeFromReference(a.reference,t)}};var nl=class extends _{patternLeftBoundary(){return Ur.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),Ur.flags)}innerPatternHasChange(a,e){return!1}},Ar=class extends nl{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${Ur.rightBoundary}`,Ur.flags)}};var lL=1,dL=2,Dq=3,cL=4,zp=class extends Ar{innerPatternString(a){return`(?:\u0441)?\\s*(${kx})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${kx}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${te(Od)})(?:(?:-|\\/|,?\\s{0,3})(${mk}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Od[e[Dq].toLowerCase()],i=yx(e[lL]);if(i>31)return e.index=e.index+e[lL].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[cL]){let s=fk(e[cL]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[dL]){let s=yx(e[dL]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Eq=2,uL=3,$p=class extends nl{innerPatternString(a){return`((?:\u0432)\\s*)?(${te(Od)})\\s*(?:[,-]?\\s*(${mk})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[Eq].toLowerCase();if(e[0].length<=3&&!gx[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=Od[t];if(r.start.assign("month",i),e[uL]){let s=fk(e[uL]);r.start.assign("year",s)}else{let s=rt(a.refDate,1,i);r.start.imply("year",s)}return r}};var _p=class extends Ca{constructor(a){super(a)}patternFlags(){return Ur.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0438|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0441)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0443\u0442\u0440\u0430|\u0432\u0435\u0447\u0435\u0440\u0430|\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F))?(?!\\/)${Ur.rightBoundary}`}extractPrimaryTimeComponents(a,e){let t=super.extractPrimaryTimeComponents(a,e);if(t){if(e[0].endsWith("\u0432\u0435\u0447\u0435\u0440\u0430")){let r=t.get("hour");r>=6&&r<12?(t.assign("hour",t.get("hour")+12),t.assign("meridiem",$.PM)):r<6&&t.assign("meridiem",$.AM)}if(e[0].endsWith("\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F")){t.assign("meridiem",$.PM);let r=t.get("hour");r>=0&&r<=6&&t.assign("hour",t.get("hour")+12)}e[0].endsWith("\u0443\u0442\u0440\u0430")&&(t.assign("meridiem",$.AM),t.get("hour")<12&&t.assign("hour",t.get("hour")))}return t}};var Up=class extends nl{innerPatternString(a){return`(${Nd})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`}innerExtract(a,e){let t=Ld(e[1]),r=oa(t);return K.createRelativeFromReference(a.reference,r)}};var Yp=class extends Ct{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}};var qp=class extends St{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}};var Gp=class extends Ar{innerPatternString(a){return"(?:\u0441|\u0441\u043E)?\\s*(\u0441\u0435\u0433\u043E\u0434\u043D\u044F|\u0432\u0447\u0435\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430)"}innerExtract(a,e){let t=e[1].toLowerCase(),r=a.createParsingComponents();switch(t){case"\u0441\u0435\u0433\u043E\u0434\u043D\u044F":return Sa(a.reference);case"\u0432\u0447\u0435\u0440\u0430":return Ja(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Za(a.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return kn(a.reference,2);case"\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return kn(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Wo(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Wo(a.reference,3)}return r}};var pL=Oe(Xe(),1);var Kp=class extends Ar{innerPatternString(a){return"(\u0441\u0435\u0439\u0447\u0430\u0441|\u043F\u0440\u043E\u0448\u043B\u044B\u043C\\s*\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u043F\u0440\u043E\u0448\u043B\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u0435\u0433\u043E\u0434\u043D\u044F\\s*\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u0438\u043C \u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u0434\u0435\u043D\u044C|\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u0432\u0435\u0447\u0435\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u043D\u043E\u0447\u044C)"}innerExtract(a,e){let t=(0,pL.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0441\u0435\u0439\u0447\u0430\u0441")return Xa(a.reference);if(r==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||r==="\u0432\u0435\u0447\u0435\u0440\u0430")return Cd(a.reference);if(r.endsWith("\u0443\u0442\u0440\u043E\u043C")||r.endsWith("\u0443\u0442\u0440\u0430"))return Sd(a.reference);if(r.match(/в\s*полдень/))return Dd(a.reference);if(r.match(/прошлой\s*ночью/))return Bg(a.reference);if(r.match(/прошлым\s*вечером/))return Vg(a.reference);if(r.match(/следующей\s*ночью/)){let s=t.hour()<22?1:2;t=t.add(s,"day"),Tt(i,t),i.imply("hour",0)}return r.match(/в\s*полночь/)||r.endsWith("\u043D\u043E\u0447\u044C\u044E")?zo(a.reference):i}};var Pq=1,Mq=2,Iq=3,Qp=class extends Ar{innerPatternString(a){return`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:(\u044D\u0442\u0443|\u044D\u0442\u043E\u0442|\u043F\u0440\u043E\u0448\u043B\u044B\u0439|\u043F\u0440\u043E\u0448\u043B\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E)\\s*)?(${te(hx)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*\u043D\u0430\\s*(\u044D\u0442\u043E\u0439|\u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439)\\s*\u043D\u0435\u0434\u0435\u043B\u0435)?`}innerExtract(a,e){let t=e[Mq].toLowerCase(),r=hx[t],i=e[Pq],s=e[Iq],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o=="\u043F\u0440\u043E\u0448\u043B\u044B\u0439"||o=="\u043F\u0440\u043E\u0448\u043B\u0443\u044E"||o=="\u043F\u0440\u043E\u0448\u043B\u043E\u0439"?l="last":o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E"?l="next":(o=="\u044D\u0442\u043E\u0442"||o=="\u044D\u0442\u0443"||o=="\u044D\u0442\u043E\u0439")&&(l="this"),la(a.reference,r,l)}};var mL=Oe(Xe(),1);var Aq=1,Fq=2,Xp=class extends Ar{innerPatternString(a){return`(\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439|\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C|\u043D\u0430 \u044D\u0442\u043E\u0439|\u0432 \u044D\u0442\u043E\u043C)\\s*(${te(Vp)})`}innerExtract(a,e){let t=e[Aq].toLowerCase(),r=e[Fq].toLowerCase(),i=Vp[r];if(t=="\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||t=="\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C"){let l={};return l[i]=1,K.createRelativeFromReference(a.reference,l)}if(t=="\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C"||t=="\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439"){let l={};return l[i]=-1,K.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=(0,mL.default)(a.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),s.imply("day",o.date()),s.assign("year",o.year()),s.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.assign("year",o.year())),s}};var Jp=class extends Ar{innerPatternString(a){return`(\u044D\u0442\u0438|\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435|\u043F\u0440\u043E\u0448\u043B\u044B\u0435|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435|\u043F\u043E\u0441\u043B\u0435|\u0441\u043F\u0443\u0441\u0442\u044F|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${Nd})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=Ld(e[2]);switch(t){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":r=oa(r);break}return K.createRelativeFromReference(a.reference,r)}};var vx=new be(fL()),Rq=new be(bx(!0));function Oq(n,a,e){return vx.parse(n,a,e)}function Nq(n,a,e){return vx.parseDate(n,a,e)}function fL(){let n=bx(!1);return n.parsers.unshift(new Gp),n.parsers.unshift(new Kp),n.parsers.unshift(new $p),n.parsers.unshift(new Xp),n.parsers.unshift(new Jp),n}function bx(n=!0){return Mt({parsers:[new ka(!0),new Wp,new zp,new Qp,new _p(n),new Up],refiners:[new qp,new Yp]},n)}var Ex={};Et(Ex,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>Sx,createCasualConfiguration:()=>DL,createConfiguration:()=>Dx,parse:()=>Yq,parseDate:()=>qq,strict:()=>Uq});var xx={domingo:0,dom:0,lunes:1,lun:1,martes:2,mar:2,mi\u00E9rcoles:3,miercoles:3,mi\u00E9:3,mie:3,jueves:4,jue:4,viernes:5,vie:5,s\u00E1bado:6,sabado:6,s\u00E1b:6,sab:6},Cx={enero:1,ene:1,"ene.":1,febrero:2,feb:2,"feb.":2,marzo:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,mayo:5,may:5,"may.":5,junio:6,jun:6,"jun.":6,julio:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,septiembre:9,setiembre:9,sep:9,"sep.":9,octubre:10,oct:10,"oct.":10,noviembre:11,nov:11,"nov.":11,diciembre:12,dic:12,"dic.":12},Tx={uno:1,dos:2,tres:3,cuatro:4,cinco:5,seis:6,siete:7,ocho:8,nueve:9,diez:10,once:11,doce:12,trece:13},gL={sec:"second",segundo:"second",segundos:"second",min:"minute",mins:"minute",minuto:"minute",minutos:"minute",h:"hour",hr:"hour",hrs:"hour",hora:"hour",horas:"hour",d\u00EDa:"d",d\u00EDas:"d",semana:"week",semanas:"week",mes:"month",meses:"month",cuarto:"quarter",cuartos:"quarter",a\u00F1o:"year",a\u00F1os:"year"},Lq=`(?:${te(Tx)}|[0-9]+|[0-9]+\\.[0-9]+|un?|uno?|una?|algunos?|unos?|demi-?)`;function jq(n){let a=n.toLowerCase();return Tx[a]!==void 0?Tx[a]:a==="un"||a==="una"||a==="uno"?1:a.match(/algunos?/)||a.match(/unos?/)?3:a.match(/media?/)?.5:parseFloat(a)}var kL="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function yL(n){if(n.match(/^[0-9]{1,4}$/)){let a=parseInt(n);return a<100&&(a>50?a=a+1900:a=a+2e3),a}return n.match(/a\.?\s*c\.?/i)?(n=n.replace(/a\.?\s*c\.?/i,""),-parseInt(n)):parseInt(n)}var vL=`(${Lq})\\s{0,5}(${te(gL)})\\s{0,5}`,hL=new RegExp(vL,"i"),bL=pr("",vL);function wL(n){let a={},e=n,t=hL.exec(e);for(;t;)Hq(a,t),e=e.substring(t[0].length),t=hL.exec(e);return a}function Hq(n,a){let e=jq(a[1]),t=gL[a[2].toLowerCase()];n[t]=e}var Bq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|pasado|pr[o\xF3]ximo)\\s*)?(${te(xx)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|pasado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),Vq=1,Wq=2,zq=3,Zp=class extends _{innerPattern(){return Bq}innerExtract(a,e){let t=e[Wq].toLowerCase(),r=xx[t];if(r===void 0)return null;let i=e[Vq],s=e[zq],o=i||s||"";o=o.toLowerCase();let l=null;return o=="pasado"?l="this":o=="pr\xF3ximo"||o=="proximo"?l="next":o=="este"&&(l="this"),la(a.reference,r,l)}};var em=class extends Ca{primaryPrefix(){return"(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:l)?|\\?)\\s*"}};var tm=class extends St{patternBetween(){return new RegExp("^\\s*(?:,|de|aslas|a)?\\s*$")}};var am=class extends Ct{patternBetween(){return/^\s*(?:-)\s*$/i}};var $q=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${te(Cx)})(?:\\s*(?:de|,)?\\s*(${kL}))?(?=\\W|$)`,"i"),TL=1,xL=2,_q=3,CL=4,rm=class extends _{innerPattern(){return $q}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Cx[e[_q].toLowerCase()],i=parseInt(e[TL]);if(i>31)return e.index=e.index+e[TL].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[CL]){let s=yL(e[CL]);t.start.assign("year",s)}else{let s=rt(a.refDate,i,r);t.start.imply("year",s)}if(e[xL]){let s=parseInt(e[xL]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var im=class extends _{innerPattern(a){return/(ahora|hoy|mañana|ayer)(?=\W|$)/i}innerExtract(a,e){let t=e[0].toLowerCase(),r=a.createParsingComponents();switch(t){case"ahora":return Xa(a.reference);case"hoy":return Sa(a.reference);case"ma\xF1ana":return Za(a.reference);case"ayer":return Ja(a.reference)}return r}};var SL=Oe(Xe(),1),nm=class extends _{innerPattern(){return/(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i}innerExtract(a,e){let t=(0,SL.default)(a.refDate),r=a.createParsingComponents();switch(e[1].toLowerCase()){case"tarde":r.imply("meridiem",$.PM),r.imply("hour",15);break;case"noche":r.imply("meridiem",$.PM),r.imply("hour",22);break;case"ma\xF1ana":r.imply("meridiem",$.AM),r.imply("hour",6);break;case"medianoche":_i(r,t),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"mediodia":case"mediod\xEDa":r.imply("meridiem",$.AM),r.imply("hour",12);break}return r}};var sm=class extends _{innerPattern(){return new RegExp(`(?:en|por|durante|de|dentro de)\\s*(${bL})(?=\\W|$)`,"i")}innerExtract(a,e){let t=wL(e[1]);return K.createRelativeFromReference(a.reference,t)}};var Sx=new be(DL()),Uq=new be(Dx(!0));function Yq(n,a,e){return Sx.parse(n,a,e)}function qq(n,a,e){return Sx.parseDate(n,a,e)}function DL(n=!0){let a=Dx(!1,n);return a.parsers.push(new im),a.parsers.push(new nm),a}function Dx(n=!0,a=!0){return Mt({parsers:[new ka(a),new Zp,new em,new rm,new sm],refiners:[new tm,new am]},n)}var jx={};Et(jx,{Chrono:()=>be,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>Ue,ReferenceWithTimezone:()=>Je,Weekday:()=>we,casual:()=>Nx,createCasualConfiguration:()=>LL,createConfiguration:()=>Lx,parse:()=>n6,parseDate:()=>s6,strict:()=>i6});var vi={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},Ax={\u043D\u0435\u0434\u0456\u043B\u044F:0,\u043D\u0435\u0434\u0456\u043B\u0456:0,\u043D\u0435\u0434\u0456\u043B\u044E:0,\u043D\u0434:0,"\u043D\u0434.":0,\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A:2,\u0432\u0456\u0432\u0442\u043E\u0440\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0435\u0440\u0435\u0434\u0430:3,\u0441\u0435\u0440\u0435\u0434\u0438:3,\u0441\u0435\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0443:4,\u0447\u0442:4,"\u0447\u0442.":4,"\u043F'\u044F\u0442\u043D\u0438\u0446\u044F":5,"\u043F'\u044F\u0442\u043D\u0438\u0446\u0456":5,"\u043F'\u044F\u0442\u043D\u0438\u0446\u044E":5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u043E\u0442\u0438:6,\u0441\u0443\u0431\u043E\u0442\u0443:6,\u0441\u0431:6,"\u0441\u0431.":6},Fx={\u0441\u0456\u0447\u0435\u043D\u044C:1,\u0441\u0456\u0447\u043D\u044F:1,\u0441\u0456\u0447\u043D\u0456:1,\u043B\u044E\u0442\u0438\u0439:2,\u043B\u044E\u0442\u043E\u0433\u043E:2,\u043B\u044E\u0442\u043E\u043C\u0443:2,\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C:3,\u0431\u0435\u0440\u0435\u0437\u043D\u044F:3,\u0431\u0435\u0440\u0435\u0437\u043D\u0456:3,\u043A\u0432\u0456\u0442\u0435\u043D\u044C:4,\u043A\u0432\u0456\u0442\u043D\u044F:4,\u043A\u0432\u0456\u0442\u043D\u0456:4,\u0442\u0440\u0430\u0432\u0435\u043D\u044C:5,\u0442\u0440\u0430\u0432\u043D\u044F:5,\u0442\u0440\u0430\u0432\u043D\u0456:5,\u0447\u0435\u0440\u0432\u0435\u043D\u044C:6,\u0447\u0435\u0440\u0432\u043D\u044F:6,\u0447\u0435\u0440\u0432\u043D\u0456:6,\u043B\u0438\u043F\u0435\u043D\u044C:7,\u043B\u0438\u043F\u043D\u044F:7,\u043B\u0438\u043F\u043D\u0456:7,\u0441\u0435\u0440\u043F\u0435\u043D\u044C:8,\u0441\u0435\u0440\u043F\u043D\u044F:8,\u0441\u0435\u0440\u043F\u043D\u0456:8,\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C:9,\u0432\u0435\u0440\u0435\u0441\u043D\u044F:9,\u0432\u0435\u0440\u0435\u0441\u043D\u0456:9,\u0436\u043E\u0432\u0442\u0435\u043D\u044C:10,\u0436\u043E\u0432\u0442\u043D\u044F:10,\u0436\u043E\u0432\u0442\u043D\u0456:10,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0443:11,\u0433\u0440\u0443\u0434\u0435\u043D\u044C:12,\u0433\u0440\u0443\u0434\u043D\u044F:12,\u0433\u0440\u0443\u0434\u043D\u0456:12},jd={...Fx,\u0441\u0456\u0447:1,"\u0441\u0456\u0447.":1,\u043B\u044E\u0442:2,"\u043B\u044E\u0442.":2,\u0431\u0435\u0440:3,"\u0431\u0435\u0440.":3,\u043A\u0432\u0456\u0442:4,"\u043A\u0432\u0456\u0442.":4,\u0442\u0440\u0430\u0432:5,"\u0442\u0440\u0430\u0432.":5,\u0447\u0435\u0440\u0432:6,"\u0447\u0435\u0440\u0432.":6,\u043B\u0438\u043F:7,"\u043B\u0438\u043F.":7,\u0441\u0435\u0440\u043F:8,"\u0441\u0435\u0440\u043F.":8,\u0441\u0435\u0440:8,"c\u0435\u0440.":8,\u0432\u0435\u0440:9,"\u0432\u0435\u0440.":9,\u0432\u0435\u0440\u0435\u0441:9,"\u0432\u0435\u0440\u0435\u0441.":9,\u0436\u043E\u0432\u0442:10,"\u0436\u043E\u0432\u0442.":10,\u043B\u0438\u0441\u0442\u043E\u043F:11,"\u043B\u0438\u0441\u0442\u043E\u043F.":11,\u0433\u0440\u0443\u0434:12,"\u0433\u0440\u0443\u0434.":12},Mx={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0457:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0456:2,\u0434\u0432\u0430:2,\u0434\u0432\u043E\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u044C\u043E\u0445:3,\u0447\u043E\u0442\u0438\u0440\u0438:4,\u0447\u043E\u0442\u0438\u0440\u044C\u043E\u0445:4,"\u043F'\u044F\u0442\u044C":5,"\u043F'\u044F\u0442\u0438":5,\u0448\u0456\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0456\u043C:7,\u0441\u0435\u043C\u0438:7,\u0432\u0456\u0441\u0456\u043C:8,\u0432\u043E\u0441\u044C\u043C\u0438:8,"\u0434\u0435\u0432'\u044F\u0442\u044C":9,"\u0434\u0435\u0432'\u044F\u0442\u0438":9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u044C:11,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0438:11,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u044C:12,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u0438:12},Ix={\u043F\u0435\u0440\u0448\u0435:1,\u043F\u0435\u0440\u0448\u043E\u0433\u043E:1,\u0434\u0440\u0443\u0433\u0435:2,\u0434\u0440\u0443\u0433\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u0454:3,\u0442\u0440\u0435\u0442\u044C\u043E\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,"\u043F'\u044F\u0442\u0435":5,"\u043F'\u044F\u0442\u043E\u0433\u043E":5,\u0448\u043E\u0441\u0442\u0435:6,\u0448\u043E\u0441\u0442\u043E\u0433\u043E:6,\u0441\u044C\u043E\u043C\u0435:7,\u0441\u044C\u043E\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,"\u0434\u0435\u0432'\u044F\u0442\u0435":9,"\u0434\u0435\u0432'\u044F\u0442\u043E\u0433\u043E":9,\u0434\u0435\u0441\u044F\u0442\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0435:11,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u0435:12,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:13,\u0447\u043E\u0442\u0438\u0440\u043D\u0430\u0434\u0446\u044F\u0442\u0435:14,\u0447\u043E\u0442\u0438\u043D\u0440\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:14,"\u043F'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435":15,"\u043F'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E":15,\u0448\u0456\u0441\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435:16,\u0448\u0456\u0441\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:16,\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u0435:17,\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:17,\u0432\u0456\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u0435:18,\u0432\u0456\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:18,"\u0434\u0435\u0432'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435":19,"\u0434\u0435\u0432'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E":19,\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u0435:20,\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0440\u0443\u0433\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0440\u0443\u0433\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0442\u0440\u0435\u0442\u0454":23,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u043E\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F'\u044F\u0442\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F'\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0448\u043E\u0441\u0442\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0448\u043E\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0441\u044C\u043E\u043C\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0441\u044C\u043E\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0435\u0432'\u044F\u0442\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0435\u0432'\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u0435:30,\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u043E\u0433\u043E":31},om={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043E\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u0445\u0432:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0430:"minute",\u0445\u0432\u0438\u043B\u0438\u043D:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0443:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u043A:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043A\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043A\u0443:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043E\u043A:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043A\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043A\u0443:"minute",\u0433\u043E\u0434:"hour",\u0433\u043E\u0434\u0438\u043D\u0430:"hour",\u0433\u043E\u0434\u0438\u043D:"hour",\u0433\u043E\u0434\u0438\u043D\u0438:"hour",\u0433\u043E\u0434\u0438\u043D\u0443:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0430:"hour",\u0433\u043E\u0434\u0438\u043D\u043E\u043A:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0438:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0443:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0456\u0432:"d",\u0434\u043D\u0456:"d",\u0434\u043E\u0431\u0430:"d",\u0434\u043E\u0431\u0443:"d",\u0442\u0438\u0436\u0434\u0435\u043D\u044C:"week",\u0442\u0438\u0436\u043D\u044E:"week",\u0442\u0438\u0436\u043D\u044F:"week",\u0442\u0438\u0436\u043D\u0456:"week",\u0442\u0438\u0436\u043D\u0456\u0432:"week",\u043C\u0456\u0441\u044F\u0446\u044C:"month",\u043C\u0456\u0441\u044F\u0446\u0456\u0432:"month",\u043C\u0456\u0441\u044F\u0446\u0456:"month",\u043C\u0456\u0441\u044F\u0446\u044F:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0443:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0430:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0456\u0432:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0456:"quarter",\u0440\u0456\u043A:"year",\u0440\u043E\u043A\u0443:"year",\u0440\u043E\u0446\u0456:"year",\u0440\u043E\u043A\u0456\u0432:"year",\u0440\u043E\u043A\u0438:"year"},Gq=`(?:${te(Mx)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u0456\u0432|\u0434\u0435\u043A\u0456\u043B\u044C\u043A\u0430|\u043F\u0430\u0440(?:\u0443)|\\s{0,3})`;function Kq(n){let a=n.toLowerCase();return Mx[a]!==void 0?Mx[a]:a.match(/декілька/)?2:a.match(/пів/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var Rx=`(?:${te(Ix)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435)?)`;function Ox(n){let a=n.toLowerCase();return Ix[a]!==void 0?Ix[a]:parseInt(a)}var Px="(?:\\s+(?:\u0440\u043E\u043A\u0443|\u0440\u0456\u043A|\u0440|\u0440.))?",hk=`(?:[1-9][0-9]{0,3}${Px}\\s*(?:\u043D.\u0435.|\u0434\u043E \u043D.\u0435.|\u043D. \u0435.|\u0434\u043E \u043D. \u0435.)|[1-2][0-9]{3}${Px}|[5-9][0-9]${Px})`;function gk(n){if(/(рік|року|р|р.)/i.test(n)&&(n=n.replace(/(рік|року|р|р.)/i,"")),/(до н.е.|до н. е.)/i.test(n))return n=n.replace(/(до н.е.|до н. е.)/i,""),-parseInt(n);if(/(н. е.|н.е.)/i.test(n))return n=n.replace(/(н. е.|н.е.)/i,""),parseInt(n);let a=parseInt(n);return Mr(a)}var PL=`(${Gq})\\s{0,3}(${te(om)})`,EL=new RegExp(PL,"i"),Hd=pr("(?:(?:\u0431\u043B\u0438\u0437\u044C\u043A\u043E|\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E)\\s{0,3})?",PL);function Bd(n){let a={},e=n,t=EL.exec(e);for(;t;)Qq(a,t),e=e.substring(t[0].length).trim(),t=EL.exec(e);return a}function Qq(n,a){let e=Kq(a[1]),t=om[a[2].toLowerCase()];n[t]=e}var ML=`(?:(?:\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E|\u043E\u0440\u0456\u0454\u043D\u0442\u043E\u0432\u043D\u043E)\\s*(?:~\\s*)?)?(${Hd})${vi.rightBoundary}`,lm=class extends _{patternLeftBoundary(){return vi.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(ML,"i"):new RegExp(`(?:\u043F\u0440\u043E\u0442\u044F\u0433\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0442\u044F\u0437\u0456|\u043F\u0440\u043E\u0442\u044F\u0433\u043E\u043C|\u0443\u043F\u0440\u043E\u0434\u043E\u0432\u0436|\u0432\u043F\u0440\u043E\u0434\u043E\u0432\u0436)\\s*${ML}`,vi.flags)}innerExtract(a,e){let t=Bd(e[1]);return K.createRelativeFromReference(a.reference,t)}};var sl=class extends _{patternLeftBoundary(){return vi.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),vi.flags)}innerPatternHasChange(a,e){return!1}},Fr=class extends sl{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${vi.rightBoundary}`,vi.flags)}};var IL=1,AL=2,Xq=3,FL=4,dm=class extends Fr{innerPatternString(a){return`(?:\u0437|\u0456\u0437)?\\s*(${Rx})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${Rx}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${te(jd)})(?:(?:-|\\/|,?\\s{0,3})(${hk}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=jd[e[Xq].toLowerCase()],i=Ox(e[IL]);if(i>31)return e.index=e.index+e[IL].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[FL]){let s=gk(e[FL]);t.start.assign("year",s)}else{let s=rt(a.reference.instant,i,r);t.start.imply("year",s)}if(e[AL]){let s=Ox(e[AL]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Jq=2,RL=3,cm=class extends sl{innerPatternString(a){return`((?:\u0432|\u0443)\\s*)?(${te(jd)})\\s*(?:[,-]?\\s*(${hk})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[Jq].toLowerCase();if(e[0].length<=3&&!Fx[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=jd[t];if(r.start.assign("month",i),e[RL]){let s=gk(e[RL]);r.start.assign("year",s)}else{let s=rt(a.reference.instant,1,i);r.start.imply("year",s)}return r}};var um=class extends Ca{constructor(a){super(a)}patternFlags(){return vi.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0456|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0443|\u043E|\u043E\u0431|\u0437|\u0456\u0437|\u0432\u0456\u0434)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0440\u0430\u043D\u043A\u0443|\u0432\u0435\u0447\u043E\u0440\u0430|\u043F\u043E \u043E\u0431\u0456\u0434\u0456|\u043F\u0456\u0441\u043B\u044F \u043E\u0431\u0456\u0434\u0443))?(?!\\/)${vi.rightBoundary}`}extractPrimaryTimeComponents(a,e){let t=super.extractPrimaryTimeComponents(a,e);if(t){if(e[0].endsWith("\u0432\u0435\u0447\u043E\u0440\u0430")){let r=t.get("hour");r>=6&&r<12?(t.assign("hour",t.get("hour")+12),t.assign("meridiem",$.PM)):r<6&&t.assign("meridiem",$.AM)}if(e[0].endsWith("\u043F\u043E \u043E\u0431\u0456\u0434\u0456")||e[0].endsWith("\u043F\u0456\u0441\u043B\u044F \u043E\u0431\u0456\u0434\u0443")){t.assign("meridiem",$.PM);let r=t.get("hour");r>=0&&r<=6&&t.assign("hour",t.get("hour")+12)}e[0].endsWith("\u0440\u0430\u043D\u043A\u0443")&&(t.assign("meridiem",$.AM),t.get("hour")<12&&t.assign("hour",t.get("hour")))}return t}};var pm=class extends sl{innerPatternString(a){return`(${Hd})\\s{0,5}\u0442\u043E\u043C\u0443(?=(?:\\W|$))`}innerExtract(a,e){let t=Bd(e[1]),r=oa(t);return K.createRelativeFromReference(a.reference,r)}};var mm=class extends Ct{patternBetween(){return/^\s*(і до|і по|до|по|-)\s*$/i}};var fm=class extends St{patternBetween(){return new RegExp("^\\s*(T|\u0432|\u0443|\u043E|,|-)?\\s*$")}};var hm=class extends Fr{innerPatternString(a){return"(?:\u0437|\u0456\u0437|\u0432\u0456\u0434)?\\s*(\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456|\u0432\u0447\u043E\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430)"}innerExtract(a,e){let t=e[1].toLowerCase(),r=a.createParsingComponents();switch(t){case"\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456":return Sa(a.reference);case"\u0432\u0447\u043E\u0440\u0430":return Ja(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Za(a.reference);case"\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return kn(a.reference,2);case"\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return kn(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return Wo(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return Wo(a.reference,3)}return r}};var OL=Oe(Xe(),1);var gm=class extends Fr{innerPatternString(a){return"(\u0437\u0430\u0440\u0430\u0437|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E\\s*\u0432\u0435\u0447\u043E\u0440\u0430|\u043C\u0438\u043D\u0443\u043B\u043E\u0457\\s*\u043D\u043E\u0447\u0456|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0457\\s*\u043D\u043E\u0447\u0456|\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\\s*\u0432\u043D\u043E\u0447\u0456|\u0446\u0456\u0454\u0457\\s*\u043D\u043E\u0447\u0456|\u0446\u044C\u043E\u0433\u043E \u0440\u0430\u043D\u043A\u0443|\u0432\u0440\u0430\u043D\u0446\u0456|\u0440\u0430\u043D\u043A\u0443|\u0437\u0440\u0430\u043D\u043A\u0443|\u043E\u043F\u0456\u0432\u0434\u043D\u0456|\u0432\u0432\u0435\u0447\u0435\u0440\u0456|\u0432\u0435\u0447\u043E\u0440\u0430|\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456|\u0432\u043D\u043E\u0447\u0456)"}innerExtract(a,e){let t=(0,OL.default)(a.reference.instant),r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0437\u0430\u0440\u0430\u0437")return Xa(a.reference);if(r==="\u0432\u0432\u0435\u0447\u0435\u0440\u0456"||r==="\u0432\u0435\u0447\u043E\u0440\u0430")return Cd(a.reference);if(r.endsWith("\u0432\u0440\u0430\u043D\u0446\u0456")||r.endsWith("\u0440\u0430\u043D\u043A\u0443")||r.endsWith("\u0437\u0440\u0430\u043D\u043A\u0443"))return Sd(a.reference);if(r.endsWith("\u043E\u043F\u0456\u0432\u0434\u043D\u0456"))return Dd(a.reference);if(r.match(/минулої\s*ночі/))return Bg(a.reference);if(r.match(/минулого\s*вечора/))return Vg(a.reference);if(r.match(/наступної\s*ночі/)){let s=t.hour()<22?1:2;t=t.add(s,"day"),Tt(i,t),i.imply("hour",1)}return r.match(/цієї\s*ночі/)?zo(a.reference):r.endsWith("\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456")||r.endsWith("\u0432\u043D\u043E\u0447\u0456")?zo(a.reference):i}};var Zq=1,e6=2,t6=3,km=class extends Fr{innerPatternString(a){return`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:\u0443\\s*?)?(?:(\u0446\u0435\u0439|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E|\u043C\u0438\u043D\u0443\u043B\u0438\u0439|\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439|\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E\u0433\u043E|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443)\\s*)?(${te(Ax)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*(\u043D\u0430|\u0443|\u0432)\\s*(\u0446\u044C\u043E\u043C\u0443|\u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443)\\s*\u0442\u0438\u0436\u043D\u0456)?`}innerExtract(a,e){let t=e[e6].toLocaleLowerCase(),r=Ax[t],i=e[Zq],s=e[t6],o=i||s;o=o||"",o=o.toLocaleLowerCase();let l=null;return o=="\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E"||o=="\u043C\u0438\u043D\u0443\u043B\u0438\u0439"||o=="\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439"||o=="\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E\u0433\u043E"?l="last":o=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E"||o=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439"?l="next":(o=="\u0446\u0435\u0439"||o=="\u0446\u044C\u043E\u0433\u043E"||o=="\u0446\u044C\u043E\u043C\u0443")&&(l="this"),la(a.reference,r,l)}};var NL=Oe(Xe(),1);var a6=1,r6=2,ym=class extends Fr{innerPatternString(a){return`(\u0432 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u0443 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043D\u0430 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E|\u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u0432 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E|\u043D\u0430 \u0446\u044C\u043E\u043C\u0443|\u0432 \u0446\u044C\u043E\u043C\u0443|\u0443 \u0446\u044C\u043E\u043C\u0443|\u0446\u044C\u043E\u0433\u043E)\\s*(${te(om)})(?=\\s*)`}innerExtract(a,e){let t=e[a6].toLowerCase(),r=e[r6].toLowerCase(),i=om[r];if(t=="\u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||t=="\u0432 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||t=="\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||t=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E"){let l={};return l[i]=1,K.createRelativeFromReference(a.reference,l)}if(t=="\u043D\u0430 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||t=="\u0432 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||t=="\u0443 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||t=="\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E"){let l={};return l[i]=-1,K.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=(0,NL.default)(a.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),s.imply("day",o.date()),s.assign("year",o.year()),s.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),s.imply("day",o.date()),s.imply("month",o.month()+1),s.assign("year",o.year())),s}};var vm=class extends Fr{innerPatternString(a){return`(\u0446\u0456|\u043E\u0441\u0442\u0430\u043D\u043D\u0456|\u043C\u0438\u043D\u0443\u043B\u0456|\u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0456|\u043F\u0456\u0441\u043B\u044F|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${Hd})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=Bd(e[3]);switch(t){case"\u043E\u0441\u0442\u0430\u043D\u043D\u0456":case"\u043C\u0438\u043D\u0443\u043B\u0456":case"-":r=oa(r);break}return K.createRelativeFromReference(a.reference,r)}};var Nx=new be(LL()),i6=new be(Lx(!0));function LL(){let n=Lx(!1);return n.parsers.unshift(new hm),n.parsers.unshift(new gm),n.parsers.unshift(new cm),n.parsers.unshift(new ym),n.parsers.unshift(new vm),n}function Lx(n){return Mt({parsers:[new as,new ka(!0),new lm,new dm,new km,new um(n),new pm],refiners:[new fm,new mm]},n)}function n6(n,a,e){return Nx.parse(n,a,e)}function s6(n,a,e){return Nx.parseDate(n,a,e)}var o6=fT,Hx=Lu;function l6(n,a,e){return Hx.parse(n,a,e)}function d6(n,a,e){return Hx.parseDate(n,a,e)}var Vd=class{constructor(a){this.parseCache=new Map;this.maxCacheSize=100;this.TIME_PATTERNS={TIME_24H:/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,TIME_12H:/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g,TIME_RANGE:/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\s*[-~~]\s*([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,TIME_RANGE_12H:/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)?\s*[-~~]\s*(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g};this.config=a}parseTimeComponents(a){let e=[],t=[];try{let{timeComponents:r}=this.extractTimeComponents(a);return{timeComponents:r,errors:e,warnings:t}}catch(r){let i={type:"invalid-format",originalText:a,position:0,message:r instanceof Error?r.message:"Unknown error during time parsing",fallbackUsed:!0};return e.push(i),{timeComponents:{},errors:e,warnings:t}}}parseTimeExpressionsForLine(a){let e=this.parseTimeExpressions(a);return{originalLine:a,cleanedLine:e.cleanedText,startDate:e.startDate,dueDate:e.dueDate,scheduledDate:e.scheduledDate,parsedExpressions:e.parsedExpressions}}parseTimeExpressionsPerLine(a){return a.map(e=>this.parseTimeExpressionsForLine(e))}parseTimeComponent(a){let e=a.trim(),t=e.match(/^(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)$/i);if(t){let i=parseInt(t[1],10),s=parseInt(t[2],10),o=t[3]?parseInt(t[3],10):void 0,l=t[4].toUpperCase();return l==="PM"&&i!==12?i+=12:l==="AM"&&i===12&&(i=0),{hour:i,minute:s,second:o,originalText:e,isRange:!1}}let r=e.match(/^([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?$/);if(r){let i=parseInt(r[1],10),s=parseInt(r[2],10),o=r[3]?parseInt(r[3],10):void 0;if(i>23||s>59||o!==void 0&&o>59)return null;let l=c=>c&&"timeDefaults"in c;return{hour:i,minute:s,second:o,originalText:e,isRange:!1}}return null}extractTimeComponents(a){let e={},t=[],r=[...a.matchAll(this.TIME_PATTERNS.TIME_RANGE)],i=[...a.matchAll(this.TIME_PATTERNS.TIME_RANGE_12H)];for(let c of[...r,...i]){let u=c[0],p=c.index||0,m=u.split(/\s*[-~\uff5e]\s*/);if(m.length===2){let f=this.parseTimeComponent(m[0]),h=this.parseTimeComponent(m[1]);f&&h&&(f.isRange=!0,h.isRange=!0,f.rangePartner=h,h.rangePartner=f,t.push({text:u,index:p,isRange:!0,rangeStart:f,rangeEnd:h}),(this.determineTimeContext(a,u,p)==="start"||!e.startTime)&&(e.startTime=f,e.endTime=h))}}let s=[...a.matchAll(this.TIME_PATTERNS.TIME_12H)],o=[...a.matchAll(this.TIME_PATTERNS.TIME_24H)],l=new Set;for(let c of s){let u=c[0],p=c.index||0;if(!t.some(f=>f.isRange&&p>=f.index&&pf.isRange&&p>=f.index&&p0&&(l=c)}if(l.length===0&&o.zh&&typeof o.zh.parse=="function"){let c=o.zh.parse(a);c&&c.length>0&&(l=c)}l.length===0&&(l=this.parseChineseTimeExpressions(a))}catch(c){console.warn("TimeParsingService: Chinese parsing failed:",c);try{l=this.parseChineseTimeExpressions(a)}catch(u){console.warn("TimeParsingService: Custom Chinese parsing failed:",u),l=[]}}for(let c of l)try{if(!c||!c.text||!c.start){console.warn("TimeParsingService: Invalid parse result structure:",c);continue}let u=c.text,p;try{p=c.start.date()}catch(b){console.warn("TimeParsingService: Failed to extract date from parse result:",b);continue}if(!p||isNaN(p.getTime())){console.warn("TimeParsingService: Invalid date extracted:",p);continue}let m=(s=c.index)!=null?s:0,f=u.length,h;try{h=this.determineTimeType(a,u,m)}catch(b){console.warn("TimeParsingService: Failed to determine time type:",b),h="due"}let g=r.find(b=>b.index>=m-10&&b.index<=m+f+10),k=!1;g!=null&&g.rangeStart&&(g!=null&&g.rangeEnd)&&(k=g.rangeStart.hour>g.rangeEnd.hour);let y={text:u,date:p,type:h,index:m,length:f,timeComponent:g==null?void 0:g.timeComponent,isTimeRange:(g==null?void 0:g.isRange)||!1,rangeStart:g==null?void 0:g.rangeStart,rangeEnd:g==null?void 0:g.rangeEnd,crossesMidnight:k||void 0};switch(i.parsedExpressions.push(y),h){case"start":i.startDate||(i.startDate=p);break;case"due":i.dueDate||(i.dueDate=p);break;case"scheduled":i.scheduledDate||(i.scheduledDate=p);break;default:console.warn("TimeParsingService: Unknown date type:",h);break}}catch(u){console.warn("TimeParsingService: Error processing expression:",u);continue}i.cleanedText=this.cleanTextFromTimeExpressions(a,i.parsedExpressions)}catch(o){console.warn("Time parsing error:",o)}finally{this.cacheResult(e,i)}return i}generateCacheKey(a){let e=JSON.stringify({enabled:this.config.enabled,removeOriginalText:this.config.removeOriginalText,supportedLanguages:this.config.supportedLanguages,dateKeywords:this.config.dateKeywords});return`${a}|${e}`}cacheResult(a,e){if(this.parseCache.size>=this.maxCacheSize){let t=this.parseCache.keys().next().value;t&&this.parseCache.delete(t)}this.parseCache.set(a,e)}clearCache(){this.parseCache.clear()}cleanTextFromTimeExpressions(a,e){var i;if(!this.config.removeOriginalText||e.length===0)return a;let t=[...e].sort((s,o)=>o.index-s.index),r=a;for(let s of t){let o=r.substring(0,s.index),l=r.substring(s.index+s.length),c=o,u=l;o.endsWith(" ")&&l.startsWith(" ")?u=l.trimStart():o.endsWith(" ")&&!l.startsWith(" ")&&(c=o.trimEnd()+" ");let p=c.match(/[,;]\s*$/),m=u.match(/^[,;]\s*/);if(p&&m){c=c.replace(/[,;]\s*$/,"");let f=((i=u.match(/^[,;]/))==null?void 0:i[0])||"";u=u.replace(/^[,;]\s*/,""),u.trim()&&(c+=f+" ")}else p&&!m?(c=c.replace(/[,;]\s*$/,""),u.trim()&&!c.endsWith(" ")&&(c+=" ")):(!p&&m&&(u=u.replace(/^[,;]\s*/,"")),c&&u.trim()&&!c.endsWith(" ")&&(c+=" "));r=c+u}return r=r.replace(/[ \t]+/g," "),r=r.replace(/^[ \t]+|[ \t]+$/g,""),r}updateConfig(a){this.config={...this.config,...a}}getConfig(){return{...this.config}}determineTimeType(a,e,t){let r=a.substring(Math.max(0,t-20),t).toLowerCase(),i=a.substring(t+e.length,Math.min(a.length,t+e.length+20)).toLowerCase(),s=r+" "+i;for(let o of this.config.dateKeywords.start)if(s.includes(o.toLowerCase()))return"start";for(let o of this.config.dateKeywords.due)if(s.includes(o.toLowerCase()))return"due";for(let o of this.config.dateKeywords.scheduled)if(s.includes(o.toLowerCase()))return"scheduled";return"due"}parseChineseTimeExpressions(a){let e=[],t=new Set,r=[/(?:下|上|这)(?:周|礼拜|星期)(?:一|二|三|四|五|六|日|天)/g,/(\d+)[天周月]后/g,/(\d+)[天周月]内/g,/星期(?:一|二|三|四|五|六|日|天)/g,/周(?:一|二|三|四|五|六|日|天)/g,/礼拜(?:一|二|三|四|五|六|日|天)/g,/明天|后天|昨天|前天/g,/下周|上周|这周/g,/下个?月|上个?月|这个?月/g,/明年|去年|今年/g];for(let i of r){let s;for(;(s=i.exec(a))!==null;){let o=s[0],l=s.index,c=l+o.length,u=!1;for(let m=l;mp}})}}}return e}parseChineseDate(a){let e=new Date,t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=o=>{var c;return(c={\u65E5:0,\u5929:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6}[o])!=null?c:-1},i=(o,l=0)=>{let c=t.getDay(),u=o-c;return u+=l*7,l===0&&u<=0&&(u+=7),new Date(t.getTime()+u*24*60*60*1e3)},s=a.match(/(?:(下|上|这)?(?:周|礼拜|星期)?)([一二三四五六日天])/);if(s){let[,o,l]=s,c=r(l);if(c!==-1){let u=0;return o==="\u4E0B"?u=1:o==="\u4E0A"?u=-1:u=0,i(c,u)}}switch(a){case"\u660E\u5929":return new Date(t.getTime()+1440*60*1e3);case"\u540E\u5929":return new Date(t.getTime()+2880*60*1e3);case"\u6628\u5929":return new Date(t.getTime()-1440*60*1e3);case"\u524D\u5929":return new Date(t.getTime()-2880*60*1e3);case"\u4E0B\u5468":return new Date(t.getTime()+10080*60*1e3);case"\u4E0A\u5468":return new Date(t.getTime()-10080*60*1e3);case"\u8FD9\u5468":return t;case"\u4E0B\u4E2A\u6708":case"\u4E0B\u6708":return new Date(e.getFullYear(),e.getMonth()+1,e.getDate());case"\u4E0A\u4E2A\u6708":case"\u4E0A\u6708":return new Date(e.getFullYear(),e.getMonth()-1,e.getDate());case"\u8FD9\u4E2A\u6708":case"\u8FD9\u6708":return t;case"\u660E\u5E74":return new Date(e.getFullYear()+1,e.getMonth(),e.getDate());case"\u53BB\u5E74":return new Date(e.getFullYear()-1,e.getMonth(),e.getDate());case"\u4ECA\u5E74":return t;default:let o=a.match(/(\d+)([天周月])[后内]/);if(o){let l=parseInt(o[1]);switch(o[2]){case"\u5929":return new Date(t.getTime()+l*24*60*60*1e3);case"\u5468":return new Date(t.getTime()+l*7*24*60*60*1e3);case"\u6708":return new Date(e.getFullYear(),e.getMonth()+l,e.getDate())}}return null}}},jL={enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","starting","begins","\u5F00\u59CB","\u4ECE","\u8D77\u59CB","\u8D77","\u59CB\u4E8E","\u81EA"],due:["due","deadline","by","until","before","expires","ends","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D","\u671F\u9650","\u6700\u665A","\u7ED3\u675F","\u7EC8\u6B62","\u5B8C\u6210\u4E8E"],scheduled:["scheduled","on","at","planned","set for","arranged","\u5B89\u6392","\u8BA1\u5212","\u5728","\u5B9A\u4E8E","\u9884\u5B9A","\u7EA6\u5B9A","\u8BBE\u5B9A"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!1,timePatterns:{singleTime:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/],timeRange:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\s*[-~\uff5e]\s*([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)?\s*[-~\uff5e]\s*(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/],rangeSeparators:["-","~","\uFF5E"," - "," ~ "]},timeDefaults:{preferredFormat:"24h",defaultPeriod:"PM",midnightCrossing:"next-day"}};var kk=require("obsidian");var Pa=require("obsidian");q();function HL(){return[{id:"priority-highest",label:d("Highest Priority"),icon:"arrow-up",description:"",replacement:"",trigger:"!",action:(n,a)=>{var i;let e=(i=n.cm)==null?void 0:i.dom,t=e==null?void 0:e.closest(".quick-capture-modal.minimal"),r=t==null?void 0:t.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=5,r.updateButtonState(r.priorityButton,!0)),new Pa.Notice(d("Highest priority set"))}},{id:"priority-high",label:d("High Priority"),icon:"arrow-up",description:"",replacement:"",trigger:"!",action:(n,a)=>{var i;let e=(i=n.cm)==null?void 0:i.dom,t=e==null?void 0:e.closest(".quick-capture-modal.minimal"),r=t==null?void 0:t.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=4,r.updateButtonState(r.priorityButton,!0)),new Pa.Notice(d("High priority set"))}},{id:"priority-medium",label:d("Medium Priority"),icon:"minus",description:"",replacement:"",trigger:"!",action:(n,a)=>{var i;let e=(i=n.cm)==null?void 0:i.dom,t=e==null?void 0:e.closest(".quick-capture-modal.minimal"),r=t==null?void 0:t.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=3,r.updateButtonState(r.priorityButton,!0)),new Pa.Notice(d("Medium priority set"))}},{id:"priority-low",label:d("Low Priority"),icon:"arrow-down",description:"",replacement:"",trigger:"!",action:(n,a)=>{var i;let e=(i=n.cm)==null?void 0:i.dom,t=e==null?void 0:e.closest(".quick-capture-modal.minimal"),r=t==null?void 0:t.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=2,r.updateButtonState(r.priorityButton,!0)),new Pa.Notice(d("Low priority set"))}},{id:"priority-lowest",label:d("Lowest Priority"),icon:"arrow-down",description:"",replacement:"",trigger:"!",action:(n,a)=>{var i;let e=(i=n.cm)==null?void 0:i.dom,t=e==null?void 0:e.closest(".quick-capture-modal.minimal"),r=t==null?void 0:t.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=1,r.updateButtonState(r.priorityButton,!0)),new Pa.Notice(d("Lowest priority set"))}}]}function BL(){let n=new Date,a=new Date(n);a.setDate(a.getDate()+1);let e=t=>t.toISOString().split("T")[0];return[{id:"date-today",label:d("Today"),icon:"calendar-days",description:d("Set due date to today"),replacement:"",trigger:"~",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.dueDate=n,o.updateButtonState(o.dateButton,!0)),new Pa.Notice(d("Due date set to today"))}},{id:"date-tomorrow",label:d("Tomorrow"),icon:"calendar-plus",description:d("Set due date to tomorrow"),replacement:"",trigger:"~",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.dueDate=a,o.updateButtonState(o.dateButton,!0)),new Pa.Notice(d("Due date set to tomorrow"))}},{id:"date-picker",label:d("Pick Date"),icon:"calendar",description:d("Open date picker"),replacement:"",trigger:"~",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&o.showDatePicker()}},{id:"date-scheduled",label:d("Scheduled Date"),icon:"calendar-clock",description:d("Set scheduled date"),replacement:"",trigger:"~",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.scheduledDate=n,o.updateButtonState(o.dateButton,!0)),new Pa.Notice(d("Scheduled date set"))}}]}function VL(n){let a=[{id:"target-inbox",label:d("Inbox"),icon:"inbox",description:d("Save to inbox"),replacement:"",trigger:"*",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="fixed",o.taskMetadata.targetFile=n.settings.quickCapture.targetFile,o.updateButtonState(o.locationButton,!0)),new Pa.Notice(d("Target set to Inbox"))}},{id:"target-daily",label:d("Daily Note"),icon:"calendar-days",description:d("Save to today's daily note"),replacement:"",trigger:"*",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="daily",o.updateButtonState(o.locationButton,!0)),new Pa.Notice(d("Target set to Daily Note"))}},{id:"target-current",label:d("Current File"),icon:"file-text",description:d("Save to current file"),replacement:"",trigger:"*",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="current",o.updateButtonState(o.locationButton,!0)),new Pa.Notice(d("Target set to Current File"))}},{id:"target-picker",label:d("Choose File"),icon:"folder-open",description:d("Open file picker"),replacement:"",trigger:"*",action:(t,r)=>{var l;let i=(l=t.cm)==null?void 0:l.dom,s=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=s==null?void 0:s.__minimalQuickCaptureModal;o&&o.showLocationMenu()}}];return n.app.workspace.getLastOpenFiles().slice(0,3).forEach((t,r)=>{var s;let i=((s=t.split("/").pop())==null?void 0:s.replace(".md",""))||t;a.push({id:`target-recent-${r}`,label:i,icon:"file",description:d("Save to recent file"),replacement:"",trigger:"*",action:(o,l)=>{var m;let c=(m=o.cm)==null?void 0:m.dom,u=c==null?void 0:c.closest(".quick-capture-modal.minimal"),p=u==null?void 0:u.__minimalQuickCaptureModal;p&&(p.taskMetadata.location="fixed",p.taskMetadata.targetFile=t,p.updateButtonState(p.locationButton,!0)),new Pa.Notice(d("Target set to")+` ${i}`)}})}),a}function WL(n){let a=[{id:"tag-important",label:d("Important"),icon:"star",description:d("Mark as important"),replacement:"",trigger:"#",action:(e,t)=>{var o;let r=(o=e.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),s=i==null?void 0:i.__minimalQuickCaptureModal;s&&(s.taskMetadata.tags||(s.taskMetadata.tags=[]),s.taskMetadata.tags.includes("important")||s.taskMetadata.tags.push("important"),s.updateButtonState(s.tagButton,!0)),new Pa.Notice(d("Tagged as important"))}},{id:"tag-urgent",label:d("Urgent"),icon:"zap",description:d("Mark as urgent"),replacement:"",trigger:"#",action:(e,t)=>{var o;let r=(o=e.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),s=i==null?void 0:i.__minimalQuickCaptureModal;s&&(s.taskMetadata.tags||(s.taskMetadata.tags=[]),s.taskMetadata.tags.includes("urgent")||s.taskMetadata.tags.push("urgent"),s.updateButtonState(s.tagButton,!0)),new Pa.Notice(d("Tagged as urgent"))}},{id:"tag-work",label:d("Work"),icon:"briefcase",description:d("Work related task"),replacement:"",trigger:"#",action:(e,t)=>{var o;let r=(o=e.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),s=i==null?void 0:i.__minimalQuickCaptureModal;s&&(s.taskMetadata.tags||(s.taskMetadata.tags=[]),s.taskMetadata.tags.includes("work")||s.taskMetadata.tags.push("work"),s.updateButtonState(s.tagButton,!0)),new Pa.Notice(d("Tagged as work"))}},{id:"tag-personal",label:d("Personal"),icon:"user",description:d("Personal task"),replacement:"",trigger:"#",action:(e,t)=>{var o;let r=(o=e.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),s=i==null?void 0:i.__minimalQuickCaptureModal;s&&(s.taskMetadata.tags||(s.taskMetadata.tags=[]),s.taskMetadata.tags.includes("personal")||s.taskMetadata.tags.push("personal"),s.updateButtonState(s.tagButton,!0)),new Pa.Notice(d("Tagged as personal"))}},{id:"tag-picker",label:d("Choose Tag"),icon:"tag",description:d("Open tag picker"),replacement:"",trigger:"#",action:(e,t)=>{var o;let r=(o=e.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),s=i==null?void 0:i.__minimalQuickCaptureModal;s&&s.showTagSelector()}}];try{let e=n.app.metadataCache.getTags();Object.keys(e).map(r=>r.replace("#","")).filter(r=>!["important","urgent","work","personal"].includes(r)).slice(0,5).forEach((r,i)=>{a.push({id:`tag-existing-${i}`,label:`#${r}`,icon:"tag",description:d("Existing tag"),replacement:"",trigger:"#",action:(s,o)=>{var p;let l=(p=s.cm)==null?void 0:p.dom,c=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=c==null?void 0:c.__minimalQuickCaptureModal;u&&(u.taskMetadata.tags||(u.taskMetadata.tags=[]),u.taskMetadata.tags.includes(r)||u.taskMetadata.tags.push(r),u.updateButtonState(u.tagButton,!0)),new Pa.Notice(d("Tagged with")+` #${r}`)}})})}catch(e){console.warn("Failed to load existing tags:",e)}return a}function zL(n){return{priority:HL(),date:BL(),target:VL(n),tag:WL(n)}}function bm(n,a){let e=zL(a);switch(n){case"!":return e.priority;case"~":return e.date;case"*":return e.target;case"#":return e.tag;default:return[]}}var wm=class extends kk.EditorSuggest{constructor(e,t,r){super(e);this.suggestOptions=[];this.isEnabled=!1;this.plugin=t,this.config=r,this.initializeSuggestOptions()}initializeSuggestOptions(){this.suggestOptions=[]}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}onTrigger(e,t,r){if(!this.isEnabled||this.config.contextFilter&&!this.config.contextFilter(t,r))return null;let i=t.getLine(e.line);if(e.ch>0){let s=i.charAt(e.ch-1);if(this.config.triggerChars.includes(s))return{start:{line:e.line,ch:e.ch-1},end:e,query:s}}return null}getSuggestions(e){let t=e.query;return bm(t,this.plugin)}renderSuggestion(e,t){t.createDiv({cls:"universal-suggest-item"}).createDiv({cls:"universal-suggest-container"},i=>{let s=i.createDiv({cls:"universal-suggest-icon"});(0,kk.setIcon)(s,e.icon),i.createDiv({cls:"universal-suggest-label",text:e.label})})}selectSuggestion(e,t){var c,u;let r=(c=this.context)==null?void 0:c.editor,i=(u=this.context)==null?void 0:u.end;if(!r||!i)return;let s={line:i.line,ch:i.ch-1},o=i;r.replaceRange(e.replacement,s,o);let l={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(l),e.action&&e.action(r,l)}addSuggestOption(e){this.suggestOptions.push(e),this.config.triggerChars.includes(e.trigger)||this.config.triggerChars.push(e.trigger)}removeSuggestOption(e){this.suggestOptions=this.suggestOptions.filter(t=>t.id!==e)}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}};var is=class{constructor(a,e,t){this.activeSuggests=new Map;this.originalSuggestsOrder=[];this.isManaging=!1;this.app=a,this.plugin=e,this.config={enableDynamicPriority:!0,defaultTriggerChars:["!","~","*","#"],contextFilters:{},...t}}startManaging(){this.isManaging||(this.isManaging=!0,this.originalSuggestsOrder=[...this.app.workspace.editorSuggest.suggests])}stopManaging(){this.isManaging&&(this.removeAllManagedSuggests(),this.originalSuggestsOrder.length>0&&(this.app.workspace.editorSuggest.suggests=[...this.originalSuggestsOrder]),this.isManaging=!1,this.originalSuggestsOrder=[])}addSuggestWithPriority(a,e){if(!this.isManaging){console.warn("SuggestManager: Not managing, call startManaging() first");return}this.removeManagedSuggest(e),this.activeSuggests.set(e,a),this.app.workspace.editorSuggest.suggests.unshift(a)}removeManagedSuggest(a){let e=this.activeSuggests.get(a);if(!e)return;let t=this.app.workspace.editorSuggest.suggests.indexOf(e);t!==-1&&this.app.workspace.editorSuggest.suggests.splice(t,1),this.activeSuggests.delete(a)}removeAllManagedSuggests(){for(let[a]of this.activeSuggests)this.removeManagedSuggest(a)}createUniversalSuggest(a,e={}){let t={triggerChars:this.config.defaultTriggerChars,contextFilter:this.config.contextFilters[a],priority:1,...e},r=new wm(this.app,this.plugin,t);return this.addSuggestWithPriority(r,`universal-${a}`),r}enableForEditor(a,e="default"){let t=this.createUniversalSuggest(e,{contextFilter:(r,i)=>r===a});return t.enable(),t}disableForContext(a){this.removeManagedSuggest(`universal-${a}`)}enableForMinimalModal(a){return this.createUniversalSuggest("minimal-modal",{contextFilter:(e,t)=>{var i;let r=(i=e.cm)==null?void 0:i.dom;return(r==null?void 0:r.closest(".quick-capture-modal.minimal"))!==null}})}enableForQuickCaptureModal(a){return this.createUniversalSuggest("quick-capture-modal",{contextFilter:(e,t)=>{var i;let r=(i=e.cm)==null?void 0:i.dom;return(r==null?void 0:r.closest(".quick-capture-modal"))!==null}})}addContextFilter(a,e){this.config.contextFilters[a]=e}removeContextFilter(a){delete this.config.contextFilters[a]}getActiveSuggests(){return new Map(this.activeSuggests)}isCurrentlyManaging(){return this.isManaging}getConfig(){return{...this.config}}updateConfig(a){this.config={...this.config,...a}}debugLogSuggestOrder(){this.app.workspace.editorSuggest.suggests,Array.from(this.activeSuggests.keys())}cleanup(){this.stopManaging(),this.activeSuggests.clear(),this.config.contextFilters={}}};function c6(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function u6(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?c6(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var ya=class extends Ma.Modal{constructor(e,t,r,i=!1){super(e);this.markdownEditor=null;this.capturedContent="";this.tempTargetFilePath="";this.taskMetadata={};this.useFullFeaturedMode=!1;this.previewContainerEl=null;this.markdownRenderer=null;this.preferMetadataFormat="tasks";this.universalSuggest=null;if(this.plugin=t,this.suggestManager=new is(e,t),this.plugin.settings.quickCapture.targetType==="daily-note"){let s=(0,Ma.moment)().format(this.plugin.settings.quickCapture.dailyNoteSettings.format),o=this.plugin.settings.quickCapture.dailyNoteSettings.folder?`${this.plugin.settings.quickCapture.dailyNoteSettings.folder}/${s}.md`:`${s}.md`;this.tempTargetFilePath=u6(o)}else this.tempTargetFilePath=this.plugin.settings.quickCapture.targetFile;this.preferMetadataFormat=this.plugin.settings.preferMetadataFormat,this.timeParsingService=new Vd(this.plugin.settings.timeParsing||jL),r&&(this.taskMetadata=r),this.useFullFeaturedMode=i&&!Ma.Platform.isPhone}onOpen(){let{contentEl:e}=this;this.modalEl.toggleClass("quick-capture-modal",!0),this.suggestManager.startManaging(),this.useFullFeaturedMode?(this.modalEl.toggleClass(["quick-capture-modal","full"],!0),this.createFullFeaturedModal(e)):this.createSimpleModal(e),setTimeout(()=>{var t,r;(r=(t=this.markdownEditor)==null?void 0:t.editor)!=null&&r.editor&&(this.universalSuggest=this.suggestManager.enableForQuickCaptureModal(this.markdownEditor.editor.editor),this.universalSuggest.enable())},100)}createSimpleModal(e){this.titleEl.createDiv({text:d("Capture to")});let t=this.titleEl.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:this.plugin.settings.quickCapture.targetType==="fixed"?"true":"false",spellcheck:"false"},text:this.tempTargetFilePath}),r=e.createDiv({cls:"quick-capture-modal-editor"});this.setupMarkdownEditor(r,t);let i=e.createDiv({cls:"quick-capture-modal-buttons"});i.createEl("button",{text:d("Capture"),cls:"mod-cta"}).addEventListener("click",()=>this.handleSubmit()),i.createEl("button",{text:d("Cancel")}).addEventListener("click",()=>this.close()),this.plugin.settings.quickCapture.targetType==="fixed"&&new jo(this.app,t,this.plugin.settings.quickCapture,l=>{var c,u;t.textContent=l.path,this.tempTargetFilePath=l.path,(u=(c=this.markdownEditor)==null?void 0:c.editor)==null||u.focus()})}createFullFeaturedModal(e){let t=e.createDiv({cls:"quick-capture-layout"}),r=t.createDiv({cls:"quick-capture-config-panel"}),i=t.createDiv({cls:"quick-capture-editor-panel"}),s=r.createDiv({cls:"quick-capture-target-container"});s.createDiv({text:d("Target File:"),cls:"quick-capture-section-title"});let o=s.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:this.plugin.settings.quickCapture.targetType==="fixed"?"true":"false",spellcheck:"false"},text:this.tempTargetFilePath});this.plugin.settings.quickCapture.targetType==="fixed"&&new jo(this.app,o,this.plugin.settings.quickCapture,f=>{var h,g;o.textContent=f.path,this.tempTargetFilePath=f.path,(g=(h=this.markdownEditor)==null?void 0:h.editor)==null||g.focus()}),r.createDiv({text:d("Task Properties"),cls:"quick-capture-section-title"}),new _s(this.plugin,r,{status:this.taskMetadata.status},{type:"quick-capture",onTaskStatusSelected:f=>{this.taskMetadata.status=f,this.updatePreview()}}).load(),new Ma.Setting(r).setName(d("Start Date")).addText(f=>{f.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.startDate?this.formatDate(this.taskMetadata.startDate):"").onChange(h=>{h?(this.taskMetadata.startDate=this.parseDate(h),this.markAsManuallySet("startDate")):(this.taskMetadata.startDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.startDate=!1)),this.updatePreview()}),f.inputEl.type="date",this.startDateInput=f.inputEl}),new Ma.Setting(r).setName(d("Due Date")).addText(f=>{f.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.dueDate?this.formatDate(this.taskMetadata.dueDate):"").onChange(h=>{h?(this.taskMetadata.dueDate=this.parseDate(h),this.markAsManuallySet("dueDate")):(this.taskMetadata.dueDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.dueDate=!1)),this.updatePreview()}),f.inputEl.type="date",this.dueDateInput=f.inputEl}),new Ma.Setting(r).setName(d("Scheduled Date")).addText(f=>{f.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.scheduledDate?this.formatDate(this.taskMetadata.scheduledDate):"").onChange(h=>{h?(this.taskMetadata.scheduledDate=this.parseDate(h),this.markAsManuallySet("scheduledDate")):(this.taskMetadata.scheduledDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.scheduledDate=!1)),this.updatePreview()}),f.inputEl.type="date",this.scheduledDateInput=f.inputEl}),new Ma.Setting(r).setName(d("Priority")).addDropdown(f=>{var h;f.addOption("",d("None")).addOption("5",d("Highest")).addOption("4",d("High")).addOption("3",d("Medium")).addOption("2",d("Low")).addOption("1",d("Lowest")).setValue(((h=this.taskMetadata.priority)==null?void 0:h.toString())||"").onChange(g=>{this.taskMetadata.priority=g?parseInt(g):void 0,this.updatePreview()})}),new Ma.Setting(r).setName(d("Project")).addText(f=>{new Dr(this.app,f.inputEl,this.plugin),f.setPlaceholder(d("Project name")).setValue(this.taskMetadata.project||"").onChange(h=>{this.taskMetadata.project=h||void 0,this.updatePreview()})}),new Ma.Setting(r).setName(d("Context")).addText(f=>{new Er(this.app,f.inputEl,this.plugin),f.setPlaceholder(d("Context")).setValue(this.taskMetadata.context||"").onChange(h=>{this.taskMetadata.context=h||void 0,this.updatePreview()})}),new Ma.Setting(r).setName(d("Recurrence")).addText(f=>{f.setPlaceholder(d("e.g., every day, every week")).setValue(this.taskMetadata.recurrence||"").onChange(h=>{this.taskMetadata.recurrence=h||void 0,this.updatePreview()})});let c=i.createDiv({cls:"quick-capture-modal-editor"});i.createDiv({text:d("Task Content"),cls:"quick-capture-section-title"}),this.previewContainerEl=i.createDiv({cls:"preview-container"}),this.markdownRenderer=new Lt(this.app,this.previewContainerEl,"",!1),this.setupMarkdownEditor(c);let u=e.createDiv({cls:"quick-capture-modal-buttons"});u.createEl("button",{text:d("Capture"),cls:"mod-cta"}).addEventListener("click",()=>this.handleSubmit()),u.createEl("button",{text:d("Cancel")}).addEventListener("click",()=>this.close())}updatePreview(){var e;this.previewContainerEl&&((e=this.markdownRenderer)==null||e.render(this.processContentWithMetadata(this.capturedContent)))}setupMarkdownEditor(e,t){setTimeout(()=>{var r,i,s,o;this.markdownEditor=pn(this.app,e,{placeholder:this.plugin.settings.quickCapture.placeholder,onEnter:(l,c,u)=>c?(this.handleSubmit(),!0):!1,onEscape:l=>{this.close()},onSubmit:l=>{this.handleSubmit()},onChange:l=>{var c;this.capturedContent=((c=this.markdownEditor)==null?void 0:c.value)||"",this.parseDebounceTimer&&clearTimeout(this.parseDebounceTimer),this.parseDebounceTimer=window.setTimeout(()=>{this.performRealTimeParsing()},300),this.updatePreview&&this.updatePreview()}}),(r=this.markdownEditor)==null||r.scope.register(["Alt"],"c",l=>(l.preventDefault(),this.markdownEditor?this.markdownEditor.value.trim()===""?(this.close(),!0):(this.handleSubmit(),!0):!1)),t&&((i=this.markdownEditor)==null||i.scope.register(["Alt"],"x",l=>(l.preventDefault(),this.plugin.settings.quickCapture.targetType==="fixed"&&t.focus(),!0))),(o=(s=this.markdownEditor)==null?void 0:s.editor)==null||o.focus()},50)}async handleSubmit(){var t;let e=this.capturedContent.trim()||((t=this.markdownEditor)==null?void 0:t.value.trim())||"";if(!e){new Ma.Notice(d("Nothing to capture"));return}try{let r=this.processContentWithMetadata(e),i={...this.plugin.settings.quickCapture,targetFile:this.tempTargetFilePath};await mn(this.app,r,i),new Ma.Notice(d("Captured successfully")),this.close()}catch(r){new Ma.Notice(`${d("Failed to save:")} ${r}`)}}processContentWithMetadata(e){var s;let t=e.split(` `),r=[],i=/^(\s+)/;for(let o of t){if(!o.trim()){r.push(o);continue}let l=this.timeParsingService.parseTimeExpressionsForLine(o),c=l.cleanedLine,u=o.match(i),p=u&&u[1].length>0,m=c.trim().match(/^(-|\d+\.|\*|\+)(\s+\[[^\]\[]+\])?/);if(p){let f=u[1],h=this.cleanTemporaryMarks(c.trim());r.push(f+h)}else if(m)if(c.trim().match(/^(-|\d+\.|\*|\+)\s+\[[^\]]+\]/))r.push(this.addLineMetadataToTask(c,l));else{let f=(s=c.trim().match(/^(-|\d+\.|\*|\+)/))==null?void 0:s[0],h=this.cleanTemporaryMarks(c.trim().substring((f==null?void 0:f.length)||0).trim()),g=this.taskMetadata.status||" ",k=`${f} [${g}] ${h}`;r.push(this.addLineMetadataToTask(k,l))}else{let f=this.taskMetadata.status||" ",h=this.cleanTemporaryMarks(c),g=`- [${f}] ${h}`;r.push(this.addLineMetadataToTask(g,l))}}return r.join(` `)}addMetadataToTask(e){let t=this.generateMetadataString();return t?`${e} ${t}`.trim():e}addLineMetadataToTask(e,t){let r=this.generateLineMetadata(t);return r?`${e} ${r}`.trim():e}generateLineMetadata(e){var l,c,u,p;let t=[],r=this.preferMetadataFormat==="dataview",i=e.startDate||this.taskMetadata.startDate,s=e.dueDate||this.taskMetadata.dueDate,o=e.scheduledDate||this.taskMetadata.scheduledDate;if(i){let m=this.formatDate(i);t.push(r?`[start:: ${m}]`:`\u{1F6EB} ${m}`)}if(s){let m=this.formatDate(s);t.push(r?`[due:: ${m}]`:`\u{1F4C5} ${m}`)}if(o){let m=this.formatDate(o);t.push(r?`[scheduled:: ${m}]`:`\u23F3 ${m}`)}if(this.taskMetadata.priority)if(r){let m;switch(this.taskMetadata.priority){case 5:m="highest";break;case 4:m="high";break;case 3:m="medium";break;case 2:m="low";break;case 1:m="lowest";break;default:m=this.taskMetadata.priority}t.push(`[priority:: ${m}]`)}else{let m="";switch(this.taskMetadata.priority){case 5:m="\u{1F53A}";break;case 4:m="\u23EB";break;case 3:m="\u{1F53C}";break;case 2:m="\u{1F53D}";break;case 1:m="\u23EC";break}m&&t.push(m)}if(this.taskMetadata.project)if(r){let m=((l=this.plugin.settings.projectTagPrefix)==null?void 0:l[this.plugin.settings.preferMetadataFormat])||"project";t.push(`[${m}:: ${this.taskMetadata.project}]`)}else{let m=((c=this.plugin.settings.projectTagPrefix)==null?void 0:c[this.plugin.settings.preferMetadataFormat])||"project";t.push(`#${m}/${this.taskMetadata.project}`)}if(this.taskMetadata.context)if(r){let m=((u=this.plugin.settings.contextTagPrefix)==null?void 0:u[this.plugin.settings.preferMetadataFormat])||"context";t.push(`[${m}:: ${this.taskMetadata.context}]`)}else{let m=((p=this.plugin.settings.contextTagPrefix)==null?void 0:p[this.plugin.settings.preferMetadataFormat])||"@";t.push(`${m}${this.taskMetadata.context}`)}return this.taskMetadata.recurrence&&t.push(r?`[repeat:: ${this.taskMetadata.recurrence}]`:`\u{1F501} ${this.taskMetadata.recurrence}`),t.join(" ")}generateMetadataString(){let e=[],t=this.preferMetadataFormat==="dataview";if(this.taskMetadata.startDate){let r=this.formatDate(this.taskMetadata.startDate);e.push(t?`[start:: ${r}]`:`\u{1F6EB} ${r}`)}if(this.taskMetadata.dueDate){let r=this.formatDate(this.taskMetadata.dueDate);e.push(t?`[due:: ${r}]`:`\u{1F4C5} ${r}`)}if(this.taskMetadata.scheduledDate){let r=this.formatDate(this.taskMetadata.scheduledDate);e.push(t?`[scheduled:: ${r}]`:`\u23F3 ${r}`)}if(this.taskMetadata.priority)if(t){let r;switch(this.taskMetadata.priority){case 5:r="highest";break;case 4:r="high";break;case 3:r="medium";break;case 2:r="low";break;case 1:r="lowest";break;default:r=this.taskMetadata.priority}e.push(`[priority:: ${r}]`)}else{let r="";switch(this.taskMetadata.priority){case 5:r="\u{1F53A}";break;case 4:r="\u23EB";break;case 3:r="\u{1F53C}";break;case 2:r="\u{1F53D}";break;case 1:r="\u23EC";break}r&&e.push(r)}if(this.taskMetadata.project)if(t){let r=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";e.push(`[${r}:: ${this.taskMetadata.project}]`)}else{let r=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";e.push(`#${r}/${this.taskMetadata.project}`)}if(this.taskMetadata.context)if(t){let r=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context";e.push(`[${r}:: ${this.taskMetadata.context}]`)}else{let r=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";e.push(`${r}${this.taskMetadata.context}`)}return this.taskMetadata.recurrence&&e.push(t?`[repeat:: ${this.taskMetadata.recurrence}]`:`\u{1F501} ${this.taskMetadata.recurrence}`),e.join(" ")}formatDate(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}parseDate(e){let[t,r,i]=e.split("-").map(Number);return new Date(t,r-1,i)}isManuallySet(e){var t;return((t=this.taskMetadata.manuallySet)==null?void 0:t[e])||!1}markAsManuallySet(e){this.taskMetadata.manuallySet||(this.taskMetadata.manuallySet={}),this.taskMetadata.manuallySet[e]=!0}cleanTemporaryMarks(e){let t=e;return t=t.replace(/\s*!\s*/g," "),t=t.replace(/\s*~\s*/g," "),t=t.replace(/\s*[🔺⏫🔼🔽⏬️]\s*/g," "),t=t.replace(/\s*[📅🛫⏳✅➕❌]\s*/g," "),t=t.replace(/\s*[📁🏠🏢🏪🏫🏬🏭🏯🏰]\s*/g," "),t=t.replace(/\s*[🆔⛔🏁🔁]\s*/g," "),t=t.replace(/\s*@\w*\s*/g," "),t=t.replace(/\s*target:\s*/gi," "),t=t.replace(/\s+/g," ").trim(),t}performRealTimeParsing(){if(!this.capturedContent)return;let e=this.capturedContent.split(` `),t=this.timeParsingService.parseTimeExpressionsPerLine(e),r,i,s;for(let o of t)o.startDate&&!r&&(r=o.startDate),o.dueDate&&!i&&(i=o.dueDate),o.scheduledDate&&!s&&(s=o.scheduledDate);r&&!this.isManuallySet("startDate")&&(this.taskMetadata.startDate=r,this.startDateInput&&(this.startDateInput.value=this.formatDate(r))),i&&!this.isManuallySet("dueDate")&&(this.taskMetadata.dueDate=i,this.dueDateInput&&(this.dueDateInput.value=this.formatDate(i))),s&&!this.isManuallySet("scheduledDate")&&(this.taskMetadata.scheduledDate=s,this.scheduledDateInput&&(this.scheduledDateInput.value=this.formatDate(s)))}onClose(){let{contentEl:e}=this;this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.suggestManager.stopManaging(),this.parseDebounceTimer&&(clearTimeout(this.parseDebounceTimer),this.parseDebounceTimer=void 0),this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),e.empty(),this.markdownRenderer&&(this.markdownRenderer.unload(),this.markdownRenderer=null)}updateTimeParsingSettings(e){this.timeParsingService&&this.timeParsingService.updateConfig(e)}};var Wd=class{constructor(a){this.plugin=a}render(a){a.empty(),a.createDiv("task-guide-intro").createEl("p",{text:d("Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax."),cls:"guide-description"}),this.renderTaskFormats(a),this.renderQuickCaptureDemo(a)}renderTaskFormats(a){let e=a.createDiv("task-formats-section");e.createEl("h3",{text:d("Task Format Examples")});let t=e.createDiv("format-example");t.createEl("h4",{text:d("Basic Task")}),t.createEl("code",{text:"- [ ] Complete project documentation"});let r=e.createDiv("format-example");r.createEl("h4",{text:d("With Emoji Metadata")}),r.createEl("code",{text:"- [ ] Complete project documentation \u{1F4C5} 2024-01-15 \u{1F53A} #project/docs"}),r.createDiv("format-legend").createEl("small",{text:d("\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag")});let s=e.createDiv("format-example");s.createEl("h4",{text:d("With Dataview Metadata")}),s.createEl("code",{text:"- [ ] Complete project documentation [due:: 2024-01-15] [priority:: high] [project:: docs]"});let o=e.createDiv("format-example");o.createEl("h4",{text:d("Mixed Format")}),o.createEl("code",{text:"- [ ] Complete project documentation \u{1F4C5} 2024-01-15 [priority:: high] @work"}),o.createDiv("format-legend").createEl("small",{text:d("Combine emoji and dataview syntax as needed")});let c=e.createDiv("status-markers");c.createEl("h4",{text:d("Task Status Markers")});let u=c.createEl("ul",{cls:"status-list"});[{marker:"[ ]",description:d("Not started")},{marker:"[x]",description:d("Completed")},{marker:"[/]",description:d("In progress")},{marker:"[?]",description:d("Planned")},{marker:"[-]",description:d("Abandoned")}].forEach(g=>{let k=u.createEl("li");k.createEl("code",{text:g.marker}),k.createSpan().setText(" - "+g.description)});let m=e.createDiv("metadata-symbols");m.createEl("h4",{text:d("Common Metadata Symbols")});let f=m.createEl("ul",{cls:"symbols-list"});[{symbol:"\u{1F4C5}",description:d("Due date")},{symbol:"\u{1F6EB}",description:d("Start date")},{symbol:"\u23F3",description:d("Scheduled date")},{symbol:"\u{1F53A}",description:d("High priority")},{symbol:"\u23EB",description:d("Higher priority")},{symbol:"\u{1F53C}",description:d("Medium priority")},{symbol:"\u{1F53D}",description:d("Lower priority")},{symbol:"\u23EC",description:d("Lowest priority")},{symbol:"\u{1F501}",description:d("Recurring task")},{symbol:"#",description:d("Project/tag")},{symbol:"@",description:d("Context")}].forEach(g=>{f.createEl("li").createSpan().setText(g.symbol+" - "+g.description)})}renderQuickCaptureDemo(a){let e=a.createDiv("quick-capture-section");e.createEl("h3",{text:d("Quick Capture")});let t=e.createDiv("demo-content");t.createEl("p",{text:d("Use quick capture panel to quickly capture tasks from anywhere in Obsidian.")}),t.createEl("button",{text:d("Try Quick Capture"),cls:"mod-cta demo-button"}).addEventListener("click",()=>{var i;try{(i=this.plugin.settings.quickCapture)!=null&&i.enableQuickCapture?new ya(this.plugin.app,this.plugin).open():new ol.Notice(d("Quick capture is now enabled in your configuration!"),3e3)}catch(s){console.error("Failed to open quick capture:",s),new ol.Notice(d("Failed to open quick capture. Please try again later."),3e3)}})}renderInteractivePractice(a){let e=a.createDiv("practice-section");e.createEl("h3",{text:d("Try It Yourself")}),e.createEl("p",{text:d("Practice creating a task with the format you prefer:")});let t;new ol.Setting(e).setName(d("Practice Task")).setDesc(d("Enter a task using any of the formats shown above")).addTextArea(s=>{t=s,s.setPlaceholder(d("- [ ] Your task here")).setValue("").then(()=>{s.inputEl.rows=3,s.inputEl.style.width="100%"})});let r=e.createDiv("practice-feedback");e.createEl("button",{text:d("Validate Task"),cls:"demo-button"}).addEventListener("click",()=>{let s=t.getValue().trim();this.validateTaskFormat(s,r)})}validateTaskFormat(a,e){if(e.empty(),!a){e.createEl("div",{text:d("Please enter a task to validate"),cls:"validation-message validation-warning"});return}if(!/^-\s*\[.\]\s*.+/.test(a)){e.createEl("div",{text:d("This doesn't look like a valid task. Tasks should start with '- [ ]'"),cls:"validation-message validation-error"});return}let r=/[📅🛫⏳🔺⏫🔼🔽⏬🔁]/.test(a),i=/\[[\w]+::[^\]]+\]/.test(a),s=/#[\w\/]+/.test(a),o=/@[\w]+/.test(a),l=e.createEl("div",{cls:"validation-message validation-success"}),c=l.createSpan();(0,ol.setIcon)(c,"check"),l.createSpan().setText(" "+d("Valid task format!"));let u=[];r&&u.push(d("Emoji metadata")),i&&u.push(d("Dataview metadata")),s&&u.push(d("Project tags")),o&&u.push(d("Context")),u.length>0&&e.createEl("div",{text:d("Detected features: ")+u.join(", "),cls:"validation-message validation-info"})}};q();var Vx=require("obsidian"),zd=class{render(a,e){a.empty();let t=a.createDiv("completion-success");t.createDiv("success-icon").setText("\u{1F389}"),t.createEl("h2",{text:d("Congratulations!")}),t.createEl("p",{text:d("Task Genius has been configured with your selected preferences"),cls:"success-message"});let i=a.createDiv("completion-summary");i.createEl("h3",{text:d("Your Configuration")});let s=i.createDiv("config-summary-card"),o=s.createDiv("config-header"),l=o.createDiv("config-icon");(0,Vx.setIcon)(l,this.getConfigIcon(e.mode)),o.createDiv("config-name").setText(e.name),s.createDiv("config-description").setText(e.description);let u=a.createDiv("quick-start-section");u.createEl("h3",{text:d("Quick Start Guide")});let p=u.createDiv("quick-start-steps");this.getQuickStartSteps(e.mode).forEach((v,w)=>{let x=p.createDiv("quick-start-step");x.createDiv("step-number").setText((w+1).toString()),x.createDiv("step-content").setText(v)});let f=a.createDiv("next-steps-section");f.createEl("h3",{text:d("What's next?")});let h=f.createEl("ul",{cls:"next-steps-list"});[d("Open Task Genius view from the left ribbon"),d("Create your first task using Quick Capture"),d("Explore different views to organize your tasks"),d("Customize settings anytime in plugin settings")].forEach(v=>{let w=h.createEl("li"),x=w.createSpan("step-check");(0,Vx.setIcon)(x,"arrow-right"),w.createSpan("step-text").setText(v)});let k=a.createDiv("resources-section");k.createEl("h3",{text:d("Helpful Resources")});let y=k.createDiv("resources-list");[{icon:"book-open",title:d("Documentation"),description:d("Complete guide to all features"),url:"https://taskgenius.md"},{icon:"message-circle",title:d("Community"),description:d("Get help and share tips"),url:"https://discord.gg/ARR2rHHX6b"},{icon:"settings",title:d("Settings"),description:d("Customize Task Genius"),action:"open-settings"}].forEach(v=>{let w=y.createDiv("resource-item"),x=w.createDiv("resource-content");x.createEl("h4",{text:v.title}),x.createEl("p",{text:v.description}),v.url?(w.addEventListener("click",()=>{window.open(v.url,"_blank")}),w.addClass("resource-clickable")):v.action==="open-settings"&&(w.addEventListener("click",()=>{let T=new CustomEvent("task-genius-open-settings");document.dispatchEvent(T)}),w.addClass("resource-clickable"))})}getConfigIcon(a){switch(a){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}getQuickStartSteps(a){switch(a){case"beginner":return[d("Click the Task Genius icon in the left sidebar"),d("Start with the Inbox view to see all your tasks"),d("Use quick capture panel to quickly add your first task"),d("Try the Forecast view to see tasks by date")];case"advanced":return[d("Open Task Genius and explore the available views"),d("Set up a project using the Projects view"),d("Try the Kanban board for visual task management"),d("Use workflow stages to track task progress")];case"power":return[d("Explore all available views and their configurations"),d("Set up complex workflows for your projects"),d("Configure habits and rewards to stay motivated"),d("Integrate with external calendars and systems")];default:return[d("Open Task Genius from the left sidebar"),d("Create your first task"),d("Explore the different views available"),d("Customize settings as needed")]}}handleFeedback(a,e){let t=e.querySelector(".feedback-buttons");t&&t.remove();let r=e.createDiv("feedback-thanks");r.createEl("p",{text:a==="positive"?d("Thank you for your positive feedback!"):d("Thank you for your feedback. We'll continue improving the experience."),cls:"feedback-thanks-message"}),a==="negative"&&r.createEl("a",{text:d("Share detailed feedback"),href:"https://github.com/obsidian-task-genius/feedback/issues/new"}).setAttribute("target","_blank"),`${a}`}};var yk=class extends bn.Modal{constructor(a,e,t){super(a),this.plugin=e,this.configManager=new Ws(e),this.onComplete=t,this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1},this.userLevelSelector=new pd(this.configManager),this.configPreview=new md(this.configManager),this.taskCreationGuide=new Wd(this.plugin),this.onboardingComplete=new zd,this.modalEl.addClass("onboarding-modal")}onOpen(){let{contentEl:a}=this;a.empty(),this.createModalStructure(),this.displayCurrentStep()}onClose(){let{contentEl:a}=this;a.empty()}createModalStructure(){let{contentEl:a}=this;this.headerEl=a.createDiv("onboarding-header"),this.onboardingContentEl=a.createDiv("onboarding-content"),this.footerEl=a.createDiv("onboarding-footer"),this.createFooterButtons()}createFooterButtons(){let a=this.footerEl.createDiv("onboarding-buttons");this.skipButton=new bn.ButtonComponent(a).setButtonText(d("Skip onboarding")).onClick(()=>this.handleSkip()),this.backButton=new bn.ButtonComponent(a).setButtonText(d("Back")).onClick(()=>this.handleBack()),this.nextButton=new bn.ButtonComponent(a).setButtonText(d("Next")).setCta().onClick(()=>this.handleNext())}displayCurrentStep(){switch(this.headerEl.empty(),this.onboardingContentEl.empty(),this.updateButtonStates(),this.state.currentStep){case 0:this.displayWelcomeStep();break;case 1:this.displayUserLevelSelectStep();break;case 2:this.displayConfigPreviewStep();break;case 3:this.displayTaskCreationGuideStep();break;case 4:this.displayCompleteStep();break}}displayWelcomeStep(){this.headerEl.createEl("h1",{text:d("Welcome to Task Genius")}),this.headerEl.createEl("p",{text:d("Transform your task management with advanced progress tracking and workflow automation"),cls:"onboarding-subtitle"});let a=this.onboardingContentEl,t=a.createDiv("welcome-section").createDiv("features-overview");[{icon:"bar-chart-3",title:d("Progress Tracking"),description:d("Visual progress bars and completion tracking for all your tasks")},{icon:"building",title:d("Project Management"),description:d("Organize tasks by projects with advanced filtering and sorting")},{icon:"zap",title:d("Workflow Automation"),description:d("Automate task status changes and improve your productivity")},{icon:"calendar",title:d("Multiple Views"),description:d("Kanban boards, calendars, Gantt charts, and more visualization options")}].forEach(s=>{let o=t.createDiv("feature-item"),l=o.createDiv("feature-icon");(0,bn.setIcon)(l,s.icon);let c=o.createDiv("feature-content");c.createEl("h3",{text:s.title}),c.createEl("p",{text:s.description})}),a.createDiv("setup-note").createEl("p",{text:d("This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later."),cls:"setup-description"})}displayUserLevelSelectStep(){this.headerEl.createEl("h1",{text:d("Choose Your Usage Mode")}),this.headerEl.createEl("p",{text:d("Select the configuration that best matches your task management experience"),cls:"onboarding-subtitle"}),this.userLevelSelector.render(this.onboardingContentEl,a=>{this.state.selectedConfig=a,this.updateButtonStates()})}displayConfigPreviewStep(){if(!this.state.selectedConfig){this.state.currentStep=1,this.displayCurrentStep();return}this.headerEl.createEl("h1",{text:d("Configuration Preview")}),this.headerEl.createEl("p",{text:d("Review the settings that will be applied for your selected mode"),cls:"onboarding-subtitle"}),this.configPreview.render(this.onboardingContentEl,this.state.selectedConfig);let a=this.onboardingContentEl.createDiv("config-options");new bn.Setting(a).setName(d("Include task creation guide")).setDesc(d("Show a quick tutorial on creating your first task")).addToggle(e=>{e.setValue(!this.state.skipTaskGuide).onChange(t=>{this.state.skipTaskGuide=!t})})}displayTaskCreationGuideStep(){this.headerEl.createEl("h1",{text:d("Create Your First Task")}),this.headerEl.createEl("p",{text:d("Learn how to create and format tasks in Task Genius"),cls:"onboarding-subtitle"}),this.taskCreationGuide.render(this.onboardingContentEl)}displayCompleteStep(){this.state.selectedConfig&&(this.headerEl.createEl("h1",{text:d("Setup Complete!")}),this.headerEl.createEl("p",{text:d("Task Genius is now configured and ready to use"),cls:"onboarding-subtitle"}),this.onboardingComplete.render(this.onboardingContentEl,this.state.selectedConfig))}updateButtonStates(){let a=this.state.currentStep;this.skipButton.buttonEl.style.display=a===0?"inline-block":"none",this.backButton.buttonEl.style.display=a===0?"none":"inline-block";let e=a===4;this.nextButton.setButtonText(e?d("Start Using Task Genius"):d("Next")),a===1?this.nextButton.setDisabled(!this.state.selectedConfig):this.nextButton.setDisabled(this.state.isCompleting)}async handleSkip(){await this.configManager.skipOnboarding(),this.close()}handleBack(){this.state.currentStep>0&&(this.state.currentStep--,this.state.currentStep===3&&this.state.skipTaskGuide&&this.state.currentStep--,this.displayCurrentStep())}async handleNext(){if(this.state.currentStep===4){await this.completeOnboarding();return}if(this.validateCurrentStep()){if(this.state.currentStep++,this.state.currentStep===2&&this.state.selectedConfig)try{await this.configManager.applyConfiguration(this.state.selectedConfig.mode)}catch(e){console.error("Failed to apply configuration:",e)}this.state.currentStep===3&&this.state.skipTaskGuide&&this.state.currentStep++,this.displayCurrentStep()}}validateCurrentStep(){switch(this.state.currentStep){case 1:return!!this.state.selectedConfig;default:return!0}}async completeOnboarding(){if(!(!this.state.selectedConfig||this.state.isCompleting)){this.state.isCompleting=!0,this.updateButtonStates();try{await this.configManager.completeOnboarding(this.state.selectedConfig.mode),this.close(),this.onComplete()}catch(a){console.error("Failed to complete onboarding:",a),this.state.isCompleting=!1,this.updateButtonStates()}}}};function Wx(n,a){new Yi.Setting(a).setName(d("About")+" Task Genius").setHeading(),new Yi.Setting(a).setName(d("Version")).setDesc(`Task Genius v${n.plugin.manifest.version}`),new Yi.Setting(a).setName(d("Donate")).setDesc(d("If you like this plugin, consider donating to support continued development:")).addButton(t=>{t.buttonEl.outerHTML=''}),new Yi.Setting(a).setName(d("Documentation")).setDesc(d("View the documentation for this plugin")).addButton(t=>{t.setButtonText(d("Open Documentation")).onClick(()=>{window.open("https://taskgenius.md/docs/getting-started")})}),new Yi.Setting(a).setName(d("Onboarding")).setDesc(d("Restart the welcome guide and setup wizard")).addButton(t=>{t.setButtonText(d("Restart Onboarding")).setIcon("graduation-cap").onClick(async()=>{await n.plugin.onboardingConfigManager.resetOnboarding(),new yk(n.plugin.app,n.plugin,()=>{n.display()}).open()})}),new Yi.Setting(a).setName(d("Discord")).setDesc(d("Chat with us")).addButton(t=>{t.setButtonText(d("Open Discord")).onClick(()=>{window.open("https://discord.gg/ARR2rHHX6b")})});let e=document.createDocumentFragment();e.createEl("span",{cls:"tg-icons-desc"},t=>{t.setText(d("Task Genius icons are designed by"))}),e.createEl("a",{href:"https://github.com/jsmorabito",attr:{target:"_blank",rel:"noopener noreferrer"}},t=>{t.setText(" @Jsmorabito")}),new Yi.Setting(a).setName(d("Task Genius Icons")).setDesc(e).setHeading(),a.createDiv({cls:"tg-icons-container"},t=>{for(let i of Object.keys(n.plugin.settings.taskStatuses)){let s=t.createSpan();(0,Yi.setIcon)(s,i)}let r=t.createSpan();(0,Yi.setIcon)(r,"task-genius")})}var p6=require("obsidian");q();var _x=require("obsidian");q();var Rr=require("obsidian");$x();q();var bk=class{constructor(a,e){this.plugin=a,this.containerEl=e,this.app=a.app,this.render()}render(){let{containerEl:a}=this;a.empty();let e=a.createDiv({cls:"habit-add-button-container"});new Rr.ButtonComponent(e).setButtonText(d("Add new habit")).setClass("habit-add-button").onClick(()=>{this.openHabitEditDialog()}),this.plugin.settings.habit?this.plugin.settings.habit.enableHabits||(this.plugin.settings.habit.enableHabits=!0):this.plugin.settings.habit={habits:[],enableHabits:!0},this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]);let t=this.plugin.settings.habit.habits||[];t.length===0?this.renderEmptyState():this.renderHabitList(t)}renderEmptyState(){let a=this.containerEl.createDiv({cls:"habit-empty-state"});a.createEl("h2",{text:d("No habits yet")}),a.createEl("p",{text:d("Click the button above to add your first habit")})}renderHabitList(a){let{containerEl:e}=this,t=e.createDiv({cls:"habit-items-container"});a.forEach(r=>{let i=t.createDiv({cls:"habit-item"}),s=i.createDiv({cls:"habit-item-icon"});(0,Rr.setIcon)(s,r.icon||"circle-check");let o=i.createDiv({cls:"habit-item-info"});o.createEl("div",{cls:"habit-item-name",text:r.name}),r.description&&o.createEl("div",{cls:"habit-item-description",text:r.description});let l={daily:d("Daily habit"),count:d("Count habit"),mapping:d("Mapping habit"),scheduled:d("Scheduled habit")},c=o.createEl("div",{cls:"habit-item-type",text:l[r.type]||r.type});i.createDiv({cls:"habit-item-actions"},u=>{new Rr.ExtraButtonComponent(u).setTooltip(d("Edit")).setIcon("edit").onClick(()=>{this.openHabitEditDialog(r)}),new Rr.ExtraButtonComponent(u).setTooltip(d("Delete")).setIcon("trash").onClick(()=>{this.deleteHabit(r)})})})}openHabitEditDialog(a){new Tm(this.app,this.plugin,a||null,t=>{var r;if(this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]),a){let i=this.plugin.settings.habit.habits,s=i.findIndex(o=>o.id===a.id);s>-1&&(i[s]=t)}else this.plugin.settings.habit.habits.push(t);this.plugin.saveSettings(),(r=this.plugin.habitManager)==null||r.initializeHabits(),this.render(),new Rr.Notice(a?d("Habit updated"):d("Habit added"))}).open()}deleteHabit(a){let e=a.name,t=new Rr.Modal(this.app);t.titleEl.setText(d("Delete habit")),t.contentEl.createDiv().setText(d("Are you sure you want to delete the habit ")+`"${e}"?`+d("This action cannot be undone.")),t.contentEl.createDiv({cls:"habit-delete-modal-buttons"},i=>{new Rr.ButtonComponent(i).setButtonText(d("Cancel")).setClass("habit-cancel-button").onClick(()=>{t.close()}),new Rr.ButtonComponent(i).setWarning().setButtonText(d("Delete")).setClass("habit-delete-button-confirm").onClick(()=>{var l;if(!this.plugin.settings.habit.habits){this.plugin.settings.habit.habits=[],t.close();return}let s=this.plugin.settings.habit.habits,o=s.findIndex(c=>c.id===a.id);o>-1&&(s.splice(o,1),this.plugin.saveSettings(),(l=this.plugin.habitManager)==null||l.initializeHabits(),this.render(),new Rr.Notice(d("Habit deleted"))),t.close()})}),t.open()}};function Ux(n,a){new _x.Setting(a).setName(d("Habit")).setDesc(d("Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.")).setHeading(),new _x.Setting(a).setName(d("Enable habits")).addToggle(t=>{t.setValue(n.plugin.settings.habit.enableHabits).onChange(async r=>{n.plugin.settings.habit.enableHabits=r,n.applySettingsUpdate()})});let e=a.createDiv({cls:"habit-settings-container"});m6(n,e)}function m6(n,a){new bk(n.plugin,a)}var he=require("obsidian");q();var $d=class{static isHoliday(a,e){if(!e.enabled)return!1;let{detectionPatterns:t}=e;if(t.summary)for(let r of t.summary)try{if(new RegExp(r,"i").test(a.summary))return!0}catch(i){console.warn(`Invalid regex pattern: ${r}`,i)}if(t.description&&a.description)for(let r of t.description)try{if(new RegExp(r,"i").test(a.description))return!0}catch(i){console.warn(`Invalid regex pattern: ${r}`,i)}if(t.categories&&a.categories){for(let r of t.categories)if(a.categories.some(i=>i.toLowerCase().includes(r.toLowerCase())))return!0}if(t.keywords){let r=[a.summary,a.description||""].join(" ");for(let i of t.keywords)if(r.toLowerCase().includes(i.toLowerCase()))return!0}return!1}static groupConsecutiveHolidays(a,e){if(!e.enabled||e.groupingStrategy==="none")return[];let t=a.filter(s=>this.isHoliday(s,e)).sort((s,o)=>s.dtstart.getTime()-o.dtstart.getTime());if(t.length===0)return[];let r=[],i=[t[0]];for(let s=1;s0&&r.push(this.createHolidayGroup(i,e)),i=[o])}return i.length>0&&r.push(this.createHolidayGroup(i,e)),r}static processEventsWithHolidayDetection(a,e){if(!e.enabled)return a.map(s=>({...s,isHoliday:!1,showInForecast:!0}));let t=this.groupConsecutiveHolidays(a,e),r=new Map;t.forEach(s=>{s.events.forEach(o=>{r.set(o.uid,s)})});let i=[];return a.forEach(s=>{let o=this.isHoliday(s,e),l=r.get(s.uid),c=!0;if(o&&l){switch(e.groupingStrategy){case"first-only":c=l.events[0].uid===s.uid;break;case"summary":c=l.events[0].uid===s.uid;break;case"range":let u=l.events[0].uid===s.uid,p=l.events[l.events.length-1].uid===s.uid;c=u||p;break;default:c=!0}e.showInForecast||(c=!1)}i.push({...s,isHoliday:o,holidayGroup:l,showInForecast:c})}),i}static createHolidayGroup(a,e){let t=a.sort((u,p)=>u.dtstart.getTime()-p.dtstart.getTime()),r=t[0],i=t[t.length-1],s=r.dtstart,o=i.dtend||i.dtstart,l=t.length>1,c=r.summary;return e.groupingStrategy==="summary"&&l?e.groupDisplayFormat?c=e.groupDisplayFormat.replace("{title}",r.summary).replace("{count}",t.length.toString()).replace("{startDate}",this.formatDate(s)).replace("{endDate}",this.formatDate(o)):c=`${r.summary} (${t.length} days)`:e.groupingStrategy==="range"&&l&&(c=`${r.summary} - ${this.formatDateRange(s,o)}`),{id:`holiday-group-${r.uid}-${t.length}`,title:c,startDate:s,endDate:o,events:t,source:r.source,isMultiDay:l,displayStrategy:e.groupingStrategy==="none"?"first-only":e.groupingStrategy}}static calculateDaysBetween(a,e){let r=new Date(a),i=new Date(e);return r.setHours(0,0,0,0),i.setHours(0,0,0,0),Math.round(Math.abs((r.getTime()-i.getTime())/864e5))}static formatDate(a){return a.toLocaleDateString()}static formatDateRange(a,e){let t=this.formatDate(a),r=this.formatDate(e);return t===r?t:`${t} - ${r}`}static getDefaultConfig(){return{enabled:!1,detectionPatterns:{summary:["holiday","vacation","\u516C\u5047","\u5047\u671F","\u8282\u65E5","\u6625\u8282","\u56FD\u5E86","\u4E2D\u79CB","\u6E05\u660E","\u52B3\u52A8\u8282","\u7AEF\u5348","\u5143\u65E6","Christmas","New Year","Easter","Thanksgiving"],keywords:["holiday","vacation","day off","public holiday","bank holiday","\u5047\u671F","\u4F11\u5047","\u8282\u65E5","\u516C\u5047"],categories:["holiday","vacation","\u5047\u671F","\u8282\u65E5"]},groupingStrategy:"first-only",maxGapDays:1,showInForecast:!1,showInCalendar:!0,groupDisplayFormat:"{title} ({count} days)"}}};var qi=class{static convertWebcalUrl(a){let e=a.trim();if(!e)return{success:!1,originalUrl:a,error:"URL cannot be empty",wasWebcal:!1};if(!this.WEBCAL_REGEX.test(e))return this.isValidHttpUrl(e)?{success:!0,convertedUrl:e,originalUrl:a,wasWebcal:!1}:{success:!1,originalUrl:a,error:"Invalid URL format. Please provide a valid http://, https://, or webcal:// URL",wasWebcal:!1};try{let r=this.performWebcalConversion(e);return this.isValidHttpUrl(r)?{success:!0,convertedUrl:r,originalUrl:a,wasWebcal:!0}:{success:!1,originalUrl:a,error:"Converted URL is not valid",wasWebcal:!0}}catch(r){return{success:!1,originalUrl:a,error:r instanceof Error?r.message:"Unknown conversion error",wasWebcal:!0}}}static performWebcalConversion(a){let e=a.replace(this.WEBCAL_REGEX,"");return(this.shouldUseHttps(e)?"https://":"http://")+e}static shouldUseHttps(a){let e=a.split("/")[0].split("?")[0].toLowerCase(),t=["localhost","127.0.0.1"],r=e.split(":")[0];return!t.includes(r)}static isValidHttpUrl(a){try{let e=new URL(a);return e.protocol==="http:"||e.protocol==="https:"}catch(e){return!1}}static isWebcalUrl(a){return this.WEBCAL_REGEX.test(a.trim())}static getConversionDescription(a){return a.success?a.wasWebcal?`Converted webcal URL to: ${a.convertedUrl}`:`Valid HTTP/HTTPS URL: ${a.convertedUrl}`:`Error: ${a.error}`}static getFetchUrl(a){let e=this.convertWebcalUrl(a);return e.success?e.convertedUrl:null}};qi.WEBCAL_REGEX=/^webcal:\/\//i,qi.URL_VALIDATION_REGEX=/^https?:\/\/[^\s/$.?#].[^\s]*$/i;var xm=class{constructor(a,e,t){this.plugin=a,this.containerEl=e,this.config={...a.settings.icsIntegration},this.onBack=t}display(){this.containerEl.empty(),this.containerEl.addClass("ics-settings-container");let a=this.containerEl.createDiv("settings-tab-section-header"),e=this.containerEl.createDiv("ics-header-container");if(this.onBack){let i=new he.ButtonComponent(a).setClass("header-button").onClick(()=>{var s;(s=this.onBack)==null||s.call(this)});i.buttonEl.createEl("span",{cls:"header-button-icon"},s=>{(0,he.setIcon)(s,"arrow-left")}),i.buttonEl.createEl("span",{cls:"header-button-text",text:d("Back to main settings")})}e.createEl("h2",{text:d("ICS Calendar Integration")}),e.createEl("p",{text:d("Configure external calendar sources to display events in your task views."),cls:"ics-description"}),this.displayGlobalSettings(),this.displaySourcesList();let r=this.containerEl.createDiv("ics-add-source-container").createEl("button",{text:"+ "+d("Add New Calendar Source")});r.onclick=()=>{new wk(this.plugin.app,i=>{this.config.sources.push(i),this.saveAndRefresh()}).open()}}displayGlobalSettings(){let a=this.containerEl.createDiv("ics-global-settings");a.createEl("h3",{text:d("Global Settings")}),new he.Setting(a).setName(d("Enable Background Refresh")).setDesc(d("Automatically refresh calendar sources in the background")).addToggle(e=>{e.setValue(this.config.enableBackgroundRefresh).onChange(t=>{this.config.enableBackgroundRefresh=t,this.saveSettings()})}),new he.Setting(a).setName(d("Global Refresh Interval")).setDesc(d("Default refresh interval for all sources (minutes)")).addText(e=>{e.setPlaceholder("60").setValue(this.config.globalRefreshInterval.toString()).onChange(t=>{let r=parseInt(t,10);!isNaN(r)&&r>0&&(this.config.globalRefreshInterval=r,this.saveSettings())})}),new he.Setting(a).setName(d("Maximum Cache Age")).setDesc(d("How long to keep cached data (hours)")).addText(e=>{e.setPlaceholder("24").setValue(this.config.maxCacheAge.toString()).onChange(t=>{let r=parseInt(t,10);!isNaN(r)&&r>0&&(this.config.maxCacheAge=r,this.saveSettings())})}),new he.Setting(a).setName(d("Network Timeout")).setDesc(d("Request timeout in seconds")).addText(e=>{e.setPlaceholder("30").setValue(this.config.networkTimeout.toString()).onChange(t=>{let r=parseInt(t,10);!isNaN(r)&&r>0&&(this.config.networkTimeout=r,this.saveSettings())})}),new he.Setting(a).setName(d("Max Events Per Source")).setDesc(d("Maximum number of events to load from each source")).addText(e=>{e.setPlaceholder("1000").setValue(this.config.maxEventsPerSource.toString()).onChange(t=>{let r=parseInt(t,10);!isNaN(r)&&r>0&&(this.config.maxEventsPerSource=r,this.saveSettings())})}),new he.Setting(a).setName(d("Default Event Color")).setDesc(d("Default color for events without a specific color")).addColorPicker(e=>{e.setValue(this.config.defaultEventColor).onChange(t=>{this.config.defaultEventColor=t,this.saveSettings()})})}displaySourcesList(){let a=this.containerEl.createDiv("ics-sources-list");if(a.createEl("h3",{text:d("Calendar Sources")}),this.config.sources.length===0){a.createDiv("ics-empty-state").createEl("p",{text:d("No calendar sources configured. Add a source to get started.")});return}this.config.sources.forEach((e,t)=>{let r=a.createDiv("ics-source-item"),i=r.createDiv("ics-source-header");i.createDiv("ics-source-title").createEl("strong",{text:e.name});let o=i.createEl("span",{cls:"ics-source-status"});o.setText(e.enabled?d("ICS Enabled"):d("ICS Disabled")),o.addClass(e.enabled?"status-enabled":"status-disabled");let l=r.createDiv("ics-source-details");if(l.createEl("div",{text:`${d("URL")}: ${this.truncateUrl(e.url)}`,title:e.url}),l.createEl("div",{text:`${d("Refresh")}: ${e.refreshInterval}${d("min")}`}),e.color){let k=l.createEl("div");k.createSpan({text:`${d("Color")}: `}),k.createEl("span",{attr:{style:`display: inline-block; width: 12px; height: 12px; background: ${e.color}; border-radius: 2px; margin-left: 4px; vertical-align: middle;`}}),k.createSpan({text:` ${e.color}`})}let c=r.createDiv("ics-source-actions"),u=c.createDiv("primary-actions"),p=u.createEl("button",{text:d("Edit"),cls:"mod-cta",title:d("Edit this calendar source")});p.onclick=()=>{new wk(this.plugin.app,k=>{this.config.sources[t]=k,this.saveAndRefresh()},e).open()};let m=u.createEl("button",{text:d("Sync"),attr:{"aria-label":d("Sync this calendar source now")}});m.onclick=async()=>{m.disabled=!0,m.addClass("syncing"),m.setText("\u27F3 "+d("Syncing..."));try{let k=this.plugin.getIcsManager();if(k){let y=await k.syncSource(e.id);y.success?(new he.Notice(d("Sync completed successfully")),m.removeClass("syncing"),m.addClass("success"),setTimeout(()=>m.removeClass("success"),2e3)):(new he.Notice(d("Sync failed: ")+y.error),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3))}}catch(k){new he.Notice(d("Sync failed: ")+k.message),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3)}finally{m.disabled=!1,m.setText(d("Sync"))}};let f=c.createDiv("secondary-actions"),h=f.createEl("button",{text:e.enabled?d("Disable"):d("Enable"),title:e.enabled?d("Disable this source"):d("Enable this source")});h.onclick=()=>{this.config.sources[t].enabled=!this.config.sources[t].enabled,this.saveAndRefresh()};let g=f.createEl("button",{text:d("Delete"),cls:"mod-warning",title:d("Delete this calendar source")});g.onclick=()=>{confirm(d("Are you sure you want to delete this calendar source?"))&&(this.config.sources.splice(t,1),this.saveAndRefresh())}})}truncateUrl(a,e=50){return a.length<=e?a:a.substring(0,e-3)+"..."}saveSettings(){this.plugin.settings.icsIntegration={...this.config},this.plugin.saveSettings();let a=this.plugin.getIcsManager();a&&a.updateConfig(this.config)}saveAndRefresh(){this.saveSettings(),this.display()}},wk=class extends he.Modal{constructor(a,e,t){super(a),this.onSave=e,this.isEditing=!!t,this.modalEl.addClass("ics-source-modal"),t?this.source={...t}:this.source={id:this.generateId(),name:"",url:"",enabled:!0,refreshInterval:60,showAllDayEvents:!0,showTimedEvents:!0,showType:"event"}}onOpen(){let{contentEl:a}=this;a.empty(),a.createEl("h2",{text:this.isEditing?d("Edit ICS Source"):d("Add ICS Source")}),new he.Setting(a).setName(d("ICS Source Name")).setDesc(d("Display name for this calendar source")).addText(s=>{s.setPlaceholder(d("My Calendar")).setValue(this.source.name).onChange(o=>{this.source.name=o})}),new he.Setting(a).setName(d("ICS URL")).setDesc(d("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)")).addText(s=>{s.setPlaceholder("https://example.com/calendar.ics or webcal://example.com/calendar.ics").setValue(this.source.url).onChange(o=>{var l,c;if(this.source.url=o,qi.isWebcalUrl(o)){let u=qi.convertWebcalUrl(o);if(u.success){let p=qi.getConversionDescription(u),m=(l=s.inputEl.parentElement)==null?void 0:l.querySelector(".setting-item-description");m&&(m.textContent=`${d("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)")} - ${p}`)}}else{let u=(c=s.inputEl.parentElement)==null?void 0:c.querySelector(".setting-item-description");u&&(u.textContent=d("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)"))}})}),new he.Setting(a).setName(d("ICS Enabled")).setDesc(d("Whether this source is active")).addToggle(s=>{s.setValue(this.source.enabled).onChange(o=>{this.source.enabled=o})}),new he.Setting(a).setName(d("Refresh Interval")).setDesc(d("How often to refresh this source (minutes)")).addText(s=>{s.setPlaceholder("60").setValue(this.source.refreshInterval.toString()).onChange(o=>{let l=parseInt(o,10);!isNaN(l)&&l>0&&(this.source.refreshInterval=l)})}),new he.Setting(a).setName(d("Color")).setDesc(d("Color for events from this source (optional)")).addText(s=>{s.setPlaceholder("#3b82f6").setValue(this.source.color||"").onChange(o=>{(!o||o.match(/^#[0-9a-fA-F]{6}$/))&&(this.source.color=o||void 0)})}),new he.Setting(a).setName(d("Show Type")).setDesc(d("How to display events from this source in calendar views")).addDropdown(s=>{s.addOption("event",d("Event")).addOption("badge",d("Badge")).setValue(this.source.showType).onChange(o=>{this.source.showType=o})}),new he.Setting(a).setName(d("Show All-Day Events")).setDesc(d("Include all-day events from this source")).addToggle(s=>{s.setValue(this.source.showAllDayEvents).onChange(o=>{this.source.showAllDayEvents=o})}),new he.Setting(a).setName(d("Show Timed Events")).setDesc(d("Include timed events from this source")).addToggle(s=>{s.setValue(this.source.showTimedEvents).onChange(o=>{this.source.showTimedEvents=o})}),this.displayTextReplacements(a),this.displayHolidayConfiguration(a),this.displayStatusMappingConfiguration(a);let e=a.createDiv();e.createEl("h3",{text:d("Authentication (Optional)")}),new he.Setting(e).setName(d("Authentication Type")).setDesc(d("Type of authentication required")).addDropdown(s=>{var o;s.addOption("none",d("ICS Auth None")).addOption("basic",d("Basic Auth")).addOption("bearer",d("Bearer Token")).addOption("custom",d("Custom Headers")).setValue(((o=this.source.auth)==null?void 0:o.type)||"none").onChange(l=>{l==="none"?this.source.auth=void 0:this.source.auth={type:l,...this.source.auth},this.refreshAuthFields(e)})}),this.refreshAuthFields(e);let t=a.createDiv("modal-button-container"),r=t.createEl("button",{text:d("Save"),cls:"mod-cta"});r.onclick=()=>{this.validateSource()&&(this.onSave(this.source),this.close())};let i=t.createEl("button",{text:d("Cancel")});i.onclick=()=>{this.close()}}displayTextReplacements(a){let e=a.createDiv();e.createEl("h3",{text:d("Text Replacements")}),e.createEl("p",{text:d("Configure rules to modify event text using regular expressions"),cls:"setting-item-description"}),this.source.textReplacements||(this.source.textReplacements=[]);let t=e.createDiv("text-replacements-list"),r=()=>{t.empty(),this.source.textReplacements.length===0?t.createDiv("text-replacements-empty").createEl("p",{text:d("No text replacement rules configured"),cls:"setting-item-description"}):this.source.textReplacements.forEach((o,l)=>{let c=t.createDiv("text-replacement-rule"),u=c.createDiv("text-replacement-header"),p=u.createEl("strong",{text:o.name||`Rule ${l+1}`}),m=u.createEl("span",{cls:`text-replacement-status ${o.enabled?"enabled":"disabled"}`,text:o.enabled?d("Enabled"):d("Disabled")}),f=c.createDiv("text-replacement-details");f.createEl("div",{text:`${d("Target")}: ${o.target}`}),f.createEl("div",{text:`${d("Pattern")}: ${o.pattern}`,cls:"text-replacement-pattern"}),f.createEl("div",{text:`${d("Replacement")}: ${o.replacement}`,cls:"text-replacement-replacement"});let h=c.createDiv("text-replacement-actions"),g=h.createEl("button",{text:d("Edit"),cls:"mod-cta"});g.onclick=()=>{new Tk(this.app,b=>{this.source.textReplacements[l]=b,r()},o).open()};let k=h.createEl("button",{text:o.enabled?d("Disable"):d("Enable")});k.onclick=()=>{this.source.textReplacements[l].enabled=!o.enabled,r()};let y=h.createEl("button",{text:d("Delete"),cls:"mod-warning"});y.onclick=()=>{confirm(d("Are you sure you want to delete this text replacement rule?"))&&(this.source.textReplacements.splice(l,1),r())}})};r();let s=e.createDiv("text-replacement-add").createEl("button",{text:"+ "+d("Add Text Replacement Rule")});s.onclick=()=>{new Tk(this.app,o=>{this.source.textReplacements.push(o),r()}).open()}}refreshAuthFields(a){if(a.querySelectorAll(".auth-field").forEach(t=>t.remove()),!(!this.source.auth||this.source.auth.type==="none"))switch(this.source.auth.type){case"basic":new he.Setting(a).setName(d("ICS Username")).setClass("auth-field").addText(t=>{var r;t.setValue(((r=this.source.auth)==null?void 0:r.username)||"").onChange(i=>{this.source.auth&&(this.source.auth.username=i)})}),new he.Setting(a).setName(d("ICS Password")).setClass("auth-field").addText(t=>{var r;t.setValue(((r=this.source.auth)==null?void 0:r.password)||"").onChange(i=>{this.source.auth&&(this.source.auth.password=i)}),t.inputEl.type="password"});break;case"bearer":new he.Setting(a).setName(d("ICS Bearer Token")).setClass("auth-field").addText(t=>{var r;t.setValue(((r=this.source.auth)==null?void 0:r.token)||"").onChange(i=>{this.source.auth&&(this.source.auth.token=i)})});break;case"custom":new he.Setting(a).setName(d("Custom Headers")).setDesc(d("JSON object with custom headers")).setClass("auth-field").addTextArea(t=>{var r;t.setValue(JSON.stringify(((r=this.source.auth)==null?void 0:r.headers)||{},null,2)).onChange(i=>{try{let s=JSON.parse(i);this.source.auth&&(this.source.auth.headers=s)}catch(s){}})});break}}displayHolidayConfiguration(a){let e=a.createDiv();e.createEl("h3",{text:d("Holiday Configuration")}),e.createEl("p",{text:d("Configure how holiday events are detected and displayed"),cls:"setting-item-description"}),this.source.holidayConfig||(this.source.holidayConfig=$d.getDefaultConfig()),new he.Setting(e).setName(d("Enable Holiday Detection")).setDesc(d("Automatically detect and group holiday events")).addToggle(t=>{t.setValue(this.source.holidayConfig.enabled).onChange(r=>{this.source.holidayConfig.enabled=r,this.refreshHolidaySettings(e)})}),this.refreshHolidaySettings(e)}displayStatusMappingConfiguration(a){let e=a.createDiv();e.createEl("h3",{text:d("Status Mapping")}),e.createEl("p",{text:d("Configure how ICS events are mapped to task statuses"),cls:"setting-item-description"}),this.source.statusMapping||(this.source.statusMapping={enabled:!1,timingRules:{pastEvents:"x",currentEvents:"/",futureEvents:" "},overrideIcsStatus:!0}),new he.Setting(e).setName(d("Enable Status Mapping")).setDesc(d("Automatically map ICS events to specific task statuses")).addToggle(t=>{t.setValue(this.source.statusMapping.enabled).onChange(r=>{this.source.statusMapping.enabled=r,this.refreshStatusMappingSettings(e)})}),this.refreshStatusMappingSettings(e)}refreshHolidaySettings(a){var r;if(a.querySelectorAll(".holiday-setting").forEach(i=>i.remove()),!((r=this.source.holidayConfig)!=null&&r.enabled))return;new he.Setting(a).setName(d("Grouping Strategy")).setDesc(d("How to handle consecutive holiday events")).setClass("holiday-setting").addDropdown(i=>{i.addOption("none",d("Show All Events")).addOption("first-only",d("Show First Day Only")).addOption("summary",d("Show Summary")).addOption("range",d("Show First and Last")).setValue(this.source.holidayConfig.groupingStrategy).onChange(s=>{this.source.holidayConfig.groupingStrategy=s})}),new he.Setting(a).setName(d("Maximum Gap Days")).setDesc(d("Maximum days between events to consider them consecutive")).setClass("holiday-setting").addText(i=>{i.setPlaceholder("1").setValue(this.source.holidayConfig.maxGapDays.toString()).onChange(s=>{let o=parseInt(s,10);!isNaN(o)&&o>=0&&(this.source.holidayConfig.maxGapDays=o)})}),new he.Setting(a).setName(d("Show in Forecast")).setDesc(d("Whether to show holiday events in forecast view")).setClass("holiday-setting").addToggle(i=>{i.setValue(this.source.holidayConfig.showInForecast).onChange(s=>{this.source.holidayConfig.showInForecast=s})}),new he.Setting(a).setName(d("Show in Calendar")).setDesc(d("Whether to show holiday events in calendar view")).setClass("holiday-setting").addToggle(i=>{i.setValue(this.source.holidayConfig.showInCalendar).onChange(s=>{this.source.holidayConfig.showInCalendar=s})});let t=a.createDiv("holiday-setting");t.createEl("h4",{text:d("Detection Patterns")}),new he.Setting(t).setName(d("Summary Patterns")).setDesc(d("Regex patterns to match in event titles (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.summary||[]).join(` `)).onChange(s=>{this.source.holidayConfig.detectionPatterns.summary=s.split(` `).map(o=>o.trim()).filter(o=>o.length>0)})}),new he.Setting(t).setName(d("Keywords")).setDesc(d("Keywords to detect in event text (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.keywords||[]).join(` `)).onChange(s=>{this.source.holidayConfig.detectionPatterns.keywords=s.split(` `).map(o=>o.trim()).filter(o=>o.length>0)})}),new he.Setting(t).setName(d("Categories")).setDesc(d("Event categories that indicate holidays (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.categories||[]).join(` `)).onChange(s=>{this.source.holidayConfig.detectionPatterns.categories=s.split(` `).map(o=>o.trim()).filter(o=>o.length>0)})}),new he.Setting(a).setName(d("Group Display Format")).setDesc(d("Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}")).setClass("holiday-setting").addText(i=>{i.setPlaceholder("{title} ({count} days)").setValue(this.source.holidayConfig.groupDisplayFormat||"").onChange(s=>{this.source.holidayConfig.groupDisplayFormat=s||void 0})})}refreshStatusMappingSettings(a){var i;if(a.querySelectorAll(".status-mapping-setting").forEach(s=>s.remove()),!((i=this.source.statusMapping)!=null&&i.enabled))return;new he.Setting(a).setName(d("Override ICS Status")).setDesc(d("Override original ICS event status with mapped status")).setClass("status-mapping-setting").addToggle(s=>{s.setValue(this.source.statusMapping.overrideIcsStatus).onChange(o=>{this.source.statusMapping.overrideIcsStatus=o})});let t=a.createDiv("status-mapping-setting");t.createEl("h4",{text:d("Timing Rules")}),new he.Setting(t).setName(d("Past Events Status")).setDesc(d("Status for events that have already ended")).addDropdown(s=>{s.addOption(" ",d("Status Incomplete")).addOption("x",d("Status Complete")).addOption("-",d("Status Cancelled")).addOption("/",d("Status In Progress")).addOption("?",d("Status Question")).setValue(this.source.statusMapping.timingRules.pastEvents).onChange(o=>{this.source.statusMapping.timingRules.pastEvents=o})}),new he.Setting(t).setName(d("Current Events Status")).setDesc(d("Status for events happening today")).addDropdown(s=>{s.addOption(" ",d("Status Incomplete")).addOption("x",d("Status Complete")).addOption("-",d("Status Cancelled")).addOption("/",d("Status In Progress")).addOption("?",d("Status Question")).setValue(this.source.statusMapping.timingRules.currentEvents).onChange(o=>{this.source.statusMapping.timingRules.currentEvents=o})}),new he.Setting(t).setName(d("Future Events Status")).setDesc(d("Status for events in the future")).addDropdown(s=>{s.addOption(" ",d("Status Incomplete")).addOption("x",d("Status Complete")).addOption("-",d("Status Cancelled")).addOption("/",d("Status In Progress")).addOption("?",d("Status Question")).setValue(this.source.statusMapping.timingRules.futureEvents).onChange(o=>{this.source.statusMapping.timingRules.futureEvents=o})});let r=a.createDiv("status-mapping-setting");r.createEl("h4",{text:d("Property Rules")}),r.createEl("p",{text:d("Optional rules based on event properties (higher priority than timing rules)"),cls:"setting-item-description"}),this.source.statusMapping.propertyRules||(this.source.statusMapping.propertyRules={}),new he.Setting(r).setName(d("Holiday Status")).setDesc(d("Status for events detected as holidays")).addDropdown(s=>{var o;s.addOption("",d("Use timing rules")).addOption(" ",d("Status Incomplete")).addOption("x",d("Status Complete")).addOption("-",d("Status Cancelled")).addOption("/",d("Status In Progress")).addOption("?",d("Status Question")).setValue(((o=this.source.statusMapping.propertyRules.holidayMapping)==null?void 0:o.holidayStatus)||"").onChange(l=>{this.source.statusMapping.propertyRules.holidayMapping||(this.source.statusMapping.propertyRules.holidayMapping={holidayStatus:"-"}),l?this.source.statusMapping.propertyRules.holidayMapping.holidayStatus=l:delete this.source.statusMapping.propertyRules.holidayMapping})}),new he.Setting(r).setName(d("Category Mapping")).setDesc(d("Map specific categories to statuses (format: category:status, one per line)")).addTextArea(s=>{let o=this.source.statusMapping.propertyRules.categoryMapping||{},l=Object.entries(o).map(([c,u])=>`${c}:${u}`).join(` `);s.setValue(l).onChange(c=>{let u={},p=c.split(` `).filter(m=>m.trim());for(let m of p){let[f,h]=m.split(":").map(g=>g.trim());f&&h&&(u[f]=h)}Object.keys(u).length>0?this.source.statusMapping.propertyRules.categoryMapping=u:delete this.source.statusMapping.propertyRules.categoryMapping})})}validateSource(){if(!this.source.name.trim())return new he.Notice(d("Please enter a name for the source")),!1;if(!this.source.url.trim())return new he.Notice(d("Please enter a URL for the source")),!1;let a=qi.convertWebcalUrl(this.source.url);return a.success?!0:(new he.Notice(d("Please enter a valid URL")+": "+a.error),!1)}generateId(){return`ics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}},Tk=class extends he.Modal{constructor(a,e,t){super(a),this.onSave=e,this.isEditing=!!t,this.modalEl.addClass("ics-text-replacement-modal"),t?this.rule={...t}:this.rule={id:this.generateId(),name:"",enabled:!0,target:"summary",pattern:"",replacement:"",flags:"g"}}onOpen(){let{contentEl:a}=this;a.empty(),a.createEl("h2",{text:this.isEditing?d("Edit Text Replacement Rule"):d("Add Text Replacement Rule")}),new he.Setting(a).setName(d("Rule Name")).setDesc(d("Descriptive name for this replacement rule")).addText(g=>{g.setPlaceholder(d("Remove Meeting Prefix")).setValue(this.rule.name).onChange(k=>{this.rule.name=k})}),new he.Setting(a).setName(d("Enabled")).setDesc(d("Whether this rule is active")).addToggle(g=>{g.setValue(this.rule.enabled).onChange(k=>{this.rule.enabled=k})}),new he.Setting(a).setName(d("Target Field")).setDesc(d("Which field to apply the replacement to")).addDropdown(g=>{g.addOption("summary",d("Summary/Title")).addOption("description",d("Description")).addOption("location",d("Location")).addOption("all",d("All Fields")).setValue(this.rule.target).onChange(k=>{this.rule.target=k})});let e,t,r=g=>{if(t)try{if(this.rule.pattern&&g){let k=new RegExp(this.rule.pattern,this.rule.flags||"g"),y=g.replace(k,this.rule.replacement),b=t.querySelector(".test-result");b&&(b.textContent=y,b.style.color=y!==g?"#4caf50":"#666")}else{let k=t.querySelector(".test-result");k&&(k.textContent=g||"",k.style.color="#666")}}catch(k){let y=t.querySelector(".test-result");y&&(y.textContent="Invalid regex pattern",y.style.color="#f44336")}};new he.Setting(a).setName(d("Pattern (Regular Expression)")).setDesc(d("Regular expression pattern to match. Use parentheses for capture groups.")).addText(g=>{g.setPlaceholder("^Meeting: ").setValue(this.rule.pattern).onChange(k=>{this.rule.pattern=k,e&&e.getValue()&&r(e.getValue())})}),new he.Setting(a).setName(d("Replacement")).setDesc(d("Text to replace matches with. Use $1, $2, etc. for capture groups.")).addText(g=>{g.setPlaceholder("").setValue(this.rule.replacement).onChange(k=>{this.rule.replacement=k,e&&e.getValue()&&r(e.getValue())})}),new he.Setting(a).setName(d("Regex Flags")).setDesc(d("Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)")).addText(g=>{g.setPlaceholder("g").setValue(this.rule.flags||"").onChange(k=>{this.rule.flags=k,e&&e.getValue()&&r(e.getValue())})});let i=a.createDiv();i.createEl("h3",{text:d("Examples")});let s=i.createEl("ul"),o=s.createEl("li");o.createEl("strong",{text:d("Remove prefix")+": "}),o.createSpan({text:"Pattern: "}),o.createEl("code",{text:"^Meeting: "}),o.createSpan({text:", Replacement: "}),o.createEl("code",{text:""});let l=s.createEl("li");l.createEl("strong",{text:d("Replace room numbers")+": "}),l.createSpan({text:"Pattern: "}),l.createEl("code",{text:"Room (\\d+)"}),l.createSpan({text:", Replacement: "}),l.createEl("code",{text:"Conference Room $1"});let c=s.createEl("li");c.createEl("strong",{text:d("Swap words")+": "}),c.createSpan({text:"Pattern: "}),c.createEl("code",{text:"(\\w+) with (\\w+)"}),c.createSpan({text:", Replacement: "}),c.createEl("code",{text:"$2 and $1"});let u=a.createDiv();u.createEl("h3",{text:d("Test Rule")}),t=u.createDiv("test-output"),t.createEl("strong",{text:d("Output: ")});let p=t.createEl("span",{cls:"test-result"});new he.Setting(u).setName(d("Test Input")).setDesc(d("Enter text to test the replacement rule")).addText(g=>{e=g,g.setPlaceholder("Meeting: Weekly Standup").onChange(k=>{r(k)})});let m=a.createDiv("modal-button-container"),f=m.createEl("button",{text:d("Save"),cls:"mod-cta"});f.onclick=()=>{this.validateRule()&&(this.onSave(this.rule),this.close())};let h=m.createEl("button",{text:d("Cancel")});h.onclick=()=>{this.close()}}validateRule(){if(!this.rule.name.trim())return new he.Notice(d("Please enter a name for the rule")),!1;if(!this.rule.pattern.trim())return new he.Notice(d("Please enter a pattern")),!1;try{new RegExp(this.rule.pattern,this.rule.flags||"g")}catch(a){return new he.Notice(d("Invalid regular expression pattern")),!1}return!0}generateId(){return`rule-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}};var yt=require("obsidian");q();function qx(n,a){new yt.Setting(a).setName(d("Progress bar")).setDesc(d("You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.")).setHeading().settingEl.setAttribute("data-setting-id","progress-bar-main"),new yt.Setting(a).setName(d("Progress display mode")).setDesc(d("Choose how to display task progress")).addDropdown(t=>t.addOption("none",d("No progress indicators")).addOption("graphical",d("Graphical progress bar")).addOption("text",d("Text progress indicator")).addOption("both",d("Both graphical and text")).setValue(n.plugin.settings.progressBarDisplayMode).onChange(async r=>{n.plugin.settings.progressBarDisplayMode=r,n.applySettingsUpdate(),n.display()})).settingEl.setAttribute("data-setting-id","progress-display-mode"),n.plugin.settings.progressBarDisplayMode!=="none"&&(new yt.Setting(a).setName(d("Enable progress bar in reading mode")).setDesc(d("Toggle this to allow this plugin to show progress bars in reading mode.")).addToggle(t=>t.setValue(n.plugin.settings.enableProgressbarInReadingMode).onChange(async r=>{n.plugin.settings.enableProgressbarInReadingMode=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Support hover to show progress info")).setDesc(d("Toggle this to allow this plugin to show progress info when hovering over the progress bar.")).addToggle(t=>t.setValue(n.plugin.settings.supportHoverToShowProgressInfo).onChange(async r=>{n.plugin.settings.supportHoverToShowProgressInfo=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Add progress bar to non-task bullet")).setDesc(d("Toggle this to allow adding progress bars to regular list items (non-task bullets).")).addToggle(t=>t.setValue(n.plugin.settings.addProgressBarToNonTaskBullet).onChange(async r=>{n.plugin.settings.addProgressBarToNonTaskBullet=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Add progress bar to Projects view")).setDesc(d("Show project progress in Projects header")).addToggle(t=>t.setValue(n.plugin.settings.addProgressBarToProjectsView).onChange(async r=>{n.plugin.settings.addProgressBarToProjectsView=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Add progress bar to Heading")).setDesc(d("Toggle this to allow this plugin to add progress bar for Task below the headings.")).addToggle(t=>t.setValue(n.plugin.settings.addTaskProgressBarToHeading).onChange(async r=>{n.plugin.settings.addTaskProgressBarToHeading=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Count sub children of current Task")).setDesc(d("Toggle this to allow this plugin to count sub tasks when generating progress bar.")).addToggle(t=>t.setValue(n.plugin.settings.countSubLevel).onChange(async r=>{n.plugin.settings.countSubLevel=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Use custom goal for progress bar")).setDesc(d("Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.")).addToggle(t=>t.setValue(n.plugin.settings.allowCustomProgressGoal).onChange(async r=>{n.plugin.settings.allowCustomProgressGoal=r,n.applySettingsUpdate()})),(n.plugin.settings.progressBarDisplayMode==="text"||n.plugin.settings.progressBarDisplayMode==="both")&&f6(n,a),new yt.Setting(a).setName(d("Hide progress bars")).setHeading(),new yt.Setting(a).setName(d("Hide progress bars based on conditions")).setDesc(d("Toggle this to enable hiding progress bars based on tags, folders, or metadata.")).addToggle(t=>t.setValue(n.plugin.settings.hideProgressBarBasedOnConditions).onChange(async r=>{n.plugin.settings.hideProgressBarBasedOnConditions=r,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.hideProgressBarBasedOnConditions&&(new yt.Setting(a).setName(d("Hide by tags")).setDesc(d('Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"')).addText(t=>t.setPlaceholder(me.hideProgressBarTags).setValue(n.plugin.settings.hideProgressBarTags).onChange(async r=>{n.plugin.settings.hideProgressBarTags=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Hide by folders")).setDesc(d('Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"')).addText(t=>t.setPlaceholder("folder1,folder2/subfolder").setValue(n.plugin.settings.hideProgressBarFolders).onChange(async r=>{n.plugin.settings.hideProgressBarFolders=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Hide by metadata")).setDesc(d('Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"')).addText(t=>t.setPlaceholder(me.hideProgressBarMetadata).setValue(n.plugin.settings.hideProgressBarMetadata).onChange(async r=>{n.plugin.settings.hideProgressBarMetadata=r,n.applySettingsUpdate()})),new yt.Setting(a).setName(d("Show progress bars based on heading")).setDesc(d("Toggle this to enable showing progress bars based on heading.")).addText(t=>t.setPlaceholder(d("# heading")).setValue(n.plugin.settings.showProgressBarBasedOnHeading).onChange(async r=>{n.plugin.settings.showProgressBarBasedOnHeading=r,n.applySettingsUpdate()}))))}function f6(n,a){if(new yt.Setting(a).setName(d("Progress format")).setDesc(d("Choose how to display the task progress")).addDropdown(e=>{e.addOption("percentage",d("Percentage (75%)")).addOption("bracketPercentage",d("Bracketed percentage ([75%])")).addOption("fraction",d("Fraction (3/4)")).addOption("bracketFraction",d("Bracketed fraction ([3/4])")).addOption("detailed",d("Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])")).addOption("custom",d("Custom format")).addOption("range-based",d("Range-based text")).setValue(n.plugin.settings.displayMode||"bracketFraction").onChange(async t=>{n.plugin.settings.displayMode=t,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.displayMode==="custom"){let e=document.createDocumentFragment();e.createEl("div",{cls:"custom-format-placeholder-info",text:d("Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.")}),e.createEl("div",{cls:"custom-format-placeholder-info",text:d("Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}")}),e.createEl("div",{cls:"custom-format-placeholder-info",text:d("Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.")}),new yt.Setting(a).setName(d("Custom format")).setDesc(e);let t=a.createDiv({cls:"custom-format-preview-container"}),r=t.createDiv({cls:"custom-format-preview-label",text:d("Preview:")}),i=t.createDiv({cls:"custom-format-preview-content"});Yx(n,a,n.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]");let s=a.createEl("div",{cls:"custom-format-textarea-container"},c=>{let u=new yt.TextAreaComponent(c);u.inputEl.toggleClass("custom-format-textarea",!0),u.setPlaceholder("[{{COMPLETED}}/{{TOTAL}}]").setValue(n.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]").onChange(async p=>{n.plugin.settings.customFormat=p,n.applySettingsUpdate(),Yx(n,a,p)})});new yt.Setting(a).setName(d("Expression examples")).setDesc(d("Examples of advanced formats using expressions")).setHeading();let o=a.createEl("div",{cls:"expression-examples"});[{name:d("Text Progress Bar"),code:'[${="=".repeat(Math.floor(data.percentages.completed/10)) + " ".repeat(10-Math.floor(data.percentages.completed/10))}] {{PERCENT}}%'},{name:d("Emoji Progress Bar"),code:'${="\u2B1B".repeat(Math.floor(data.percentages.completed/10)) + "\u2B1C".repeat(10-Math.floor(data.percentages.completed/10))} {{PERCENT}}%'},{name:d("Color-coded Status"),code:"{{COMPLETED}}/{{TOTAL}} ${=data.percentages.completed < 30 ? '\u{1F534}' : data.percentages.completed < 70 ? '\u{1F7E0}' : '\u{1F7E2}'}"},{name:d("Status with Icons"),code:"[{{COMPLETED_SYMBOL}}:{{COMPLETED}} {{IN_PROGRESS_SYMBOL}}:{{IN_PROGRESS}} {{PLANNED_SYMBOL}}:{{PLANNED}} / {{TOTAL}}]"}].forEach(c=>{let u=o.createEl("div",{cls:"expression-example-item"});u.createEl("div",{cls:"expression-example-name",text:c.name});let p=u.createEl("code",{cls:"expression-example-code",text:c.code}),m=u.createEl("div",{cls:"expression-example-preview"}),f={completed:3,total:5,inProgress:1,abandoned:0,notStarted:0,planned:1,percentages:{completed:60,inProgress:20,abandoned:0,notStarted:0,planned:20}};try{let g=UL(n,c.code,f);m.setText(`${d("Preview")}: ${g}`)}catch(g){m.setText(`${d("Preview")}: Error`),m.addClass("expression-preview-error")}u.createEl("button",{cls:"expression-example-use",text:d("Use")}).addEventListener("click",()=>{n.plugin.settings.customFormat=c.code,n.applySettingsUpdate();let g=a.querySelectorAll("textarea");for(let k of Array.from(g))if(k.placeholder==="[{{COMPLETED}}/{{TOTAL}}]"){k.value=c.code;break}Yx(n,a,c.code)})})}else(n.plugin.settings.displayMode==="range-based"||!n.plugin.settings.displayMode)&&(new yt.Setting(a).setName(d("Show percentage")).setDesc(d("Toggle this to show percentage instead of completed/total count.")).addToggle(e=>e.setValue(n.plugin.settings.showPercentage).onChange(async t=>{n.plugin.settings.showPercentage=t,n.applySettingsUpdate()})),n.plugin.settings.showPercentage&&n.plugin.settings.displayMode==="range-based"&&(new yt.Setting(a).setName(d("Customize progress ranges")).setDesc(d("Toggle this to customize the text for different progress ranges.")).addToggle(e=>e.setValue(n.plugin.settings.customizeProgressRanges).onChange(async t=>{n.plugin.settings.customizeProgressRanges=t,n.applySettingsUpdate(),n.display()})),n.plugin.settings.customizeProgressRanges&&h6(n,a)))}function h6(n,a){new yt.Setting(a).setName(d("Progress Ranges")).setDesc(d("Define progress ranges and their corresponding text representations.")).setHeading(),n.plugin.settings.progressRanges.forEach((t,r)=>{new yt.Setting(a).setName(`${d("Range")} ${r+1}: ${t.min}%-${t.max}%`).setDesc(`${d("Use")} {{PROGRESS}} ${d("as a placeholder for the percentage value")}`).addText(i=>i.setPlaceholder(`${d("Template text with")} {{PROGRESS}} ${d("placeholder")}`).setValue(t.text).onChange(async s=>{n.plugin.settings.progressRanges[r].text=s,n.applySettingsUpdate()})).addButton(i=>{i.setButtonText("Delete").onClick(async()=>{n.plugin.settings.progressRanges.splice(r,1),n.applySettingsUpdate(),n.display()})})}),new yt.Setting(a).setName(d("Add new range")).setDesc(d("Add a new progress percentage range with custom text"));let e=new yt.Setting(a);e.infoEl.detach(),e.addText(t=>t.setPlaceholder(d("Min percentage (0-100)")).setValue("").onChange(async r=>{})).addText(t=>t.setPlaceholder(d("Max percentage (0-100)")).setValue("").onChange(async r=>{})).addText(t=>t.setPlaceholder(d("Text template (use {{PROGRESS}})")).setValue("").onChange(async r=>{})).addButton(t=>{t.setButtonText("Add").onClick(async()=>{let r=t.buttonEl.parentElement;if(!r)return;let i=r.querySelectorAll("input");if(i.length<3)return;let s=parseInt(i[0].value),o=parseInt(i[1].value),l=i[2].value;isNaN(s)||isNaN(o)||!l||(n.plugin.settings.progressRanges.push({min:s,max:o,text:l}),i[0].value="",i[1].value="",i[2].value="",n.applySettingsUpdate(),n.display())})}),new yt.Setting(a).setName(d("Reset to defaults")).setDesc(d("Reset progress ranges to default values")).addButton(t=>{t.setButtonText(d("Reset")).onClick(async()=>{n.plugin.settings.progressRanges=[{min:0,max:20,text:d("Just started {{PROGRESS}}%")},{min:20,max:40,text:d("Making progress {{PROGRESS}}%")},{min:40,max:60,text:d("Half way {{PROGRESS}}%")},{min:60,max:80,text:d("Good progress {{PROGRESS}}%")},{min:80,max:100,text:d("Almost there {{PROGRESS}}%")}],n.applySettingsUpdate(),n.display()})})}function Yx(n,a,e){let t=a.querySelector(".custom-format-preview-content");if(!t)return;let r={completed:3,total:5,inProgress:1,abandoned:0,notStarted:0,planned:1,percentages:{completed:60,inProgress:20,abandoned:0,notStarted:0,planned:20}};try{let i=UL(n,e,r);t.setText(i),t.removeClass("custom-format-preview-error")}catch(i){t.setText("Error rendering format"),t.addClass("custom-format-preview-error")}}function UL(n,a,e){try{let t=n.plugin.settings.customFormat;n.plugin.settings.customFormat=a;let r=Qn(e,n.plugin);return n.plugin.settings.customFormat=t,r}catch(t){throw console.error("Error in renderFormatPreview:",t),t}}var Jt=require("obsidian");q();function Gx(n,a){new Jt.Setting(a).setName(d("Quick capture")).setHeading(),new Jt.Setting(a).setName(d("Enable quick capture")).setDesc(d("Toggle this to enable Org-mode style quick capture panel.")).addToggle(e=>e.setValue(n.plugin.settings.quickCapture.enableQuickCapture).onChange(async t=>{n.plugin.settings.quickCapture.enableQuickCapture=t,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.quickCapture.enableQuickCapture&&(new Jt.Setting(a).setName(d("Target type")).setDesc(d("Choose whether to capture to a fixed file or daily note")).addDropdown(e=>e.addOption("fixed",d("Fixed file")).addOption("daily-note",d("Daily note")).setValue(n.plugin.settings.quickCapture.targetType).onChange(async t=>{n.plugin.settings.quickCapture.targetType=t,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})),n.plugin.settings.quickCapture.targetType==="fixed"&&new Jt.Setting(a).setName(d("Target file")).setDesc(d("The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}")).addText(e=>e.setValue(n.plugin.settings.quickCapture.targetFile).onChange(async t=>{n.plugin.settings.quickCapture.targetFile=t,n.applySettingsUpdate()})),n.plugin.settings.quickCapture.targetType==="daily-note"&&(new Jt.Setting(a).setName(d("Sync with Daily Notes plugin")).setDesc(d("Automatically sync settings from the Daily Notes plugin")).addButton(e=>e.setButtonText(d("Sync now")).onClick(async()=>{var t;try{let r=n.app.internalPlugins.plugins["daily-notes"];if(r&&r.enabled){let i=((t=r.instance)==null?void 0:t.options)||{};n.plugin.settings.quickCapture.dailyNoteSettings={format:i.format||"YYYY-MM-DD",folder:i.folder||"",template:i.template||""},await n.plugin.saveSettings(),setTimeout(()=>{n.display()},200),new Jt.Notice(d("Daily notes settings synced successfully"))}else new Jt.Notice(d("Daily Notes plugin is not enabled"))}catch(r){console.error("Failed to sync daily notes settings:",r),new Jt.Notice(d("Failed to sync daily notes settings"))}})),new Jt.Setting(a).setName(d("Daily note format")).setDesc(d("Date format for daily notes (e.g., YYYY-MM-DD)")).addText(e=>{var t;return e.setValue(((t=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:t.format)||"YYYY-MM-DD").onChange(async r=>{n.plugin.settings.quickCapture.dailyNoteSettings.format=r,n.applySettingsUpdate()})}),new Jt.Setting(a).setName(d("Daily note folder")).setDesc(d("Folder path for daily notes (leave empty for root)")).addText(e=>{var t;return e.setValue(((t=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:t.folder)||"").onChange(async r=>{n.plugin.settings.quickCapture.dailyNoteSettings.folder=r,n.applySettingsUpdate()})}),new Jt.Setting(a).setName(d("Daily note template")).setDesc(d("Template file path for new daily notes (optional)")).addText(e=>{var t;return e.setValue(((t=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:t.template)||"").onChange(async r=>{n.plugin.settings.quickCapture.dailyNoteSettings.template=r,n.applySettingsUpdate()})})),new Jt.Setting(a).setName(d("Target heading")).setDesc(d("Optional heading to append content under (leave empty to append to file)")).addText(e=>e.setValue(n.plugin.settings.quickCapture.targetHeading||"").onChange(async t=>{n.plugin.settings.quickCapture.targetHeading=t,n.applySettingsUpdate()})),new Jt.Setting(a).setName(d("Placeholder text")).setDesc(d("Placeholder text to display in the capture panel")).addText(e=>e.setValue(n.plugin.settings.quickCapture.placeholder).onChange(async t=>{n.plugin.settings.quickCapture.placeholder=t,n.applySettingsUpdate()})),new Jt.Setting(a).setName(d("Append to file")).setDesc(d("How to add captured content to the target location")).addDropdown(e=>e.addOption("append",d("Append")).addOption("prepend",d("Prepend")).addOption("replace",d("Replace")).setValue(n.plugin.settings.quickCapture.appendToFile).onChange(async t=>{n.plugin.settings.quickCapture.appendToFile=t,n.applySettingsUpdate()})),new Jt.Setting(a).setName(d("Auto-add task prefix")).setDesc(d("Automatically add task checkbox prefix to captured content")).addToggle(e=>{var t;return e.setValue((t=n.plugin.settings.quickCapture.autoAddTaskPrefix)!=null?t:!0).onChange(async r=>{n.plugin.settings.quickCapture.autoAddTaskPrefix=r,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})}),n.plugin.settings.quickCapture.autoAddTaskPrefix&&new Jt.Setting(a).setName(d("Task prefix format")).setDesc(d("The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)")).addText(e=>e.setValue(n.plugin.settings.quickCapture.taskPrefix||"- [ ]").onChange(async t=>{n.plugin.settings.quickCapture.taskPrefix=t||"- [ ]",n.applySettingsUpdate()})),new Jt.Setting(a).setName(d("Minimal Mode")).setHeading(),new Jt.Setting(a).setName(d("Enable minimal mode")).setDesc(d("Enable simplified single-line quick capture with inline suggestions")).addToggle(e=>e.setValue(n.plugin.settings.quickCapture.enableMinimalMode).onChange(async t=>{n.plugin.settings.quickCapture.enableMinimalMode=t,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})),n.plugin.settings.quickCapture.enableMinimalMode&&(n.plugin.settings.quickCapture.minimalModeSettings||(n.plugin.settings.quickCapture.minimalModeSettings={suggestTrigger:"/"}),new Jt.Setting(a).setName(d("Suggest trigger character")).setDesc(d("Character to trigger the suggestion menu")).addText(e=>e.setValue(n.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger).onChange(async t=>{n.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger=t||"/",n.applySettingsUpdate()}))))}var er=require("obsidian");qw();function Kx(n,a){if(new er.Setting(a).setName(ct("Rewards")).setDesc(ct("Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.")).setHeading(),new er.Setting(a).setName(ct("Enable rewards")).setDesc(ct("Toggle to enable or disable the reward system.")).addToggle(o=>o.setValue(n.plugin.settings.rewards.enableRewards).onChange(async l=>{n.plugin.settings.rewards.enableRewards=l,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),!n.plugin.settings.rewards.enableRewards)return;new er.Setting(a).setName(ct("Reward display type")).setDesc(ct("Choose how rewards are displayed when earned.")).addDropdown(o=>{o.addOption("modal",ct("Modal dialog")).addOption("notice",ct("Notice (Auto-accept)")).setValue(n.plugin.settings.rewards.showRewardType||"modal").onChange(async l=>{n.plugin.settings.rewards.showRewardType=l,n.applySettingsUpdate()})}),new er.Setting(a).setName(ct("Occurrence levels")).setDesc(ct("Define different levels of reward rarity and their probability.")).setHeading();let e=a.createDiv({cls:"rewards-levels-container"}),t=(0,er.debounce)((o,l,c,u)=>{let p=parseInt(c,10);!isNaN(p)&&p>=0&&p<=100?(n.plugin.settings.rewards.occurrenceLevels[u].chance=p,n.applySettingsUpdate()):(new er.Notice(ct("Chance must be between 0 and 100.")),o.setValue(l.chance.toString()))},1e3),r=(0,er.debounce)((o,l)=>{n.plugin.settings.rewards.occurrenceLevels[l].name=o.trim(),n.applySettingsUpdate()},1e3);n.plugin.settings.rewards.occurrenceLevels.forEach((o,l)=>{let c=new er.Setting(e).setClass("rewards-level-row").addText(u=>u.setPlaceholder(ct("Level Name (e.g., common)")).setValue(o.name).onChange(p=>{r(p,l)})).addText(u=>u.setPlaceholder(ct("Chance (%)")).setValue(o.chance.toString()).onChange(p=>{t(u,o,p,l)})).addButton(u=>u.setIcon("trash").setTooltip(ct("Delete Level")).setClass("mod-warning").onClick(()=>{n.plugin.settings.rewards.occurrenceLevels.splice(l,1),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}))}),new er.Setting(e).addButton(o=>o.setButtonText(ct("Add occurrence level")).setCta().onClick(()=>{let l={name:ct("New Level"),chance:0};n.plugin.settings.rewards.occurrenceLevels.push(l),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),new er.Setting(a).setName(ct("Reward items")).setDesc(ct("Manage the specific rewards that can be obtained.")).setHeading();let i=a.createDiv({cls:"rewards-items-container"}),s=n.plugin.settings.rewards.occurrenceLevels.map(o=>o.name);s.length===0&&s.push(ct("No levels defined")),n.plugin.settings.rewards.rewardItems.forEach((o,l)=>{let c=new er.Setting(i).setClass("rewards-item-row").addTextArea(u=>u.setPlaceholder(ct("Reward Name/Text")).setValue(o.name).onChange(p=>{n.plugin.settings.rewards.rewardItems[l].name=p,n.applySettingsUpdate()})).addDropdown(u=>{s.forEach(p=>{u.addOption(p,p)}),u.setValue(o.occurrence||s[0]).onChange(p=>{n.plugin.settings.rewards.rewardItems[l].occurrence=p,n.applySettingsUpdate()})}).addText(u=>{u.inputEl.ariaLabel=ct("Inventory (-1 for \u221E)"),u.setPlaceholder(ct("Inventory (-1 for \u221E)")).setValue(o.inventory.toString()).onChange(p=>{let m=parseInt(p,10);isNaN(m)?(new er.Notice(ct("Invalid inventory number.")),u.setValue(o.inventory.toString())):(n.plugin.settings.rewards.rewardItems[l].inventory=m,n.applySettingsUpdate())})}).addText(u=>u.setPlaceholder(ct("Condition (e.g., #tag AND project)")).setValue(o.condition||"").onChange(p=>{n.plugin.settings.rewards.rewardItems[l].condition=p.trim()||void 0,n.applySettingsUpdate()})).addText(u=>{u.setPlaceholder(ct("Image url (optional)")).setValue(o.imageUrl||"").onChange(p=>{n.plugin.settings.rewards.rewardItems[l].imageUrl=p.trim()||void 0,n.applySettingsUpdate()}),new Ig(n.app,u.inputEl,n.plugin)}).addButton(u=>u.setIcon("trash").setTooltip(ct("Delete reward item")).setClass("mod-warning").onClick(()=>{n.plugin.settings.rewards.rewardItems.splice(l,1),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}));i.createEl("hr",{cls:"rewards-item-divider"})}),n.plugin.settings.rewards.rewardItems.length===0&&i.createEl("p",{text:ct("No reward items defined yet."),cls:"setting-item-description"}),new er.Setting(i).addButton(o=>o.setButtonText(ct("Add reward item")).setCta().onClick(()=>{var c;let l={id:`reward-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,name:ct("New Reward"),occurrence:((c=n.plugin.settings.rewards.occurrenceLevels[0])==null?void 0:c.name)||"default",inventory:-1};n.plugin.settings.rewards.rewardItems.push(l),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}))}var Ia=require("obsidian");q();var vt=require("obsidian"),fr=require("@codemirror/state"),ss=require("@codemirror/view");function xk(n,a){var t,r,i,s,o;if(!n||typeof n=="string"&&n.trim()==="")return!0;let e=typeof n=="string"?n.toLowerCase():"";if(!e)return!0;try{let l=[];a.content&&l.push(String(a.content).toLowerCase());let c=((t=a.metadata)==null?void 0:t.tags)||a.tags;Array.isArray(c)&&l.push(c.join(" ").toLowerCase());let u=((r=a.metadata)==null?void 0:r.project)||a.project||((s=(i=a.metadata)==null?void 0:i.tgProject)==null?void 0:s.name)||a.tgProject;u&&l.push(String(u).toLowerCase());let p=((o=a.metadata)==null?void 0:o.context)||a.context;return p&&l.push(String(p).toLowerCase()),l.some(m=>m.includes(e))}catch(l){return!0}}function YL(n){if(n==null)return null;if(typeof n=="number")return n;let a=String(n).trim().toLowerCase();if(!a)return null;let e={highest:5,high:4,medium:3,normal:3,moderate:3,low:2,lowest:1,urgent:5,critical:5,important:4,minor:2,trivial:1};if(a in e)return e[a];let t=parseInt(a.replace(/^#/,""),10);return Number.isFinite(t)?t:null}q();var dl=fr.StateEffect.define(),Yr=fr.StateEffect.define(),Jx=fr.StateEffect.define(),Cm=fr.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(dl)&&(e=a.state.field(vt.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>ss.showPanel.from(n,a=>a?T6:null)}),Qx=fr.StateField.define({create:()=>({...bi}),update(n,a){for(let e of a.effects)e.is(Yr)&&(n=e.value);return n}}),k6=fr.StateField.define({create:n=>!1,update(n,a){return n||(setTimeout(()=>{let e=a.state.field(vt.editorInfoField),t=a.state.field(vt.editorEditorField);if(e&&t&&(e!=null&&e.file)){if(e.filterAction)return!0;let r=a.state.facet(eC),i=e==null?void 0:e.addAction("filter",d("Filter Tasks"),s=>{let o=new vt.Menu;ll(t)&&Zx(t,r)&&o.addItem(c=>{c.setTitle(d("Reset")).onClick(()=>{t==null||t.dispatch({effects:Yr.of(bi)}),wn(t,r),t.dispatch({effects:dl.of(!1)})})}),o.addItem(c=>{c.setTitle(t.state.field(Cm)?d("Hide filter panel"):d("Show filter panel")).onClick(()=>{t==null||t.dispatch({effects:dl.of(!t.state.field(Cm))})})}),o.addSeparator(),r&&r.settings.taskFilter.presetTaskFilters&&r.settings.taskFilter.presetTaskFilters.forEach(c=>{o.addItem(u=>{u.setTitle(c.name).onClick(()=>{t&&(t.dispatch({effects:Yr.of({...c.options})}),wn(t,r))})})}),o.showAtMouseEvent(s)});r.register(()=>{i.detach(),e.filterAction=null}),e.filterAction=i}},0),!0)}}),y6=fr.StateField.define({create:()=>[],update(n,a){for(let e of a.effects)if(e.is(Jx))return e.value;return a.docChanged&&(n=n.map(e=>({from:a.changes.mapPos(e.from),to:a.changes.mapPos(e.to)}))),n}}),bi={includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"},v6=fr.Facet.define({combine:n=>{let a={...bi};for(let e of n)Object.assign(a,e);return a}});function Sm(n){let a={...bi};return Object.keys(bi).forEach(e=>{e in n&&n[e]!==void 0&&(a[e]=n[e])}),"filterOutTasks"in n&&n.filterMode===void 0&&(a.filterMode=n.filterOutTasks?"EXCLUDE":"INCLUDE"),a}function Ck(n,a){return n[a]}function b6(n){let a;if(n.priority){let t=YL(n.priority);t!==null&&(a=t)}let e;if(n.date){let t=(0,vt.moment)(n.date,[vt.moment.ISO_8601,"YYYY-MM-DD","DD.MM.YYYY","MM/DD/YYYY"],!0);t.isValid()&&(e=t.valueOf())}return{id:`${n.from}-${n.to}`,content:n.text,filePath:"",line:0,completed:n.status==="completed",status:n.status,originalMarkdown:n.text,metadata:{tags:n.tags,priority:a,dueDate:e,children:[]}}}function Zx(n,a){let e=ll(n);return!Object.keys(bi).every(r=>e[r]===bi[r])}function w6(n,a,e,t){let r=ll(n),i=(0,vt.debounce)((C,S)=>{wn(C,S)},2e3);a.createEl("div",{cls:"task-filter-header-container"}).createEl("span",{cls:"task-filter-title",text:d("Filter Tasks")});let o=a.createEl("div",{cls:"task-filter-options"}),l=o.createEl("div",{cls:"task-filter-preset-container"}),c=t.settings.taskFilter.presetTaskFilters||[],u=null;c.length>0&&new vt.Setting(l).setName(d("Preset filters")).setDesc(d("Select a saved filter preset to apply")).addDropdown(C=>{C.addOption("",d("Select a preset...")),u=C,c.forEach(S=>{C.addOption(S.id,S.name)}),C.onChange(S=>{if(S){let E=c.find(A=>A.id===S);E&&(r={...E.options},n.dispatch({effects:Yr.of({...r})}),x(),wn(n,t))}else r={...bi},n.dispatch({effects:Yr.of({...r})}),x(),wn(n,t)})});let p=o.createEl("div",{cls:"task-filter-section"}),m=null;new vt.Setting(p).setName(d("Query")).setDesc(d("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.")).addText(C=>{m=C,C.setValue(Ck(e,"advancedFilterQuery")).onChange(S=>{r.advancedFilterQuery=S,n.dispatch({effects:Yr.of({...r})}),i(n,t)}),C.inputEl.addEventListener("keydown",S=>{S.key==="Enter"?vt.Keymap.isModEvent(S)?(r.filterMode="EXCLUDE",n.dispatch({effects:Yr.of({...r})}),i(n,t)):(r.filterMode="INCLUDE",n.dispatch({effects:Yr.of({...r})}),i(n,t)):S.key==="Escape"&&n.dispatch({effects:dl.of(!1)})}),C.inputEl.toggleClass("task-filter-query-input",!0)});let f=o.createEl("div",{cls:"task-filter-section"}),h=null;new vt.Setting(f).setName(d("Filter Mode")).setDesc(d("Choose whether to include or exclude tasks that match the filters")).addDropdown(C=>{h=C,C.addOption("INCLUDE",d("Show matching tasks")).addOption("EXCLUDE",d("Hide matching tasks")).setValue(Ck(e,"filterMode")).onChange(S=>{r.filterMode=S,n.dispatch({effects:Yr.of({...r})}),wn(n,t)})});let g=o.createEl("div",{cls:"task-filter-section"});new vt.Setting(g).setName(d("Checkbox Status")).setHeading();let k=[{id:"Completed",label:d("Completed")},{id:"InProgress",label:d("In Progress")},{id:"Abandoned",label:d("Abandoned")},{id:"NotStarted",label:d("Not Started")},{id:"Planned",label:d("Planned")}],y={};for(let C of k){let S=`include${C.id}`;new vt.Setting(g).setName(C.label).addToggle(E=>{y[S]=E,E.setValue(Ck(e,S)).onChange(A=>{r[S]=A,n.dispatch({effects:Yr.of({...r})}),wn(n,t)})})}let b=o.createEl("div",{cls:"task-filter-section"});new vt.Setting(b).setName(d("Include Related Tasks")).setHeading();let v=[{id:"ParentTasks",label:d("Parent Tasks")},{id:"ChildTasks",label:d("Child Tasks")},{id:"SiblingTasks",label:d("Sibling Tasks")}],w={};for(let C of v){let S=`include${C.id}`;new vt.Setting(b).setName(C.label).addToggle(E=>{w[S]=E,E.setValue(Ck(e,S)).onChange(A=>{r[S]=A,n.dispatch({effects:Yr.of({...r})}),wn(n,t)})})}new vt.Setting(a).addButton(C=>{C.setCta(),C.setButtonText(d("Apply")).onClick(()=>{wn(n,t)})}).addButton(C=>{C.setCta(),C.setButtonText(d("Save")).onClick(()=>{if(Zx(n,t)){let S=ll(n),E={id:Date.now().toString()+Math.random().toString(36).substr(2,9),name:d("New Preset"),options:{...S}};t.settings.taskFilter.presetTaskFilters.push(E),t.saveSettings(),new vt.Notice(d("Preset saved"))}else new vt.Notice(d("No changes to save"))})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(d("Reset")).onClick(()=>{C6(n),m&&m.inputEl&&(m.inputEl.value=""),r={...bi},n.dispatch({effects:Yr.of({...r})}),x(),u&&u.setValue(""),wn(n,t)})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(d("Close")).onClick(()=>{n.dispatch({effects:dl.of(!1)})})});function x(){let C=ll(n);m&&m.setValue(C.advancedFilterQuery),h&&h.setValue(C.filterMode);for(let S of k){let E=`include${S.id}`;y[E]&&y[E].setValue(C[E])}for(let S of v){let E=`include${S.id}`;w[E]&&w[E].setValue(C[E])}}return{focusInput:()=>{m&&m.inputEl&&m.inputEl.focus()}}}function T6(n){let a=createDiv({cls:"task-filter-panel"}),e=n.state.facet(eC),t=ll(n),{focusInput:r}=w6(n,a,t,e);return{dom:a,top:!0,mount:()=>{r()},update:i=>{},destroy:()=>{}}}function wn(n,a){var c,u;let e=ll(n),t=S6(n,a.settings.taskStatuses),r=new Set,i=new Set,s=[],o=[];t.forEach((p,m)=>{(e.includeCompleted&&p.status==="completed"||e.includeInProgress&&p.status==="inProgress"||e.includeAbandoned&&p.status==="abandoned"||e.includeNotStarted&&p.status==="notStarted"||e.includePlanned&&p.status==="planned")&&o.push({task:p,index:m})});for(let{task:p,index:m}of o){let f=!0;if(e.advancedFilterQuery.trim()!=="")try{let h=e.advancedFilterQuery;f=xk(h,b6(p))}catch(h){console.error("Error evaluating advanced filter:",h)}f&&(i.add(m),r.add(m))}if(e.includeParentTasks||e.includeChildTasks||e.includeSiblingTasks){for(let p=0;p{for(let g of h.childTasks)if(e.includeCompleted&&g.status==="completed"||e.includeInProgress&&g.status==="inProgress"||e.includeAbandoned&&g.status==="abandoned"||e.includeNotStarted&&g.status==="notStarted"||e.includePlanned&&g.status==="planned"){let k=t.indexOf(g);k!==-1&&(r.add(k),f(g))}};f(m)}if(e.includeSiblingTasks&&m.parentTask){for(let f of m.parentTask.childTasks)if(f!==m&&(e.includeCompleted&&f.status==="completed"||e.includeInProgress&&f.status==="inProgress"||e.includeAbandoned&&f.status==="abandoned"||e.includeNotStarted&&f.status==="notStarted"||e.includePlanned&&f.status==="planned")){let h=t.indexOf(f);h!==-1&&r.add(h)}}}}let l;e.filterMode==="INCLUDE"?l=t.filter((p,m)=>!r.has(m)):l=t.filter((p,m)=>r.has(m)),s=l.map(p=>({from:p.from,to:p.to})),n.dispatch({effects:Jx.of(s)}),(u=(c=n.state.field(vt.editorInfoField))==null?void 0:c.filterAction)==null||u.toggleClass("task-filter-active",Zx(n,a)),qL(n,s)}function qL(n,a=[]){let e=a.map(t=>ss.Decoration.replace({inclusive:!0,block:!0}).range(t.from,t.to));e.length>0?n.dispatch({effects:Xx.of(ss.Decoration.none.update({add:e,filter:()=>!1}))}):n.dispatch({effects:Xx.of(ss.Decoration.none)})}var Xx=fr.StateEffect.define(),x6=fr.StateField.define({create(){return ss.Decoration.none},update(n,a){n=n.map(a.changes);for(let e of a.effects)e.is(Xx)&&(n=e.value);return n},provide(n){return ss.EditorView.decorations.from(n)}}),HAe=fr.Facet.define({combine:n=>n[0]}),eC=fr.Facet.define({combine:n=>n[0]});function GL(n){return[Cm,Qx,y6,k6,x6,v6.of(bi),eC.of(n)]}function ll(n){if(n.state.field(Qx,!1)){let a=n.state.field(Qx);return Sm(a)}return{...bi}}function C6(n){var a,e;n.dispatch({effects:[Yr.of({...bi}),Jx.of([])]}),(e=(a=n.state.field(vt.editorInfoField))==null?void 0:a.filterAction)==null||e.toggleClass("task-filter-active",!1),qL(n,[])}function S6(n,a){let e=n.state.doc,t=[],r=[],i=a.completed.split("|"),s=a.inProgress.split("|"),o=a.abandoned.split("|"),l=a.notStarted.split("|"),c=a.planned.split("|"),u=/^(\s*)(-|\*|(\d+\.)) \[(.)\] (.*)$/gm,p=/\[(#[A-Z])\]|(?:🔺|⏫|🔼|🔽|⏬️|🔴|🟠|🟡|🟢|🔵|⚪️|⚫️)/g,m=/#([a-zA-Z0-9_\-/\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f\u3131-\uD79D]+)/g,f=/\d{4}-\d{2}-\d{2}|\d{2}\.\d{2}\.\d{4}|\d{2}\/\d{2}\/\d{4}/g;for(let h=1;h<=e.lines;h++){let g=e.line(h),k=g.text;u.lastIndex=0;let y;if(y=u.exec(k)){let b=y[1].length,v=y[4],w=y[5],x;i.includes(v)?x="completed":s.includes(v)?x="inProgress":o.includes(v)?x="abandoned":c.includes(v)?x="planned":x="notStarted",p.lastIndex=0;let T=p.exec(w),C=T?T[0]:void 0;m.lastIndex=0;let S=[],E;for(;(E=m.exec(w))!==null;)S.push(E[0]);f.lastIndex=0;let A=f.exec(w),N=A?A[0]:void 0,I={from:g.from,to:g.to,text:w,status:x,indentation:b,childTasks:[],priority:C,date:N,tags:S};for(;r.length>0&&r[r.length-1].indentation>=b;)r.pop();if(r.length>0){let R=r[r.length-1];I.parentTask=R,R.childTasks.push(I)}t.push(I),r.push(I)}}return t}function Zs(){return Date.now().toString()+Math.random().toString(36).substr(2,9)}var Sk=class extends Ia.Modal{constructor(e,t,r){super(e);this.preset=t;this.onSave=r;this.preset&&this.preset.options&&(this.preset.options=Sm(this.preset.options))}onOpen(){let{contentEl:e}=this;e.empty(),this.titleEl.setText(d("Edit Filter: ")+this.preset.name),new Ia.Setting(e).setName(d("Filter name")).addText(i=>{i.setValue(this.preset.name).onChange(s=>{this.preset.name=s})}),new Ia.Setting(e).setName(d("Checkbox Status")).setDesc(d("Include or exclude tasks based on their status"));let t=[{id:"includeCompleted",name:d("Include Completed Tasks")},{id:"includeInProgress",name:d("Include In Progress Tasks")},{id:"includeAbandoned",name:d("Include Abandoned Tasks")},{id:"includeNotStarted",name:d("Include Not Started Tasks")},{id:"includePlanned",name:d("Include Planned Tasks")}];for(let i of t)new Ia.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new Ia.Setting(e).setName(d("Related Tasks")).setDesc(d("Include parent, child, and sibling tasks in the filter"));let r=[{id:"includeParentTasks",name:d("Include Parent Tasks")},{id:"includeChildTasks",name:d("Include Child Tasks")},{id:"includeSiblingTasks",name:d("Include Sibling Tasks")}];for(let i of r)new Ia.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new Ia.Setting(e).setName(d("Advanced Filter")).setDesc(d("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")),new Ia.Setting(e).setName(d("Filter query")).setDesc(d("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")).addText(i=>{i.setValue(this.preset.options.advancedFilterQuery).onChange(s=>{this.preset.options.advancedFilterQuery=s})}),new Ia.Setting(e).setName(d("Filter Mode")).setDesc(d("Choose whether to show or hide tasks that match the filters")).addDropdown(i=>{i.addOption("INCLUDE",d("Show matching tasks")).addOption("EXCLUDE",d("Hide matching tasks")).setValue(this.preset.options.filterMode||"INCLUDE").onChange(s=>{this.preset.options.filterMode=s})}),new Ia.Setting(e).addButton(i=>{i.setButtonText(d("Save")).setCta().onClick(()=>{this.onSave(),this.close()})}).addButton(i=>{i.setButtonText(d("Cancel")).onClick(()=>{this.close()})})}onClose(){let{contentEl:e}=this;e.empty()}};function tC(n,a){new Ia.Setting(a).setName(d("Task Filter")).setHeading(),new Ia.Setting(a).setName(d("Enable Task Filter")).setDesc(d("Toggle this to enable the task filter panel")).addToggle(r=>{r.setValue(n.plugin.settings.taskFilter.enableTaskFilter).onChange(async i=>{n.plugin.settings.taskFilter.enableTaskFilter=i,n.applySettingsUpdate()})}),new Ia.Setting(a).setName(d("Preset Filters")).setDesc(d("Create and manage preset filters for quick access to commonly used task filters."));let e=a.createDiv({cls:"preset-filters-container"}),t=()=>{e.empty();let r=n.plugin.settings.taskFilter.presetTaskFilters;r.length===0&&e.createEl("div",{cls:"no-presets-message",text:d("No preset filters created yet. Click 'Add New Preset' to create one.")}),r.forEach((s,o)=>{let l=e.createDiv({cls:"preset-filter-row"}),c=new Ia.Setting(l).setName(`${d("Preset")} #${o+1}`).addText(u=>{u.setValue(s.name).setPlaceholder(d("Preset name")).onChange(p=>{s.name=p,n.applySettingsUpdate()})});c.addExtraButton(u=>{u.setIcon("pencil").setTooltip(d("Edit Filter")).onClick(()=>{new Sk(n.app,s,()=>{n.applySettingsUpdate(),t()}).open()})}),c.addExtraButton(u=>{u.setIcon("trash").setTooltip(d("Remove")).onClick(()=>{r.splice(o,1),n.applySettingsUpdate(),t()})})});let i=e.createDiv();new Ia.Setting(i).addButton(s=>{s.setButtonText(d("Add New Preset")).setCta().onClick(()=>{let o={id:Zs(),name:d("New Filter"),options:{includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}};n.plugin.settings.taskFilter.presetTaskFilters.push(o),n.applySettingsUpdate(),new Sk(n.app,o,()=>{n.applySettingsUpdate(),t()}).open(),t()})}).addButton(s=>{s.setButtonText(d("Reset to Default Presets")).onClick(()=>{let o=new Ia.Modal(n.app);o.titleEl.setText(d("Reset to Default Presets")),o.contentEl.createDiv().setText(d("This will replace all your current presets with the default set. Are you sure?"));let c=o.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),u=c.createEl("button");u.setText(d("Cancel")),u.addEventListener("click",()=>{o.close()});let p=c.createEl("button");p.setText(d("Reset")),p.addClass("mod-warning"),p.addEventListener("click",()=>{D6(n),t(),o.close()}),o.open()})})};t()}function D6(n){n.plugin.settings.taskFilter.presetTaskFilters=[];let a=[{id:Zs(),name:d("Incomplete tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:Zs(),name:d("In progress tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:Zs(),name:d("Completed tasks"),options:{includeCompleted:!0,includeInProgress:!1,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!1,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:Zs(),name:d("All tasks"),options:{includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!0,advancedFilterQuery:"",filterMode:"INCLUDE"}}];n.plugin.settings.taskFilter.presetTaskFilters=a,n.applySettingsUpdate()}var Be=require("obsidian");q();function aC(n,a){if(new Be.Setting(a).setName(d("Task Gutter")).setDesc(d("Configure the task gutter.")).setHeading(),new Be.Setting(a).setName(d("Enable task gutter")).setDesc(d("Toggle this to enable the task gutter.")).addToggle(e=>{e.setValue(n.plugin.settings.taskGutter.enableTaskGutter),e.onChange(async t=>{n.plugin.settings.taskGutter.enableTaskGutter=t,n.applySettingsUpdate()})}),new Be.Setting(a).setName(d("Completed Task Mover")).setHeading(),new Be.Setting(a).setName(d("Enable completed task mover")).setDesc(d("Toggle this to enable commands for moving completed tasks to another file.")).addToggle(e=>e.setValue(n.plugin.settings.completedTaskMover.enableCompletedTaskMover).onChange(async t=>{n.plugin.settings.completedTaskMover.enableCompletedTaskMover=t,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.completedTaskMover.enableCompletedTaskMover){new Be.Setting(a).setName(d("Task marker type")).setDesc(d("Choose what type of marker to add to moved tasks")).addDropdown(t=>{t.addOption("version","Version marker").addOption("date","Date marker").addOption("custom","Custom marker").setValue(n.plugin.settings.completedTaskMover.taskMarkerType).onChange(async r=>{n.plugin.settings.completedTaskMover.taskMarkerType=r,n.applySettingsUpdate()})});let e=n.plugin.settings.completedTaskMover.taskMarkerType;e==="version"?new Be.Setting(a).setName(d("Version marker text")).setDesc(d("Text to append to tasks when moved (e.g., 'version 1.0')")).addText(t=>t.setPlaceholder("version 1.0").setValue(n.plugin.settings.completedTaskMover.versionMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.versionMarker=r,n.applySettingsUpdate()})):e==="date"?new Be.Setting(a).setName(d("Date marker text")).setDesc(d("Text to append to tasks when moved (e.g., 'archived on 2023-12-31')")).addText(t=>t.setPlaceholder("archived on {{date}}").setValue(n.plugin.settings.completedTaskMover.dateMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.dateMarker=r,n.applySettingsUpdate()})):e==="custom"&&new Be.Setting(a).setName(d("Custom marker text")).setDesc(d("Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}")).addText(t=>t.setPlaceholder("moved {{DATE:YYYY-MM-DD HH:mm}}").setValue(n.plugin.settings.completedTaskMover.customMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.customMarker=r,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("Treat abandoned tasks as completed")).setDesc(d("If enabled, abandoned tasks will be treated as completed.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.treatAbandonedAsCompleted),t.onChange(r=>{n.plugin.settings.completedTaskMover.treatAbandonedAsCompleted=r,n.applySettingsUpdate()})}),new Be.Setting(a).setName(d("Complete all moved tasks")).setDesc(d("If enabled, all moved tasks will be marked as completed.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.completeAllMovedTasks),t.onChange(r=>{n.plugin.settings.completedTaskMover.completeAllMovedTasks=r,n.applySettingsUpdate()})}),new Be.Setting(a).setName(d("With current file link")).setDesc(d("A link to the current file will be added to the parent task of the moved tasks.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.withCurrentFileLink),t.onChange(r=>{n.plugin.settings.completedTaskMover.withCurrentFileLink=r,n.applySettingsUpdate()})}),new Be.Setting(a).setName(d("Enable auto-move for completed tasks")).setDesc(d("Automatically move completed tasks to a default file without manual selection.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.enableAutoMove),t.onChange(r=>{n.plugin.settings.completedTaskMover.enableAutoMove=r,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.completedTaskMover.enableAutoMove&&(new Be.Setting(a).setName(d("Default target file")).setDesc(d("Default file to move completed tasks to (e.g., 'Archive.md')")).addText(t=>t.setPlaceholder("Archive.md").setValue(n.plugin.settings.completedTaskMover.defaultTargetFile).onChange(async r=>{n.plugin.settings.completedTaskMover.defaultTargetFile=r,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("Default insertion mode")).setDesc(d("Where to insert completed tasks in the target file")).addDropdown(t=>{t.addOption("beginning",d("Beginning of file")).addOption("end",d("End of file")).addOption("after-heading",d("After heading")).setValue(n.plugin.settings.completedTaskMover.defaultInsertionMode).onChange(async r=>{n.plugin.settings.completedTaskMover.defaultInsertionMode=r,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.completedTaskMover.defaultInsertionMode==="after-heading"&&new Be.Setting(a).setName(d("Default heading name")).setDesc(d("Heading name to insert tasks after (will be created if it doesn't exist)")).addText(t=>t.setPlaceholder("Completed Tasks").setValue(n.plugin.settings.completedTaskMover.defaultHeadingName).onChange(async r=>{n.plugin.settings.completedTaskMover.defaultHeadingName=r,n.applySettingsUpdate()})))}if(new Be.Setting(a).setName(d("Incomplete Task Mover")).setHeading(),new Be.Setting(a).setName(d("Enable incomplete task mover")).setDesc(d("Toggle this to enable commands for moving incomplete tasks to another file.")).addToggle(e=>e.setValue(n.plugin.settings.completedTaskMover.enableIncompletedTaskMover).onChange(async t=>{n.plugin.settings.completedTaskMover.enableIncompletedTaskMover=t,n.applySettingsUpdate()})),n.plugin.settings.completedTaskMover.enableIncompletedTaskMover){new Be.Setting(a).setName(d("Incomplete task marker type")).setDesc(d("Choose what type of marker to add to moved incomplete tasks")).addDropdown(t=>{t.addOption("version","Version marker").addOption("date","Date marker").addOption("custom","Custom marker").setValue(n.plugin.settings.completedTaskMover.incompletedTaskMarkerType).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedTaskMarkerType=r,n.applySettingsUpdate()})});let e=n.plugin.settings.completedTaskMover.incompletedTaskMarkerType;e==="version"?new Be.Setting(a).setName(d("Incomplete version marker text")).setDesc(d("Text to append to incomplete tasks when moved (e.g., 'version 1.0')")).addText(t=>t.setPlaceholder("version 1.0").setValue(n.plugin.settings.completedTaskMover.incompletedVersionMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedVersionMarker=r,n.applySettingsUpdate()})):e==="date"?new Be.Setting(a).setName(d("Incomplete date marker text")).setDesc(d("Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')")).addText(t=>t.setPlaceholder("moved on {{date}}").setValue(n.plugin.settings.completedTaskMover.incompletedDateMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedDateMarker=r,n.applySettingsUpdate()})):e==="custom"&&new Be.Setting(a).setName(d("Incomplete custom marker text")).setDesc(d("Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}")).addText(t=>t.setPlaceholder("moved {{DATE:YYYY-MM-DD HH:mm}}").setValue(n.plugin.settings.completedTaskMover.incompletedCustomMarker).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedCustomMarker=r,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("With current file link for incomplete tasks")).setDesc(d("A link to the current file will be added to the parent task of the moved incomplete tasks.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.withCurrentFileLinkForIncompleted),t.onChange(r=>{n.plugin.settings.completedTaskMover.withCurrentFileLinkForIncompleted=r,n.applySettingsUpdate()})}),new Be.Setting(a).setName(d("Enable auto-move for incomplete tasks")).setDesc(d("Automatically move incomplete tasks to a default file without manual selection.")).addToggle(t=>{t.setValue(n.plugin.settings.completedTaskMover.enableIncompletedAutoMove),t.onChange(r=>{n.plugin.settings.completedTaskMover.enableIncompletedAutoMove=r,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.completedTaskMover.enableIncompletedAutoMove&&(new Be.Setting(a).setName(d("Default target file for incomplete tasks")).setDesc(d("Default file to move incomplete tasks to (e.g., 'Backlog.md')")).addText(t=>t.setPlaceholder("Backlog.md").setValue(n.plugin.settings.completedTaskMover.incompletedDefaultTargetFile).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedDefaultTargetFile=r,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("Default insertion mode for incomplete tasks")).setDesc(d("Where to insert incomplete tasks in the target file")).addDropdown(t=>{t.addOption("beginning",d("Beginning of file")).addOption("end",d("End of file")).addOption("after-heading",d("After heading")).setValue(n.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode=r,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode==="after-heading"&&new Be.Setting(a).setName(d("Default heading name for incomplete tasks")).setDesc(d("Heading name to insert incomplete tasks after (will be created if it doesn't exist)")).addText(t=>t.setPlaceholder("Incomplete Tasks").setValue(n.plugin.settings.completedTaskMover.incompletedDefaultHeadingName).onChange(async r=>{n.plugin.settings.completedTaskMover.incompletedDefaultHeadingName=r,n.applySettingsUpdate()})))}if(new Be.Setting(a).setName(d("Task Sorting")).setDesc(d("Configure how tasks are sorted in the document.")).setHeading(),new Be.Setting(a).setName(d("Enable Task Sorting")).setDesc(d("Toggle this to enable commands for sorting tasks.")).addToggle(e=>{e.setValue(n.plugin.settings.sortTasks).onChange(async t=>{n.plugin.settings.sortTasks=t,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.sortTasks){new Be.Setting(a).setName(d("Sort Criteria")).setDesc(d("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let e=a.createDiv({cls:"sort-criteria-container"}),t=()=>{e.empty();let r=n.plugin.settings.sortCriteria||[];r.length===0&&e.createEl("p",{text:d("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),r.forEach((i,s)=>{let o=new Be.Setting(e).setClass("sort-criterion-row").addDropdown(l=>{l.addOption("status",d("Status")).addOption("priority",d("Priority")).addOption("dueDate",d("Due Date")).addOption("startDate",d("Start Date")).addOption("scheduledDate",d("Scheduled Date")).addOption("content",d("Content")).addOption("lineNumber",d("Line Number")).setValue(i.field).onChange(c=>{n.plugin.settings.sortCriteria[s].field=c,n.applySettingsUpdate()})}).addDropdown(l=>{l.addOption("asc",d("Ascending")).addOption("desc",d("Descending")).setValue(i.order).onChange(c=>{n.plugin.settings.sortCriteria[s].order=c,n.applySettingsUpdate()}),i.field==="priority"?l.selectEl.title=d("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(i.field)?l.selectEl.title=d("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):i.field==="status"?l.selectEl.title=d("Ascending respects status order (Overdue first). Descending reverses it."):l.selectEl.title=d("Ascending: A-Z. Descending: Z-A")});o.addExtraButton(l=>{l.setIcon("arrow-up").setTooltip(d("Move Up")).setDisabled(s===0).onClick(()=>{if(s>0){let c=n.plugin.settings.sortCriteria.splice(s,1)[0];n.plugin.settings.sortCriteria.splice(s-1,0,c),n.applySettingsUpdate(),t()}})}),o.addExtraButton(l=>{l.setIcon("arrow-down").setTooltip(d("Move Down")).setDisabled(s===r.length-1).onClick(()=>{if(s{l.setIcon("trash").setTooltip(d("Remove Criterion")).onClick(()=>{n.plugin.settings.sortCriteria.splice(s,1),n.applySettingsUpdate(),t()}),l.extraSettingsEl.addClass("mod-warning")})}),new Be.Setting(e).addButton(i=>{i.setButtonText(d("Add Sort Criterion")).setCta().onClick(()=>{let s={field:"status",order:"asc"};n.plugin.settings.sortCriteria||(n.plugin.settings.sortCriteria=[]),n.plugin.settings.sortCriteria.push(s),n.applySettingsUpdate(),t()})}).addButton(i=>{i.setButtonText(d("Reset to Defaults")).onClick(()=>{n.plugin.settings.sortCriteria=[...me.sortCriteria],n.applySettingsUpdate(),t()})})};t()}new Be.Setting(a).setName(d("On Completion")).setHeading(),new Be.Setting(a).setName(d("Enable OnCompletion")).setDesc(d("Enable automatic actions when tasks are completed")).addToggle(e=>e.setValue(n.plugin.settings.onCompletion.enableOnCompletion).onChange(async t=>{n.plugin.settings.onCompletion.enableOnCompletion=t,n.applySettingsUpdate(),n.display()})),n.plugin.settings.onCompletion.enableOnCompletion&&(new Be.Setting(a).setName(d("Default Archive File")).setDesc(d("Default file for archive action")).addText(e=>e.setPlaceholder("Archive/Completed Tasks.md").setValue(n.plugin.settings.onCompletion.defaultArchiveFile).onChange(async t=>{n.plugin.settings.onCompletion.defaultArchiveFile=t,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("Default Archive Section")).setDesc(d("Default section for archive action")).addText(e=>e.setPlaceholder("Completed Tasks").setValue(n.plugin.settings.onCompletion.defaultArchiveSection).onChange(async t=>{n.plugin.settings.onCompletion.defaultArchiveSection=t,n.applySettingsUpdate()})),new Be.Setting(a).setName(d("Show Advanced Options")).setDesc(d("Show advanced configuration options in task editors")).addToggle(e=>e.setValue(n.plugin.settings.onCompletion.showAdvancedOptions).onChange(async t=>{n.plugin.settings.onCompletion.showAdvancedOptions=t,n.applySettingsUpdate()})))}var Ve=require("obsidian");q();var Ek={};Et(Ek,{allStatusCollections:()=>Dk,anuppuccinSupportedStatuses:()=>E6,auraSupportedStatuses:()=>P6,borderSupportedStatuses:()=>M6,ebullientworksSupportedStatuses:()=>I6,itsSupportedStatuses:()=>A6,lytModeSupportedStatuses:()=>F6,minimalSupportedStatuses:()=>R6,thingsSupportedStatuses:()=>O6});function E6(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],["?","Question","notStarted"],["*","Star","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["i","Information","notStarted"],["I","Idea","notStarted"],["S","Amount","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["b","Bookmark","notStarted"],['"',"Quote","notStarted"],["0","Speech bubble 0","notStarted"],["1","Speech bubble 1","notStarted"],["2","Speech bubble 2","notStarted"],["3","Speech bubble 3","notStarted"],["4","Speech bubble 4","notStarted"],["5","Speech bubble 5","notStarted"],["6","Speech bubble 6","notStarted"],["7","Speech bubble 7","notStarted"],["8","Speech bubble 8","notStarted"],["9","Speech bubble 9","notStarted"]]}function P6(){return[[" ","incomplete","notStarted"],["x","complete / done","completed"],["-","cancelled","abandoned"],[">","deferred","planned"],["/","in progress, or half-done","inProgress"],["!","Important","notStarted"],["?","question","notStarted"],["R","review","notStarted"],["+","Inbox / task that should be processed later","notStarted"],["b","bookmark","notStarted"],["B","brainstorm","notStarted"],["D","deferred or scheduled","planned"],["I","Info","notStarted"],["i","idea","notStarted"],["N","note","notStarted"],["Q","quote","notStarted"],["W","win / success / reward","notStarted"],["P","pro","notStarted"],["C","con","notStarted"]]}function M6(){return[[" ","To Do","notStarted"],["/","In Progress","inProgress"],["x","Done","completed"],["-","Cancelled","abandoned"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["?","Question","notStarted"],["i","Infomation","notStarted"],["S","Amount","notStarted"],["*","Star","notStarted"],["b","Bookmark","notStarted"],["\u201C","Quote","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["I","Idea","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["u","Up","notStarted"],["d","Down","notStarted"]]}function I6(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],[">","Deferred","planned"],["!","Important","notStarted"],["?","Question","planned"],["r","Review","notStarted"]]}function A6(){return[[" ","Unchecked","notStarted"],["x","Regular","completed"],["X","Checked","completed"],["-","Dropped","abandoned"],[">","Forward","planned"],["D","Date","notStarted"],["?","Question","planned"],["/","Half Done","inProgress"],["+","Add","notStarted"],["R","Research","notStarted"],["!","Important","notStarted"],["i","Idea","notStarted"],["B","Brainstorm","notStarted"],["P","Pro","notStarted"],["C","Con","notStarted"],["Q","Quote","notStarted"],["N","Note","notStarted"],["b","Bookmark","notStarted"],["I","Information","notStarted"],["p","Paraphrase","notStarted"],["L","Location","notStarted"],["E","Example","notStarted"],["A","Answer","notStarted"],["r","Reward","notStarted"],["c","Choice","notStarted"],["d","Doing","inProgress"],["T","Time","notStarted"],["@","Character / Person","notStarted"],["t","Talk","notStarted"],["O","Outline / Plot","notStarted"],["~","Conflict","notStarted"],["W","World","notStarted"],["f","Clue / Find","notStarted"],["F","Foreshadow","notStarted"],["H","Favorite / Health","notStarted"],["&","Symbolism","notStarted"],["s","Secret","notStarted"]]}function F6(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],["?","Question","notStarted"],["*","Star","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["i","Information","notStarted"],["I","Idea","notStarted"],["S","Amount","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["b","Bookmark","notStarted"],["f","Fire","notStarted"],["k","Key","notStarted"],["w","Win","notStarted"],["u","Up","notStarted"],["d","Down","notStarted"]]}function R6(){return[[" ","to-do","notStarted"],["/","incomplete","inProgress"],["x","done","completed"],["-","canceled","abandoned"],[">","forwarded","planned"],["<","scheduling","planned"],["?","question","notStarted"],["!","important","notStarted"],["*","star","notStarted"],['"',"quote","notStarted"],["l","location","notStarted"],["b","bookmark","notStarted"],["i","information","notStarted"],["S","savings","notStarted"],["I","idea","notStarted"],["p","pros","notStarted"],["c","cons","notStarted"],["f","fire","notStarted"],["k","key","notStarted"],["w","win","notStarted"],["u","up","notStarted"],["d","down","notStarted"]]}function O6(){return[[" ","to-do","notStarted"],["/","incomplete","inProgress"],["x","done","completed"],["-","canceled","abandoned"],[">","forwarded","planned"],["<","scheduling","planned"],["?","question","notStarted"],["!","important","notStarted"],["*","star","notStarted"],['"',"quote","notStarted"],["l","location","notStarted"],["b","bookmark","notStarted"],["i","information","notStarted"],["S","savings","notStarted"],["I","idea","notStarted"],["p","pros","notStarted"],["c","cons","notStarted"],["f","fire","notStarted"],["k","key","notStarted"],["w","win","notStarted"],["u","up","notStarted"],["d","down","notStarted"]]}var Dk=["AnuPpuccin","Aura","Border","Ebullientworks","ITS","LYTMode","Minimal","Things"];function rC(n,a){if(new Ve.Setting(a).setName(d("Checkbox Status Settings")).setDesc(d("Configure checkbox status settings")).setHeading(),Ls(n.plugin)){let l=a.createDiv({cls:"tasks-compatibility-warning"});l.createEl("div",{cls:"tasks-warning-icon",text:"\u26A0\uFE0F"});let c=l.createDiv({cls:"tasks-warning-content"});c.createEl("div",{cls:"tasks-warning-title",text:d("Tasks Plugin Detected")});let u=c.createEl("div",{cls:"tasks-warning-text"});u.createEl("span",{text:d("Current status management and date management may conflict with the Tasks plugin. Please check the ")});let p=u.createEl("a",{text:d("compatibility documentation"),href:"https://taskgenius.md/docs/compatibility"});p.setAttribute("target","_blank"),p.setAttribute("rel","noopener noreferrer"),u.createEl("span",{text:d(" for more information.")})}new Ve.Setting(a).setName(d("Auto complete parent checkbox")).setDesc(d("Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.")).addToggle(l=>l.setValue(n.plugin.settings.autoCompleteParent).onChange(async c=>{n.plugin.settings.autoCompleteParent=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Mark parent as 'In Progress' when partially complete")).setDesc(d("When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.")).addToggle(l=>l.setValue(n.plugin.settings.markParentInProgressWhenPartiallyComplete).onChange(async c=>{n.plugin.settings.markParentInProgressWhenPartiallyComplete=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Checkbox Status Settings")).setDesc(d("Select a predefined checkbox status collection or customize your own")).setHeading().addDropdown(l=>{l.addOption("custom","Custom");for(let c of Dk)l.addOption(c,c);l.setValue("custom"),l.onChange(async c=>{if(c==="custom")return;let u=new Ve.Modal(n.app);u.titleEl.setText(`Apply ${c} Theme?`),u.contentEl.createDiv().setText(`This will override your current checkbox status settings with the ${c} theme. Do you want to continue?`);let m=u.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),f=m.createEl("button");f.setText(d("Cancel")),f.addEventListener("click",()=>{l.setValue("custom"),u.close()});let h=m.createEl("button");h.setText(d("Apply Theme")),h.addClass("mod-cta"),h.addEventListener("click",async()=>{u.close();try{let g=c.toLowerCase()+"SupportedStatuses",k=Ek[g];if(typeof k=="function"){let y=k(),b=n.plugin.settings.taskStatusCycle,v=n.plugin.settings.taskStatusMarks,w=n.plugin.settings.excludeMarksFromCycle;b.length=0,Object.keys(v).forEach(T=>delete v[T]),w.length=0;for(let[T,C,S]of y){let E=C.split("/")[0].trim();b.includes(E)||b.push(E),v[E]=T,T!==" "&&T!=="x"&&w.push(E)}let x={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[T,C,S]of y)S in x&&x[S].push(T);for(let T of Object.keys(x))T in n.plugin.settings.taskStatuses&&x[T]&&x[T].length>0&&(n.plugin.settings.taskStatuses[T]=x[T].join("|"));n.applySettingsUpdate(),n.display()}}catch(g){console.error("Failed to apply checkbox status theme:",g)}}),u.open()})});let t=createFragment();t.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ve.setIcon)(l,"completed")}),t.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Completed"))}),new Ve.Setting(a).setName(t).setDesc(d('Characters in square brackets that represent completed tasks. Example: "x|X"')).addText(l=>l.setPlaceholder(me.taskStatuses.completed).setValue(n.plugin.settings.taskStatuses.completed).onChange(async c=>{n.plugin.settings.taskStatuses.completed=c||me.taskStatuses.completed,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let r=createFragment();r.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ve.setIcon)(l,"planned")}),r.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Planned"))}),new Ve.Setting(a).setName(r).setDesc(d('Characters in square brackets that represent planned tasks. Example: "?"')).addText(l=>l.setPlaceholder(me.taskStatuses.planned).setValue(n.plugin.settings.taskStatuses.planned).onChange(async c=>{n.plugin.settings.taskStatuses.planned=c||me.taskStatuses.planned,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let i=createFragment();i.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ve.setIcon)(l,"inProgress")}),i.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("In Progress"))}),new Ve.Setting(a).setName(i).setDesc(d('Characters in square brackets that represent tasks in progress. Example: ">|/"')).addText(l=>l.setPlaceholder(me.taskStatuses.inProgress).setValue(n.plugin.settings.taskStatuses.inProgress).onChange(async c=>{n.plugin.settings.taskStatuses.inProgress=c||me.taskStatuses.inProgress,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let s=createFragment();s.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ve.setIcon)(l,"abandoned")}),s.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Abandoned"))}),new Ve.Setting(a).setName(s).setDesc(d('Characters in square brackets that represent abandoned tasks. Example: "-"')).addText(l=>l.setPlaceholder(me.taskStatuses.abandoned).setValue(n.plugin.settings.taskStatuses.abandoned).onChange(async c=>{n.plugin.settings.taskStatuses.abandoned=c||me.taskStatuses.abandoned,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let o=createFragment();if(o.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ve.setIcon)(l,"notStarted")}),o.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Not Started"))}),new Ve.Setting(a).setName(o).setDesc(d('Characters in square brackets that represent not started tasks. Default is space " "')).addText(l=>l.setPlaceholder(me.taskStatuses.notStarted).setValue(n.plugin.settings.taskStatuses.notStarted).onChange(async c=>{n.plugin.settings.taskStatuses.notStarted=c||me.taskStatuses.notStarted,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()})),new Ve.Setting(a).setName(d("Count other statuses as")).setDesc(d('Select the status to count other statuses as. Default is "Not Started".')).addDropdown(l=>{l.addOption("notStarted","Not Started"),l.addOption("abandoned","Abandoned"),l.addOption("planned","Planned"),l.addOption("completed","Completed"),l.addOption("inProgress","In Progress"),l.setValue(n.plugin.settings.countOtherStatusesAs||"notStarted"),l.onChange(c=>{n.plugin.settings.countOtherStatusesAs=c,n.applySettingsUpdate()})}),new Ve.Setting(a).setName(d("Task Counting Settings")).setDesc(d("Configure which task markers to count or exclude")).setHeading(),new Ve.Setting(a).setName(d("Exclude specific task markers")).setDesc(d('Specify task markers to exclude from counting. Example: "?|/"')).addText(l=>l.setPlaceholder("").setValue(n.plugin.settings.excludeTaskMarks).onChange(async c=>{n.plugin.settings.excludeTaskMarks=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Only count specific task markers")).setDesc(d("Toggle this to only count specific task markers")).addToggle(l=>l.setValue(n.plugin.settings.useOnlyCountMarks).onChange(async c=>{n.plugin.settings.useOnlyCountMarks=c,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.useOnlyCountMarks&&new Ve.Setting(a).setName(d("Specific task markers to count")).setDesc(d('Specify which task markers to count. Example: "x|X|>|/"')).addText(l=>l.setPlaceholder(me.onlyCountTaskMarks).setValue(n.plugin.settings.onlyCountTaskMarks).onChange(async c=>{c.length===0?n.plugin.settings.onlyCountTaskMarks=me.onlyCountTaskMarks:n.plugin.settings.onlyCountTaskMarks=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Checkbox Switcher")).setHeading(),new Ve.Setting(a).setName(d("Enable checkbox status switcher")).setDesc(d("Enable/disable the ability to cycle through task states by clicking.")).addToggle(l=>{l.setValue(n.plugin.settings.enableTaskStatusSwitcher).onChange(async c=>{n.plugin.settings.enableTaskStatusSwitcher=c,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableTaskStatusSwitcher&&(new Ve.Setting(a).setName(d("Task mark display style")).setDesc(d("Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.")).addDropdown(l=>{l.addOption("default",d("Default checkboxes")),l.addOption("textmarks",d("Custom text marks")),l.addOption("icons",d("Task Genius icons"));let c="default";n.plugin.settings.enableTaskGeniusIcons?c="icons":n.plugin.settings.enableCustomTaskMarks&&(c="textmarks"),l.setValue(c),l.onChange(async u=>{n.plugin.settings.enableCustomTaskMarks=!1,n.plugin.settings.enableTaskGeniusIcons=!1,u==="textmarks"?n.plugin.settings.enableCustomTaskMarks=!0:u==="icons"&&(n.plugin.settings.enableTaskGeniusIcons=!0),n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableCustomTaskMarks&&new Ve.Setting(a).setName(d("Enable text mark in source mode")).setDesc(d("Make the text mark in source mode follow the checkbox status cycle when clicked.")).addToggle(l=>{l.setValue(n.plugin.settings.enableTextMarkInSourceMode).onChange(async c=>{n.plugin.settings.enableTextMarkInSourceMode=c,n.applySettingsUpdate()})})),new Ve.Setting(a).setName(d("Enable cycle complete status")).setDesc(d("Enable/disable the ability to automatically cycle through task states when pressing a mark.")).addToggle(l=>{l.setValue(n.plugin.settings.enableCycleCompleteStatus).onChange(async c=>{n.plugin.settings.enableCycleCompleteStatus=c,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableCycleCompleteStatus){new Ve.Setting(a).setName(d("Task status cycle and marks")).setDesc(d("Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.")).addDropdown(u=>{u.addOption("custom","Custom");for(let p of Dk)u.addOption(p,p);u.setValue("custom"),u.onChange(async p=>{if(p==="custom")return;let m=new Ve.Modal(n.app);m.titleEl.setText(`Apply ${p} Theme?`),m.contentEl.createDiv().setText(d("This will override your current checkbox status settings with the selected theme. Do you want to continue?"));let h=m.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),g=h.createEl("button");g.setText(d("Cancel")),g.addEventListener("click",()=>{u.setValue("custom"),m.close()});let k=h.createEl("button");k.setText(d("Apply Theme")),k.addClass("mod-cta"),k.addEventListener("click",async()=>{m.close();try{let y=p.toLowerCase()+"SupportedStatuses",b=Ek[y];if(typeof b=="function"){let v=b(),w=n.plugin.settings.taskStatusCycle,x=n.plugin.settings.taskStatusMarks,T=n.plugin.settings.excludeMarksFromCycle;w.length=0,Object.keys(x).forEach(S=>delete x[S]),T.length=0;for(let[S,E,A]of v){let N=E.split("/")[0].trim();w.includes(N)||w.push(N),x[N]=S,S!==" "&&S!=="x"&&T.push(N)}let C={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[S,E,A]of v)A in C&&C[A].push(S);for(let S of Object.keys(C))S in n.plugin.settings.taskStatuses&&C[S]&&C[S].length>0&&(n.plugin.settings.taskStatuses[S]=C[S].join("|"));n.applySettingsUpdate(),n.display()}}catch(y){console.error("Failed to apply checkbox status theme:",y)}}),m.open()})});let l=a.createDiv({cls:"task-states-container"}),c=()=>{l.empty();let u=n.plugin.settings.taskStatusCycle,p=n.plugin.settings.taskStatusMarks;n.plugin.settings.excludeMarksFromCycle||(n.plugin.settings.excludeMarksFromCycle=[]),u.forEach((f,h)=>{let g=l.createDiv({cls:"task-state-row"}),k=new Ve.Setting(g).setName(`Status #${h+1}`).addText(y=>{y.setValue(f).setPlaceholder(d("Status name")).onChange(b=>{let v=u[h];u[h]=b,v in p&&(p[b]=p[v],delete p[v]),n.applySettingsUpdate()})}).addText(y=>{y.setValue(p[f]||" ").setPlaceholder("Mark").onChange(b=>{let v=b.trim().charAt(0)||" ";p[f]=v,n.applySettingsUpdate()}),y.inputEl.maxLength=1,y.inputEl.style.width="40px"});k.addToggle(y=>{y.setTooltip(d("Include in cycle")).setValue(!n.plugin.settings.excludeMarksFromCycle.includes(f)).onChange(b=>{b?n.plugin.settings.excludeMarksFromCycle=n.plugin.settings.excludeMarksFromCycle.filter(v=>v!==f):n.plugin.settings.excludeMarksFromCycle.includes(f)||n.plugin.settings.excludeMarksFromCycle.push(f),n.applySettingsUpdate()})}),k.addExtraButton(y=>{y.setIcon("arrow-up").setTooltip(d("Move up")).onClick(()=>{h>0&&([u[h-1],u[h]]=[u[h],u[h-1]],n.applySettingsUpdate(),c())}),y.extraSettingsEl.style.marginRight="0"}),k.addExtraButton(y=>{y.setIcon("arrow-down").setTooltip(d("Move down")).onClick(()=>{h{y.setIcon("trash").setTooltip(d("Remove")).onClick(()=>{u.splice(h,1),delete p[f],n.applySettingsUpdate(),c()}),y.extraSettingsEl.style.marginRight="0"})});let m=l.createDiv();new Ve.Setting(m).addButton(f=>{f.setButtonText(d("Add Status")).setCta().onClick(()=>{let h=`STATUS_${u.length+1}`;u.push(h),p[h]=" ",n.applySettingsUpdate(),c()})})};c()}new Ve.Setting(a).setName(d("Auto Date Manager")).setDesc(d("Automatically manage dates based on checkbox status changes")).setHeading(),new Ve.Setting(a).setName(d("Enable auto date manager")).setDesc(d("Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).")).addToggle(l=>l.setValue(n.plugin.settings.autoDateManager.enabled).onChange(async c=>{n.plugin.settings.autoDateManager.enabled=c,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.autoDateManager.enabled&&(new Ve.Setting(a).setName(d("Manage completion dates")).setDesc(d("Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(n.plugin.settings.autoDateManager.manageCompletedDate).onChange(async c=>{n.plugin.settings.autoDateManager.manageCompletedDate=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Manage start dates")).setDesc(d("Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(n.plugin.settings.autoDateManager.manageStartDate).onChange(async c=>{n.plugin.settings.autoDateManager.manageStartDate=c,n.applySettingsUpdate()})),new Ve.Setting(a).setName(d("Manage cancelled dates")).setDesc(d("Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(n.plugin.settings.autoDateManager.manageCancelledDate).onChange(async c=>{n.plugin.settings.autoDateManager.manageCancelledDate=c,n.applySettingsUpdate()})))}var ut=require("obsidian");q();var Se=require("obsidian");q();zx();var cl=require("obsidian");var Ba=class extends cl.Modal{constructor(e,t){super(e.app);this.params=t;this.plugin=e}async onOpen(){this.titleEl.setText(this.params.title),this.params.message.includes(` `)?await cl.MarkdownRenderer.render(this.plugin.app,this.params.message,this.contentEl,"",this.plugin):this.contentEl.setText(this.params.message);let e=this.contentEl.createEl("div",{cls:"confirm-modal-buttons"});new cl.ButtonComponent(e).setButtonText(this.params.confirmText).setCta().onClick(()=>{this.params.onConfirm(!0),this.close()}),new cl.ButtonComponent(e).setButtonText(this.params.cancelText).setCta().onClick(()=>{this.params.onConfirm(!1),this.close()})}onClose(){this.contentEl.empty()}};var ua=require("obsidian");function KL(n,a){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);a&&(t=t.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),e.push.apply(e,t)}return e}function xn(n){for(var a=1;a=0)&&(e[r]=n[r]);return e}function j6(n,a){if(n==null)return{};var e=L6(n,a),t,r;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(n,t)&&(e[t]=n[t])}return e}var H6="1.15.6";function os(n){if(typeof window!="undefined"&&window.navigator)return!!navigator.userAgent.match(n)}var ds=os(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Om=os(/Edge/i),QL=os(/firefox/i),Mm=os(/safari/i)&&!os(/chrome/i)&&!os(/android/i),kC=os(/iP(ad|od|hone)/i),ij=os(/chrome/i)&&os(/android/i),nj={capture:!1,passive:!1};function Ye(n,a,e){n.addEventListener(a,e,!ds&&nj)}function ze(n,a,e){n.removeEventListener(a,e,!ds&&nj)}function jk(n,a){if(a){if(a[0]===">"&&(a=a.substring(1)),n)try{if(n.matches)return n.matches(a);if(n.msMatchesSelector)return n.msMatchesSelector(a);if(n.webkitMatchesSelector)return n.webkitMatchesSelector(a)}catch(e){return!1}return!1}}function sj(n){return n.host&&n!==document&&n.host.nodeType?n.host:n.parentNode}function Ki(n,a,e,t){if(n){e=e||document;do{if(a!=null&&(a[0]===">"?n.parentNode===e&&jk(n,a):jk(n,a))||t&&n===e)return n;if(n===e)break}while(n=sj(n))}return null}var XL=/\s+/g;function qr(n,a,e){if(n&&a)if(n.classList)n.classList[e?"add":"remove"](a);else{var t=(" "+n.className+" ").replace(XL," ").replace(" "+a+" "," ");n.className=(t+(e?" "+a:"")).replace(XL," ")}}function xe(n,a,e){var t=n&&n.style;if(t){if(e===void 0)return document.defaultView&&document.defaultView.getComputedStyle?e=document.defaultView.getComputedStyle(n,""):n.currentStyle&&(e=n.currentStyle),a===void 0?e:e[a];!(a in t)&&a.indexOf("webkit")===-1&&(a="-webkit-"+a),t[a]=e+(typeof e=="string"?"":"px")}}function Gd(n,a){var e="";if(typeof n=="string")e=n;else do{var t=xe(n,"transform");t&&t!=="none"&&(e=t+" "+e)}while(!a&&(n=n.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(e)}function oj(n,a,e){if(n){var t=n.getElementsByTagName(a),r=0,i=t.length;if(e)for(;r=i:s=r<=i,!s)return t;if(t===Tn())break;t=ao(t,!1)}return!1}function Kd(n,a,e,t){for(var r=0,i=0,s=n.children;i2&&arguments[2]!==void 0?arguments[2]:{},r=t.evt,i=j6(t,Y6);Nm.pluginEvent.bind(Ce)(a,e,xn({dragEl:re,parentEl:Wt,ghostEl:De,rootEl:It,nextEl:ml,lastDownEl:Rk,cloneEl:jt,cloneHidden:to,dragStarted:Dm,putSortable:Va,activeSortable:Ce.active,originalEvent:r,oldIndex:qd,oldDraggableIndex:Am,newIndex:Gr,newDraggableIndex:eo,hideGhostForTarget:hj,unhideGhostForTarget:gj,cloneNowHidden:function(){to=!0},cloneNowShown:function(){to=!1},dispatchSortableEvent:function(o){hr({sortable:e,name:o,originalEvent:r})}},i))};function hr(n){U6(xn({putSortable:Va,cloneEl:jt,targetEl:re,rootEl:It,oldIndex:qd,oldDraggableIndex:Am,newIndex:Gr,newDraggableIndex:eo},n))}var re,Wt,De,It,ml,Rk,jt,to,qd,Gr,Am,eo,Pk,Va,Yd=!1,Hk=!1,Bk=[],ul,Gi,sC,oC,ej,tj,Dm,Ud,Fm,Rm=!1,Mk=!1,Ok,tr,lC=[],mC=!1,Vk=[],zk=typeof document!="undefined",Ik=kC,aj=Om||ds?"cssFloat":"float",q6=zk&&!ij&&!kC&&"draggable"in document.createElement("div"),pj=(function(){if(zk){if(ds)return!1;var n=document.createElement("x");return n.style.cssText="pointer-events:auto",n.style.pointerEvents==="auto"}})(),mj=function(a,e){var t=xe(a),r=parseInt(t.width)-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-parseInt(t.borderLeftWidth)-parseInt(t.borderRightWidth),i=Kd(a,0,e),s=Kd(a,1,e),o=i&&xe(i),l=s&&xe(s),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+ca(i).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+ca(s).width;if(t.display==="flex")return t.flexDirection==="column"||t.flexDirection==="column-reverse"?"vertical":"horizontal";if(t.display==="grid")return t.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&o.float&&o.float!=="none"){var p=o.float==="left"?"left":"right";return s&&(l.clear==="both"||l.clear===p)?"vertical":"horizontal"}return i&&(o.display==="block"||o.display==="flex"||o.display==="table"||o.display==="grid"||c>=r&&t[aj]==="none"||s&&t[aj]==="none"&&c+u>r)?"vertical":"horizontal"},G6=function(a,e,t){var r=t?a.left:a.top,i=t?a.right:a.bottom,s=t?a.width:a.height,o=t?e.left:e.top,l=t?e.right:e.bottom,c=t?e.width:e.height;return r===o||i===l||r+s/2===o+c/2},K6=function(a,e){var t;return Bk.some(function(r){var i=r[Nr].options.emptyInsertThreshold;if(!(!i||yC(r))){var s=ca(r),o=a>=s.left-i&&a<=s.right+i,l=e>=s.top-i&&e<=s.bottom+i;if(o&&l)return t=r}}),t},fj=function(a){function e(i,s){return function(o,l,c,u){var p=o.options.group.name&&l.options.group.name&&o.options.group.name===l.options.group.name;if(i==null&&(s||p))return!0;if(i==null||i===!1)return!1;if(s&&i==="clone")return i;if(typeof i=="function")return e(i(o,l,c,u),s)(o,l,c,u);var m=(s?o:l).options.group.name;return i===!0||typeof i=="string"&&i===m||i.join&&i.indexOf(m)>-1}}var t={},r=a.group;(!r||Fk(r)!="object")&&(r={name:r}),t.name=r.name,t.checkPull=e(r.pull,!0),t.checkPut=e(r.put),t.revertClone=r.revertClone,a.group=t},hj=function(){!pj&&De&&xe(De,"display","none")},gj=function(){!pj&&De&&xe(De,"display","")};zk&&!ij&&document.addEventListener("click",function(n){if(Hk)return n.preventDefault(),n.stopPropagation&&n.stopPropagation(),n.stopImmediatePropagation&&n.stopImmediatePropagation(),Hk=!1,!1},!0);var pl=function(a){if(re){a=a.touches?a.touches[0]:a;var e=K6(a.clientX,a.clientY);if(e){var t={};for(var r in a)a.hasOwnProperty(r)&&(t[r]=a[r]);t.target=t.rootEl=e,t.preventDefault=void 0,t.stopPropagation=void 0,e[Nr]._onDragOver(t)}}},Q6=function(a){re&&re.parentNode[Nr]._isOutsideThisEl(a.target)};function Ce(n,a){if(!(n&&n.nodeType&&n.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(n));this.el=n,this.options=a=ls({},a),n[Nr]=this;var e={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(n.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return mj(n,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,o){s.setData("Text",o.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Ce.supportPointer!==!1&&"PointerEvent"in window&&(!Mm||kC),emptyInsertThreshold:5};Nm.initializePlugins(this,n,e);for(var t in e)!(t in a)&&(a[t]=e[t]);fj(a);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=a.forceFallback?!1:q6,this.nativeDraggable&&(this.options.touchStartThreshold=1),a.supportPointer?Ye(n,"pointerdown",this._onTapStart):(Ye(n,"mousedown",this._onTapStart),Ye(n,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ye(n,"dragover",this),Ye(n,"dragenter",this)),Bk.push(this.el),a.store&&a.store.get&&this.sort(a.store.get(this)||[]),ls(this,z6())}Ce.prototype={constructor:Ce,_isOutsideThisEl:function(a){!this.el.contains(a)&&a!==this.el&&(Ud=null)},_getDirection:function(a,e){return typeof this.options.direction=="function"?this.options.direction.call(this,a,e,re):this.options.direction},_onTapStart:function(a){if(a.cancelable){var e=this,t=this.el,r=this.options,i=r.preventOnFilter,s=a.type,o=a.touches&&a.touches[0]||a.pointerType&&a.pointerType==="touch"&&a,l=(o||a).target,c=a.target.shadowRoot&&(a.path&&a.path[0]||a.composedPath&&a.composedPath()[0])||l,u=r.filter;if(i8(t),!re&&!(/mousedown|pointerdown/.test(s)&&a.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&Mm&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Ki(l,r.draggable,t,!1),!(l&&l.animated)&&Rk!==l)){if(qd=wi(l),Am=wi(l,r.draggable),typeof u=="function"){if(u.call(this,a,l,this)){hr({sortable:e,rootEl:c,name:"filter",targetEl:l,toEl:t,fromEl:t}),Or("filter",e,{evt:a}),i&&a.preventDefault();return}}else if(u&&(u=u.split(",").some(function(p){if(p=Ki(c,p.trim(),t,!1),p)return hr({sortable:e,rootEl:p,name:"filter",targetEl:l,fromEl:t,toEl:t}),Or("filter",e,{evt:a}),!0}),u)){i&&a.preventDefault();return}r.handle&&!Ki(c,r.handle,t,!1)||this._prepareDragStart(a,o,l)}}},_prepareDragStart:function(a,e,t){var r=this,i=r.el,s=r.options,o=i.ownerDocument,l;if(t&&!re&&t.parentNode===i){var c=ca(t);if(It=i,re=t,Wt=re.parentNode,ml=re.nextSibling,Rk=t,Pk=s.group,Ce.dragged=re,ul={target:re,clientX:(e||a).clientX,clientY:(e||a).clientY},ej=ul.clientX-c.left,tj=ul.clientY-c.top,this._lastX=(e||a).clientX,this._lastY=(e||a).clientY,re.style["will-change"]="all",l=function(){if(Or("delayEnded",r,{evt:a}),Ce.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!QL&&r.nativeDraggable&&(re.draggable=!0),r._triggerDragStart(a,e),hr({sortable:r,name:"choose",originalEvent:a}),qr(re,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){oj(re,u.trim(),dC)}),Ye(o,"dragover",pl),Ye(o,"mousemove",pl),Ye(o,"touchmove",pl),s.supportPointer?(Ye(o,"pointerup",r._onDrop),!this.nativeDraggable&&Ye(o,"pointercancel",r._onDrop)):(Ye(o,"mouseup",r._onDrop),Ye(o,"touchend",r._onDrop),Ye(o,"touchcancel",r._onDrop)),QL&&this.nativeDraggable&&(this.options.touchStartThreshold=4,re.draggable=!0),Or("delayStart",this,{evt:a}),s.delay&&(!s.delayOnTouchOnly||e)&&(!this.nativeDraggable||!(Om||ds))){if(Ce.eventCanceled){this._onDrop();return}s.supportPointer?(Ye(o,"pointerup",r._disableDelayedDrag),Ye(o,"pointercancel",r._disableDelayedDrag)):(Ye(o,"mouseup",r._disableDelayedDrag),Ye(o,"touchend",r._disableDelayedDrag),Ye(o,"touchcancel",r._disableDelayedDrag)),Ye(o,"mousemove",r._delayedDragTouchMoveHandler),Ye(o,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&Ye(o,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(l,s.delay)}else l()}},_delayedDragTouchMoveHandler:function(a){var e=a.touches?a.touches[0]:a;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){re&&dC(re),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var a=this.el.ownerDocument;ze(a,"mouseup",this._disableDelayedDrag),ze(a,"touchend",this._disableDelayedDrag),ze(a,"touchcancel",this._disableDelayedDrag),ze(a,"pointerup",this._disableDelayedDrag),ze(a,"pointercancel",this._disableDelayedDrag),ze(a,"mousemove",this._delayedDragTouchMoveHandler),ze(a,"touchmove",this._delayedDragTouchMoveHandler),ze(a,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(a,e){e=e||a.pointerType=="touch"&&a,!this.nativeDraggable||e?this.options.supportPointer?Ye(document,"pointermove",this._onTouchMove):e?Ye(document,"touchmove",this._onTouchMove):Ye(document,"mousemove",this._onTouchMove):(Ye(re,"dragend",this),Ye(It,"dragstart",this._onDragStart));try{document.selection?Nk(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(a,e){if(Yd=!1,It&&re){Or("dragStarted",this,{evt:e}),this.nativeDraggable&&Ye(document,"dragover",Q6);var t=this.options;!a&&qr(re,t.dragClass,!1),qr(re,t.ghostClass,!0),Ce.active=this,a&&this._appendGhost(),hr({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(Gi){this._lastX=Gi.clientX,this._lastY=Gi.clientY,hj();for(var a=document.elementFromPoint(Gi.clientX,Gi.clientY),e=a;a&&a.shadowRoot&&(a=a.shadowRoot.elementFromPoint(Gi.clientX,Gi.clientY),a!==e);)e=a;if(re.parentNode[Nr]._isOutsideThisEl(a),e)do{if(e[Nr]){var t=void 0;if(t=e[Nr]._onDragOver({clientX:Gi.clientX,clientY:Gi.clientY,target:a,rootEl:e}),t&&!this.options.dragoverBubble)break}a=e}while(e=sj(e));gj()}},_onTouchMove:function(a){if(ul){var e=this.options,t=e.fallbackTolerance,r=e.fallbackOffset,i=a.touches?a.touches[0]:a,s=De&&Gd(De,!0),o=De&&s&&s.a,l=De&&s&&s.d,c=Ik&&tr&&ZL(tr),u=(i.clientX-ul.clientX+r.x)/(o||1)+(c?c[0]-lC[0]:0)/(o||1),p=(i.clientY-ul.clientY+r.y)/(l||1)+(c?c[1]-lC[1]:0)/(l||1);if(!Ce.active&&!Yd){if(t&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))=0&&(hr({rootEl:Wt,name:"add",toEl:Wt,fromEl:It,originalEvent:a}),hr({sortable:this,name:"remove",toEl:Wt,originalEvent:a}),hr({rootEl:Wt,name:"sort",toEl:Wt,fromEl:It,originalEvent:a}),hr({sortable:this,name:"sort",toEl:Wt,originalEvent:a})),Va&&Va.save()):Gr!==qd&&Gr>=0&&(hr({sortable:this,name:"update",toEl:Wt,originalEvent:a}),hr({sortable:this,name:"sort",toEl:Wt,originalEvent:a})),Ce.active&&((Gr==null||Gr===-1)&&(Gr=qd,eo=Am),hr({sortable:this,name:"end",toEl:Wt,originalEvent:a}),this.save()))),this._nulling()},_nulling:function(){Or("nulling",this),It=re=Wt=De=ml=jt=Rk=to=ul=Gi=Dm=Gr=eo=qd=Am=Ud=Fm=Va=Pk=Ce.dragged=Ce.ghost=Ce.clone=Ce.active=null,Vk.forEach(function(a){a.checked=!0}),Vk.length=sC=oC=0},handleEvent:function(a){switch(a.type){case"drop":case"dragend":this._onDrop(a);break;case"dragenter":case"dragover":re&&(this._onDragOver(a),X6(a));break;case"selectstart":a.preventDefault();break}},toArray:function(){for(var a=[],e,t=this.el.children,r=0,i=t.length,s=this.options;rr.right+i||n.clientY>t.bottom&&n.clientX>t.left:n.clientY>r.bottom+i||n.clientX>t.right&&n.clientY>t.top}function t8(n,a,e,t,r,i,s,o){var l=t?n.clientY:n.clientX,c=t?e.height:e.width,u=t?e.top:e.left,p=t?e.bottom:e.right,m=!1;if(!s){if(o&&Oku+c*i/2:lp-Ok)return-Fm}else if(l>u+c*(1-r)/2&&lp-c*i/2)?l>u+c/2?1:-1:0}function a8(n){return wi(re){r.setPlaceholder(d("Filter Configuration Name")).setValue(e).onChange(i=>{e=i})}),new At.Setting(a).setName(d("Filter Configuration Description")).setDesc(d("Enter a description for this filter configuration (optional)")).addTextArea(r=>{r.setPlaceholder(d("Filter Configuration Description")).setValue(t).onChange(i=>{t=i}),r.inputEl.rows=3}),new At.Setting(a).addButton(r=>{r.setButtonText(d("Save")).setCta().onClick(()=>{this.saveConfiguration(e,t)})}).addButton(r=>{r.setButtonText(d("Cancel")).onClick(()=>{this.close()})})}renderLoadMode(){let{contentEl:a}=this;a.createEl("h2",{text:d("Load Filter Configuration")});let e=this.plugin.settings.filterConfig.savedConfigs;if(e.length===0){a.createEl("p",{text:d("No saved filter configurations")}),new At.Setting(a).addButton(s=>{s.setButtonText(d("Close")).onClick(()=>{this.close()})});return}let t="";new At.Setting(a).setName(d("Select a saved filter configuration")).addDropdown(s=>{s.addOption("",d("Select a saved filter configuration")),e.forEach(o=>{s.addOption(o.id,o.name)}),s.onChange(o=>{t=o,this.updateConfigDetails(o)})});let r=a.createDiv({cls:"filter-config-details"}),i=a.createDiv({cls:"filter-config-buttons"});new At.Setting(i).addButton(s=>{s.setButtonText(d("Load")).setCta().onClick(()=>{this.loadConfiguration(t)})}).addButton(s=>{s.setButtonText(d("Delete")).setWarning().onClick(()=>{this.deleteConfiguration(t)})}).addButton(s=>{s.setButtonText(d("Cancel")).onClick(()=>{this.close()})}),this.detailsContainer=r}updateConfigDetails(a){let e=this.detailsContainer;if(!e||(e.empty(),!a))return;let t=this.plugin.settings.filterConfig.savedConfigs.find(o=>o.id===a);if(!t)return;e.createEl("h3",{text:t.name}),t.description&&e.createEl("p",{text:t.description}),e.createEl("p",{text:`${d("Created")}: ${new Date(t.createdAt).toLocaleString()}`,cls:"filter-config-meta"}),e.createEl("p",{text:`${d("Updated")}: ${new Date(t.updatedAt).toLocaleString()}`,cls:"filter-config-meta"});let r=e.createDiv({cls:"filter-config-summary"});r.createEl("h4",{text:d("Filter Summary")});let i=t.filterState.filterGroups.length,s=t.filterState.filterGroups.reduce((o,l)=>o+l.filters.length,0);r.createEl("p",{text:`${i} ${d("filter group")}${i!==1?"s":""}, ${s} ${d("filter")}${s!==1?"s":""}`}),r.createEl("p",{text:`${d("Root condition")}: ${t.filterState.rootCondition}`})}async saveConfiguration(a,e){if(!a.trim()){new At.Notice(d("Filter configuration name is required"));return}if(!this.currentFilterState){new At.Notice(d("Failed to save filter configuration"));return}let t=new Date().toISOString(),r={id:`filter-config-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:a.trim(),description:e.trim()||void 0,filterState:JSON.parse(JSON.stringify(this.currentFilterState)),createdAt:t,updatedAt:t};try{this.plugin.settings.filterConfig.savedConfigs.push(r),await this.plugin.saveSettings(),new At.Notice(d("Filter configuration saved successfully")),this.onSave&&this.onSave(r),this.close()}catch(i){console.error("Failed to save filter configuration:",i),new At.Notice(d("Failed to save filter configuration"))}}async loadConfiguration(a){if(!a){new At.Notice(d("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(t=>t.id===a);if(!e){new At.Notice(d("Failed to load filter configuration"));return}try{this.onLoad&&this.onLoad(e),new At.Notice(d("Filter configuration loaded successfully")),this.close()}catch(t){console.error("Failed to load filter configuration:",t),new At.Notice(d("Failed to load filter configuration"))}}async deleteConfiguration(a){if(!a){new At.Notice(d("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(r=>r.id===a);if(!e){new At.Notice(d("Failed to delete filter configuration"));return}if(await new Promise(r=>{let i=new At.Modal(this.app);i.contentEl.createEl("h2",{text:d("Delete Filter Configuration")}),i.contentEl.createEl("p",{text:d("Are you sure you want to delete this filter configuration?")}),i.contentEl.createEl("p",{text:`"${e.name}"`,cls:"filter-config-name-highlight"}),new At.Setting(i.contentEl).addButton(s=>{s.setButtonText(d("Delete")).setWarning().onClick(()=>{r(!0),i.close()})}).addButton(s=>{s.setButtonText(d("Cancel")).onClick(()=>{r(!1),i.close()})}),i.open()}))try{this.plugin.settings.filterConfig.savedConfigs=this.plugin.settings.filterConfig.savedConfigs.filter(i=>i.id!==a),await this.plugin.saveSettings(),new At.Notice(d("Filter configuration deleted successfully")),this.close(),new n(this.app,this.plugin,"load",void 0,this.onSave,this.onLoad).open()}catch(r){console.error("Failed to delete filter configuration:",r),new At.Notice(d("Failed to delete filter configuration"))}}onClose(){let{contentEl:a}=this;a.empty()}};var Qi=class extends ua.Component{constructor(e,t,r,i){super();this.leafId=r;this.hostEl=e,this.app=t,this.plugin=i}onload(){let e=this.leafId?this.app.loadLocalStorage(`task-genius-view-filter-${this.leafId}`):this.app.loadLocalStorage("task-genius-view-filter");this.leafId,e&&typeof e.rootCondition=="string"&&Array.isArray(e.filterGroups)?this.rootFilterState=e:(e&&console.warn("Task Filter: Invalid data in local storage. Resetting to default state."),this.rootFilterState={rootCondition:"any",filterGroups:[]}),this.render()}onunload(){var e,t;(e=this.groupsSortable)==null||e.destroy(),(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filters-list").forEach(r=>{r.sortableInstance&&r.sortableInstance.destroy()}),this.hostEl.empty()}close(){this.onunload()}generateId(){return`id-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}render(){this.hostEl.empty(),this.hostEl.addClass("task-filter-root-container");let t=this.hostEl.createDiv({cls:"task-filter-main-panel"}).createDiv({attr:{id:"root-filter-setup-section"}});t.addClass("root-filter-setup-section");let r=t.createDiv({});r.addClass("root-condition-section"),r.createEl("label",{text:d("Match"),attr:{for:"task-filter-root-condition"},cls:["compact-text","root-condition-label"]}),new ua.DropdownComponent(r).addOptions({any:d("Any"),all:d("All"),none:d("None")}).setValue(this.rootFilterState.rootCondition).onChange(o=>{this.rootFilterState.rootCondition=o,this.saveStateToLocalStorage(),this.updateGroupSeparators()}).selectEl.toggleClass("compact-select",!0),r.createEl("span",{cls:["compact-text","root-condition-span"],text:d("filter group")}),this.filterGroupsContainerEl=t.createDiv({attr:{id:"task-filter-groups-container"},cls:"filter-groups-container"});let s=t.createDiv({cls:"add-group-section"});if(s.createEl("div",{cls:["add-filter-group-btn","compact-btn"]},o=>{o.createEl("span",{cls:"add-filter-group-btn-icon"},l=>{(0,ua.setIcon)(l,"plus")}),o.createEl("span",{cls:"add-filter-group-btn-text",text:d("Add filter group")}),this.registerDomEvent(o,"click",()=>{this.addFilterGroup()})}),this.plugin){let o=s.createDiv({cls:"filter-config-section"});o.createEl("div",{cls:["save-filter-config-btn","compact-btn"]},l=>{l.createEl("span",{cls:"save-filter-config-btn-icon"},c=>{(0,ua.setIcon)(c,"save"),(0,ua.setTooltip)(l,d("Save Current Filter"))}),this.registerDomEvent(l,"click",()=>{this.openSaveConfigModal()})}),o.createEl("div",{cls:["load-filter-config-btn","compact-btn"]},l=>{l.createEl("span",{cls:"load-filter-config-btn-icon"},c=>{(0,ua.setIcon)(c,"folder-open"),(0,ua.setTooltip)(l,d("Load Saved Filter"))}),this.registerDomEvent(l,"click",()=>{this.openLoadConfigModal()})})}this.rootFilterState.filterGroups.forEach(o=>{let l=this.createFilterGroupElement(o);this.filterGroupsContainerEl.appendChild(l)}),this.updateGroupSeparators(),this.makeSortableGroups()}createFilterGroupElement(e){let t=this.hostEl.createEl("div",{attr:{id:e.id},cls:["filter-group"]}),r=t.createDiv({cls:["filter-group-header"]}),i=r.createDiv({cls:["filter-group-header-left"]});i.createDiv({cls:"drag-handle-container"},m=>{m.createEl("span",{cls:"drag-handle"},f=>{(0,ua.setIcon)(f,"grip-vertical")})}),i.createEl("label",{cls:["compact-text"],text:d("Match")}),new ua.DropdownComponent(i).addOptions({all:d("All"),any:d("Any"),none:d("None")}).onChange(m=>{let f=m;e.groupCondition=f,this.saveStateToLocalStorage(),this.updateFilterConjunctions(t.querySelector(".filters-list"),f)}).setValue(e.groupCondition).selectEl.toggleClass(["group-condition-select","compact-select"],!0),i.createEl("span",{cls:["compact-text"],text:d("filter in this group")});let o=r.createDiv({cls:["filter-group-header-right"]});new ua.ExtraButtonComponent(o).setIcon("copy").setTooltip(d("Duplicate filter group")).onClick(()=>{let m=this.generateId(),f=e.filters.map(g=>({...g,id:this.generateId()})),h={...e,id:m,filters:f};this.addFilterGroup(h,t)}).extraSettingsEl.addClasses(["duplicate-group-btn","clickable-icon"]),new ua.ExtraButtonComponent(o).setIcon("trash-2").setTooltip(d("Remove filter group")).onClick(()=>{let m=t.querySelector(".filters-list");m&&m.sortableInstance&&m.sortableInstance.destroy(),this.rootFilterState.filterGroups=this.rootFilterState.filterGroups.filter(h=>h.id!==e.id),this.saveStateToLocalStorage(),t.remove();let f=t.nextElementSibling;if(f&&f.classList.contains("filter-group-separator-container"))f.remove();else{let h=t.previousElementSibling;h&&h.classList.contains("filter-group-separator-container")&&h.remove()}this.updateGroupSeparators()}).extraSettingsEl.addClasses(["remove-group-btn","clickable-icon"]);let u=t.createDiv({cls:["filters-list"]});return e.filters.forEach(m=>{let f=this.createFilterItemElement(m,e);u.appendChild(f)}),this.updateFilterConjunctions(u,e.groupCondition),t.createDiv({cls:["group-footer"]}).createEl("div",{cls:["add-filter-btn","compact-btn"]},m=>{m.createEl("span",{cls:"add-filter-btn-icon"},f=>{(0,ua.setIcon)(f,"plus")}),m.createEl("span",{cls:"add-filter-btn-text",text:d("Add filter")}),this.registerDomEvent(m,"click",()=>{this.addFilterToGroup(e,u)})}),t}addFilterGroup(e=null,t=null){if(!this.filterGroupsContainerEl){console.warn("TaskFilterComponent: filterGroupsContainerEl not initialized yet");return}let r=e?e.id:this.generateId(),i;e&&t?i={id:r,groupCondition:e.groupCondition,filters:e.filters.map(l=>({...l,id:this.generateId()}))}:i={id:r,groupCondition:"all",filters:[]};let s=t?this.rootFilterState.filterGroups.findIndex(l=>l.id===t.id)+1:this.rootFilterState.filterGroups.length;this.rootFilterState.filterGroups.splice(s,0,i),this.saveStateToLocalStorage();let o=this.createFilterGroupElement(i);t&&t.parentNode===this.filterGroupsContainerEl?this.filterGroupsContainerEl.insertBefore(o,t.nextSibling):this.filterGroupsContainerEl.appendChild(o),(!e||e.filters.length===0)&&!t?this.addFilterToGroup(i,o.querySelector(".filters-list")):e&&e.filters.length===0&&t&&this.addFilterToGroup(i,o.querySelector(".filters-list")),this.updateGroupSeparators(),this.makeSortableGroups()}createFilterItemElement(e,t){let r=this.hostEl.createEl("div",{attr:{id:e.id},cls:["filter-item"]});t.groupCondition==="any"?r.createEl("span",{cls:["filter-conjunction"],text:d("OR")}):t.groupCondition==="none"?r.createEl("span",{cls:["filter-conjunction"],text:d("AND NOT")}):r.createEl("span",{cls:["filter-conjunction"],text:d("AND")});let i=new ua.DropdownComponent(r);i.selectEl.addClasses(["filter-property-select","compact-select"]);let s=new ua.DropdownComponent(r);s.selectEl.addClasses(["filter-condition-select","compact-select"]);let o=r.createEl("input",{cls:["filter-value-input","compact-input"]});o.hide(),i.onChange(p=>{e.property=p,this.saveStateToLocalStorage(!1),setTimeout(()=>this.saveStateToLocalStorage(!0),300),this.updateFilterPropertyOptions(r,e,i,s,o)});let l=(p,m)=>{let h=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(p);m==="completed"&&(p==="isTrue"||p==="isFalse")&&(h=!1),(p==="isEmpty"||p==="isNotEmpty")&&(h=!1),o.style.display=h?"block":"none",!h&&e.value!==void 0&&(e.value=void 0,this.saveStateToLocalStorage(),o.value="")};s.onChange(p=>{e.condition=p,this.saveStateToLocalStorage(!1),setTimeout(()=>this.saveStateToLocalStorage(!0),300),l(p,e.property),o.style.display==="none"&&o.value}),o.value=e.value||"";let c;return this.registerDomEvent(o,"input",p=>{e.value=p.target.value,this.saveStateToLocalStorage(!1),clearTimeout(c),c=setTimeout(()=>{this.saveStateToLocalStorage(!0)},400)}),new ua.ExtraButtonComponent(r).setIcon("trash-2").setTooltip(d("Remove filter")).onClick(()=>{t.filters=t.filters.filter(p=>p.id!==e.id),this.saveStateToLocalStorage(),r.remove(),this.updateFilterConjunctions(r.parentElement,t.groupCondition)}).extraSettingsEl.addClasses(["remove-filter-btn","clickable-icon"]),this.updateFilterPropertyOptions(r,e,i,s,o),r}addFilterToGroup(e,t){let i={id:this.generateId(),property:"content",condition:"contains",value:""};e.filters.push(i),this.saveStateToLocalStorage();let s=this.createFilterItemElement(i,e);t.appendChild(s),this.updateFilterConjunctions(t,e.groupCondition)}updateFilterPropertyOptions(e,t,r,i,s){let o=t.property;r.selectEl.options.length===0&&r.addOptions({content:d("Content"),status:d("Status"),priority:d("Priority"),dueDate:d("Due Date"),startDate:d("Start Date"),scheduledDate:d("Scheduled Date"),tags:d("Tags"),filePath:d("File Path"),completed:d("Completed")}),r.setValue(o);let l=[];switch(s.type="text",o){case"content":case"filePath":case"status":l=[{value:"contains",text:d("contains")},{value:"doesNotContain",text:d("does not contain")},{value:"is",text:d("is")},{value:"isNot",text:d("is not")},{value:"startsWith",text:d("starts with")},{value:"endsWith",text:d("ends with")},{value:"isEmpty",text:d("is empty")},{value:"isNotEmpty",text:d("is not empty")}];break;case"priority":l=[{value:"is",text:d("is")},{value:"isNot",text:d("is not")},{value:"isEmpty",text:d("is empty")},{value:"isNotEmpty",text:d("is not empty")}];break;case"dueDate":case"startDate":case"scheduledDate":s.type="date",l=[{value:"is",text:d("is")},{value:"isNot",text:d("is not")},{value:">",text:">"},{value:"<",text:"<"},{value:">=",text:">="},{value:"<=",text:"<="},{value:"isEmpty",text:d("is empty")},{value:"isNotEmpty",text:d("is not empty")}];break;case"tags":l=[{value:"contains",text:d("contains")},{value:"doesNotContain",text:d("does not contain")},{value:"isEmpty",text:d("is empty")},{value:"isNotEmpty",text:d("is not empty")}];break;case"completed":l=[{value:"isTrue",text:d("is true")},{value:"isFalse",text:d("is false")}];break;default:l=[{value:"isSet",text:d("is set")},{value:"isNotSet",text:d("is not set")},{value:"equals",text:d("equals")},{value:"contains",text:d("contains")}]}i.selectEl.empty(),l.forEach(g=>i.addOption(g.value,g.text));let c=t.condition,u=!1;l.some(g=>g.value===c)?i.setValue(c):l.length>0&&(i.setValue(l[0].value),t.condition=l[0].value,u=!0);let p=i.getValue(),f=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(p);o==="completed"&&(p==="isTrue"||p==="isFalse")&&(f=!1),(p==="isEmpty"||p==="isNotEmpty")&&(f=!1);let h=!1;s.style.display=f?"block":"none",f?t.value!==void 0?s.value=t.value:s.value!==""&&(s.value=""):(s.value="",t.value!==void 0&&(t.value=void 0,h=!0)),(u||h)&&this.saveStateToLocalStorage()}updateFilterConjunctions(e,t="all"){if(!e)return;e.querySelectorAll(".filter-item").forEach((i,s)=>{let o=i.querySelector(".filter-conjunction");o&&(s!==0?(o.show(),t==="any"?o.textContent=d("OR"):t==="none"?o.textContent=d("NOR"):o.textContent=d("AND")):(o.hide(),t==="any"?o.textContent=d("OR"):t==="none"?o.textContent=d("NOR"):o.textContent=d("AND")))})}updateGroupSeparators(){var t,r;(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filter-group-separator-container").forEach(i=>i.remove());let e=Array.from(((r=this.filterGroupsContainerEl)==null?void 0:r.children)||[]).filter(i=>i.classList.contains("filter-group"));e.length>1&&e.forEach((i,s)=>{var o;if(s{let t=e;if(t.oldDraggableIndex===void 0||t.newDraggableIndex===void 0)return;let r=this.rootFilterState.filterGroups.splice(t.oldDraggableIndex,1)[0];this.rootFilterState.filterGroups.splice(t.newDraggableIndex,0,r),this.saveStateToLocalStorage(),this.updateGroupSeparators()}}))}updateFilterState(e,t){this.rootFilterState.filterGroups=e,this.rootFilterState.rootCondition=t,this.saveStateToLocalStorage()}getFilterState(){return JSON.parse(JSON.stringify(this.rootFilterState))}loadFilterState(e){var t;try{this.groupsSortable&&(this.groupsSortable.destroy(),this.groupsSortable=void 0)}catch(r){console.warn("Error destroying groups sortable:",r),this.groupsSortable=void 0}(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filters-list").forEach(r=>{try{r.sortableInstance&&(r.sortableInstance.destroy(),r.sortableInstance=void 0)}catch(i){console.warn("Error destroying filter list sortable:",i),r.sortableInstance=void 0}}),this.rootFilterState=JSON.parse(JSON.stringify(e)),this.saveStateToLocalStorage(),this.render()}saveStateToLocalStorage(e=!0){this.app&&(this.app.saveLocalStorage(this.leafId?`task-genius-view-filter-${this.leafId}`:"task-genius-view-filter",this.rootFilterState),e&&this.app.workspace.trigger("task-genius:filter-changed",this.rootFilterState,this.leafId||void 0))}openSaveConfigModal(){if(!this.plugin)return;new fl(this.app,this.plugin,"save",this.getFilterState(),t=>{t.name}).open()}openLoadConfigModal(){if(!this.plugin)return;new fl(this.app,this.plugin,"load",void 0,void 0,t=>{this.loadFilterState(t.filterState),t.name}).open()}};var cs=class extends Se.Modal{constructor(e,t,r,i,s,o){super(e);this.isCopyMode=!1;this.sourceViewId=null;this.hasChanges=!1;this.taskFilterComponent=null;this.advancedFilterContainer=null;this.filterChangeHandler=null;if(this.plugin=t,this.isCreate=r===null,this.isCopyMode=o!==void 0,this.isCreate){let l=`custom_${Date.now()}`;if(this.isCopyMode&&o){if(this.sourceViewId=o.id,this.viewConfig={...JSON.parse(JSON.stringify(o)),id:l,name:d("Copy of ")+o.name,type:"custom"},!this.viewConfig.region){let c=["habit","calendar","gantt","kanban"];this.viewConfig.region=c.includes(o.id)?"bottom":"top"}this.viewFilterRule=o.filterRules?JSON.parse(JSON.stringify(o.filterRules)):i||{}}else this.viewConfig={id:l,name:d("New custom view"),icon:"list-plus",type:"custom",visible:!0,hideCompletedAndAbandonedTasks:!1,filterBlanks:!1,sortCriteria:[],region:"top"},this.viewFilterRule=i||{}}else if(this.viewConfig=JSON.parse(JSON.stringify(r)),this.viewFilterRule=JSON.parse(JSON.stringify(i||{})),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]),!this.viewConfig.region){let l=["habit","calendar","gantt","kanban"];this.viewConfig.region=l.includes(this.viewConfig.id)?"bottom":"top"}this.originalViewConfig=JSON.stringify(this.viewConfig),this.originalViewFilterRule=JSON.stringify(this.viewFilterRule),this.onSave=s}onOpen(){this.display()}display(){var p,m,f,h,g,k,y,b;let{contentEl:e}=this;e.empty(),this.modalEl.toggleClass("task-genius-view-config-modal",!0);let t=[{value:-1,name:d("Locale Default")},{value:0,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,7))},{value:1,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,8))},{value:2,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,9))},{value:3,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,10))},{value:4,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,11))},{value:5,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,12))},{value:6,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,13))}],r;if(this.isCreate?this.isCopyMode?r=d("Copy view: ")+(this.sourceViewId||"Unknown"):r=d("Create custom view"):r=d("Edit view: ")+this.viewConfig.name,this.titleEl.setText(r),this.isCopyMode&&this.sourceViewId){let v=this.plugin.settings.viewConfiguration.find(w=>w.id===this.sourceViewId);if(v){let w=e.createDiv({cls:"copy-mode-info"});w.createEl("p",{text:d("Creating a copy based on: ")+v.name,cls:"setting-item-description"}),w.createEl("p",{text:d("You can modify all settings below. The original view will remain unchanged."),cls:"setting-item-description"})}}new Se.Setting(e).setName(d("View Name")).addText(v=>{this.nameInput=v,v.setValue(this.viewConfig.name).setPlaceholder(d("My Custom Task View")),v.onChange(()=>this.checkForChanges())}),new Se.Setting(e).setName(d("Icon name")).setDesc(d("Enter any Lucide icon name (e.g., list-checks, filter, inbox)")).addText(v=>{v.inputEl.hide(),this.iconInput=v,v.setValue(this.viewConfig.icon).setPlaceholder("list-plus"),v.onChange(()=>this.checkForChanges())}).addButton(v=>{try{v.setIcon(this.viewConfig.icon)}catch(w){console.error("Error setting icon:",w)}vk(v,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:w=>{this.viewConfig.icon=w,this.checkForChanges();try{(0,Se.setIcon)(v.buttonEl,w)}catch(x){console.error("Error setting icon:",x)}this.iconInput.setValue(w)}})});let s=["habit","calendar","gantt","kanban"].includes(this.viewConfig.id)?"bottom":"top";new Se.Setting(e).setName(d("Sidebar Position")).setDesc(d("Choose where this view appears in the sidebar. Views in the bottom section are visually separated from top section views.")).addDropdown(v=>{v.addOption("top",d("Top Section")).addOption("bottom",d("Bottom Section")).setValue(this.viewConfig.region||s).onChange(w=>{this.viewConfig.region=w,this.checkForChanges()})});let o=this.viewConfig.id==="calendar"||this.isCopyMode&&this.sourceViewId==="calendar"||((p=this.viewConfig.specificConfig)==null?void 0:p.viewType)==="calendar",l=this.viewConfig.id==="kanban"||this.isCopyMode&&this.sourceViewId==="kanban"||((m=this.viewConfig.specificConfig)==null?void 0:m.viewType)==="kanban",c=this.viewConfig.id==="forecast"||this.isCopyMode&&this.sourceViewId==="forecast"||((f=this.viewConfig.specificConfig)==null?void 0:f.viewType)==="forecast",u=this.viewConfig.id==="quadrant"||this.isCopyMode&&this.sourceViewId==="quadrant"||((h=this.viewConfig.specificConfig)==null?void 0:h.viewType)==="quadrant";if(o)new Se.Setting(e).setName(d("First day of week")).setDesc(d("Overrides the locale default for calendar views.")).addDropdown(v=>{var x,T;t.forEach(C=>{v.addOption(String(C.value),C.name)});let w=-1;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="calendar"&&(w=(T=this.viewConfig.specificConfig.firstDayOfWeek)!=null?T:-1),v.setValue(String(w)),v.onChange(C=>{let S=parseInt(C),E=S===-1?void 0:S;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="calendar"?this.viewConfig.specificConfig={viewType:"calendar",firstDayOfWeek:E}:this.viewConfig.specificConfig.firstDayOfWeek=E,this.checkForChanges()})}),new Se.Setting(e).setName(d("Hide weekends")).setDesc(d("Hide weekend columns (Saturday and Sunday) in calendar views.")).addToggle(v=>{var x,T;let w=(T=(x=this.viewConfig.specificConfig)==null?void 0:x.hideWeekends)!=null?T:!1;v.setValue(w),v.onChange(C=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="calendar"?this.viewConfig.specificConfig={viewType:"calendar",firstDayOfWeek:void 0,hideWeekends:C}:this.viewConfig.specificConfig.hideWeekends=C,this.checkForChanges()})});else if(l){new Se.Setting(e).setName(d("Group by")).setDesc(d("Select which task property to use for creating columns")).addDropdown(w=>{var x;w.addOption("status",d("Status")).addOption("priority",d("Priority")).addOption("tags",d("Tags")).addOption("project",d("Project")).addOption("dueDate",d("Due Date")).addOption("scheduledDate",d("Scheduled Date")).addOption("startDate",d("Start Date")).addOption("context",d("Context")).addOption("filePath",d("File Path")).setValue(((x=this.viewConfig.specificConfig)==null?void 0:x.groupBy)||"status").onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:T}:this.viewConfig.specificConfig.groupBy=T,this.checkForChanges(),this.display()})}),new Se.Setting(e).setName(d("Show checkbox")).setDesc(d("Show a checkbox for each task in the kanban view.")).addToggle(w=>{var x;w.setValue((x=this.viewConfig.specificConfig)==null?void 0:x.showCheckbox),w.onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:T,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.showCheckbox=T,this.checkForChanges()})}),new Se.Setting(e).setName(d("Hide empty columns")).setDesc(d("Hide columns that have no tasks.")).addToggle(w=>{var x;w.setValue((x=this.viewConfig.specificConfig)==null?void 0:x.hideEmptyColumns),w.onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:T,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.hideEmptyColumns=T,this.checkForChanges()})}),new Se.Setting(e).setName(d("Default sort field")).setDesc(d("Default field to sort tasks by within each column.")).addDropdown(w=>{var x;w.addOption("priority",d("Priority")).addOption("dueDate",d("Due Date")).addOption("scheduledDate",d("Scheduled Date")).addOption("startDate",d("Start Date")).addOption("createdDate",d("Created Date")).setValue(((x=this.viewConfig.specificConfig)==null?void 0:x.defaultSortField)||"priority").onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:T,defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.defaultSortField=T,this.checkForChanges()})}),new Se.Setting(e).setName(d("Default sort order")).setDesc(d("Default order to sort tasks within each column.")).addDropdown(w=>{var x;w.addOption("asc",d("Ascending")).addOption("desc",d("Descending")).setValue(((x=this.viewConfig.specificConfig)==null?void 0:x.defaultSortOrder)||"desc").onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:T,groupBy:"status"}:this.viewConfig.specificConfig.defaultSortOrder=T,this.checkForChanges()})});let v=this.viewConfig.specificConfig;if(v!=null&&v.groupBy&&v.groupBy!=="status"){new Se.Setting(e).setName(d("Custom Columns")).setDesc(d("Configure custom columns for the selected grouping property")).setHeading();let w=e.createDiv({cls:"kanban-columns-container"}),x=()=>{w.empty(),v.customColumns||(v.customColumns=[]);let T=v.customColumns;T.length===0&&w.createEl("p",{text:d("No custom columns defined. Add columns below."),cls:"setting-item-description"}),T.forEach((C,S)=>{let E=new Se.Setting(w).setClass("kanban-column-row").addText(A=>{A.setValue(C.title).setPlaceholder(d("Column Title")).onChange(N=>{v.customColumns&&(v.customColumns[S].title=N,this.checkForChanges())})}).addText(A=>{var N;A.setValue(((N=C.value)==null?void 0:N.toString())||"").setPlaceholder(d("Value")).onChange(I=>{if(v.customColumns){let R=I;if(v.groupBy==="priority"&&I){let j=parseInt(I);R=isNaN(j)?I:j}v.customColumns[S].value=R,this.checkForChanges()}})});E.addExtraButton(A=>{A.setIcon("arrow-up").setTooltip(d("Move Up")).setDisabled(S===0).onClick(()=>{if(S>0&&v.customColumns){let N=v.customColumns.splice(S,1)[0];v.customColumns.splice(S-1,0,N),v.customColumns.forEach((I,R)=>{I.order=R}),this.checkForChanges(),x()}})}),E.addExtraButton(A=>{A.setIcon("arrow-down").setTooltip(d("Move Down")).setDisabled(S===T.length-1).onClick(()=>{if(S{I.order=R}),this.checkForChanges(),x()}})}),E.addExtraButton(A=>{A.setIcon("trash").setTooltip(d("Remove Column")).onClick(()=>{v.customColumns&&(v.customColumns.splice(S,1),v.customColumns.forEach((N,I)=>{N.order=I}),this.checkForChanges(),x())}),A.extraSettingsEl.addClass("mod-warning")})}),new Se.Setting(w).addButton(C=>{C.setButtonText(d("Add Column")).setCta().onClick(()=>{v.customColumns||(v.customColumns=[]);let S={id:`column_${Date.now()}`,title:d("New Column"),value:"",order:v.customColumns.length};v.customColumns.push(S),this.checkForChanges(),x()})}).addButton(C=>{C.setButtonText(d("Reset Columns")).onClick(()=>{v.customColumns&&(v.customColumns=[],this.checkForChanges(),x())})})};x()}}else if(c)new Se.Setting(e).setName(d("First day of week")).setDesc(d("Overrides the locale default for forecast views.")).addDropdown(v=>{var x,T;t.forEach(C=>{v.addOption(String(C.value),C.name)});let w=-1;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="forecast"&&(w=(T=this.viewConfig.specificConfig.firstDayOfWeek)!=null?T:-1),v.setValue(String(w)),v.onChange(C=>{let S=parseInt(C),E=S===-1?void 0:S;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="forecast"?this.viewConfig.specificConfig={viewType:"forecast",firstDayOfWeek:E}:this.viewConfig.specificConfig.firstDayOfWeek=E,this.checkForChanges()})}),new Se.Setting(e).setName(d("Hide weekends")).setDesc(d("Hide weekend columns (Saturday and Sunday) in forecast calendar.")).addToggle(v=>{var x,T;let w=(T=(x=this.viewConfig.specificConfig)==null?void 0:x.hideWeekends)!=null?T:!1;v.setValue(w),v.onChange(C=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="forecast"?this.viewConfig.specificConfig={viewType:"forecast",firstDayOfWeek:void 0,hideWeekends:C}:this.viewConfig.specificConfig.hideWeekends=C,this.checkForChanges()})});else if(u){new Se.Setting(e).setName(d("Quadrant Classification Method")).setDesc(d("Choose how to classify tasks into quadrants")).addToggle(x=>{var C,S;let T=(S=(C=this.viewConfig.specificConfig)==null?void 0:C.usePriorityForClassification)!=null?S:!1;x.setValue(T),x.onChange(E=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="quadrant"?this.viewConfig.specificConfig={viewType:"quadrant",hideEmptyQuadrants:!1,autoUpdatePriority:!0,autoUpdateTags:!0,showTaskCount:!0,defaultSortField:"priority",defaultSortOrder:"desc",urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3,usePriorityForClassification:E,urgentPriorityThreshold:4,importantPriorityThreshold:3,customQuadrantColors:!1,quadrantColors:{urgentImportant:"#dc3545",notUrgentImportant:"#28a745",urgentNotImportant:"#ffc107",notUrgentNotImportant:"#6c757d"}}:this.viewConfig.specificConfig.usePriorityForClassification=E,this.checkForChanges(),this.display()})});let v=this.viewConfig.specificConfig;((g=v==null?void 0:v.usePriorityForClassification)!=null?g:!1)?(new Se.Setting(e).setName(d("Urgent Priority Threshold")).setDesc(d("Tasks with priority >= this value are considered urgent (1-5)")).addSlider(x=>{var T;x.setLimits(1,5,1).setValue((T=v==null?void 0:v.urgentPriorityThreshold)!=null?T:4).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentPriorityThreshold=C,this.checkForChanges())})}),new Se.Setting(e).setName(d("Important Priority Threshold")).setDesc(d("Tasks with priority >= this value are considered important (1-5)")).addSlider(x=>{var T;x.setLimits(1,5,1).setValue((T=v==null?void 0:v.importantPriorityThreshold)!=null?T:3).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.importantPriorityThreshold=C,this.checkForChanges())})})):(new Se.Setting(e).setName(d("Urgent Tag")).setDesc(d("Tag to identify urgent tasks (e.g., #urgent, #fire)")).addText(x=>{var T;x.setValue((T=v==null?void 0:v.urgentTag)!=null?T:"#urgent").setPlaceholder("#urgent").onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentTag=C,this.checkForChanges())})}),new Se.Setting(e).setName(d("Important Tag")).setDesc(d("Tag to identify important tasks (e.g., #important, #key)")).addText(x=>{var T;x.setValue((T=v==null?void 0:v.importantTag)!=null?T:"#important").setPlaceholder("#important").onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.importantTag=C,this.checkForChanges())})}),new Se.Setting(e).setName(d("Urgent Threshold Days")).setDesc(d("Tasks due within this many days are considered urgent")).addSlider(x=>{var T;x.setLimits(1,14,1).setValue((T=v==null?void 0:v.urgentThresholdDays)!=null?T:3).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentThresholdDays=C,this.checkForChanges())})})),new Se.Setting(e).setName(d("Auto Update Priority")).setDesc(d("Automatically update task priority when moved between quadrants")).addToggle(x=>{var T;x.setValue((T=v==null?void 0:v.autoUpdatePriority)!=null?T:!0).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdatePriority=C,this.checkForChanges())})}),new Se.Setting(e).setName(d("Auto Update Tags")).setDesc(d("Automatically add/remove urgent/important tags when moved between quadrants")).addToggle(x=>{var T;x.setValue((T=v==null?void 0:v.autoUpdateTags)!=null?T:!0).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdateTags=C,this.checkForChanges())})}),new Se.Setting(e).setName(d("Hide Empty Quadrants")).setDesc(d("Hide quadrants that have no tasks")).addToggle(x=>{var T;x.setValue((T=v==null?void 0:v.hideEmptyQuadrants)!=null?T:!1).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.hideEmptyQuadrants=C,this.checkForChanges())})})}if((this.isCreate||((k=this.viewConfig.specificConfig)==null?void 0:k.viewType)==="twocolumn"||this.viewConfig.type==="custom")&&((this.isCreate&&!this.isCopyMode||this.viewConfig.type==="custom")&&new Se.Setting(e).setName(d("View type")).setDesc(d("Select the type of view to create")).addDropdown(v=>{var w;v.addOption("standard",d("Standard view")).addOption("twocolumn",d("Two column view")).setValue(((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"?"twocolumn":"standard").onChange(x=>{x==="twocolumn"?this.viewConfig.specificConfig={viewType:"twocolumn",taskPropertyKey:"tags",leftColumnTitle:d("Items"),rightColumnDefaultTitle:d("Tasks"),multiSelectText:d("selected items"),emptyStateText:d("No items selected")}:delete this.viewConfig.specificConfig,this.checkForChanges(),this.display()})}),((y=this.viewConfig.specificConfig)==null?void 0:y.viewType)==="twocolumn"&&(new Se.Setting(e).setName(d("Two column view settings")).setHeading(),new Se.Setting(e).setName(d("Group by task property")).setDesc(d("Select which task property to use for left column grouping")).addDropdown(v=>{v.addOption("tags",d("Tags")).addOption("project",d("Project")).addOption("priority",d("Priority")).addOption("context",d("Context")).addOption("status",d("Status")).addOption("dueDate",d("Due Date")).addOption("scheduledDate",d("Scheduled Date")).addOption("startDate",d("Start Date")).addOption("filePath",d("File Path")).setValue(this.viewConfig.specificConfig.taskPropertyKey||"tags").onChange(w=>{var x;if(((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"){if(this.viewConfig.specificConfig.taskPropertyKey=w,!this.leftColumnTitleInput.getValue()){let T=d("Items");switch(w){case"tags":T=d("Tags");break;case"project":T=d("Projects");break;case"priority":T=d("Priorities");break;case"context":T=d("Contexts");break;case"status":T=d("Status");break;case"dueDate":T=d("Due Dates");break;case"scheduledDate":T=d("Scheduled Dates");break;case"startDate":T=d("Start Dates");break;case"filePath":T=d("Files");break}this.leftColumnTitleInput.setValue(T),this.viewConfig.specificConfig.leftColumnTitle=T}this.checkForChanges()}})}),new Se.Setting(e).setName(d("Left column title")).setDesc(d("Title for the left column (items list)")).addText(v=>{this.leftColumnTitleInput=v,v.setValue(this.viewConfig.specificConfig.leftColumnTitle||d("Items")),v.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.leftColumnTitle=w,this.checkForChanges())})}),new Se.Setting(e).setName(d("Right column title")).setDesc(d("Default title for the right column (tasks list)")).addText(v=>{this.rightColumnTitleInput=v,v.setValue(this.viewConfig.specificConfig.rightColumnDefaultTitle||d("Tasks")),v.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.rightColumnDefaultTitle=w,this.checkForChanges())})}),new Se.Setting(e).setName(d("Multi-select Text")).setDesc(d("Text to show when multiple items are selected")).addText(v=>{this.multiSelectTextInput=v,v.setValue(this.viewConfig.specificConfig.multiSelectText||d("selected items")),v.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.multiSelectText=w,this.checkForChanges())})}),new Se.Setting(e).setName(d("Empty state text")).setDesc(d("Text to show when no items are selected")).addText(v=>{this.emptyStateTextInput=v,v.setValue(this.viewConfig.specificConfig.emptyStateText||d("No items selected")),v.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.emptyStateText=w,this.checkForChanges())})}))),new Se.Setting(e).setName(d("Filter Rules")).setHeading(),new Se.Setting(e).setName(d("Hide completed and abandoned tasks")).setDesc(d("Hide completed and abandoned tasks in this view.")).addToggle(v=>{v.setValue(this.viewConfig.hideCompletedAndAbandonedTasks),v.onChange(w=>{this.viewConfig.hideCompletedAndAbandonedTasks=w,this.checkForChanges()})}),new Se.Setting(e).setName(d("Filter blanks")).setDesc(d("Filter out blank tasks in this view.")).addToggle(v=>{v.setValue(this.viewConfig.filterBlanks),v.onChange(w=>{this.viewConfig.filterBlanks=w,this.checkForChanges()})}),new Se.Setting(e).setName(d("Advanced Filtering")).setDesc(d("Use advanced multi-group filtering with complex conditions")).addToggle(v=>{let w=!!this.viewFilterRule.advancedFilter;this.viewFilterRule.advancedFilter,v.setValue(w),v.onChange(x=>{x?(this.viewFilterRule.advancedFilter||(this.viewFilterRule.advancedFilter={rootCondition:"any",filterGroups:[]},this.viewFilterRule.advancedFilter),this.setupAdvancedFilter()):(delete this.viewFilterRule.advancedFilter,this.cleanupAdvancedFilter()),this.checkForChanges()})}),this.advancedFilterContainer=e.createDiv({cls:"advanced-filter-container"}),this.viewFilterRule.advancedFilter?this.setupAdvancedFilter():this.advancedFilterContainer.style.display="none",!["kanban","gantt","calendar"].includes(((b=this.viewConfig.specificConfig)==null?void 0:b.viewType)||"")){new Se.Setting(e).setName(d("Sort Criteria")).setDesc(d("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let v=e.createDiv({cls:"sort-criteria-container"}),w=()=>{v.empty(),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]);let x=this.viewConfig.sortCriteria;x.length===0&&v.createEl("p",{text:d("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),x.forEach((T,C)=>{let S=new Se.Setting(v).setClass("sort-criterion-row").addDropdown(E=>{E.addOption("status",d("Status")).addOption("priority",d("Priority")).addOption("dueDate",d("Due Date")).addOption("startDate",d("Start Date")).addOption("scheduledDate",d("Scheduled Date")).addOption("content",d("Content")).setValue(T.field).onChange(A=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[C].field=A,this.checkForChanges())})}).addDropdown(E=>{E.addOption("asc",d("Ascending")).addOption("desc",d("Descending")).setValue(T.order).onChange(A=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[C].order=A,this.checkForChanges())}),T.field==="priority"?E.selectEl.title=d("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(T.field)?E.selectEl.title=d("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):T.field==="status"?E.selectEl.title=d("Ascending respects status order (Overdue first). Descending reverses it."):E.selectEl.title=d("Ascending: A-Z. Descending: Z-A")});S.addExtraButton(E=>{E.setIcon("arrow-up").setTooltip(d("Move Up")).setDisabled(C===0).onClick(()=>{if(C>0&&this.viewConfig.sortCriteria){let A=this.viewConfig.sortCriteria.splice(C,1)[0];this.viewConfig.sortCriteria.splice(C-1,0,A),this.checkForChanges(),w()}})}),S.addExtraButton(E=>{E.setIcon("arrow-down").setTooltip(d("Move Down")).setDisabled(C===x.length-1).onClick(()=>{if(C{E.setIcon("trash").setTooltip(d("Remove Criterion")).onClick(()=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria.splice(C,1),this.checkForChanges(),w())}),E.extraSettingsEl.addClass("mod-warning")})}),new Se.Setting(v).addButton(T=>{T.setButtonText(d("Add Sort Criterion")).setCta().onClick(()=>{let C={field:"status",order:"asc"};this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]),this.viewConfig.sortCriteria.push(C),this.checkForChanges(),w()})}).addButton(T=>{T.setButtonText(d("Reset to Defaults")).onClick(()=>{this.viewConfig.sortCriteria=[],this.checkForChanges(),w()})})};w()}new Se.Setting(e).addButton(v=>{v.setButtonText(d("Save")).setCta().onClick(()=>{this.saveChanges()})}).addButton(v=>{v.setButtonText(d("Cancel")).onClick(()=>{this.close()})})}parseStringToArray(e){return!e||e.trim()===""?[]:e.split(",").map(t=>t.trim()).filter(t=>t!=="")}checkForChanges(){let e=JSON.stringify(this.viewConfig),t=JSON.stringify(this.getCurrentFilterRule());this.hasChanges=e!==this.originalViewConfig||t!==this.originalViewFilterRule}getCurrentFilterRule(){let e={};if(this.taskFilterComponent)try{let t=this.taskFilterComponent.getFilterState();t&&t.filterGroups.length>0&&(e.advancedFilter=t)}catch(t){console.warn("Error getting current filter state:",t)}else this.viewFilterRule.advancedFilter&&(e.advancedFilter=this.viewFilterRule.advancedFilter);return e}saveChanges(){this.viewConfig.name=this.nameInput.getValue().trim()||d("Unnamed View"),this.viewConfig.icon=this.iconInput.getValue().trim()||"list",this.viewFilterRule=this.getCurrentFilterRule(),this.originalViewConfig=JSON.stringify(this.viewConfig),this.originalViewFilterRule=JSON.stringify(this.viewFilterRule),this.hasChanges=!1,this.onSave(this.viewConfig,this.viewFilterRule),this.close(),new Se.Notice(d("View configuration saved."))}close(){this.hasChanges?new Ba(this.plugin,{title:d("Unsaved Changes"),message:d("You have unsaved changes. Save before closing?"),confirmText:d("Save"),cancelText:d("Cancel"),onConfirm:e=>{if(e){this.saveChanges();return}super.close()}}).open():super.close()}onClose(){this.cleanupAdvancedFilter();let{contentEl:e}=this;e.empty()}saveSettingsUpdate(){this.checkForChanges()}setupAdvancedFilter(){if(!this.advancedFilterContainer)return;this.cleanupAdvancedFilter(),this.taskFilterComponent=new Qi(this.advancedFilterContainer,this.app,`view-config-${this.viewConfig.id}`,this.plugin),this.taskFilterComponent;let e=this.viewFilterRule.advancedFilter?JSON.parse(JSON.stringify(this.viewFilterRule.advancedFilter)):{rootCondition:"any",filterGroups:[]};this.app.saveLocalStorage(`task-genius-view-filter-view-config-${this.viewConfig.id}`,e),this.taskFilterComponent.onload(),this.taskFilterComponent.loadFilterState(e),this.filterChangeHandler=(t,r)=>{this.taskFilterComponent&&r===`view-config-${this.viewConfig.id}`&&(this.viewFilterRule.advancedFilter=t,this.checkForChanges())},this.app.workspace.on("task-genius:filter-changed",this.filterChangeHandler),this.advancedFilterContainer.style.display="block"}cleanupAdvancedFilter(){if(this.taskFilterComponent){try{this.taskFilterComponent.onunload()}catch(e){console.warn("Error unloading task filter component:",e)}this.taskFilterComponent=null}this.advancedFilterContainer&&(this.advancedFilterContainer.empty(),this.advancedFilterContainer.style.display="none"),this.filterChangeHandler&&(this.app.workspace.off("task-genius:filter-changed",this.filterChangeHandler),this.filterChangeHandler=null)}};function wC(n,a){if(new ut.Setting(a).setName(d("View Configuration")).setDesc(d("Configure the Task Genius sidebar views, visibility, order, and create custom views.")).setHeading(),new ut.Setting(a).setName(d("Enable Task Genius Views")).setDesc(d("Enable Task Genius sidebar views to display and manage tasks. Requires the indexer to be enabled.")).addToggle(k=>{k.setValue(n.plugin.settings.enableView),k.onChange(y=>{if(y&&!n.plugin.settings.enableIndexer){new ut.Notice(d("Cannot enable views without indexer. Please enable the indexer first in Index & Sources settings.")),k.setValue(!1);return}n.plugin.settings.enableView=y,n.applySettingsUpdate(),n.display()})}),!n.plugin.settings.enableView){new ut.Setting(a).setName(d("Views are disabled")).setDesc(d("Enable Task Genius Views above to configure view settings."));return}new ut.Setting(a).setName(d("Default view mode")).setDesc(d("Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.")).addDropdown(k=>{k.addOption("list",d("List View")).addOption("tree",d("Tree View")).setValue(n.plugin.settings.defaultViewMode).onChange(y=>{n.plugin.settings.defaultViewMode=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Project Tree View Settings")).setDesc(d("Configure how projects are displayed in tree view.")).setHeading(),new ut.Setting(a).setName(d("Default project view mode")).setDesc(d("Choose whether to display projects as a flat list or hierarchical tree by default.")).addDropdown(k=>{k.addOption("list",d("List View")).addOption("tree",d("Tree View")).setValue(n.plugin.settings.projectViewDefaultMode).onChange(y=>{n.plugin.settings.projectViewDefaultMode=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Auto-expand project tree")).setDesc(d("Automatically expand all project nodes when opening the project view in tree mode.")).addToggle(k=>{k.setValue(n.plugin.settings.projectTreeAutoExpand).onChange(y=>{n.plugin.settings.projectTreeAutoExpand=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Show empty project folders")).setDesc(d("Display project folders even if they don't contain any tasks.")).addToggle(k=>{k.setValue(n.plugin.settings.projectTreeShowEmptyFolders).onChange(y=>{n.plugin.settings.projectTreeShowEmptyFolders=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Project path separator")).setDesc(d("Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').")).addText(k=>{k.setPlaceholder("/").setValue(n.plugin.settings.projectPathSeparator).onChange(y=>{n.plugin.settings.projectPathSeparator=y||"/",n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Date and Time Display")).setDesc(d("Configure how dates and times are displayed in views.")).setHeading(),new ut.Setting(a).setName(d("Use relative time for date")).setDesc(d("Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.")).addToggle(k=>{k.setValue(n.plugin.settings.useRelativeTimeForDate),k.onChange(y=>{n.plugin.settings.useRelativeTimeForDate=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Editor Configuration")).setDesc(d("Configure inline editing and metadata positioning.")).setHeading(),new ut.Setting(a).setName(d("Enable inline editor")).setDesc(d("Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.")).addToggle(k=>{k.setValue(n.plugin.settings.enableInlineEditor),k.onChange(y=>{n.plugin.settings.enableInlineEditor=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Enable dynamic metadata positioning")).setDesc(d("Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.")).addToggle(k=>{k.setValue(n.plugin.settings.enableDynamicMetadataPositioning),k.onChange(y=>{n.plugin.settings.enableDynamicMetadataPositioning=y,n.applySettingsUpdate()})}),new ut.Setting(a).setName(d("Global Filter Configuration")).setDesc(d("Configure global filter rules that apply to all Views by default. Individual Views can override these settings.")).setHeading();let e=a.createDiv({cls:"global-filter-container"}),t=null,r=null,i=null;(()=>{t&&t.onunload(),n.plugin.settings.globalFilterRules.advancedFilter&&n.app.saveLocalStorage("task-genius-view-filter-global-filter",n.plugin.settings.globalFilterRules.advancedFilter),t=new Qi(e,n.app,"global-filter",n.plugin),t.onload();let k=y=>{t&&(n.plugin.settings.globalFilterRules={...n.plugin.settings.globalFilterRules,advancedFilter:y},n.applySettingsUpdate(),n.plugin.triggerViewUpdate())};n.plugin.registerEvent(n.app.workspace.on("task-genius:filter-changed",(y,b)=>{b==="global-filter"&&k(y)}))})(),a.cleanupGlobalFilter=()=>{t&&(t.onunload(),t=null),r&&(r.destroy(),r=null),i&&(i.destroy(),i=null)},new ut.Setting(a).setName(d("Manage Views")).setDesc(d("Drag views between sections or within sections to reorder them. Toggle visibility with the eye icon.")).setHeading();let o=a.createDiv({cls:"view-management-list"}),l=o.createDiv({cls:"view-section-container"});l.createDiv({cls:"view-section-header"}).createEl("h4",{text:d("Top Section")});let u=l.createDiv({cls:"view-section-items sortable-views",attr:{"data-region":"top"}}),p=o.createDiv({cls:"view-section-container"});p.createDiv({cls:"view-section-header"}).createEl("h4",{text:d("Bottom Section")});let f=p.createDiv({cls:"view-section-items sortable-views",attr:{"data-region":"bottom"}}),h=()=>{u.empty(),f.empty(),r&&(r.destroy(),r=null),i&&(i.destroy(),i=null);let k=[],y=[];n.plugin.settings.viewConfiguration.forEach(w=>{w.region==="bottom"?y.push(w):k.push(w)});let b=(w,x)=>{let T=x.createDiv({cls:"view-item sortable-view-item",attr:{"data-view-id":w.id}}),C=T.createDiv({cls:"view-drag-handle"});(0,ut.setIcon)(C,"grip-vertical");let S=T.createDiv({cls:"view-item-icon"});(0,ut.setIcon)(S,w.icon);let E=T.createDiv({cls:"view-item-info"});E.createEl("div",{cls:"view-item-name",text:w.name}),E.createEl("div",{cls:"view-item-type",text:`[${w.type}]`});let A=T.createDiv({cls:"view-item-actions"}),N=A.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":w.visible?d("Hide from sidebar"):d("Show in sidebar")}});(0,ut.setIcon)(N,w.visible?"eye":"eye-off"),N.onclick=async()=>{w.visible=!w.visible,await n.plugin.saveSettings(),h(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"visibility-changed",viewId:w.id})};let I=A.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":d("Edit View")}});(0,ut.setIcon)(I,"pencil"),I.onclick=()=>{if(w.id==="habit"){n.openTab("habit");return}new cs(n.app,n.plugin,w,w.filterRules||{},(j,W)=>{let B=n.plugin.settings.viewConfiguration.findIndex(X=>X.id===j.id);B!==-1&&(n.plugin.settings.viewConfiguration[B]={...j,filterRules:W},n.plugin.saveSettings(),h(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-updated",viewId:j.id}))}).open()};let R=A.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":d("Copy View")}});if((0,ut.setIcon)(R,"copy"),R.onclick=()=>{new cs(n.app,n.plugin,null,null,(j,W)=>{n.plugin.settings.viewConfiguration.some(B=>B.id===j.id)?new ut.Notice(d("Error: View ID already exists.")):(n.plugin.settings.viewConfiguration.push({...j,filterRules:W}),n.plugin.saveSettings(),h(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-copied",viewId:j.id}),new ut.Notice(d("View copied successfully: ")+j.name))},w).open()},w.type==="custom"){let j=A.createEl("button",{cls:["view-action-button","view-action-delete","clickable-icon"],attr:{"aria-label":d("Delete View")}});(0,ut.setIcon)(j,"trash"),j.onclick=()=>{let W=n.plugin.settings.viewConfiguration.findIndex(B=>B.id===w.id);W!==-1&&(n.plugin.settings.viewConfiguration.splice(W,1),n.applySettingsUpdate(),h())}}return T};k.forEach(w=>b(w,u)),y.forEach(w=>b(w,f));let v=()=>{let w=[];u.querySelectorAll(".sortable-view-item").forEach(x=>{let T=x.getAttribute("data-view-id"),C=n.plugin.settings.viewConfiguration.find(S=>S.id===T);C&&(C.region="top",w.push(C))}),f.querySelectorAll(".sortable-view-item").forEach(x=>{let T=x.getAttribute("data-view-id"),C=n.plugin.settings.viewConfiguration.find(S=>S.id===T);C&&(C.region="bottom",w.push(C))}),n.plugin.settings.viewConfiguration=w,n.plugin.saveSettings(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"order-changed"})};r=Lr.create(u,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{v()}}),i=Lr.create(f,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{v()}})};h();let g=a.createDiv();new ut.Setting(g).addButton(k=>{k.setButtonText(d("Add Custom View")).setCta().onClick(()=>{new cs(n.app,n.plugin,null,null,(y,b)=>{n.plugin.settings.viewConfiguration.some(v=>v.id===y.id)?new ut.Notice(d("Error: View ID already exists.")):(n.plugin.settings.viewConfiguration.push({...y,filterRules:b}),n.plugin.saveSettings(),h(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-added",viewId:y.id}))}).open()})})}var ar=require("obsidian");q();TC();function xC(n,a){if(new ar.Setting(a).setName(d("Workflow")).setDesc(d("Configure task workflows for project and process management")).setHeading(),new ar.Setting(a).setName(d("Enable workflow")).setDesc(d("Toggle to enable the workflow system for tasks")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.enableWorkflow).onChange(async i=>{n.plugin.settings.workflow.enableWorkflow=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),!n.plugin.settings.workflow.enableWorkflow)return;if(new ar.Setting(a).setName(d("Auto-add timestamp")).setDesc(d("Automatically add a timestamp to the task when it is created")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.autoAddTimestamp).onChange(async i=>{n.plugin.settings.workflow.autoAddTimestamp=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.workflow.autoAddTimestamp){let r=document.createDocumentFragment();r.createEl("span",{text:d("Timestamp format:")}),r.createEl("span",{text:" "});let i=r.createEl("span");if(new ar.Setting(a).setName(d("Timestamp format")).setDesc(r).addMomentFormat(s=>{s.setSampleEl(i),s.setDefaultFormat(n.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss"),s.setValue(n.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss").onChange(o=>{n.plugin.settings.workflow.timestampFormat=o,n.applySettingsUpdate(),s.updateSample()})}),new ar.Setting(a).setName(d("Remove timestamp when moving to next stage")).setDesc(d("Remove the timestamp from the current task when moving to the next stage")).addToggle(s=>{s.setValue(n.plugin.settings.workflow.removeTimestampOnTransition).onChange(async o=>{n.plugin.settings.workflow.removeTimestampOnTransition=o,n.applySettingsUpdate()})}),new ar.Setting(a).setName(d("Calculate spent time")).setDesc(d("Calculate and display the time spent on the task when moving to the next stage")).addToggle(s=>{s.setValue(n.plugin.settings.workflow.calculateSpentTime).onChange(async o=>{n.plugin.settings.workflow.calculateSpentTime=o,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.workflow.calculateSpentTime){let s=document.createDocumentFragment();s.createEl("span",{text:d("Format for spent time:")}),s.createEl("span",{text:" "});let o=s.createEl("span",{text:"HH:mm:ss"});s.createEl("span",{text:". "}),s.createEl("span",{text:d("Calculate spent time when move to next stage.")}),new ar.Setting(a).setName(d("Spent time format")).setDesc(s).addMomentFormat(l=>{l.setSampleEl(o),l.setDefaultFormat(n.plugin.settings.workflow.spentTimeFormat||"HH:mm:ss"),l.setValue(n.plugin.settings.workflow.spentTimeFormat||"HH:mm:ss").onChange(c=>{n.plugin.settings.workflow.spentTimeFormat=c,n.applySettingsUpdate(),l.updateSample()})}),new ar.Setting(a).setName(d("Calculate full spent time")).setDesc(d("Calculate the full spent time from the start of the task to the last stage")).addToggle(l=>{l.setValue(n.plugin.settings.workflow.calculateFullSpentTime).onChange(async c=>{n.plugin.settings.workflow.calculateFullSpentTime=c,n.applySettingsUpdate()})})}}new ar.Setting(a).setName(d("Auto remove last stage marker")).setDesc(d("Automatically remove the last stage marker when a task is completed")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.autoRemoveLastStageMarker).onChange(async i=>{n.plugin.settings.workflow.autoRemoveLastStageMarker=i,n.applySettingsUpdate()})}),new ar.Setting(a).setName(d("Auto-add next task")).setDesc(d("Automatically create a new task with the next stage when completing a task")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.autoAddNextTask).onChange(async i=>{n.plugin.settings.workflow.autoAddNextTask=i,n.applySettingsUpdate()})}),new ar.Setting(a).setName(d("Workflow definitions")).setDesc(d("Configure workflow templates for different types of processes"));let e=a.createDiv({cls:"workflow-container"}),t=()=>{e.empty();let r=n.plugin.settings.workflow.definitions;r.length===0&&e.createEl("div",{cls:"no-workflows-message",text:d("No workflow definitions created yet. Click 'Add New Workflow' to create one.")}),r.forEach((s,o)=>{let l=e.createDiv({cls:"workflow-row"}),c=new ar.Setting(l).setName(s.name).setDesc(s.description||"");c.addExtraButton(p=>{p.setIcon("pencil").setTooltip(d("Edit workflow")).onClick(()=>{new io(n.app,n.plugin,s,m=>{n.plugin.settings.workflow.definitions[o]=m,n.applySettingsUpdate(),t()}).open()})}),c.addExtraButton(p=>{p.setIcon("trash").setTooltip(d("Remove workflow")).onClick(()=>{let m=new ar.Modal(n.app);m.titleEl.setText(d("Delete workflow")),m.contentEl.createDiv().setText(d(`Are you sure you want to delete the '${s.name}' workflow?`));let h=m.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),g=h.createEl("button");g.setText(d("Cancel")),g.addEventListener("click",()=>{m.close()});let k=h.createEl("button");k.setText(d("Delete")),k.addClass("mod-warning"),k.addEventListener("click",()=>{n.plugin.settings.workflow.definitions.splice(o,1),n.applySettingsUpdate(),t(),m.close()}),m.open()})});let u=l.createDiv({cls:"workflow-stages-info"});if(s.stages.length>0){let p=u.createEl("ul");p.addClass("workflow-stages-list"),s.stages.forEach(m=>{let f=p.createEl("li");f.addClass("workflow-stage-item"),f.addClass(`workflow-stage-type-${m.type}`);let h=f.createSpan({text:m.name});m.type==="cycle"?(f.addClass("workflow-stage-cycle"),h.addClass("workflow-stage-name-cycle")):m.type==="terminal"&&(f.addClass("workflow-stage-terminal"),h.addClass("workflow-stage-name-terminal"))})}});let i=e.createDiv();new ar.Setting(i).addButton(s=>{s.setButtonText(d("Add New Workflow")).setCta().onClick(()=>{let o={id:Zs(),name:d("New Workflow"),description:"",stages:[],metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};new io(n.app,n.plugin,o,l=>{n.plugin.settings.workflow.definitions.push(l),n.applySettingsUpdate(),t()}).open()})})};t()}var Ft=require("obsidian");q();function CC(n,a){var e,t,r,i,s,o,l,c;if(new Ft.Setting(a).setName(d("Project Management")).setDesc(d("Configure project display, organization and metadata mappings")).setHeading(),n.plugin.settings.projectConfig||(n.plugin.settings.projectConfig={enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),new Ft.Setting(a).setName(d("Enable project features")).setDesc(d("Enable path-based, metadata-based, and config file-based project detection")).addToggle(u=>{var p;u.setValue(((p=n.plugin.settings.projectConfig)==null?void 0:p.enableEnhancedProject)||!1).onChange(async m=>{n.plugin.settings.projectConfig||(n.plugin.settings.projectConfig={enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),n.plugin.settings.projectConfig.enableEnhancedProject=m,await n.plugin.saveSettings(),setTimeout(()=>{n.display()},200)})}),(e=n.plugin.settings.projectConfig)!=null&&e.enableEnhancedProject){new Ft.Setting(a).setName(d("Path-based Project Mappings")).setDesc(d("Configure project names based on file paths")).setHeading();let u=a.createDiv({cls:"project-path-mappings-container"}),p=()=>{var y;u.empty(),n.plugin.settings.projectConfig||(n.plugin.settings.projectConfig={enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),(!n.plugin.settings.projectConfig.pathMappings||!Array.isArray(n.plugin.settings.projectConfig.pathMappings))&&(n.plugin.settings.projectConfig.pathMappings=[]);let k=((y=n.plugin.settings.projectConfig)==null?void 0:y.pathMappings)||[];k.length===0&&u.createDiv({cls:"no-mappings-message",text:d("No path mappings configured yet.")}),k.forEach((b,v)=>{let w=u.createDiv({cls:"project-path-mapping-row"});new Ft.Setting(w).setName(`${d("Mapping")} ${v+1}`).addText(x=>{x.setPlaceholder(d("Path pattern (e.g., Projects/Work)")).setValue(b.pathPattern).onChange(async T=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[v].pathPattern=T,await n.plugin.saveSettings())})}).addText(x=>{x.setPlaceholder(d("Project name")).setValue(b.projectName).onChange(async T=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[v].projectName=T,await n.plugin.saveSettings())})}).addToggle(x=>{x.setTooltip(d("Enabled")).setValue(b.enabled).onChange(async T=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[v].enabled=T,await n.plugin.saveSettings())})}).addButton(x=>{x.setIcon("trash").setTooltip(d("Remove")).onClick(async()=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings.splice(v,1),await n.plugin.saveSettings(),p())})})}),new Ft.Setting(u).addButton(b=>{b.setButtonText(d("Add Path Mapping")).setCta().onClick(async()=>{n.plugin.settings.projectConfig||(n.plugin.settings.projectConfig={enableEnhancedProject:!0,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),Array.isArray(n.plugin.settings.projectConfig.pathMappings)||(n.plugin.settings.projectConfig.pathMappings=[]),n.plugin.settings.projectConfig.pathMappings.push({pathPattern:"",projectName:"",enabled:!0}),await n.plugin.saveSettings(),setTimeout(()=>{p()},100)})})};p(),new Ft.Setting(a).setName(d("Metadata-based Project Detection")).setDesc(d("Configure project detection from file frontmatter")).setHeading(),new Ft.Setting(a).setName(d("Enable metadata project detection")).setDesc(d("Detect project from file frontmatter metadata")).addToggle(k=>{var y,b;k.setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)==null?void 0:b.enabled)||!1).onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.enabled=v,await n.plugin.saveSettings())})}),new Ft.Setting(a).setName(d("Metadata key")).setDesc(d("The frontmatter key to use for project name")).addText(k=>{var y,b;k.setPlaceholder("project").setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)==null?void 0:b.metadataKey)||"project").onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.metadataKey=v||"project",await n.plugin.saveSettings())})}),new Ft.Setting(a).setName(d("Config File-based Project Detection")).setDesc(d("Configure project detection from project configuration files")).setHeading(),new Ft.Setting(a).setName(d("Enable config file project detection")).setDesc(d("Detect project from project configuration files")).addToggle(k=>{var y,b;k.setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.configFile)==null?void 0:b.enabled)||!1).onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.enabled=v,await n.plugin.saveSettings())})}),new Ft.Setting(a).setName(d("Config file name")).setDesc(d("Name of the project configuration file")).addText(k=>{var y,b;k.setPlaceholder("project.md").setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.configFile)==null?void 0:b.fileName)||"project.md").onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.fileName=v||"project.md",await n.plugin.saveSettings())})}),new Ft.Setting(a).setName(d("Custom Project Detection Methods")).setDesc(d("Configure additional methods to detect project files")).setHeading();let m=a.createDiv({cls:"project-detection-methods-container"}),f=()=>{var y,b,v,w,x;m.empty(),(b=(y=n.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)!=null&&b.detectionMethods||(v=n.plugin.settings.projectConfig)!=null&&v.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]);let k=((x=(w=n.plugin.settings.projectConfig)==null?void 0:w.metadataConfig)==null?void 0:x.detectionMethods)||[];k.forEach((T,C)=>{let S=m.createDiv({cls:"project-detection-method"});new Ft.Setting(S).setName(`${d("Method")} ${C+1}`).addDropdown(E=>{E.addOption("metadata",d("Metadata Property")).addOption("tag",d("Tag")).addOption("link",d("Linked Note")).setValue(T.type).onChange(async A=>{T.type=A,await n.plugin.saveSettings(),f()})}).addText(E=>{let A=T.type==="metadata"||T.type==="tag"?"project":"category";E.setPlaceholder(A).setValue(T.propertyKey).onChange(async N=>{T.propertyKey=N,await n.plugin.saveSettings()})}).addToggle(E=>{E.setValue(T.enabled).onChange(async A=>{T.enabled=A,await n.plugin.saveSettings()})}).addButton(E=>{E.setIcon("trash").setTooltip(d("Remove")).onClick(async()=>{k.splice(C,1),await n.plugin.saveSettings(),f()})}),T.type==="link"&&new Ft.Setting(S).setName(d("Link Filter")).setDesc(d("Optional: Only match links containing this text")).addText(E=>{E.setPlaceholder("Projects/").setValue(T.linkFilter||"").onChange(async A=>{T.linkFilter=A,await n.plugin.saveSettings()})})}),new Ft.Setting(m).addButton(T=>{T.setButtonText(d("Add Detection Method")).setCta().onClick(async()=>{var C,S,E,A,N,I;(S=(C=n.plugin.settings.projectConfig)==null?void 0:C.metadataConfig)!=null&&S.detectionMethods||(E=n.plugin.settings.projectConfig)!=null&&E.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]),(I=(N=(A=n.plugin.settings.projectConfig)==null?void 0:A.metadataConfig)==null?void 0:N.detectionMethods)==null||I.push({type:"metadata",propertyKey:"",enabled:!1}),await n.plugin.saveSettings(),f()})})};f(),new Ft.Setting(a).setName(d("Metadata Mappings")).setDesc(d("Configure how metadata fields are mapped and transformed")).setHeading();let h=a.createDiv({cls:"project-metadata-mappings-container"}),g=()=>{var y,b;h.empty(),(!((y=n.plugin.settings.projectConfig)!=null&&y.metadataMappings)||!Array.isArray(n.plugin.settings.projectConfig.metadataMappings))&&n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings=[]);let k=((b=n.plugin.settings.projectConfig)==null?void 0:b.metadataMappings)||[];k.length===0&&h.createDiv({cls:"no-mappings-message",text:d("No metadata mappings configured yet.")}),k.forEach((v,w)=>{let x=h.createDiv({cls:"project-metadata-mapping-row"}),T=new Set(k.filter((S,E)=>E!==w).map(S=>S.targetKey).filter(S=>S&&S.trim()!=="")),C=["project","context","priority","tags","startDate","scheduledDate","dueDate","completedDate","createdDate","recurrence"].filter(S=>!T.has(S)||S===v.targetKey);new Ft.Setting(x).setName(`${d("Mapping")} ${w+1}`).addText(S=>{S.setPlaceholder(d("Source key (e.g., proj)")).setValue(v.sourceKey).onChange(async E=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].sourceKey=E,await n.plugin.saveSettings())})}).addDropdown(S=>{S.addOption("",d("Select target field")),C.forEach(E=>{S.addOption(E,E)}),S.setValue(v.targetKey).onChange(async E=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].targetKey=E,await n.plugin.saveSettings(),g())})}).addToggle(S=>{S.setTooltip(d("Enabled")).setValue(v.enabled).onChange(async E=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].enabled=E,await n.plugin.saveSettings())})}).addButton(S=>{S.setIcon("trash").setTooltip(d("Remove")).onClick(async()=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings.splice(w,1),await n.plugin.saveSettings(),g())})})}),new Ft.Setting(h).addButton(v=>{v.setButtonText(d("Add Metadata Mapping")).setCta().onClick(async()=>{n.plugin.settings.projectConfig&&(Array.isArray(n.plugin.settings.projectConfig.metadataMappings)||(n.plugin.settings.projectConfig.metadataMappings=[]),n.plugin.settings.projectConfig.metadataMappings.push({sourceKey:"",targetKey:"",enabled:!0}),await n.plugin.saveSettings(),setTimeout(()=>{g()},100))})})};g(),new Ft.Setting(a).setName(d("Default Project Naming")).setDesc(d("Configure fallback project naming when no explicit project is found")).setHeading(),new Ft.Setting(a).setName(d("Enable default project naming")).setDesc(d("Use default naming strategy when no project is explicitly defined")).addToggle(k=>{var y,b;k.setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:b.enabled)||!1).onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.enabled=v,await n.plugin.saveSettings(),setTimeout(()=>{n.display()},200))})}),(t=n.plugin.settings.projectConfig)!=null&&t.defaultProjectNaming||(n.plugin.settings.projectConfig.defaultProjectNaming={strategy:"filename",stripExtension:!0,enabled:!1}),new Ft.Setting(a).setName(d("Naming strategy")).setDesc(d("Strategy for generating default project names")).addDropdown(k=>{var y,b;k.addOption("filename",d("Use filename")).addOption("foldername",d("Use folder name")).addOption("metadata",d("Use metadata field")).setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:b.strategy)||"filename").onChange(async v=>{var w,x;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming||(n.plugin.settings.projectConfig.defaultProjectNaming={strategy:"filename",stripExtension:!0,enabled:!1}),(x=n.plugin.settings.projectConfig)!=null&&x.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.strategy=v,await n.plugin.saveSettings(),setTimeout(()=>{n.display()},200))})}),(i=(r=n.plugin.settings.projectConfig)==null?void 0:r.defaultProjectNaming)==null||i.strategy,((o=(s=n.plugin.settings.projectConfig)==null?void 0:s.defaultProjectNaming)==null?void 0:o.strategy)==="metadata"&&new Ft.Setting(a).setName(d("Metadata key")).setDesc(d("Metadata field to use as project name")).addText(k=>{var y,b;k.setPlaceholder(d("Enter metadata key (e.g., project-name)")).setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:b.metadataKey)||"").onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.metadataKey=v,await n.plugin.saveSettings())})}),((c=(l=n.plugin.settings.projectConfig)==null?void 0:l.defaultProjectNaming)==null?void 0:c.strategy)==="filename"&&new Ft.Setting(a).setName(d("Strip file extension")).setDesc(d("Remove file extension from filename when using as project name")).addToggle(k=>{var y,b;k.setValue(((b=(y=n.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:b.stripExtension)||!0).onChange(async v=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.stripExtension=v,await n.plugin.saveSettings())})})}}var hl=require("obsidian");q();function SC(n,a){new hl.Setting(a).setName(d("Priority Picker Settings")).setDesc(d("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).setHeading(),new hl.Setting(a).setName(d("Enable priority picker")).setDesc(d("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).addToggle(e=>e.setValue(n.plugin.settings.enablePriorityPicker).onChange(async t=>{n.plugin.settings.enablePriorityPicker=t,n.applySettingsUpdate()})),new hl.Setting(a).setName(d("Enable priority keyboard shortcuts")).setDesc(d("Toggle to enable keyboard shortcuts for setting task priorities.")).addToggle(e=>e.setValue(n.plugin.settings.enablePriorityKeyboardShortcuts).onChange(async t=>{n.plugin.settings.enablePriorityKeyboardShortcuts=t,n.applySettingsUpdate()})),new hl.Setting(a).setName(d("Date picker")).setHeading(),new hl.Setting(a).setName(d("Enable date picker")).setDesc(d("Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.")).addToggle(e=>e.setValue(n.plugin.settings.enableDatePicker).onChange(async t=>{n.plugin.settings.enableDatePicker=t,n.applySettingsUpdate()})),new hl.Setting(a).setName(d("Recurrence date calculation")).setDesc(d("Choose how to calculate the next date for recurring tasks")).addDropdown(e=>e.addOption("due",d("Based on due date")).addOption("scheduled",d("Based on scheduled date")).addOption("current",d("Based on current date")).setValue(n.plugin.settings.recurrenceDateBase||"due").onChange(async t=>{n.plugin.settings.recurrenceDateBase=t,n.applySettingsUpdate()}))}var Cn=require("obsidian");q();function DC(n,a){new Cn.Setting(a).setName(d("Timeline Sidebar")).setHeading(),new Cn.Setting(a).setName(d("Enable Timeline Sidebar")).setDesc(d("Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.")).addToggle(e=>e.setValue(n.plugin.settings.timelineSidebar.enableTimelineSidebar).onChange(async t=>{n.plugin.settings.timelineSidebar.enableTimelineSidebar=t,n.applySettingsUpdate(),setTimeout(()=>{n.display(),t&&n.plugin.activateTimelineSidebarView()},200)})),n.plugin.settings.timelineSidebar.enableTimelineSidebar&&(new Cn.Setting(a).setName(d("Auto-open on startup")).setDesc(d("Automatically open the timeline sidebar when Obsidian starts.")).addToggle(e=>e.setValue(n.plugin.settings.timelineSidebar.autoOpenOnStartup).onChange(async t=>{n.plugin.settings.timelineSidebar.autoOpenOnStartup=t,n.applySettingsUpdate()})),new Cn.Setting(a).setName(d("Show completed tasks")).setDesc(d("Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.")).addToggle(e=>e.setValue(n.plugin.settings.timelineSidebar.showCompletedTasks).onChange(async t=>{n.plugin.settings.timelineSidebar.showCompletedTasks=t,n.applySettingsUpdate()})),new Cn.Setting(a).setName(d("Focus mode by default")).setDesc(d("Enable focus mode by default, which highlights today's events and dims past/future events.")).addToggle(e=>e.setValue(n.plugin.settings.timelineSidebar.focusModeByDefault).onChange(async t=>{n.plugin.settings.timelineSidebar.focusModeByDefault=t,n.applySettingsUpdate()})),new Cn.Setting(a).setName(d("Maximum events to show")).setDesc(d("Maximum number of events to display in the timeline. Higher numbers may affect performance.")).addSlider(e=>e.setLimits(50,500,25).setValue(n.plugin.settings.timelineSidebar.maxEventsToShow).setDynamicTooltip().onChange(async t=>{n.plugin.settings.timelineSidebar.maxEventsToShow=t,n.applySettingsUpdate()})),new Cn.Setting(a).setName(d("Open Timeline Sidebar")).setDesc(d("Click to open the timeline sidebar view.")).addButton(e=>e.setButtonText(d("Open Timeline")).setCta().onClick(async()=>{await n.plugin.activateTimelineSidebarView(),new Cn.Notice(d("Timeline sidebar opened"))})))}var Fe=require("obsidian");q();var Qd=require("obsidian");q();var Sn=class extends Qd.Modal{constructor(a,e){super(a.app),this.plugin=a,this.params=e,this.currentValues=[...e.values]}async onOpen(){this.titleEl.setText(this.params.title),this.contentEl.addClass("list-config-modal"),this.contentEl.createEl("p",{text:this.params.description,cls:"list-config-description"}),this.listContainer=this.contentEl.createDiv({cls:"list-config-container"}),this.renderList();let a=this.contentEl.createDiv({cls:"modal-button-container"});new Qd.ButtonComponent(a).setButtonText(d("Add Item")).setIcon("plus").onClick(()=>{this.currentValues.push(""),this.renderList();let e=this.listContainer.querySelectorAll("input"),t=e[e.length-1];t&&t.focus()}),new Qd.ButtonComponent(a).setButtonText(d("Save")).setCta().onClick(()=>{let e=this.currentValues.map(t=>t.trim()).filter(t=>t.length>0);this.params.onSave(e),this.close()}),new Qd.ButtonComponent(a).setButtonText(d("Cancel")).onClick(()=>{this.close()})}renderList(){if(this.listContainer.empty(),this.currentValues.length===0){this.listContainer.createDiv({cls:"list-config-empty"}).createEl("p",{text:d("No items configured. Click 'Add Item' to get started."),cls:"list-config-empty-text"});return}this.currentValues.forEach((a,e)=>{let t=this.listContainer.createDiv({cls:"list-config-item"});t.createEl("input",{type:"text",value:a,placeholder:this.params.placeholder||d("Enter value"),cls:"list-config-input"}).addEventListener("input",s=>{let o=s.target;this.currentValues[e]=o.value});let i=t.createEl("button",{cls:"list-config-delete-btn",attr:{"aria-label":d("Delete item"),title:d("Delete this item")}});i.createEl("span",{text:"\xD7",cls:"list-config-delete-icon"}),i.addEventListener("click",()=>{this.currentValues.splice(e,1),this.renderList()})})}onClose(){this.contentEl.empty()}};var qe=require("obsidian");q();function Dn(n,a){var t;let e=(t=a.settings)==null?void 0:t.fileSource;s8(n,a,e),e.enabled&&(o8(n,a,e),l8(n,a,e),d8(n,a,e),c8(n,a,e),u8(n,a,e))}function s8(n,a,e){new qe.Setting(n).setName(d("Enable File Task")).setDesc(d("Allow files to be recognized and treated as tasks based on their metadata, tags, or file paths. This provides advanced recognition strategies beyond simple metadata parsing.")).addToggle(t=>t.setValue(e.enabled).onChange(async r=>{a.settings.fileSource.enabled=r,await a.saveSettings(),n.empty(),Dn(n,a)}))}function o8(n,a,e){new qe.Setting(n).setHeading().setName(d("Recognition Strategies")).setDesc(d("Configure how files are recognized as tasks. At least one strategy must be enabled."));let t=n.createDiv("file-source-strategy-container");new qe.Setting(t).setName(d("Metadata-based Recognition")).setDesc(d("Recognize files as tasks if they have specific frontmatter fields")).addToggle(s=>s.setValue(e.recognitionStrategies.metadata.enabled).onChange(async o=>{a.settings.fileSource.recognitionStrategies.metadata.enabled=o,await a.saveSettings(),n.empty(),Dn(n,a)})),e.recognitionStrategies.metadata.enabled&&(new qe.Setting(t).setName(d("Task Fields")).setDesc(d("Configure metadata fields that indicate a file should be treated as a task (e.g., dueDate, status, priority)")).addButton(s=>{let o=()=>{var c;return(c=e.recognitionStrategies.metadata.taskFields)!=null?c:[]},l=()=>{let c=o();c.length===0?s.setButtonText(d("Configure Task Fields")):s.setButtonText(d("{{count}} field(s) configured",{interpolation:{count:c.length.toString()}}))};l(),s.onClick(()=>{new Sn(a,{title:d("Configure Task Fields"),description:d("Add metadata fields that indicate a file should be treated as a task (e.g., dueDate, status, priority)"),placeholder:d("Enter metadata field name"),values:o(),onSave:async c=>{a.settings.fileSource.recognitionStrategies.metadata.taskFields=c,await a.saveSettings(),l(),new qe.Notice(d("Task fields updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new qe.Setting(t).setName(d("Require All Fields")).setDesc(d("Require all specified fields to be present (otherwise any field is sufficient)")).addToggle(s=>s.setValue(e.recognitionStrategies.metadata.requireAllFields).onChange(async o=>{a.settings.fileSource.recognitionStrategies.metadata.requireAllFields=o,await a.saveSettings()})));let r=n.createDiv("file-source-strategy-container");new qe.Setting(r).setName(d("Tag-based Recognition")).setDesc(d("Recognize files as tasks if they have specific tags")).addToggle(s=>s.setValue(e.recognitionStrategies.tags.enabled).onChange(async o=>{a.settings.fileSource.recognitionStrategies.tags.enabled=o,await a.saveSettings(),n.empty(),Dn(n,a)})),e.recognitionStrategies.tags.enabled&&(new qe.Setting(r).setName(d("Task Tags")).setDesc(d("Configure tags that indicate a file should be treated as a task (e.g., #task, #todo, #actionable)")).addButton(s=>{let o=()=>{var c;return(c=e.recognitionStrategies.tags.taskTags)!=null?c:[]},l=()=>{let c=o();c.length===0?s.setButtonText(d("Configure Task Tags")):s.setButtonText(d("{{count}} tag(s) configured",{interpolation:{count:c.length.toString()}}))};l(),s.onClick(()=>{new Sn(a,{title:d("Configure Task Tags"),description:d("Add tags that indicate a file should be treated as a task (e.g., #task, #todo, #actionable)"),placeholder:d("Enter tag (e.g., #task)"),values:o(),onSave:async c=>{a.settings.fileSource.recognitionStrategies.tags.taskTags=c,await a.saveSettings(),l(),new qe.Notice(d("Task tags updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new qe.Setting(r).setName(d("Tag Matching Mode")).setDesc(d("How tags should be matched against file tags")).addDropdown(s=>s.addOption("exact",d("Exact match")).addOption("prefix",d("Prefix match")).addOption("contains",d("Contains match")).setValue(e.recognitionStrategies.tags.matchMode).onChange(async o=>{a.settings.fileSource.recognitionStrategies.tags.matchMode=o,await a.saveSettings()})));let i=n.createDiv("file-source-strategy-container");if(new qe.Setting(i).setName(d("Path-based Recognition")).setDesc(d("Recognize files as tasks based on their file path")).addToggle(s=>s.setValue(e.recognitionStrategies.paths.enabled).onChange(async o=>{a.settings.fileSource.recognitionStrategies.paths.enabled=o,await a.saveSettings(),n.empty(),Dn(n,a)})),e.recognitionStrategies.paths.enabled){new qe.Setting(i).setName(d("Task Paths")).setDesc(d("Configure paths that contain task files (e.g., Projects/, Tasks/2024/, Work/TODO/)")).addButton(c=>{let u=()=>{var m;return(m=e.recognitionStrategies.paths.taskPaths)!=null?m:[]},p=()=>{let m=u();m.length===0?c.setButtonText(d("Configure Task Paths")):c.setButtonText(d("{{count}} path(s) configured",{interpolation:{count:m.length.toString()}}))};p(),c.onClick(()=>{new Sn(a,{title:d("Configure Task Paths"),description:d("Add paths that contain task files (e.g., Projects/, Tasks/2024/, Work/TODO/)"),placeholder:d("Enter path (e.g., Projects/, Tasks/**/*.md)"),values:u(),onSave:async m=>{a.settings.fileSource.recognitionStrategies.paths.taskPaths=m,await a.saveSettings(),p(),new qe.Notice(d("Task paths updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new qe.Setting(i).setName(d("Path Matching Mode")).setDesc(d("How paths should be matched")).addDropdown(c=>c.addOption("prefix",d("Prefix (e.g., Projects/ matches Projects/App.md)")).addOption("glob",d("Glob pattern (e.g., Projects/**/*.md)")).addOption("regex",d("Regular expression (advanced)")).setValue(e.recognitionStrategies.paths.matchMode).onChange(async u=>{a.settings.fileSource.recognitionStrategies.paths.matchMode=u,await a.saveSettings(),n.empty(),Dn(n,a)}));let s=i.createDiv("setting-item-description");s.style.marginTop="10px";let o=e.recognitionStrategies.paths.matchMode,l="";switch(o){case"prefix":l=d("Examples:")+` \u2022 Projects/ \u2192 `+d("matches all files under Projects folder")+` \u2022 Tasks/2024/ \u2192 `+d("matches all files under Tasks/2024 folder");break;case"glob":l=d("Examples:")+` \u2022 Projects/**/*.md \u2192 `+d("all .md files in Projects and subfolders")+` \u2022 Tasks/*.task.md \u2192 `+d("files ending with .task.md in Tasks folder")+` \u2022 Work/*/TODO.md \u2192 `+d("TODO.md in any direct subfolder of Work");break;case"regex":l=d("Examples:")+` \u2022 ^Projects/.*\\.md$ \u2192 `+d("all .md files in Projects folder")+` \u2022 ^Tasks/\\d{4}-\\d{2}-\\d{2} \u2192 `+d("files starting with date in Tasks");break}s.createEl("pre",{text:l,attr:{style:"font-size: 0.9em; color: var(--text-muted);"}})}}function l8(n,a,e){new qe.Setting(n).setHeading().setName(d("Task Properties for Files")),new qe.Setting(n).setName(d("Task Title Source")).setDesc(d("What should be used as the task title when a file becomes a task")).addDropdown(t=>t.addOption("filename",d("Filename")).addOption("title",d("Frontmatter title")).addOption("h1",d("First H1 heading")).addOption("custom",d("Custom metadata field")).setValue(e.fileTaskProperties.contentSource).onChange(async r=>{a.settings.fileSource.fileTaskProperties.contentSource=r,await a.saveSettings(),n.empty(),Dn(n,a)})),e.fileTaskProperties.contentSource==="custom"&&new qe.Setting(n).setName(d("Custom Content Field")).setDesc(d("Name of the metadata field to use as task content")).addText(t=>t.setPlaceholder("taskContent").setValue(e.fileTaskProperties.customContentField||"").onChange(async r=>{a.settings.fileSource.fileTaskProperties.customContentField=r,await a.saveSettings()})),e.fileTaskProperties.contentSource==="filename"&&new qe.Setting(n).setName(d("Strip File Extension")).setDesc(d("Remove the .md extension from filename when using as task content")).addToggle(t=>t.setValue(e.fileTaskProperties.stripExtension).onChange(async r=>{a.settings.fileSource.fileTaskProperties.stripExtension=r,await a.saveSettings()})),new qe.Setting(n).setName(d("Prefer Frontmatter Title")).setDesc(d("When updating task content, prefer updating frontmatter title over renaming the file. This protects the original filename.")).addToggle(t=>t.setValue(e.fileTaskProperties.preferFrontmatterTitle).onChange(async r=>{a.settings.fileSource.fileTaskProperties.preferFrontmatterTitle=r,await a.saveSettings()})),new qe.Setting(n).setName(d("Default Task Status")).setDesc(d("Default status for newly created file tasks")).addText(t=>t.setPlaceholder(" ").setValue(e.fileTaskProperties.defaultStatus).onChange(async r=>{a.settings.fileSource.fileTaskProperties.defaultStatus=r,await a.saveSettings()}))}function d8(n,a,e){if(new qe.Setting(n).setName(d("Status Mapping")).setDesc(d("Map between human-readable metadata values (e.g., 'completed') and task symbols (e.g., 'x').")),new qe.Setting(n).setName(d("Enable Status Mapping")).setDesc(d("Automatically convert between metadata status values and task symbols")).addToggle(t=>{var r;return t.setValue(((r=e.statusMapping)==null?void 0:r.enabled)||!1).onChange(async i=>{e.statusMapping||(e.statusMapping={enabled:!1,metadataToSymbol:{},symbolToMetadata:{},autoDetect:!1,caseSensitive:!1}),a.settings.fileSource.statusMapping.enabled=i,await a.saveSettings(),n.empty(),Dn(n,a)})}),e.statusMapping&&e.statusMapping.enabled){new qe.Setting(n).setName(d("Sync from Task Status Settings")).setDesc(d("Populate FileSource status mapping from your checkbox status configuration")).addButton(m=>m.setButtonText(d("Sync now")).setCta().onClick(async()=>{try{let f=a.dataflowOrchestrator;if(f!=null&&f.updateSettings)f.updateSettings(a.settings),new qe.Notice(d("FileSource status mapping synced"));else{let h=a.settings.taskStatuses||{},g={};for(let[y,b]of Object.entries(h)){let v=String(b).split("|").filter(Boolean);for(let w of v){if(w==="/>"){g["/"]=y,g[">"]=y;continue}if(w.length===1)g[w]=y;else for(let x of w)g[x]=y}}let k={completed:"completed",inProgress:"in-progress",planned:"planned",abandoned:"cancelled",notStarted:"not-started"};a.settings.fileSource.statusMapping=a.settings.fileSource.statusMapping||{enabled:!0,metadataToSymbol:{},symbolToMetadata:{},autoDetect:!0,caseSensitive:!1},a.settings.fileSource.statusMapping.symbolToMetadata={};for(let[y,b]of Object.entries(g)){let v=k[b];v&&(a.settings.fileSource.statusMapping.symbolToMetadata[y]=v)}await a.saveSettings(),new qe.Notice(d("FileSource status mapping synced"))}}catch(f){console.error("Failed to sync FileSource status mapping:",f),new qe.Notice(d("Failed to sync mapping"))}})),new qe.Setting(n).setName(d("Case Sensitive Matching")).setDesc(d("Enable case-sensitive matching for status values")).addToggle(m=>m.setValue(e.statusMapping.caseSensitive).onChange(async f=>{a.settings.fileSource.statusMapping.caseSensitive=f,await a.saveSettings()})),new qe.Setting(n).setName(d("Auto-detect Status Mappings")).setDesc(d("Automatically sync with task status configuration")).addToggle(m=>m.setValue(e.statusMapping.autoDetect).onChange(async f=>{a.settings.fileSource.statusMapping.autoDetect=f,await a.saveSettings()}));let t=n.createDiv("file-source-status-mappings");t.createEl("h5",{text:d("Common Mappings")});let r=t.createEl("div",{cls:"status-mapping-list"}),i=[{metadata:"completed",symbol:"x"},{metadata:"in-progress",symbol:"/"},{metadata:"planned",symbol:"?"},{metadata:"cancelled",symbol:"-"},{metadata:"not-started",symbol:" "}],s=r.createEl("table",{cls:"status-mapping-table"}),l=s.createEl("thead").createEl("tr");l.createEl("th",{text:d("Metadata Value")}),l.createEl("th",{text:"\u2192"}),l.createEl("th",{text:d("Task Symbol")});let c=s.createEl("tbody");i.forEach(m=>{let f=c.createEl("tr");f.createEl("td",{text:m.metadata}),f.createEl("td",{text:"\u2192"}),f.createEl("td",{text:m.symbol===" "?"(space)":m.symbol})}),n.createEl("h5",{text:d("Custom Mappings")});let u=n.createEl("p");u.textContent=d("Add custom status mappings for your workflow."),new qe.Setting(n).setName(d("Add Custom Mapping")).setDesc(d("Enter metadata value and symbol (e.g., 'done:x')")).addText(m=>m.setPlaceholder("done:x").onChange(async f=>{if(f.includes(":")){let[h,g]=f.split(":",2);h&&g&&(a.settings.fileSource.statusMapping.metadataToSymbol[h]=g,a.settings.fileSource.statusMapping.symbolToMetadata[g]||(a.settings.fileSource.statusMapping.symbolToMetadata[g]=h),await a.saveSettings(),m.setValue(""))}})).addButton(m=>m.setButtonText(d("Add")).setCta().onClick(()=>{let f=n.querySelector(".setting-item:last-child input[type='text']");f&&f.dispatchEvent(new Event("change"))}));let p=n.createDiv("setting-item-description");p.innerHTML=`${d("Note:")} `+d("Status mappings work with your Task Status Settings. ")+d("The symbols defined here should match those in your checkbox status configuration.")}}function c8(n,a,e){new qe.Setting(n).setHeading().setName(d("Performance")),new qe.Setting(n).setName(d("Enable Caching")).setDesc(d("Cache file task results to improve performance")).addToggle(t=>t.setValue(e.performance.enableCaching).onChange(async r=>{a.settings.fileSource.performance.enableCaching=r,await a.saveSettings()})),new qe.Setting(n).setName(d("Cache TTL")).setDesc(d("Time-to-live for cached results in milliseconds (default: 300000 = 5 minutes)")).addText(t=>t.setPlaceholder("300000").setValue(String(e.performance.cacheTTL||3e5)).onChange(async r=>{let i=parseInt(r)||3e5;a.settings.fileSource.performance.cacheTTL=i,await a.saveSettings()}))}function u8(n,a,e){new qe.Setting(n).setHeading().setName(d("Advanced"));let t=n.createDiv("file-source-stats");t.createEl("h5",{text:d("File Task Status")});let r=e.enabled?d("File Task is enabled and monitoring files"):d("File Task is disabled");if(t.createEl("p",{text:r}),e.enabled){let i=p8(e);t.createEl("p",{text:d("Active strategies: ")+i})}}function p8(n){let a=[];return n.recognitionStrategies.metadata.enabled&&a.push(d("Metadata")),n.recognitionStrategies.tags.enabled&&a.push(d("Tags")),n.recognitionStrategies.templates.enabled&&a.push(d("Templates")),n.recognitionStrategies.paths.enabled&&a.push(d("Paths")),a.length>0?a.join(", "):d("None")}function EC(n,a){if(new Fe.Setting(a).setName(d("Index & Task Source Configuration")).setDesc(d("Configure how Task Genius discovers and indexes tasks from various sources including inline tasks, file metadata, and projects.")).setHeading(),new Fe.Setting(a).setName(d("Enable Indexer")).addToggle(r=>{var i;r.setValue((i=n.plugin.settings.enableIndexer)!=null?i:!0),r.onChange(async s=>{n.plugin.settings.enableIndexer=s,n.applySettingsUpdate(),n.display(),new Fe.Notice(d("Please restart Obsidian for the Indexer change to take effect."),8e3)})}),new Fe.Setting(a).setName(d("Inline task parsing")).setDesc(d("Configure how tasks are parsed from markdown content.")).setHeading(),new Fe.Setting(a).setName(d("Prefer metadata format of task")).setDesc(d("You can choose dataview format or tasks format, that will influence both index and save format.")).addDropdown(r=>{r.addOption("dataview","Dataview").addOption("tasks","Tasks").setValue(n.plugin.settings.preferMetadataFormat).onChange(async i=>{n.plugin.settings.preferMetadataFormat=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),new Fe.Setting(a).setName(d("Enable custom date formats")).setDesc(d("Enable custom date format patterns for parsing dates. When enabled, the parser will try your custom formats before falling back to default formats.")).addToggle(r=>{var i;r.setValue((i=n.plugin.settings.enableCustomDateFormats)!=null?i:!1).onChange(s=>{n.plugin.settings.enableCustomDateFormats=s,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.enableCustomDateFormats){new Fe.Setting(a).setName(d("Custom date formats")).setDesc(d("Configure custom date format patterns. Date patterns: yyyy (4-digit year), yy (2-digit year), MM (2-digit month), M (1-2 digit month), dd (2-digit day), d (1-2 digit day), MMM (short month name), MMMM (full month name). Time patterns: HH (2-digit hour), mm (2-digit minute), ss (2-digit second). Use single quotes for literals (e.g., 'T' for ISO format).")).addButton(l=>{let c=()=>{var p;return(p=n.plugin.settings.customDateFormats)!=null?p:[]},u=()=>{let p=c();p.length===0?l.setButtonText(d("Configure Date Formats")):l.setButtonText(d("{{count}} format(s) configured",{interpolation:{count:p.length.toString()}}))};u(),l.onClick(()=>{new Sn(n.plugin,{title:d("Configure Custom Date Formats"),description:d("Add custom date format patterns. Date patterns: yyyy (4-digit year), yy (2-digit year), MM (2-digit month), M (1-2 digit month), dd (2-digit day), d (1-2 digit day), MMM (short month name), MMMM (full month name). Time patterns: HH (2-digit hour), mm (2-digit minute), ss (2-digit second). Use single quotes for literals (e.g., 'T' for ISO format)."),placeholder:d("Enter date format (e.g., yyyy-MM-dd or yyyyMMdd_HHmmss)"),values:c(),onSave:p=>{n.plugin.settings.customDateFormats=p,n.applySettingsUpdate(),u(),new Fe.Notice(d("Date formats updated. The parser will now recognize these custom formats."),6e3)}}).open()})});let r=a.createDiv({cls:"task-genius-date-examples"});r.createEl("h4",{text:d("Format Examples:"),cls:"task-genius-examples-header"});let i=[{format:"yyyy-MM-dd",example:"2025-08-16"},{format:"dd/MM/yyyy",example:"16/08/2025"},{format:"MM-dd-yyyy",example:"08-16-2025"},{format:"yyyy.MM.dd",example:"2025.08.16"},{format:"yyyyMMdd",example:"20250816"},{format:"yyyyMMdd_HHmmss",example:"20250816_144403"},{format:"yyyyMMddHHmmss",example:"20250816144403"},{format:"yyyy-MM-dd'T'HH:mm",example:"2025-08-16T14:44"},{format:"dd MMM yyyy",example:"16 Aug 2025"},{format:"MMM dd, yyyy",example:"Aug 16, 2025"},{format:"yyyy\u5E74MM\u6708dd\u65E5",example:"2025\u5E7408\u670816\u65E5"}],s=r.createEl("table",{cls:"task-genius-date-examples-table"}),o=s.createEl("tr");o.createEl("th",{text:d("Format Pattern")}),o.createEl("th",{text:d("Example")}),i.forEach(({format:l,example:c})=>{let u=s.createEl("tr");u.createEl("td",{text:l}),u.createEl("td",{text:c})})}let e=n.plugin.settings.preferMetadataFormat==="dataview";if(new Fe.Setting(a).setName(d("Project tag prefix")).setDesc(e?d("Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing."):d("Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.")).addText(r=>{r.setPlaceholder("project").setValue(n.plugin.settings.projectTagPrefix[n.plugin.settings.preferMetadataFormat]).onChange(async i=>{n.plugin.settings.projectTagPrefix[n.plugin.settings.preferMetadataFormat]=i||"project",n.applySettingsUpdate()})}),new Fe.Setting(a).setName(d("Context tag prefix")).setDesc(e?d("Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing."):d("Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.")).addText(r=>{r.setPlaceholder("context").setValue(n.plugin.settings.contextTagPrefix[n.plugin.settings.preferMetadataFormat]).onChange(async i=>{n.plugin.settings.contextTagPrefix[n.plugin.settings.preferMetadataFormat]=i||(e?"context":"@"),n.applySettingsUpdate()})}),new Fe.Setting(a).setName(d("Ignore all tasks behind heading")).setDesc(d("Configure headings to ignore. Tasks under these headings will be excluded from indexing.")).addButton(r=>{let i=()=>(n.plugin.settings.ignoreHeading||"").split(",").map(l=>l.trim()).filter(l=>l),s=()=>{let o=i();o.length===0?r.setButtonText(d("Configure Ignore Headings")):r.setButtonText(d("{{count}} heading(s) configured",{interpolation:{count:o.length.toString()}}))};s(),r.onClick(()=>{new Sn(n.plugin,{title:d("Configure Ignore Headings"),description:d("Add headings to ignore. Tasks under these headings will be excluded from indexing. Examples: '## Project', '## Inbox', '# Archive'"),placeholder:d("Enter heading (e.g., ## Inbox)"),values:i(),onSave:o=>{n.plugin.settings.ignoreHeading=o.join(", "),n.applySettingsUpdate(),s(),new Fe.Notice(d("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Fe.Setting(a).setName(d("Focus all tasks behind heading")).setDesc(d("Configure headings to focus on. Only tasks under these headings will be included in indexing.")).addButton(r=>{let i=()=>(n.plugin.settings.focusHeading||"").split(",").map(l=>l.trim()).filter(l=>l),s=()=>{let o=i();o.length===0?r.setButtonText(d("Configure Focus Headings")):r.setButtonText(d("{{count}} heading(s) configured",{interpolation:{count:o.length.toString()}}))};s(),r.onClick(()=>{new Sn(n.plugin,{title:d("Configure Focus Headings"),description:d("Add headings to focus on. Only tasks under these headings will be included in indexing. Examples: '## Project', '## Inbox', '# Tasks'"),placeholder:d("Enter heading (e.g., ## Tasks)"),values:i(),onSave:o=>{n.plugin.settings.focusHeading=o.join(", "),n.applySettingsUpdate(),s(),new Fe.Notice(d("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Fe.Setting(a).setName(d("Use daily note path as date")).setDesc(d("If enabled, the daily note path will be used as the date for tasks.")).addToggle(r=>{r.setValue(n.plugin.settings.useDailyNotePathAsDate),r.onChange(i=>{n.plugin.settings.useDailyNotePathAsDate=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.useDailyNotePathAsDate){let r=document.createDocumentFragment();r.createEl("div",{text:d("Task Genius will use moment.js and also this format to parse the daily note path.")}),r.createEl("div",{text:d("You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.")}),new Fe.Setting(a).setName(d("Daily note format")).setDesc(r).addText(i=>{i.setValue(n.plugin.settings.dailyNoteFormat),i.onChange(s=>{n.plugin.settings.dailyNoteFormat=s,n.applySettingsUpdate()})}),new Fe.Setting(a).setName(d("Daily note path")).setDesc(d("Select the folder that contains the daily note.")).addText(i=>{new Pg(n.app,i.inputEl,n.plugin),i.setValue(n.plugin.settings.dailyNotePath),i.onChange(s=>{n.plugin.settings.dailyNotePath=s,n.applySettingsUpdate()})}),new Fe.Setting(a).setName(d("Use as date type")).setDesc(d("You can choose due, start, or scheduled as the date type for tasks.")).addDropdown(i=>{i.addOption("due",d("Due")).addOption("start",d("Start")).addOption("scheduled",d("Scheduled")).setValue(n.plugin.settings.useAsDateType).onChange(async s=>{n.plugin.settings.useAsDateType=s,n.applySettingsUpdate()})})}new Fe.Setting(a).setName(d("File Metadata Inheritance")).setDesc(d("Configure how tasks inherit metadata from file frontmatter")).setHeading(),new Fe.Setting(a).setName(d("Enable file metadata inheritance")).setDesc(d("Allow tasks to inherit metadata properties from their file's frontmatter")).addToggle(r=>r.setValue(n.plugin.settings.fileMetadataInheritance.enabled).onChange(async i=>{n.plugin.settings.fileMetadataInheritance.enabled=i,n.applySettingsUpdate(),new Ba(n.plugin,{title:d("Reindex"),message:d("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:d("Reindex"),cancelText:d("Cancel"),onConfirm:async s=>{var o;if(s)try{new Fe.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Fe.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Fe.Notice(d("Failed to reindex tasks"))}}}).open(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.fileMetadataInheritance.enabled&&(new Fe.Setting(a).setName(d("Inherit from frontmatter")).setDesc(d("Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task")).addToggle(r=>r.setValue(n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter).onChange(async i=>{n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter=i,n.applySettingsUpdate(),new Ba(n.plugin,{title:d("Reindex"),message:d("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:d("Reindex"),cancelText:d("Cancel"),onConfirm:async s=>{var o;if(s)try{new Fe.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Fe.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Fe.Notice(d("Failed to reindex tasks"))}}}).open()})),new Fe.Setting(a).setName(d("Inherit from frontmatter for subtasks")).setDesc(d("Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata")).addToggle(r=>r.setValue(n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks).onChange(async i=>{n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks=i,n.applySettingsUpdate(),new Ba(n.plugin,{title:d("Reindex"),message:d("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:d("Reindex"),cancelText:d("Cancel"),onConfirm:async s=>{var o;if(s)try{new Fe.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Fe.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Fe.Notice(d("Failed to reindex tasks"))}}}).open()}))),new Fe.Setting(a).setName(d("File Task Configuration")).setDesc(d("Configure how files can be recognized and treated as tasks with various strategies.")).setHeading();let t=a.createDiv("file-source-container");Dn(t,n.plugin),new Fe.Setting(a).setName(d("Performance Configuration")).setDesc(d("Configure performance-related indexing settings")).setHeading(),new Fe.Setting(a).setName(d("Enable worker processing")).setDesc(d("Use background worker for file parsing to improve performance. Recommended for large vaults.")).addToggle(r=>{var i,s,o;r.setValue((o=(s=(i=n.plugin.settings.fileSource)==null?void 0:i.performance)==null?void 0:s.enableWorkerProcessing)!=null?o:!0),r.onChange(l=>{n.plugin.settings.fileSource||(n.plugin.settings.fileSource={enabled:!1,performance:{enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5}}),n.plugin.settings.fileSource.performance||(n.plugin.settings.fileSource.performance={enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5}),n.plugin.settings.fileSource.performance.enableWorkerProcessing=l,n.plugin.settings.fileParsingConfig&&(n.plugin.settings.fileParsingConfig.enableWorkerProcessing=l),n.applySettingsUpdate()})}),new Fe.Setting(a).setName(d("Index Maintenance")).setDesc(d("Tools for managing and rebuilding the task index")).setHeading(),new Fe.Setting(a).setName(d("Rebuild index")).setDesc(d("Force a complete rebuild of the task index. Use this if you notice missing or incorrect tasks.")).setClass("mod-warning").addButton(r=>{r.setButtonText(d("Rebuild")).onClick(async()=>{new Ba(n.plugin,{title:d("Reindex"),message:d("Are you sure you want to force reindex all tasks?"),confirmText:d("Reindex"),cancelText:d("Cancel"),onConfirm:async i=>{if(i)try{new Fe.Notice(d("Clearing task cache and rebuilding index...")),n.plugin.dataflowOrchestrator&&await n.plugin.dataflowOrchestrator.rebuild(),new Fe.Notice(d("Task index completely rebuilt"))}catch(s){console.error("Failed to force reindex tasks:",s),new Fe.Notice(d("Failed to force reindex tasks"))}}}).open()})})}var us=require("obsidian");q();function PC(n,a){var e;if(new us.Setting(a).setName(d("Desktop Integration")).setDesc(d("Configure system tray, notifications, and desktop features")).setHeading(),!us.Platform.isDesktopApp){new us.Setting(a).setName(d("Desktop only")).setDesc(d("Desktop integration features are only available in the desktop app"));return}new us.Setting(a).setName(d("Enable notifications")).setDesc(d("Use system notifications when possible")).addToggle(t=>{var r;t.setValue(!!((r=n.plugin.settings.notifications)!=null&&r.enabled)),t.onChange(i=>{var o,l,c,u,p,m,f,h,g,k,y,b;let s=n.plugin.settings;s.notifications={...s.notifications,enabled:i,dailySummary:{enabled:(c=(l=(o=s.notifications)==null?void 0:o.dailySummary)==null?void 0:l.enabled)!=null?c:!0,time:(m=(p=(u=s.notifications)==null?void 0:u.dailySummary)==null?void 0:p.time)!=null?m:"09:00"},perTask:{enabled:(g=(h=(f=s.notifications)==null?void 0:f.perTask)==null?void 0:h.enabled)!=null?g:!1,leadMinutes:(b=(y=(k=s.notifications)==null?void 0:k.perTask)==null?void 0:y.leadMinutes)!=null?b:10}},n.applyNotificationsUpdateLight(),setTimeout(()=>{n.display()},200)})}),(e=n.plugin.settings.notifications)!=null&&e.enabled&&(new us.Setting(a).setName(d("Daily summary")).setDesc(d("Send one notification for today's due tasks at a specific time (HH:mm)")).addToggle(t=>{var i;let r=n.plugin.settings.notifications;t.setValue(!!((i=r==null?void 0:r.dailySummary)!=null&&i.enabled)),t.onChange(s=>{var l,c,u;let o=n.plugin.settings;o.notifications={...o.notifications,dailySummary:{enabled:s,time:(u=(c=(l=o.notifications)==null?void 0:l.dailySummary)==null?void 0:c.time)!=null?u:"09:00"}},n.applyNotificationsUpdateLight()})}).addText(t=>{var i,s;let r=((s=(i=n.plugin.settings.notifications)==null?void 0:i.dailySummary)==null?void 0:s.time)||"09:00";t.setPlaceholder("09:00").setValue(r).onChange(o=>{var c,u,p;let l=n.plugin.settings;l.notifications={...l.notifications,dailySummary:{enabled:(p=(u=(c=l.notifications)==null?void 0:c.dailySummary)==null?void 0:u.enabled)!=null?p:!0,time:o||"09:00"}},n.applyNotificationsUpdateLight()}),t.inputEl.type="time"}).addButton(t=>{t.setButtonText(d("Send now")),t.onClick(async()=>{var r;await((r=n.plugin.notificationManager)==null?void 0:r.triggerDailySummary())})}),new us.Setting(a).setName(d("Per-task reminders")).setDesc(d("Notify shortly before each task's due time")).addToggle(t=>{var i;let r=n.plugin.settings.notifications;t.setValue(!!((i=r==null?void 0:r.perTask)!=null&&i.enabled)),t.onChange(s=>{var l,c,u;let o=n.plugin.settings;o.notifications={...o.notifications,perTask:{enabled:s,leadMinutes:(u=(c=(l=o.notifications)==null?void 0:l.perTask)==null?void 0:c.leadMinutes)!=null?u:10}},n.applyNotificationsUpdateLight()})}).addText(t=>{var i,s,o;let r=String((o=(s=(i=n.plugin.settings.notifications)==null?void 0:i.perTask)==null?void 0:s.leadMinutes)!=null?o:10);t.setPlaceholder("10").setValue(r).onChange(l=>{var p,m,f;let c=Math.max(0,parseInt(l||"0",10)||0),u=n.plugin.settings;u.notifications={...u.notifications,perTask:{enabled:(f=(m=(p=u.notifications)==null?void 0:p.perTask)==null?void 0:m.enabled)!=null?f:!1,leadMinutes:c}},n.applyNotificationsUpdateLight()}),t.inputEl.type="number",t.inputEl.min="0",t.inputEl.max="1440",t.inputEl.step="5"}).addButton(t=>{t.setButtonText(d("Scan now")),t.onClick(()=>{var r;return(r=n.plugin.notificationManager)==null?void 0:r.triggerImminentScan()})})),new us.Setting(a).setName(d("Tray indicator")).setDesc(d("Show a bell with count in system tray, status bar, or both")).addDropdown(t=>{let r=n.plugin.settings;r.desktopIntegration=r.desktopIntegration||{enableTray:!1};let i=r.desktopIntegration.trayMode||"status";t.addOptions({system:"System tray",status:"Status bar",both:"Both"}).setValue(i).onChange(s=>{r.desktopIntegration={...r.desktopIntegration,trayMode:s,enableTray:s!=="status"},n.applyNotificationsUpdateLight()})}).addButton(t=>{t.setButtonText(d("Update now")),t.onClick(async()=>{var r;await((r=n.plugin.notificationManager)==null?void 0:r.triggerDailySummary())})})}var kr=require("obsidian");q();function MC(n,a){if(new kr.Setting(a).setName(d("File Filter")).setHeading(),new kr.Setting(a).setName(d("Enable File Filter")).setDesc(d("Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.")).addToggle(p=>p.setValue(n.plugin.settings.fileFilter.enabled).onChange(async m=>{n.plugin.settings.fileFilter.enabled=m,n.applySettingsUpdate(),a.empty(),MC(n,a)})),!n.plugin.settings.fileFilter.enabled)return;new kr.Setting(a).setName(d("File Filter Mode")).setDesc(d("Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)")).addDropdown(p=>p.addOption("whitelist",d("Whitelist (Include only)")).addOption("blacklist",d("Blacklist (Exclude)")).setValue(n.plugin.settings.fileFilter.mode).onChange(async m=>{n.plugin.settings.fileFilter.mode=m,s(),o()})),new kr.Setting(a).setName(d("File Filter Rules")).setDesc(d("Configure which files and folders to include or exclude from task indexing"));let e=a.createDiv({cls:"file-filter-rules-container"}),t=()=>{e.empty(),n.plugin.settings.fileFilter.rules.forEach((p,m)=>{let f=e.createDiv({cls:"file-filter-rule"}),h=f.createDiv({cls:"file-filter-rule-type"});h.createEl("label",{text:d("Type:")}),new kr.DropdownComponent(h).addOption("file",d("File")).addOption("folder",d("Folder")).addOption("pattern",d("Pattern")).setValue(p.type).onChange(async x=>{p.type=x,s(),o(),t()});let g=f.createDiv({cls:"file-filter-rule-scope"});g.createEl("label",{text:d("Scope:")}),new kr.DropdownComponent(g).addOption("both",d("Both")).addOption("inline",d("Inline")).addOption("file",d("File")).setValue(p.scope||"both").onChange(async x=>{p.scope=x,s(),o()});let k=f.createDiv({cls:"file-filter-rule-path"});k.createEl("label",{text:d("Path:")});let y=k.createEl("input",{type:"text",value:p.path,placeholder:p.type==="pattern"?"*.tmp, temp/*":p.type==="folder"?"path/to/folder":"path/to/file.md"});p.type==="folder"?new Mg(n.app,y,n.plugin,"single"):p.type==="file"&&new Ag(y,n.plugin,x=>{p.path=x.path,y.value=x.path,s(),o()}),y.addEventListener("input",async()=>{p.path=y.value,s(),o()});let b=f.createDiv({cls:"file-filter-rule-enabled"});b.createEl("label",{text:d("Enabled:")});let v=b.createEl("input",{type:"checkbox"});v.checked=p.enabled,v.addEventListener("change",async()=>{p.enabled=v.checked,s(),o()});let w=f.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,kr.setIcon)(w,"trash"),w.title=d("Delete rule"),w.addEventListener("click",async()=>{n.plugin.settings.fileFilter.rules.splice(m,1),s(),t(),o()})})},r=a.createDiv({cls:"file-filter-add-rule"});new kr.Setting(r).setName(d("Add Filter Rule")).addButton(p=>p.setButtonText(d("Add File Rule")).onClick(async()=>{let m={type:"file",path:"",enabled:!0};n.plugin.settings.fileFilter.rules.push(m),s(),t(),o()})).addButton(p=>p.setButtonText(d("Add Folder Rule")).onClick(async()=>{let m={type:"folder",path:"",enabled:!0};n.plugin.settings.fileFilter.rules.push(m),s(),t(),o()})).addButton(p=>p.setButtonText(d("Add Pattern Rule")).onClick(async()=>{let m={type:"pattern",path:"",enabled:!0};n.plugin.settings.fileFilter.rules.push(m),s(),t(),o()})),new kr.Setting(a).setName(d("Refresh Statistics")).setDesc(d("Manually refresh filter statistics to see current data")).addButton(p=>p.setButtonText(d("Refresh")).onClick(()=>{p.setDisabled(!0),p.setButtonText(d("Refreshing...")),setTimeout(()=>{l(),p.setDisabled(!1),p.setButtonText(d("Refresh"))},100)}));let i=a.createDiv({cls:"file-filter-stats"}),s=(0,kr.debounce)(()=>n.applySettingsUpdate(),300,!0),o=(0,kr.debounce)(()=>l(),200,!0),l=()=>{try{let p={rulesCount:n.plugin.settings.fileFilter.rules.filter(g=>g.enabled).length,cacheSize:0,processedFiles:0,filteredFiles:0};i.empty();let m=i.createDiv({cls:"file-filter-stat"});m.createEl("span",{cls:"stat-label",text:`${d("Active Rules")}:`}),m.createEl("span",{cls:"stat-value",text:p.rulesCount.toString()});let f=i.createDiv({cls:"file-filter-stat"});f.createEl("span",{cls:"stat-label",text:`${d("Cache Size")}:`}),f.createEl("span",{cls:"stat-value",text:p.cacheSize.toString()});let h=i.createDiv({cls:"file-filter-stat"});h.createEl("span",{cls:"stat-label",text:`${d("Status")}:`}),h.createEl("span",{cls:"stat-value",text:n.plugin.settings.fileFilter.enabled?d("Enabled"):d("Disabled")})}catch(p){console.error("Error updating filter statistics:",p),i.empty(),i.createDiv({cls:"file-filter-stat error"}).createEl("span",{cls:"stat-label",text:d("Error loading statistics")})}};t(),l();let c=setInterval(l,5e3),u=new MutationObserver(p=>{p.forEach(m=>{m.removedNodes.forEach(f=>{var h;(f===a||(h=f==null?void 0:f.contains)!=null&&h.call(f,a))&&(clearInterval(c),u.disconnect())})})});a.parentNode&&u.observe(a.parentNode,{childList:!0,subtree:!0})}var En=require("obsidian");q();function vj(n,a){a.createEl("h2",{text:d("Time Parsing Settings")}),n.plugin.settings.timeParsing||(n.plugin.settings.timeParsing={enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","\u5F00\u59CB","\u4ECE"],due:["due","deadline","by","until","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D"],scheduled:["scheduled","on","at","\u5B89\u6392","\u8BA1\u5212","\u5728"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!0,timePatterns:{singleTime:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g],timeRange:[/\b([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\s*[-~~]\s*([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\b/g,/\b(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)?\s*[-~~]\s*(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)\b/g],rangeSeparators:["-","~","\uFF5E"," - "," ~ "," \uFF5E "]},timeDefaults:{preferredFormat:"24h",defaultPeriod:"AM",midnightCrossing:"next-day"}}),new En.Setting(a).setName(d("Enable Time Parsing")).setDesc(d("Automatically parse natural language time expressions and specific times (12:00, 1:30 PM, 12:00-13:00)")).addToggle(r=>r.setValue(n.plugin.settings.timeParsing.enabled).onChange(async i=>{n.plugin.settings.timeParsing.enabled=i,n.applySettingsUpdate()})),new En.Setting(a).setName(d("Remove Original Time Expressions")).setDesc(d("Remove parsed time expressions from the task text")).addToggle(r=>{var i,s;return r.setValue((s=(i=n.plugin.settings.timeParsing)==null?void 0:i.removeOriginalText)!=null?s:!0).onChange(async o=>{n.plugin.settings.timeParsing&&(n.plugin.settings.timeParsing.removeOriginalText=o,n.applySettingsUpdate())})}),a.createEl("h3",{text:d("Supported Languages")}),a.createEl("p",{text:d("Currently supports English and Chinese time expressions. More languages may be added in future updates."),cls:"setting-item-description"}),a.createEl("h3",{text:d("Date Keywords Configuration")}),new En.Setting(a).setName(d("Start Date Keywords")).setDesc(d("Keywords that indicate start dates (comma-separated)")).addTextArea(r=>{var s,o;let i=((o=(s=n.plugin.settings.timeParsing)==null?void 0:s.dateKeywords)==null?void 0:o.start)||[];r.setValue(i.join(", ")).setPlaceholder("start, begin, from, \u5F00\u59CB, \u4ECE").onChange(async l=>{n.plugin.settings.timeParsing&&(n.plugin.settings.timeParsing.dateKeywords.start=l.split(",").map(c=>c.trim()).filter(c=>c.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),new En.Setting(a).setName(d("Due Date Keywords")).setDesc(d("Keywords that indicate due dates (comma-separated)")).addTextArea(r=>{var s,o;let i=((o=(s=n.plugin.settings.timeParsing)==null?void 0:s.dateKeywords)==null?void 0:o.due)||[];r.setValue(i.join(", ")).setPlaceholder("due, deadline, by, until, \u622A\u6B62, \u5230\u671F, \u4E4B\u524D").onChange(async l=>{n.plugin.settings.timeParsing&&(n.plugin.settings.timeParsing.dateKeywords.due=l.split(",").map(c=>c.trim()).filter(c=>c.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),new En.Setting(a).setName(d("Scheduled Date Keywords")).setDesc(d("Keywords that indicate scheduled dates (comma-separated)")).addTextArea(r=>{var s,o;let i=((o=(s=n.plugin.settings.timeParsing)==null?void 0:s.dateKeywords)==null?void 0:o.scheduled)||[];r.setValue(i.join(", ")).setPlaceholder("scheduled, on, at, \u5B89\u6392, \u8BA1\u5212, \u5728").onChange(async l=>{n.plugin.settings.timeParsing&&(n.plugin.settings.timeParsing.dateKeywords.scheduled=l.split(",").map(c=>c.trim()).filter(c=>c.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),a.createEl("h3",{text:d("Time Format Configuration")}),new En.Setting(a).setName(d("Preferred Time Format")).setDesc(d("Default format preference for ambiguous time expressions")).addDropdown(r=>{var i;r.addOption("12h",d("12-hour format (1:30 PM)")).addOption("24h",d("24-hour format (13:30)")).setValue(((i=n.plugin.settings.timeParsing.timeDefaults)==null?void 0:i.preferredFormat)||"24h").onChange(async s=>{n.plugin.settings.timeParsing.timeDefaults?n.plugin.settings.timeParsing.timeDefaults.preferredFormat=s:n.plugin.settings.timeParsing.timeDefaults={preferredFormat:s,defaultPeriod:"AM",midnightCrossing:"next-day"},n.applySettingsUpdate()})}),new En.Setting(a).setName(d("Default AM/PM Period")).setDesc(d("Default period when AM/PM is ambiguous in 12-hour format")).addDropdown(r=>{var i;r.addOption("AM",d("AM (Morning)")).addOption("PM",d("PM (Afternoon/Evening)")).setValue(((i=n.plugin.settings.timeParsing.timeDefaults)==null?void 0:i.defaultPeriod)||"AM").onChange(async s=>{n.plugin.settings.timeParsing.timeDefaults?n.plugin.settings.timeParsing.timeDefaults.defaultPeriod=s:n.plugin.settings.timeParsing.timeDefaults={preferredFormat:"24h",defaultPeriod:s,midnightCrossing:"next-day"},n.applySettingsUpdate()})}),new En.Setting(a).setName(d("Midnight Crossing Behavior")).setDesc(d("How to handle time ranges that cross midnight (e.g., 23:00-01:00)")).addDropdown(r=>{var i;r.addOption("next-day",d("Next day (23:00 today - 01:00 tomorrow)")).addOption("same-day",d("Same day (treat as error)")).addOption("error",d("Show error")).setValue(((i=n.plugin.settings.timeParsing.timeDefaults)==null?void 0:i.midnightCrossing)||"next-day").onChange(async s=>{n.plugin.settings.timeParsing.timeDefaults?n.plugin.settings.timeParsing.timeDefaults.midnightCrossing=s:n.plugin.settings.timeParsing.timeDefaults={preferredFormat:"24h",defaultPeriod:"AM",midnightCrossing:s},n.applySettingsUpdate()})}),new En.Setting(a).setName(d("Time Range Separators")).setDesc(d("Characters used to separate time ranges (comma-separated)")).addTextArea(r=>{var s;let i=((s=n.plugin.settings.timeParsing.timePatterns)==null?void 0:s.rangeSeparators)||["-","~","\uFF5E"];r.setValue(i.join(", ")).setPlaceholder("-, ~, \uFF5E, ' - ', ' ~ '").onChange(async o=>{n.plugin.settings.timeParsing.timePatterns?n.plugin.settings.timeParsing.timePatterns.rangeSeparators=o.split(",").map(l=>l.trim()).filter(l=>l.length>0):n.plugin.settings.timeParsing.timePatterns={singleTime:[],timeRange:[],rangeSeparators:o.split(",").map(l=>l.trim()).filter(l=>l.length>0)},n.applySettingsUpdate()}),r.inputEl.rows=2}),a.createEl("h3",{text:d("Examples")});let e=a.createEl("div",{cls:"time-parsing-examples"});[{input:"go to bed tomorrow",output:"go to bed \u{1F4C5} 2025-01-05"},{input:"meeting next week",output:"meeting \u{1F4C5} 2025-01-11"},{input:"project due by Friday",output:"project \u{1F4C5} 2025-01-04"},{input:"\u660E\u5929\u5F00\u4F1A",output:"\u5F00\u4F1A \u{1F4C5} 2025-01-05"},{input:"3\u5929\u540E\u5B8C\u6210",output:"\u5B8C\u6210 \u{1F4C5} 2025-01-07"},{input:"meeting at 2:30 PM",output:"meeting \u{1F4C5} 2025-01-04 \u23F0 14:30"},{input:"workshop 9:00-17:00",output:"workshop \u{1F4C5} 2025-01-04 \u23F0 09:00-17:00"},{input:"call scheduled 12:00",output:"call \u{1F4C5} 2025-01-04 \u23F0 12:00"},{input:"lunch 12:00\uFF5E13:00",output:"lunch \u{1F4C5} 2025-01-04 \u23F0 12:00-13:00"}].forEach(r=>{let i=e.createEl("div",{cls:"time-parsing-example"});i.createEl("span",{text:"Input: ",cls:"example-label"}),i.createEl("code",{text:r.input,cls:"example-input"}),i.createEl("br"),i.createEl("span",{text:"Output: ",cls:"example-label"}),i.createEl("code",{text:r.output,cls:"example-output"})})}var gl=require("obsidian");var wj=require("obsidian");var bj=[{id:"progress-bar-main",tabId:"progress-bar",name:"Progress bar",description:"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.",keywords:["progress","bar","parent","task","customize"],translationKey:"Progress bar",descriptionKey:"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.",category:"display"},{id:"progress-display-mode",tabId:"progress-bar",name:"Progress display mode",description:"Choose how to display task progress",keywords:["progress","display","mode","choose","task"],translationKey:"Progress display mode",descriptionKey:"Choose how to display task progress",category:"display"},{id:"progress-reading-mode",tabId:"progress-bar",name:"Enable progress bar in reading mode",description:"Toggle this to allow this plugin to show progress bars in reading mode.",keywords:["progress","bar","reading","mode","enable","show"],translationKey:"Enable progress bar in reading mode",descriptionKey:"Toggle this to allow this plugin to show progress bars in reading mode.",category:"display"},{id:"progress-hover-info",tabId:"progress-bar",name:"Support hover to show progress info",description:"Toggle this to allow this plugin to show progress info when hovering over the progress bar.",keywords:["hover","progress","info","show","support"],translationKey:"Support hover to show progress info",descriptionKey:"Toggle this to allow this plugin to show progress info when hovering over the progress bar.",category:"display"},{id:"progress-non-task-bullet",tabId:"progress-bar",name:"Add progress bar to non-task bullet",description:"Toggle this to allow adding progress bars to regular list items (non-task bullets).",keywords:["progress","bar","non-task","bullet","list","items"],translationKey:"Add progress bar to non-task bullet",descriptionKey:"Toggle this to allow adding progress bars to regular list items (non-task bullets).",category:"display"},{id:"progress-heading",tabId:"progress-bar",name:"Add progress bar to Heading",description:"Toggle this to allow this plugin to add progress bar for Task below the headings.",keywords:["progress","bar","heading","task","below"],translationKey:"Add progress bar to Heading",descriptionKey:"Toggle this to allow this plugin to add progress bar for Task below the headings.",category:"display"},{id:"progress-sub-children",tabId:"progress-bar",name:"Count sub children of current Task",description:"Toggle this to allow this plugin to count sub tasks when generating progress bar.",keywords:["count","sub","children","task","sub-tasks"],translationKey:"Count sub children of current Task",descriptionKey:"Toggle this to allow this plugin to count sub tasks when generating progress bar.",category:"display"},{id:"progress-custom-goal",tabId:"progress-bar",name:"Use custom goal for progress bar",description:"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.",keywords:["custom","goal","progress","bar","pattern","number"],translationKey:"Use custom goal for progress bar",descriptionKey:"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.",category:"display"},{id:"progress-format",tabId:"progress-bar",name:"Progress format",description:"Choose how to display the task progress",keywords:["progress","format","display","task"],translationKey:"Progress format",descriptionKey:"Choose how to display the task progress",category:"display"},{id:"hide-progress-bars",tabId:"progress-bar",name:"Hide progress bars",keywords:["hide","progress","bars"],translationKey:"Hide progress bars",category:"display"},{id:"hide-progress-conditions",tabId:"progress-bar",name:"Hide progress bars based on conditions",description:"Toggle this to enable hiding progress bars based on tags, folders, or metadata.",keywords:["hide","progress","bars","conditions","tags","folders","metadata"],translationKey:"Hide progress bars based on conditions",descriptionKey:"Toggle this to enable hiding progress bars based on tags, folders, or metadata.",category:"display"},{id:"checkbox-status-settings",tabId:"task-status",name:"Checkbox Status Settings",description:"Configure checkbox status settings",keywords:["checkbox","status","settings","configure"],translationKey:"Checkbox Status Settings",descriptionKey:"Configure checkbox status settings",category:"display"},{id:"file-metadata-inheritance",tabId:"task-status",name:"File Metadata Inheritance",description:"Configure how tasks inherit metadata from file frontmatter",keywords:["file","metadata","inheritance","tasks","frontmatter"],translationKey:"File Metadata Inheritance",descriptionKey:"Configure how tasks inherit metadata from file frontmatter",category:"display"},{id:"enable-metadata-inheritance",tabId:"task-status",name:"Enable file metadata inheritance",description:"Allow tasks to inherit metadata properties from their file's frontmatter",keywords:["enable","file","metadata","inheritance","properties"],translationKey:"Enable file metadata inheritance",descriptionKey:"Allow tasks to inherit metadata properties from their file's frontmatter",category:"display"},{id:"auto-complete-parent",tabId:"task-status",name:"Auto complete parent checkbox",description:"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.",keywords:["auto","complete","parent","checkbox","child","tasks"],translationKey:"Auto complete parent checkbox",descriptionKey:"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.",category:"display"},{id:"parent-in-progress",tabId:"task-status",name:"Mark parent as 'In Progress' when partially complete",description:"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.",keywords:["parent","in progress","partially","complete","child","tasks"],translationKey:"Mark parent as 'In Progress' when partially complete",descriptionKey:"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.",category:"display"},{id:"completed-chars",tabId:"task-status",name:"Completed",description:'Characters in square brackets that represent completed tasks. Example: "x|X"',keywords:["completed","characters","square","brackets","tasks"],translationKey:"Completed",descriptionKey:'Characters in square brackets that represent completed tasks. Example: "x|X"',category:"display"},{id:"planned-chars",tabId:"task-status",name:"Planned",description:'Characters in square brackets that represent planned tasks. Example: "?"',keywords:["planned","characters","square","brackets","tasks"],translationKey:"Planned",descriptionKey:'Characters in square brackets that represent planned tasks. Example: "?"',category:"display"},{id:"in-progress-chars",tabId:"task-status",name:"In Progress",description:'Characters in square brackets that represent tasks in progress. Example: ">|/"',keywords:["in progress","characters","square","brackets","tasks"],translationKey:"In Progress",descriptionKey:'Characters in square brackets that represent tasks in progress. Example: ">|/"',category:"display"},{id:"abandoned-chars",tabId:"task-status",name:"Abandoned",description:'Characters in square brackets that represent abandoned tasks. Example: "-"',keywords:["abandoned","characters","square","brackets","tasks"],translationKey:"Abandoned",descriptionKey:'Characters in square brackets that represent abandoned tasks. Example: "-"',category:"display"},{id:"not-started-chars",tabId:"task-status",name:"Not Started",description:'Characters in square brackets that represent not started tasks. Default is space " "',keywords:["not started","characters","square","brackets","tasks","space"],translationKey:"Not Started",descriptionKey:'Characters in square brackets that represent not started tasks. Default is space " "',category:"display"},{id:"priority-picker-settings",tabId:"date-priority",name:"Priority Picker Settings",description:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",keywords:["priority","picker","settings","dropdown","emoji","letter"],translationKey:"Priority Picker Settings",descriptionKey:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",category:"workflow"},{id:"enable-priority-picker",tabId:"date-priority",name:"Enable priority picker",description:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",keywords:["enable","priority","picker","dropdown","emoji","letter"],translationKey:"Enable priority picker",descriptionKey:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",category:"workflow"},{id:"enable-priority-shortcuts",tabId:"date-priority",name:"Enable priority keyboard shortcuts",description:"Toggle to enable keyboard shortcuts for setting task priorities.",keywords:["enable","priority","keyboard","shortcuts","task"],translationKey:"Enable priority keyboard shortcuts",descriptionKey:"Toggle to enable keyboard shortcuts for setting task priorities.",category:"workflow"},{id:"date-picker",tabId:"date-priority",name:"Date picker",keywords:["date","picker"],translationKey:"Date picker",category:"workflow"},{id:"enable-date-picker",tabId:"date-priority",name:"Enable date picker",description:"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.",keywords:["enable","date","picker","tasks","calendar","icon"],translationKey:"Enable date picker",descriptionKey:"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.",category:"workflow"},{id:"recurrence-calculation",tabId:"date-priority",name:"Recurrence date calculation",description:"Choose how to calculate the next date for recurring tasks",keywords:["recurrence","date","calculation","recurring","tasks"],translationKey:"Recurrence date calculation",descriptionKey:"Choose how to calculate the next date for recurring tasks",category:"workflow"},{id:"task-filter",tabId:"task-filter",name:"Task Filter",keywords:["task","filter"],translationKey:"Task Filter",category:"management"},{id:"enable-task-filter",tabId:"task-filter",name:"Enable Task Filter",description:"Toggle this to enable the task filter panel",keywords:["enable","task","filter","panel"],translationKey:"Enable Task Filter",descriptionKey:"Toggle this to enable the task filter panel",category:"management"},{id:"preset-filters",tabId:"task-filter",name:"Preset Filters",description:"Create and manage preset filters for quick access to commonly used task filters.",keywords:["preset","filters","create","manage","quick","access"],translationKey:"Preset Filters",descriptionKey:"Create and manage preset filters for quick access to commonly used task filters.",category:"management"},{id:"file-filter",tabId:"file-filter",name:"File Filter",keywords:["file","filter"],translationKey:"File Filter",category:"core"},{id:"enable-file-filter",tabId:"file-filter",name:"Enable File Filter",description:"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.",keywords:["enable","file","filter","folder","indexing","performance"],translationKey:"Enable File Filter",descriptionKey:"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.",category:"core"},{id:"file-filter-mode",tabId:"file-filter",name:"File Filter Mode",description:"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)",keywords:["file","filter","mode","whitelist","blacklist","include","exclude"],translationKey:"File Filter Mode",descriptionKey:"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)",category:"core"},{id:"file-filter-rules",tabId:"file-filter",name:"File Filter Rules",description:"Configure which files and folders to include or exclude from task indexing",keywords:["file","filter","rules","configure","folders","indexing"],translationKey:"File Filter Rules",descriptionKey:"Configure which files and folders to include or exclude from task indexing",category:"core"},{id:"task-gutter",tabId:"task-handler",name:"Task Gutter",description:"Configure the task gutter.",keywords:["task","gutter","configure"],translationKey:"Task Gutter",descriptionKey:"Configure the task gutter.",category:"management"},{id:"enable-task-gutter",tabId:"task-handler",name:"Enable task gutter",description:"Toggle this to enable the task gutter.",keywords:["enable","task","gutter"],translationKey:"Enable task gutter",descriptionKey:"Toggle this to enable the task gutter.",category:"management"},{id:"completed-task-mover",tabId:"task-handler",name:"Completed Task Mover",keywords:["completed","task","mover"],translationKey:"Completed Task Mover",category:"management"},{id:"enable-completed-mover",tabId:"task-handler",name:"Enable completed task mover",description:"Toggle this to enable commands for moving completed tasks to another file.",keywords:["enable","completed","task","mover","commands","moving"],translationKey:"Enable completed task mover",descriptionKey:"Toggle this to enable commands for moving completed tasks to another file.",category:"management"},{id:"task-sorting",tabId:"task-handler",name:"Task Sorting",description:"Configure how tasks are sorted in the document.",keywords:["task","sorting","configure","document"],translationKey:"Task Sorting",descriptionKey:"Configure how tasks are sorted in the document.",category:"management"},{id:"enable-task-sorting",tabId:"task-handler",name:"Enable Task Sorting",description:"Toggle this to enable commands for sorting tasks.",keywords:["enable","task","sorting","commands"],translationKey:"Enable Task Sorting",descriptionKey:"Toggle this to enable commands for sorting tasks.",category:"management"},{id:"workflow",tabId:"workflow",name:"Workflow",description:"Configure task workflows for project and process management",keywords:["workflow","configure","task","project","process","management"],translationKey:"Workflow",descriptionKey:"Configure task workflows for project and process management",category:"workflow"},{id:"enable-workflow",tabId:"workflow",name:"Enable workflow",description:"Toggle to enable the workflow system for tasks",keywords:["enable","workflow","system","tasks"],translationKey:"Enable workflow",descriptionKey:"Toggle to enable the workflow system for tasks",category:"workflow"},{id:"auto-add-timestamp",tabId:"workflow",name:"Auto-add timestamp",description:"Automatically add a timestamp to the task when it is created",keywords:["auto","add","timestamp","task","created"],translationKey:"Auto-add timestamp",descriptionKey:"Automatically add a timestamp to the task when it is created",category:"workflow"},{id:"auto-remove-stage-marker",tabId:"workflow",name:"Auto remove last stage marker",description:"Automatically remove the last stage marker when a task is completed",keywords:["auto","remove","stage","marker","task","completed"],translationKey:"Auto remove last stage marker",descriptionKey:"Automatically remove the last stage marker when a task is completed",category:"workflow"},{id:"auto-add-next-task",tabId:"workflow",name:"Auto-add next task",description:"Automatically create a new task with the next stage when completing a task",keywords:["auto","add","next","task","create","stage","completing"],translationKey:"Auto-add next task",descriptionKey:"Automatically create a new task with the next stage when completing a task",category:"workflow"},{id:"quick-capture",tabId:"quick-capture",name:"Quick capture",keywords:["quick","capture"],translationKey:"Quick capture",category:"workflow"},{id:"enable-quick-capture",tabId:"quick-capture",name:"Enable quick capture",description:"Toggle this to enable Org-mode style quick capture panel.",keywords:["enable","quick","capture","org-mode","panel"],translationKey:"Enable quick capture",descriptionKey:"Toggle this to enable Org-mode style quick capture panel.",category:"workflow"},{id:"capture-target-type",tabId:"quick-capture",name:"Target type",description:"Choose whether to capture to a fixed file or daily note",keywords:["target","type","capture","fixed","file","daily","note"],translationKey:"Target type",descriptionKey:"Choose whether to capture to a fixed file or daily note",category:"workflow"},{id:"capture-target-file",tabId:"quick-capture",name:"Target file",description:"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}",keywords:["target","file","captured","text","saved","path","templates"],translationKey:"Target file",descriptionKey:"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}",category:"workflow"},{id:"minimal-mode",tabId:"quick-capture",name:"Minimal Mode",keywords:["minimal","mode"],translationKey:"Minimal Mode",category:"workflow"},{id:"enable-minimal-mode",tabId:"quick-capture",name:"Enable minimal mode",description:"Enable simplified single-line quick capture with inline suggestions",keywords:["enable","minimal","mode","simplified","single-line","suggestions"],translationKey:"Enable minimal mode",descriptionKey:"Enable simplified single-line quick capture with inline suggestions",category:"workflow"},{id:"time-parsing-settings",tabId:"time-parsing",name:"Time Parsing Settings",keywords:["time","parsing","settings"],translationKey:"Time Parsing Settings",category:"workflow"},{id:"enable-time-parsing",tabId:"time-parsing",name:"Enable Time Parsing",description:"Automatically parse natural language time expressions in Quick Capture",keywords:["enable","time","parsing","natural","language","expressions","quick","capture"],translationKey:"Enable Time Parsing",descriptionKey:"Automatically parse natural language time expressions in Quick Capture",category:"workflow"},{id:"remove-time-expressions",tabId:"time-parsing",name:"Remove Original Time Expressions",description:"Remove parsed time expressions from the task text",keywords:["remove","original","time","expressions","parsed","task","text"],translationKey:"Remove Original Time Expressions",descriptionKey:"Remove parsed time expressions from the task text",category:"workflow"},{id:"start-date-keywords",tabId:"time-parsing",name:"Start Date Keywords",description:"Keywords that indicate start dates (comma-separated)",keywords:["start","date","keywords","indicate","comma-separated"],translationKey:"Start Date Keywords",descriptionKey:"Keywords that indicate start dates (comma-separated)",category:"workflow"},{id:"due-date-keywords",tabId:"time-parsing",name:"Due Date Keywords",description:"Keywords that indicate due dates (comma-separated)",keywords:["due","date","keywords","indicate","comma-separated"],translationKey:"Due Date Keywords",descriptionKey:"Keywords that indicate due dates (comma-separated)",category:"workflow"},{id:"scheduled-date-keywords",tabId:"time-parsing",name:"Scheduled Date Keywords",description:"Keywords that indicate scheduled dates (comma-separated)",keywords:["scheduled","date","keywords","indicate","comma-separated"],translationKey:"Scheduled Date Keywords",descriptionKey:"Keywords that indicate scheduled dates (comma-separated)",category:"workflow"},{id:"timeline-sidebar",tabId:"timeline-sidebar",name:"Timeline Sidebar",keywords:["timeline","sidebar"],translationKey:"Timeline Sidebar",category:"workflow"},{id:"enable-timeline-sidebar",tabId:"timeline-sidebar",name:"Enable Timeline Sidebar",description:"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.",keywords:["enable","timeline","sidebar","view","quick","access","daily","events","tasks"],translationKey:"Enable Timeline Sidebar",descriptionKey:"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.",category:"workflow"},{id:"timeline-auto-open",tabId:"timeline-sidebar",name:"Auto-open on startup",description:"Automatically open the timeline sidebar when Obsidian starts.",keywords:["auto-open","startup","automatically","timeline","sidebar","obsidian"],translationKey:"Auto-open on startup",descriptionKey:"Automatically open the timeline sidebar when Obsidian starts.",category:"workflow"},{id:"timeline-show-completed",tabId:"timeline-sidebar",name:"Show completed tasks",description:"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.",keywords:["show","completed","tasks","timeline","view","incomplete"],translationKey:"Show completed tasks",descriptionKey:"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.",category:"workflow"},{id:"enhanced-project-config",tabId:"project",name:"Enhanced Project Configuration",description:"Configure advanced project detection and management features",keywords:["enhanced","project","configuration","advanced","detection","management"],translationKey:"Enhanced Project Configuration",descriptionKey:"Configure advanced project detection and management features",category:"management"},{id:"enable-enhanced-projects",tabId:"project",name:"Enable enhanced project features",description:"Enable path-based, metadata-based, and config file-based project detection",keywords:["enable","enhanced","project","features","path-based","metadata-based","config"],translationKey:"Enable enhanced project features",descriptionKey:"Enable path-based, metadata-based, and config file-based project detection",category:"management"},{id:"path-based-projects",tabId:"project",name:"Path-based Project Mappings",description:"Configure project names based on file paths",keywords:["path-based","project","mappings","configure","names","file","paths"],translationKey:"Path-based Project Mappings",descriptionKey:"Configure project names based on file paths",category:"management"},{id:"metadata-based-projects",tabId:"project",name:"Metadata-based Project Configuration",description:"Configure project detection from file frontmatter",keywords:["metadata-based","project","configuration","detection","file","frontmatter"],translationKey:"Metadata-based Project Configuration",descriptionKey:"Configure project detection from file frontmatter",category:"management"},{id:"view-index-config",tabId:"view-settings",name:"View & Index Configuration",description:"Configure the Task Genius sidebar views, visibility, order, and create custom views.",keywords:["view","index","configuration","sidebar","visibility","order","custom"],translationKey:"View & Index Configuration",descriptionKey:"Configure the Task Genius sidebar views, visibility, order, and create custom views.",category:"core"},{id:"enable-task-genius-view",tabId:"view-settings",name:"Enable task genius view",description:"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.",keywords:["enable","task","genius","view","indexer","vault"],translationKey:"Enable task genius view",descriptionKey:"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.",category:"core"},{id:"default-view-mode",tabId:"view-settings",name:"Default view mode",description:"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.",keywords:["default","view","mode","display","tasks","open","create"],translationKey:"Default view mode",descriptionKey:"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.",category:"core"},{id:"prefer-metadata-format",tabId:"view-settings",name:"Prefer metadata format of task",description:"You can choose dataview format or tasks format, that will influence both index and save format.",keywords:["prefer","metadata","format","task","dataview","tasks","index","save"],translationKey:"Prefer metadata format of task",descriptionKey:"You can choose dataview format or tasks format, that will influence both index and save format.",category:"core"},{id:"rewards",tabId:"reward",name:"Rewards",description:"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.",keywords:["rewards","configure","completing","tasks","items","occurrence","chances","conditions"],translationKey:"Rewards",descriptionKey:"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.",category:"gamification"},{id:"enable-rewards",tabId:"reward",name:"Enable rewards",description:"Toggle to enable or disable the reward system.",keywords:["enable","rewards","toggle","disable","reward","system"],translationKey:"Enable rewards",descriptionKey:"Toggle to enable or disable the reward system.",category:"gamification"},{id:"reward-display-type",tabId:"reward",name:"Reward display type",description:"Choose how rewards are displayed when earned.",keywords:["reward","display","type","choose","displayed","earned"],translationKey:"Reward display type",descriptionKey:"Choose how rewards are displayed when earned.",category:"gamification"},{id:"occurrence-levels",tabId:"reward",name:"Occurrence levels",description:"Define different levels of reward rarity and their probability.",keywords:["occurrence","levels","define","different","reward","rarity","probability"],translationKey:"Occurrence levels",descriptionKey:"Define different levels of reward rarity and their probability.",category:"gamification"},{id:"reward-items",tabId:"reward",name:"Reward items",description:"Manage the specific rewards that can be obtained.",keywords:["reward","items","manage","specific","rewards","obtained"],translationKey:"Reward items",descriptionKey:"Manage the specific rewards that can be obtained.",category:"gamification"},{id:"habit",tabId:"habit",name:"Habit",description:"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.",keywords:["habit","configure","settings","adding","editing","managing","completion"],translationKey:"Habit",descriptionKey:"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.",category:"gamification"},{id:"enable-habits",tabId:"habit",name:"Enable habits",keywords:["enable","habits"],translationKey:"Enable habits",category:"gamification"},{id:"ics-calendar-integration",tabId:"ics-integration",name:"ICS Calendar Integration",keywords:["ics","calendar","integration"],translationKey:"ICS Calendar Integration",category:"integration"},{id:"enable-background-refresh",tabId:"ics-integration",name:"Enable Background Refresh",description:"Automatically refresh calendar sources in the background",keywords:["enable","background","refresh","automatically","calendar","sources"],translationKey:"Enable Background Refresh",descriptionKey:"Automatically refresh calendar sources in the background",category:"integration"},{id:"global-refresh-interval",tabId:"ics-integration",name:"Global Refresh Interval",description:"Default refresh interval for all sources (minutes)",keywords:["global","refresh","interval","default","sources","minutes"],translationKey:"Global Refresh Interval",descriptionKey:"Default refresh interval for all sources (minutes)",category:"integration"},{id:"maximum-cache-age",tabId:"ics-integration",name:"Maximum Cache Age",description:"How long to keep cached data (hours)",keywords:["maximum","cache","age","keep","cached","data","hours"],translationKey:"Maximum Cache Age",descriptionKey:"How long to keep cached data (hours)",category:"integration"},{id:"beta-test-features",tabId:"beta-test",name:"Beta Test Features",description:"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.",keywords:["beta","test","features","experimental","testing","phase","unstable"],translationKey:"Beta Test Features",descriptionKey:"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.",category:"advanced"},{id:"base-view",tabId:"beta-test",name:"Base View",description:"Advanced view management features that extend the default Task Genius views with additional functionality.",keywords:["base","view","advanced","management","features","extend","default","functionality"],translationKey:"Base View",descriptionKey:"Advanced view management features that extend the default Task Genius views with additional functionality.",category:"advanced"},{id:"enable-base-view",tabId:"beta-test",name:"Enable Base View",description:"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.",keywords:["enable","base","view","experimental","functionality","enhanced","management","capabilities"],translationKey:"Enable Base View",descriptionKey:"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.",category:"advanced"},{id:"about-task-genius",tabId:"about",name:"About Task Genius",keywords:["about","task","genius"],translationKey:"About",category:"info"},{id:"version",tabId:"about",name:"Version",keywords:["version"],translationKey:"Version",category:"info"},{id:"donate",tabId:"about",name:"Donate",description:"If you like this plugin, consider donating to support continued development:",keywords:["donate","plugin","support","development"],translationKey:"Donate",descriptionKey:"If you like this plugin, consider donating to support continued development:",category:"info"},{id:"documentation",tabId:"about",name:"Documentation",description:"View the documentation for this plugin",keywords:["documentation","view","plugin"],translationKey:"Documentation",descriptionKey:"View the documentation for this plugin",category:"info"},{id:"onboarding",tabId:"about",name:"Onboarding",description:"Restart the welcome guide and setup wizard",keywords:["onboarding","restart","welcome","guide","setup","wizard"],translationKey:"Onboarding",descriptionKey:"Restart the welcome guide and setup wizard",category:"info"}];q();var _k=class{constructor(a){this.isInitialized=!1;this.rootEl=null;this.index={items:[],keywordMap:new Map,tabMap:new Map},this.rootEl=a!=null?a:null}initialize(){if(this.isInitialized)return;let a=performance.now();this.rootEl?this.buildIndexFromDOM(this.rootEl):this.buildIndexFromStatic(),`${(performance.now()-a).toFixed(2)}${this.index.items.length}`,this.isInitialized=!0}buildIndexFromStatic(){for(let a of bj){let e={...a,name:d(a.translationKey),description:a.descriptionKey?d(a.descriptionKey):a.description};this.addItemToIndex(e)}}buildIndexFromDOM(a){let e=Array.from(a.querySelectorAll(".settings-tab-section")),t=new Set;e.forEach(r=>{let i=r.getAttribute("data-tab-id")||"general",s=r.getAttribute("data-category")||"core";Array.from(r.querySelectorAll(".setting-item")).forEach((l,c)=>{let u=l.querySelector(".setting-item-name"),p=l.querySelector(".setting-item-description"),m=((u==null?void 0:u.textContent)||"").trim(),f=((p==null?void 0:p.textContent)||"").trim();if(!m)return;let h=l.getAttribute("data-setting-id");(!h||t.has(h))&&(h=this.generateStableId(i,m,c),l.setAttribute("data-setting-id",h)),t.add(h);let g=this.generateKeywords(m,f),k={id:h,tabId:i,name:m,description:f||void 0,keywords:g,translationKey:m,descriptionKey:f||void 0,category:s};this.addItemToIndex(k)})})}addItemToIndex(a){this.index.items.push(a);for(let e of a.keywords){let t=e.toLowerCase();this.index.keywordMap.has(t)||this.index.keywordMap.set(t,[]),this.index.keywordMap.get(t).push(a.id)}this.index.tabMap.has(a.tabId)||this.index.tabMap.set(a.tabId,[]),this.index.tabMap.get(a.tabId).push(a)}generateStableId(a,e,t){let r=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return`${a}-${r||"setting"}-${t}`}generateKeywords(a,e){let r=`${a} ${e||""}`.toLowerCase().replace(/[^a-z0-9\s]+/g," ").split(/\s+/).filter(Boolean);return Array.from(new Set(r)).sort((s,o)=>o.length-s.length).slice(0,12)}buildIndex(){this.index.items.length=0,this.index.keywordMap.clear(),this.index.tabMap.clear(),this.rootEl?this.buildIndexFromDOM(this.rootEl):this.buildIndexFromStatic()}search(a,e=10){if(this.isInitialized||this.initialize(),!a||a.trim().length<2)return[];let t=a.toLowerCase().trim(),r=[],i=new Set,s=(0,wj.prepareFuzzySearch)(t);for(let o of this.index.items){if(i.has(o.id))continue;s(o.name.toLowerCase())&&(r.push({item:o,score:this.calculateScore(t,o.name,"name"),matchType:"name"}),i.add(o.id))}for(let o of this.index.items){if(i.has(o.id)||!o.description)continue;s(o.description.toLowerCase())&&(r.push({item:o,score:this.calculateScore(t,o.description,"description"),matchType:"description"}),i.add(o.id))}for(let o of this.index.items)if(!i.has(o.id)){for(let l of o.keywords)if(s(l.toLowerCase())){r.push({item:o,score:this.calculateScore(t,l,"keyword"),matchType:"keyword"}),i.add(o.id);break}}return r.sort((o,l)=>l.score-o.score).slice(0,e)}calculateScore(a,e,t){let r=e.toLowerCase(),i=a.toLowerCase(),s=0;s+={name:100,description:60,keyword:80}[t],r.includes(i)&&(s+=50,r.startsWith(i)&&(s+=30));let l=Math.min(a.length/e.length,1);return s+=l*20,s}getItemsByTab(a){return this.isInitialized||this.initialize(),this.index.tabMap.get(a)||[]}getItemById(a){return this.isInitialized||this.initialize(),this.index.items.find(e=>e.id===a)}getAllTabIds(){return this.isInitialized||this.initialize(),Array.from(this.index.tabMap.keys())}getStats(){return this.isInitialized||this.initialize(),{itemCount:this.index.items.length,tabCount:this.index.tabMap.size,keywordCount:this.index.keywordMap.size}}};q();var Uk=class extends gl.Component{constructor(e,t){super();this.currentResults=[];this.selectedIndex=-1;this.isVisible=!1;this.blurTimeoutId=0;this.settingTab=e,this.indexer=new _k(t),this.containerEl=t,this.debouncedSearch=(0,gl.debounce)(r=>this.performSearch(r),100,!0),this.createSearchUI(),this.setupEventListeners()}createSearchUI(){let e=this.containerEl.createDiv();e.addClass("tg-settings-search-container");let t=e.createDiv();t.addClass("tg-settings-search-input-container");let r=t.createSpan();r.addClass("tg-settings-search-icon"),(0,gl.setIcon)(r,"search"),this.searchInputEl=t.createEl("input"),this.searchInputEl.type="text",this.searchInputEl.placeholder=d("Search settings...")+" (Ctrl+K)",this.searchInputEl.addClass("tg-settings-search-input"),this.searchInputEl.setAttribute("aria-label",d("Search settings")),this.searchInputEl.setAttribute("autocomplete","off"),this.searchInputEl.setAttribute("spellcheck","false"),this.clearButton=t.createEl("button"),this.clearButton.addClass("tg-settings-search-clear"),this.clearButton.setAttribute("aria-label",d("Clear search")),(0,gl.setIcon)(this.clearButton,"x"),this.clearButton.style.display="none",this.resultsContainerEl=e.createDiv(),this.resultsContainerEl.addClass("tg-settings-search-results"),this.resultsContainerEl.style.display="none",this.resultsContainerEl.setAttribute("role","listbox"),this.resultsContainerEl.setAttribute("aria-label",d("Search results"))}setupEventListeners(){this.registerDomEvent(this.clearButton,"click",()=>{this.clearSearch(),this.searchInputEl.focus()}),this.registerDomEvent(this.searchInputEl,"input",e=>{let t=e.target.value;this.handleSearchInput(t)}),this.registerDomEvent(this.searchInputEl,"keydown",e=>{this.handleKeyDown(e)}),this.registerDomEvent(document,"keydown",e=>{(navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey:e.ctrlKey)&&e.key.toLowerCase()==="k"&&this.containerEl.isConnected&&document.body.contains(this.containerEl)&&(e.preventDefault(),e.stopPropagation(),this.searchInputEl.focus(),this.searchInputEl.value&&this.searchInputEl.select())}),this.registerDomEvent(this.searchInputEl,"focus",()=>{this.currentResults.length>0&&this.showResults()}),this.registerDomEvent(this.searchInputEl,"blur",()=>{this.blurTimeoutId=window.setTimeout(()=>{this.resultsContainerEl.contains(document.activeElement)||this.hideResults()},200)}),this.registerDomEvent(document,"click",e=>{this.containerEl.contains(e.target)||this.hideResults()})}handleSearchInput(e){this.clearButton.style.display=e.length>0?"block":"none",this.debouncedSearch(e)}performSearch(e){if(`${e}`,e.length===0){this.hideResults();return}if(e.length<1){`${e.length}`;return}this.currentResults=this.indexer.search(e,12),this.selectedIndex=-1,`${this.currentResults.length}`,this.currentResults.forEach((t,r)=>{r+1,`${t.item.name}${t.matchType}${t.score}`}),this.currentResults.length>0?(this.renderResults(),this.showResults(),this.selectedIndex===-1&&this.setSelectedIndex(0)):(this.renderNoResults(),this.showResults())}renderResults(){this.resultsContainerEl.empty(),this.currentResults.forEach((e,t)=>{let r=this.resultsContainerEl.createDiv();r.addClass("tg-settings-search-result"),r.setAttribute("data-index",t.toString());let i=r.createDiv();i.addClass("tg-settings-search-result-name"),i.textContent=e.item.name;let s=r.createDiv();s.addClass("tg-settings-search-result-meta");let o=s.createSpan();if(o.addClass("tg-settings-search-result-category"),o.textContent=this.getCategoryDisplayName(e.item.category),e.item.description&&e.matchType==="description"){let l=r.createDiv();l.addClass("tg-settings-search-result-desc"),l.textContent=this.truncateText(e.item.description,80)}this.registerDomEvent(r,"click",()=>{this.selectResult(e)}),this.registerDomEvent(r,"mouseenter",()=>{this.setSelectedIndex(t)})})}renderNoResults(){this.resultsContainerEl.empty();let e=this.resultsContainerEl.createDiv();e.addClass("tg-settings-search-no-result"),e.textContent=d("No settings found")}handleKeyDown(e){if(!this.isVisible||this.currentResults.length===0){e.key==="Escape"&&this.clearSearch();return}switch(e.key){case"ArrowDown":e.preventDefault(),this.moveSelection(1);break;case"ArrowUp":e.preventDefault(),this.moveSelection(-1);break;case"Enter":e.preventDefault(),this.selectedIndex>=0&&this.currentResults[this.selectedIndex]&&this.selectResult(this.currentResults[this.selectedIndex]);break;case"Escape":e.preventDefault(),this.clearSearch();break}}moveSelection(e){let t=this.selectedIndex+e;t>=0&&t=0){let r=this.resultsContainerEl.querySelector(`[data-index="${e}"]`);r&&(r.addClass("tg-settings-search-result-selected"),r.scrollIntoView({block:"nearest"}))}}selectResult(e){this.navigateToSetting(e.item.tabId,e.item.id),this.clearSearch()}navigateToSetting(e,t){this.settingTab.switchToTab(e);let r=window.setTimeout(()=>{this.scrollToSetting(t)},100);this.register(()=>clearTimeout(r))}scrollToSetting(e){let t=this.containerEl.querySelector(`[data-setting-id="${e}"]`);if(t){t.scrollIntoView({behavior:"smooth",block:"center"}),t.addClass("tg-settings-search-highlight");let r=window.setTimeout(()=>{t.removeClass("tg-settings-search-highlight")},2e3);this.register(()=>clearTimeout(r))}}showResults(){this.resultsContainerEl.style.display="block",this.isVisible=!0}hideResults(){this.resultsContainerEl.style.display="none",this.isVisible=!1,this.selectedIndex=-1}clearSearch(){this.searchInputEl.value="",this.currentResults=[],this.hideResults(),this.clearButton.style.display="none"}getCategoryDisplayName(e){return{core:d("Core Settings"),display:d("Display & Progress"),management:d("Task Management"),workflow:d("Workflow & Automation"),gamification:d("Gamification"),integration:d("Integration"),advanced:d("Advanced"),info:d("Information")}[e]||e}truncateText(e,t){return e.length<=t?e:e.substring(0,t-3)+"..."}onunload(){clearTimeout(this.blurTimeoutId),this.containerEl.empty()}destroy(){this.unload()}};var it=require("obsidian");q();var ps=class n{constructor(a){this.authToken=a}validateRequest(a){let e=a.headers.authorization;if(!e)return!1;let t=n.parseAuthHeader(e);return t?t.token===this.authToken:!1}static parseAuthHeader(a){let e=a.split(" ");if(e.length!==2||e[0]!=="Bearer")return null;let t=e[1],r=t.indexOf("+");if(r===-1)return{token:t};let i=t.substring(0,r),s=t.substring(r+1)||void 0;return{token:i,appId:s}}getClientAppId(a){let e=a.headers["mcp-app-id"];if(e)return e;let t=a.headers.authorization;if(!t)return;let r=n.parseAuthHeader(t);return r==null?void 0:r.appId}handleUnauthorized(a){a.statusCode=401,a.setHeader("Content-Type","application/json"),a.setHeader("WWW-Authenticate",'Bearer realm="MCP Server"'),a.end(JSON.stringify({error:"Unauthorized",message:"Invalid or missing authentication token"}))}middleware(a,e,t){let r=a.url||"";if(r==="/health"||r==="/"){t();return}if(!this.validateRequest(a)){this.handleUnauthorized(e);return}t()}updateToken(a){this.authToken=a}static generateToken(){let a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e="";for(let t=0;t<32;t++)e+=a.charAt(Math.floor(Math.random()*a.length));return e}};function Tj(n,a,e){let t=n.createDiv("mcp-config-block");t.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(JSON.stringify(a,null,2));let s=t.createEl("button",{text:d("Copy"),cls:"mcp-copy-btn"});s.onclick=async()=>{await navigator.clipboard.writeText(JSON.stringify(a,null,2)),s.setText(d("Copied!")),s.addClass("copied"),setTimeout(()=>{s.setText(d("Copy")),s.removeClass("copied")},2e3)}}function xj(n,a,e){var Pe,nt,et,Ne;if(!it.Platform.isDesktopApp){n.createEl("div",{text:d("MCP integration is only available on desktop"),cls:"setting-item-description"});return}let t=a.mcpServerManager;n.createEl("h3",{text:d("MCP Server Status")});let r=n.createDiv("mcp-status-container");Lm(r,t),new it.Setting(n).setName(d("Enable MCP Server")).setDesc(d("Start the MCP server to allow external tool connections")).addToggle(oe=>{var ge;oe.setValue(((ge=a.settings.mcpIntegration)==null?void 0:ge.enabled)||!1).onChange(async Ee=>{Ee?new Ba(a,{title:d("Enable MCP Server"),message:d(`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes: \u2022 Reading all tasks and their details \u2022 Creating new tasks \u2022 Updating existing tasks \u2022 Deleting tasks \u2022 Accessing task metadata and properties Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure. Do you want to continue?`),confirmText:d("Enable MCP Server"),cancelText:d("Cancel"),onConfirm:async Ke=>{Ke?(a.settings.mcpIntegration?a.settings.mcpIntegration.enabled=!0:a.settings.mcpIntegration={enabled:!0,port:7777,host:"127.0.0.1",authToken:ps.generateToken(),enableCors:!0,logLevel:"info"},await a.saveSettings(),t&&(await t.updateConfig({enabled:!0}),Lm(r,t)),oe.setValue(!0),new it.Notice(d("MCP Server enabled. Keep your authentication token secure!"))):oe.setValue(!1)}}).open():(a.settings.mcpIntegration&&(a.settings.mcpIntegration.enabled=!1),await a.saveSettings(),t&&(await t.updateConfig({enabled:!1}),Lm(r,t)))})}),n.createEl("h3",{text:d("Server Configuration")}),new it.Setting(n).setName(d("Host")).setDesc(d("Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces")).addDropdown(oe=>{var ge;oe.addOption("127.0.0.1","127.0.0.1 (Local only)").addOption("0.0.0.0","0.0.0.0 (All interfaces - for external access)").setValue(((ge=a.settings.mcpIntegration)==null?void 0:ge.host)||"127.0.0.1").onChange(async Ee=>{a.settings.mcpIntegration&&(Ee==="0.0.0.0"&&a.settings.mcpIntegration.host!=="0.0.0.0"?new Ba(a,{title:d("Security Warning"),message:d(`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks. This could expose your Obsidian data to: - Other devices on your local network - Potentially the internet if your firewall is misconfigured **Only proceed if you:** - Understand the security implications - Have properly configured your firewall - Need external access for legitimate reasons Are you sure you want to continue?`),confirmText:d("Yes, I understand the risks"),cancelText:d("Cancel"),onConfirm:async Ke=>{var ue;Ke?(a.settings.mcpIntegration&&(a.settings.mcpIntegration.host=Ee,e()),new it.Notice(d("Host changed to 0.0.0.0. Server is now accessible from external networks."))):oe.setValue(((ue=a.settings.mcpIntegration)==null?void 0:ue.host)||"127.0.0.1")}}).open():(a.settings.mcpIntegration.host=Ee,e()))})}),new it.Setting(n).setName(d("Port")).setDesc(d("Server port number (default: 7777)")).addText(oe=>{var ge;oe.setPlaceholder("7777").setValue(String(((ge=a.settings.mcpIntegration)==null?void 0:ge.port)||7777)).onChange(async Ee=>{if(!a.settings.mcpIntegration)return;let tt=parseInt(Ee);!isNaN(tt)&&tt>0&&tt<65536&&(a.settings.mcpIntegration.port=tt,e())})}),n.createEl("h3",{text:d("Authentication")});let i=new it.Setting(n).setName(d("Authentication Token")).setDesc(d("Bearer token for authenticating MCP requests (keep this secret)")),s=i.controlEl.createEl("input",{type:"password",value:((Pe=a.settings.mcpIntegration)==null?void 0:Pe.authToken)||"",cls:"mcp-token-input"});s.readOnly=!0,i.addButton(oe=>{oe.setButtonText(d("Show")).onClick(()=>{s.type==="password"?(s.type="text",oe.setButtonText(d("Hide"))):(s.type="password",oe.setButtonText(d("Show")))})}),i.addButton(oe=>{oe.setButtonText(d("Copy")).onClick(async()=>{await navigator.clipboard.writeText(s.value),new it.Notice(d("Token copied to clipboard"))})}),i.addButton(oe=>{oe.setButtonText(d("Regenerate")).onClick(async()=>{if(!a.settings.mcpIntegration||!t)return;let ge=t.regenerateAuthToken();s.value=ge,await a.saveSettings(),new it.Notice(d("New token generated"))})}),n.createEl("h3",{text:d("Advanced Settings")}),new it.Setting(n).setName(d("Enable CORS")).setDesc(d("Allow cross-origin requests (required for web clients)")).addToggle(oe=>{var ge,Ee;oe.setValue((Ee=(ge=a.settings.mcpIntegration)==null?void 0:ge.enableCors)!=null?Ee:!0).onChange(async tt=>{a.settings.mcpIntegration&&(a.settings.mcpIntegration.enableCors=tt,e())})}),new it.Setting(n).setName(d("Log Level")).setDesc(d("Logging verbosity for debugging")).addDropdown(oe=>{var ge;oe.addOption("error",d("Error")).addOption("warn",d("Warning")).addOption("info",d("Info")).addOption("debug",d("Debug")).setValue(((ge=a.settings.mcpIntegration)==null?void 0:ge.logLevel)||"info").onChange(async Ee=>{a.settings.mcpIntegration&&(a.settings.mcpIntegration.logLevel=Ee,e())})}),n.createEl("h3",{text:d("Server Actions")});let o=n.createDiv("mcp-actions-container");new it.Setting(o).setName(d("Test Connection")).setDesc(d("Test the MCP server connection")).addButton(oe=>{oe.setButtonText(d("Test")).onClick(async()=>{var ge,Ee,tt;oe.setDisabled(!0),oe.setButtonText(d("Testing..."));try{let Ke=await(0,it.requestUrl)({url:`http://${((ge=a.settings.mcpIntegration)==null?void 0:ge.host)||"127.0.0.1"}:${((Ee=a.settings.mcpIntegration)==null?void 0:Ee.port)||7777}/health`,method:"GET"}).catch(pt=>{throw console.error("[MCP Test] Health check failed:",pt),new Error(`Cannot reach server: ${pt.message}`)});if(!Ke||Ke.status!==200)throw new Error("Health check failed");let ue=await(0,it.requestUrl)({url:g,method:"POST",headers:{Authorization:w,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize"})}).catch(pt=>{throw new Error(`Initialize failed: ${pt.message}`)});if(ue.status!==200){let pt=ue.text;throw new Error(`Initialize failed with status ${ue.status}: ${pt}`)}let wt=ue.json;if(ue.headers,wt.error)throw new Error(`MCP error: ${wt.error.message}`);let st=ue.headers["mcp-session-id"]||ue.headers["Mcp-Session-Id"]||(wt==null?void 0:wt.sessionId)||((tt=wt==null?void 0:wt.result)==null?void 0:tt.sessionId);if(!st)throw console.error("[MCP Test] No session ID in response"),new Error("No session ID returned");let Gt=(await(0,it.requestUrl)({url:g,method:"POST",headers:{Authorization:w,"Mcp-Session-Id":st,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/list"})})).json;if(Gt.error)throw new Error(`Tools list error: ${Gt.error.message}`);new it.Notice(d("Connection test successful! MCP server is working."))}catch(Ke){console.error("[MCP Test] Test failed:",Ke),new it.Notice(d("Connection test failed: ")+Ke.message)}finally{oe.setDisabled(!1),oe.setButtonText(d("Test"))}})}),new it.Setting(o).setName(d("Restart Server")).setDesc(d("Stop and restart the MCP server")).addButton(oe=>{oe.setButtonText(d("Restart")).setCta().onClick(async()=>{if(t){oe.setDisabled(!0);try{await t.restart(),new it.Notice(d("MCP server restarted")),Lm(r,t)}catch(ge){new it.Notice(d("Failed to restart server: ")+ge.message)}finally{oe.setDisabled(!1)}}})}).addButton(oe=>{oe.setButtonText(d("Use Next Available Port")).onClick(async()=>{if(!(!t||!a.settings.mcpIntegration)){oe.setDisabled(!0);try{let Ee=(a.settings.mcpIntegration.port||7777)+1,tt=!1;for(let Ke=0;Ke<50;Ke++)try{await t.updateConfig({port:Ee}),tt=!0;break}catch(ue){Ee++}tt?(new it.Notice(d("Port updated to ")+String(Ee)),Lm(r,t)):new it.Notice(d("No available port found in range"))}finally{oe.setDisabled(!1)}}})}),n.createEl("h3",{text:d("Client Configuration")});let l=n.createDiv("mcp-config-container"),c=!0,u,p,m=new it.Setting(l).setName(d("Authentication Method")).setDesc(d("Choose the authentication method for client configurations")).addDropdown(oe=>{oe.addOption("methodB",d("Method B: Combined Bearer (Recommended)")).addOption("methodA",d("Method A: Custom Headers")).setValue("methodB").onChange(ge=>{c=ge==="methodB",u(),p&&p()})}),f=((nt=a.settings.mcpIntegration)==null?void 0:nt.host)||"127.0.0.1",g=`http://${f==="0.0.0.0"?"127.0.0.1":f}:${((et=a.settings.mcpIntegration)==null?void 0:et.port)||7777}/mcp`,k=((Ne=a.settings.mcpIntegration)==null?void 0:Ne.authToken)||"",b=`${a.app.vault.getName().toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`,v=a.app.appId,w=`Bearer ${k}+${v}`,x=l.createDiv("mcp-auth-methods");x.createEl("div",{text:d("Supported Authentication Methods:"),cls:"setting-item-description"});let T=x.createEl("ul",{cls:"mcp-auth-list"}),C=T.createEl("li");C.createEl("strong",{text:"Method A (Custom Header):"}),C.appendText(" "),C.createEl("code",{text:`mcp-app-id: ${v}`}),C.appendText(" + "),C.createEl("code",{text:`Authorization: Bearer ${k}`});let S=T.createEl("li");S.createEl("strong",{text:"Method B (Combined Bearer):"}),S.appendText(" "),S.createEl("code",{text:`Authorization: Bearer ${k}+${v}`});let E=l.createDiv("mcp-client-configs-container"),A=()=>c?[{name:"Cursor",config:{mcpServers:{[b]:{url:g,headers:{Authorization:w}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: ${w}`,"-H","Content-Type: application/json","--data-raw","@-",g]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${g} --header "Authorization: ${w}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:g,headers:{Authorization:w}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:g,headers:{Authorization:w}}}}},{name:"Zed",config:{context_servers:{[b]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: ${w}`,"-H","Content-Type: application/json","--data-raw","@-",g]},settings:{}}}}}]:[{name:"Cursor",config:{mcpServers:{[b]:{url:g,headers:{Authorization:`Bearer ${k}`,"mcp-app-id":v}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: Bearer ${k}`,"-H",`mcp-app-id: ${v}`,"-H","Content-Type: application/json","--data-raw","@-",g]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${g} --header "Authorization: Bearer ${k}" --header "mcp-app-id: ${v}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:g,headers:{Authorization:`Bearer ${k}`,"mcp-app-id":v}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:g,headers:{Authorization:`Bearer ${k}`,"mcp-app-id":v}}}}},{name:"Zed",config:{context_servers:{[b]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: Bearer ${k}`,"-H",`mcp-app-id: ${v}`,"-H","Content-Type: application/json","--data-raw","@-",g]},settings:{}}}}}];u=()=>{E.empty(),A().forEach(ge=>{let Ee=E.createDiv("mcp-client-section"),tt=Ee.createDiv("mcp-client-header"),Ke=tt.createDiv("mcp-arrow");(0,it.setIcon)(Ke,"chevron-right"),tt.createEl("span",{text:ge.name,cls:"mcp-client-name"});let ue=Ee.createDiv("mcp-client-content"),wt=!1;if(tt.onclick=()=>{wt=!wt,wt?(ue.classList.add("expanded"),Ke.classList.add("expanded")):(ue.classList.remove("expanded"),Ke.classList.remove("expanded"))},ge.name==="Cursor"){let st=ue.createDiv("mcp-cursor-install-section");st.createEl("h4",{text:d("Quick Install"),cls:"mcp-docs-subtitle"});let Gt=btoa(JSON.stringify({url:g,headers:{Authorization:w}})),pt=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(b)}&config=${Gt}`,Dt=st.createDiv("mcp-cursor-install-container");Dt.createEl("p",{text:d("Click the button below to automatically add this MCP server to Cursor:"),cls:"mcp-cursor-install-desc"});let wr=Dt.createEl("a",{href:pt,cls:"mcp-cursor-install-link"}).createEl("img",{attr:{src:"https://cursor.com/deeplink/mcp-install-dark.svg",alt:`Add ${b} MCP server to Cursor`,height:"32"}}),ia=Dt.createDiv("mcp-cursor-additional-buttons").createEl("button",{text:d("Copy Install Link"),cls:"mcp-cursor-copy-deeplink-btn"});ia.onclick=async()=>{await navigator.clipboard.writeText(pt),ia.setText(d("Copied!")),ia.addClass("copied"),setTimeout(()=>{ia.setText(d("Copy Install Link")),ia.removeClass("copied")},2e3)},ue.createEl("hr",{cls:"mcp-section-separator"}),ue.createEl("h4",{text:d("Manual Configuration"),cls:"mcp-docs-subtitle"}),Tj(ue,ge.config,`${ge.name} configuration`)}else if(ge.config)Tj(ue,ge.config,`${ge.name} configuration`);else if(ge.commandLine){let st=ue.createDiv("mcp-config-block");st.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(ge.commandLine);let pt=st.createEl("button",{text:d("Copy"),cls:"mcp-copy-btn"});pt.onclick=async()=>{await navigator.clipboard.writeText(ge.commandLine),pt.setText(d("Copied!")),pt.addClass("copied"),setTimeout(()=>{pt.setText(d("Copy")),pt.removeClass("copied")},2e3)}}})},u(),n.createEl("h3",{text:d("API Documentation")});let N=n.createDiv("mcp-docs-container"),I=N.createDiv("mcp-docs-section");I.createEl("h4",{text:d("Server Endpoint"),cls:"mcp-docs-subtitle"});let R=I.createDiv("mcp-endpoint-box"),j=R.createDiv("mcp-endpoint-content");j.createSpan("mcp-endpoint-label").setText("URL: ");let B=g;j.createEl("code",{text:B,cls:"mcp-endpoint-url"});let X=R.createEl("button",{text:d("Copy URL"),cls:"mcp-copy-endpoint-btn"});X.onclick=async()=>{await navigator.clipboard.writeText(B),X.setText(d("Copied!")),X.addClass("copied"),setTimeout(()=>{X.setText(d("Copy URL")),X.removeClass("copied")},2e3)};let V=N.createDiv("mcp-docs-section");V.createEl("h4",{text:d("Available Tools"),cls:"mcp-docs-subtitle"});let G=V.createDiv("mcp-tools-grid"),Y=V.createDiv("mcp-tools-info");Y.setText(d("Loading tools..."));async function le(){var oe;try{let ge=await(0,it.requestUrl)({url:g,method:"POST",headers:{Authorization:`${w}`,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize"})}),Ee=ge.headers["mcp-session-id"]||ge.headers["Mcp-Session-Id"];if(!Ee)throw new Error("No session id returned");let tt=await(0,it.requestUrl)({url:g,method:"POST",headers:{Authorization:`${w}`,"Mcp-Session-Id":Ee,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/list"})}),Ke=((oe=tt==null?void 0:tt.json.result)==null?void 0:oe.tools)||[];if(Y.setText(""),!Ke.length){Y.setText(d("No tools available"));return}Ke.forEach(ue=>{let wt=G.createDiv("mcp-tool-card"),st=wt.createDiv("mcp-tool-header"),xa=st.createDiv("mcp-tool-icon");(0,it.setIcon)(xa,"wrench"),st.createEl("code",{text:ue.name,cls:"mcp-tool-name"}),wt.createDiv("mcp-tool-desc").setText(ue.description||"")})}catch(ge){console.error("[MCP Tools] Failed to load tools:",ge),Y.setText(d("Failed to load tools. Is the MCP server running?"))}}le();let de=N.createDiv("mcp-docs-section");de.createEl("h4",{text:d("Example Request"),cls:"mcp-docs-subtitle"});let Te=de.createDiv("mcp-example-container");p=()=>{Te.empty(),Re()};let Re=()=>{let oe=Te.createDiv("mcp-example-tabs"),ge=oe.createEl("button",{text:"cURL",cls:"mcp-example-tab active"}),Ee=oe.createEl("button",{text:"JavaScript",cls:"mcp-example-tab"}),tt=oe.createEl("button",{text:"Python",cls:"mcp-example-tab"}),Ke=Te.createDiv("mcp-example-code-container"),ue=Ke.createDiv("mcp-example-block active");ue.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let wt=ue.createEl("pre",{cls:"mcp-example-code"});c?wt.createEl("code",{text:`curl -i -X POST ${B} \\ -H "Authorization: ${w}" \\ -H "Content-Type: application/json" \\ -d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}):wt.createEl("code",{text:`curl -i -X POST ${B} \\ -H "Authorization: Bearer ${k}" \\ -H "mcp-app-id: ${v}" \\ -H "Content-Type: application/json" \\ -d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}),ue.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let st=ue.createEl("pre",{cls:"mcp-example-code"});c?st.createEl("code",{text:`curl -X POST ${B} \\ -H "Authorization: ${w}" \\ -H "mcp-session-id: REPLACE_WITH_SESSION_ID" \\ -H "Content-Type: application/json" \\ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_tasks","arguments":{"filter":{"completed":false,"priority":5},"limit":10}}}'`}):st.createEl("code",{text:`curl -X POST ${B} \\ -H "Authorization: Bearer ${k}" \\ -H "mcp-app-id: ${v}" \\ -H "mcp-session-id: REPLACE_WITH_SESSION_ID" \\ -H "Content-Type: application/json" \\ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_tasks","arguments":{"filter":{"completed":false,"priority":5},"limit":10}}}'`});let xa=Ke.createDiv("mcp-example-block");xa.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let Gt=xa.createEl("pre",{cls:"mcp-example-code"});c?Gt.createEl("code",{text:`const initRes = await fetch('${B}', { method: 'POST', headers: { 'Authorization': '${w}', 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' }) }); const sessionId = initRes.headers.get('mcp-session-id');`}):Gt.createEl("code",{text:`const initRes = await fetch('${B}', { method: 'POST', headers: { 'Authorization': 'Bearer ${k}', 'mcp-app-id': '${v}', 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' }) }); const sessionId = initRes.headers.get('mcp-session-id');`}),xa.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let pt=xa.createEl("pre",{cls:"mcp-example-code"});c?pt.createEl("code",{text:`const callRes = await fetch('${B}', { method: 'POST', headers: { 'Authorization': '${w}', 'mcp-session-id': sessionId, 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 2, method: 'tools/call', params: { name: 'query_tasks', arguments: { filter: { completed: false, priority: 5 }, limit: 10 } } }) }); console.log(await callRes.json());`}):pt.createEl("code",{text:`const callRes = await fetch('${B}', { method: 'POST', headers: { 'Authorization': 'Bearer ${k}', 'mcp-app-id': '${v}', 'mcp-session-id': sessionId, 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 2, method: 'tools/call', params: { name: 'query_tasks', arguments: { filter: { completed: false, priority: 5 }, limit: 10 } } }) }); console.log(await callRes.json());`});let Dt=Ke.createDiv("mcp-example-block");Dt.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let dr=Dt.createEl("pre",{cls:"mcp-example-code"});c?dr.createEl("code",{text:`import requests # Initialize session init_res = requests.post( '${B}', headers={ 'Authorization': '${w}', 'Content-Type': 'application/json' }, json={'jsonrpc': '2.0', 'id': 1, 'method': 'initialize'} ) session_id = init_res.headers.get('mcp-session-id') print(f"Session ID: {session_id}")`}):dr.createEl("code",{text:`import requests # Initialize session init_res = requests.post( '${B}', headers={ 'Authorization': 'Bearer ${k}', 'mcp-app-id': '${v}', 'Content-Type': 'application/json' }, json={'jsonrpc': '2.0', 'id': 1, 'method': 'initialize'} ) session_id = init_res.headers.get('mcp-session-id') print(f"Session ID: {session_id}")`}),Dt.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let wr=Dt.createEl("pre",{cls:"mcp-example-code"});c?wr.createEl("code",{text:`# Call tool call_res = requests.post( '${B}', headers={ 'Authorization': '${w}', 'mcp-session-id': session_id, 'Content-Type': 'application/json' }, json={ 'jsonrpc': '2.0', 'id': 2, 'method': 'tools/call', 'params': { 'name': 'query_tasks', 'arguments': { 'filter': {'completed': False, 'priority': 5}, 'limit': 10 } } } ) print(call_res.json())`}):wr.createEl("code",{text:`# Call tool call_res = requests.post( '${B}', headers={ 'Authorization': 'Bearer ${k}', 'mcp-app-id': '${v}', 'mcp-session-id': session_id, 'Content-Type': 'application/json' }, json={ 'jsonrpc': '2.0', 'id': 2, 'method': 'tools/call', 'params': { 'name': 'query_tasks', 'arguments': { 'filter': {'completed': False, 'priority': 5}, 'limit': 10 } } } ) print(call_res.json())`});let ai=[ge,Ee,tt],ia=[ue,xa,Dt];ai.forEach((ri,qa)=>{ri.onclick=()=>{ai.forEach(ii=>ii.removeClass("active")),ia.forEach(ii=>ii.removeClass("active")),ri.addClass("active"),ia[qa].addClass("active")}}),ia.forEach(ri=>{ri.querySelectorAll("pre.mcp-example-code").forEach(ii=>{let Is=ii.querySelector("code");if(!Is)return;let As=ii.createEl("button",{text:d("Copy"),cls:"mcp-example-copy-btn"});As.onclick=async()=>{let Yf=Is.textContent||"";await navigator.clipboard.writeText(Yf),As.setText(d("Copied!")),As.addClass("copied"),setTimeout(()=>{As.setText(d("Copy")),As.removeClass("copied")},2e3)}})})};Re()}function Lm(n,a){if(n.empty(),!a){n.createEl("div",{text:d("MCP Server not initialized"),cls:"mcp-status-error"});return}let e=a.getStatus(),t=n.createDiv("mcp-status"),r=t.createDiv("mcp-status-indicator");if(r.addClass(e.running?"running":"stopped"),r.createSpan({text:e.running?"\u25CF":"\u25CB",cls:"status-dot"}),r.createSpan({text:e.running?d("Running"):d("Stopped"),cls:"status-text"}),e.running&&e.port){let i=t.createDiv("mcp-status-details");if(i.createEl("div",{text:`${d("Port")}: ${e.port}`}),e.startTime){let s=Date.now()-e.startTime.getTime(),o=Math.floor(s/36e5),l=Math.floor(s%36e5/6e4);i.createEl("div",{text:`${d("Uptime")}: ${o}h ${l}m`})}e.requestCount!==void 0&&i.createEl("div",{text:`${d("Requests")}: ${e.requestCount}`})}}var qk=require("obsidian"),Yk=class extends qk.Modal{constructor(a,e,t){super(a),this.url=e,this.title=t}onOpen(){this.title&&this.titleEl.setText(this.title);let a=this.titleEl;if(a){let i=a.createEl("button",{cls:"clickable-icon task-genius-external-link-btn",attr:{"aria-label":"Open in external browser",title:"Open in external browser"}});(0,qk.setIcon)(i,"external-link"),i.addEventListener("click",()=>{window.open(this.url,"_blank")})}let{contentEl:e}=this;this.modalEl.toggleClass("task-genius-iframe-modal",!0),e.empty();let t=e.createDiv({cls:"iframe-modal-container"});t.setAttr("style","width: 100%; height: 80vh; display: flex;");let r=t.createEl("iframe");r.setAttr("src",this.url),r.setAttr("style","flex: 1; border: none; width: 100%; height: 100%;")}onClose(){this.contentEl.empty()}};var kl=require("obsidian");function Cj(n,a){var t;let e=a.createDiv();if(e.addClass("task-timer-settings-section"),new kl.Setting(e).setName("Enable Task Timer").setDesc("Enable task timer functionality for tracking time spent on tasks").addToggle(r=>{var i;r.setValue(((i=n.plugin.settings.taskTimer)==null?void 0:i.enabled)||!1).onChange(async s=>{n.plugin.settings.taskTimer||(n.plugin.settings.taskTimer={enabled:!1,metadataDetection:{frontmatter:"task-timer",folders:[],tags:[]},timeFormat:"{h}hrs{m}mins",blockRefPrefix:"timer"}),n.plugin.settings.taskTimer.enabled=s,n.applySettingsUpdate(),n.display()})}),(t=n.plugin.settings.taskTimer)!=null&&t.enabled){let r=e.createDiv();r.addClass("task-timer-metadata-section");let i=r.createEl("h3");i.setText("Metadata Detection"),i.addClass("task-timer-section-heading"),new kl.Setting(r).setName("Frontmatter field").setDesc("Field name in frontmatter to check for enabling task timer (e.g., 'task-timer: true')").addText(w=>{var x,T;w.setValue(((T=(x=n.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:T.frontmatter)||"task-timer").onChange(async C=>{var S;(S=n.plugin.settings.taskTimer)!=null&&S.metadataDetection&&(n.plugin.settings.taskTimer.metadataDetection.frontmatter=C,n.applySettingsUpdate())})}),new kl.Setting(r).setName("Folder paths").setDesc("Comma-separated list of folder paths where task timer should be enabled").addTextArea(w=>{var x,T,C;w.setValue(((C=(T=(x=n.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:T.folders)==null?void 0:C.join(", "))||"").onChange(async S=>{var E;(E=n.plugin.settings.taskTimer)!=null&&E.metadataDetection&&(n.plugin.settings.taskTimer.metadataDetection.folders=S.split(",").map(A=>A.trim()).filter(A=>A),n.applySettingsUpdate())}),w.inputEl.rows=3}),new kl.Setting(r).setName("Tags").setDesc("Comma-separated list of tags that enable task timer").addTextArea(w=>{var x,T,C;w.setValue(((C=(T=(x=n.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:T.tags)==null?void 0:C.join(", "))||"").onChange(async S=>{var E;(E=n.plugin.settings.taskTimer)!=null&&E.metadataDetection&&(n.plugin.settings.taskTimer.metadataDetection.tags=S.split(",").map(A=>A.trim()).filter(A=>A),n.applySettingsUpdate())}),w.inputEl.rows=3});let s=e.createDiv();s.addClass("task-timer-format-section");let o=s.createEl("h3");o.setText("Time Format"),o.addClass("task-timer-section-heading"),new kl.Setting(s).setName("Time format template").setDesc("Template for displaying completed task time. Use {h} for hours, {m} for minutes, {s} for seconds").addText(w=>{var x;w.setValue(((x=n.plugin.settings.taskTimer)==null?void 0:x.timeFormat)||"{h}hrs{m}mins").onChange(async T=>{n.plugin.settings.taskTimer&&(n.plugin.settings.taskTimer.timeFormat=T,n.applySettingsUpdate())})});let l=s.createDiv();l.addClass("task-timer-examples");let c=l.createDiv();c.addClass("task-timer-examples-title"),c.setText("Format Examples:");let u=l.createEl("ul");[{format:"{h}hrs{m}mins",result:"2hrs30mins"},{format:"{h}h {m}m {s}s",result:"2h 30m 45s"},{format:"{h}:{m}:{s}",result:"2:30:45"},{format:"({m}mins)",result:"(150mins)"}].forEach(w=>{let x=u.createEl("li");x.createEl("code").setText(w.format),x.appendText(" \u2192 "+w.result)});let m=e.createDiv();m.addClass("task-timer-blockref-section");let f=m.createEl("h3");f.setText("Block References"),f.addClass("task-timer-section-heading"),new kl.Setting(m).setName("Block reference prefix").setDesc("Prefix for generated block reference IDs (e.g., 'timer' creates ^timer-123456-7890)").addText(w=>{var x;w.setValue(((x=n.plugin.settings.taskTimer)==null?void 0:x.blockRefPrefix)||"timer").onChange(async T=>{n.plugin.settings.taskTimer&&(n.plugin.settings.taskTimer.blockRefPrefix=T,n.applySettingsUpdate())})});let h=e.createDiv();h.addClass("task-timer-commands-section");let g=h.createEl("h3");g.setText("Data Management"),g.addClass("task-timer-section-heading");let k=h.createDiv();k.addClass("task-timer-commands-desc"),k.createEl("p").setText("Use the command palette to access timer data management:");let b=k.createEl("ul");[{name:"Export task timer data",desc:"Export all timer data to JSON"},{name:"Import task timer data",desc:"Import timer data from JSON file"},{name:"Export task timer data (YAML)",desc:"Export to YAML format"},{name:"Create task timer backup",desc:"Create a backup of active timers"},{name:"Show task timer statistics",desc:"Display timer usage statistics"}].forEach(w=>{let x=b.createEl("li");x.createEl("strong").setText(w.name),x.appendText(" - "+w.desc)})}}var IC=require("obsidian");q();function Sj(n,a){new IC.Setting(a).setName(d("Base View")).setDesc(d("Advanced view management features that extend the default Task Genius views with additional functionality.")).setHeading();let e=new DocumentFragment;e.createEl("span",{text:d("Enable Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.")}),e.createEl("div",{text:d("You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature."),cls:"mod-warning"}),new IC.Setting(a).setName(d("Enable Base View")).setDesc(e).addToggle(t=>{var r;return t.setValue(((r=n.plugin.settings.betaTest)==null?void 0:r.enableBaseView)||!1).onChange(async i=>{i?new Ba(n.plugin,{title:d("Enable Base View"),message:d("Enable Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes."),confirmText:d("Enable"),cancelText:d("Cancel"),onConfirm:s=>{if(!s){setTimeout(()=>{t.setValue(!1),n.display()},200);return}n.plugin.settings.betaTest||(n.plugin.settings.betaTest={enableBaseView:!1}),n.plugin.settings.betaTest.enableBaseView=s,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}}).open():(n.plugin.settings.betaTest&&(n.plugin.settings.betaTest.enableBaseView=!1),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200))})})}var Gk=class extends Wa.PluginSettingTab{constructor(e,t){super(e,t);this.searchComponent=null;this.currentTab="general";this.tabs=[{id:"general",name:d("General"),icon:"settings",category:"core"},{id:"index",name:d("Index & Sources"),icon:"database",category:"core"},{id:"view-settings",name:d("Views"),icon:"layout",category:"core"},{id:"file-filter",name:d("File Filter"),icon:"folder-x",category:"core"},{id:"progress-bar",name:d("Progress Display"),icon:"trending-up",category:"display"},{id:"task-status",name:d("Checkbox Status"),icon:"checkbox-glyph",category:"display"},{id:"task-handler",name:d("Task Handler"),icon:"list-checks",category:"management"},{id:"task-filter",name:d("Task Filter"),icon:"filter",category:"management"},{id:"project",name:d("Projects"),icon:"folder-open",category:"core"},{id:"workflow",name:d("Workflows"),icon:"git-branch",category:"workflow"},{id:"date-priority",name:d("Dates & Priority"),icon:"calendar-clock",category:"workflow"},{id:"quick-capture",name:d("Quick Capture"),icon:"zap",category:"workflow"},{id:"task-timer",name:"Task Timer",icon:"timer",category:"workflow"},{id:"time-parsing",name:d("Time Parsing"),icon:"clock",category:"workflow"},{id:"timeline-sidebar",name:d("Timeline Sidebar"),icon:"clock",category:"workflow"},{id:"reward",name:d("Rewards"),icon:"gift",category:"gamification"},{id:"habit",name:d("Habits"),icon:"repeat",category:"gamification"},{id:"ics-integration",name:d("Calendar Sync"),icon:"calendar-plus",category:"integration"},{id:"desktop-integration",name:d("Desktop Integration"),icon:"monitor",category:"integration"},{id:"mcp-integration",name:d("MCP Integration"),icon:"network",category:"integration"},{id:"bases-support",name:d("Bases Support"),icon:"layout",category:"integration"},{id:"about",name:d("About"),icon:"info",category:"info"}];this.plugin=t,this.debouncedApplySettings=(0,Wa.debounce)(async()=>{var r;await t.saveSettings(),t.dataflowOrchestrator&&await t.dataflowOrchestrator.updateSettings(t.settings),await((r=t.notificationManager)==null?void 0:r.reloadSettings()),await t.triggerViewUpdate()},100,!0),this.debouncedApplyNotifications=(0,Wa.debounce)(async()=>{var r;await t.saveSettings(),await((r=t.notificationManager)==null?void 0:r.reloadSettings())},100,!0)}applySettingsUpdate(){this.debouncedApplySettings()}applyNotificationsUpdateLight(){this.debouncedApplyNotifications()}createSearchComponent(){this.searchComponent&&this.searchComponent.destroy(),this.searchComponent=new Uk(this,this.containerEl)}createCategorizedTabsUI(){this.containerEl.toggleClass("task-genius-settings",!0),this.createSearchComponent();let e={core:{name:d("Core Settings"),tabs:[]},display:{name:d("Display & Progress"),tabs:[]},management:{name:d("Task Management"),tabs:[]},workflow:{name:d("Workflow & Automation"),tabs:[]},gamification:{name:d("Gamification"),tabs:[]},integration:{name:d("Integration"),tabs:[]},advanced:{name:d("Advanced"),tabs:[]},info:{name:d("Information"),tabs:[]}};this.tabs.forEach(i=>{if(i.id==="mcp-integration"&&!Wa.Platform.isDesktopApp)return;let s=i.category||"core";e[s]&&e[s].tabs.push(i)});let t=this.containerEl.createDiv();t.addClass("settings-tabs-categorized-container"),Object.entries(e).forEach(([i,s])=>{if(s.tabs.length===0)return;let o=t.createDiv();o.addClass("settings-category-section");let l=o.createDiv();l.addClass("settings-category-header"),l.setText(s.name);let c=o.createDiv();c.addClass("settings-category-tabs"),s.tabs.forEach(u=>{let p=c.createDiv();p.addClass("settings-tab"),this.currentTab===u.id&&p.addClass("settings-tab-active"),p.setAttribute("data-tab-id",u.id),p.setAttribute("data-category",i);let m=p.createSpan();m.addClass("settings-tab-icon"),(0,Wa.setIcon)(m,u.icon);let f=p.createSpan();f.addClass("settings-tab-label"),f.setText(u.name+(u.id==="about"?" v"+this.plugin.manifest.version:"")),p.addEventListener("click",()=>{this.switchToTab(u.id)})})}),this.containerEl.createDiv().addClass("settings-tab-sections")}switchToTab(e){this.currentTab=e,this.containerEl.querySelectorAll(".settings-tab").forEach(o=>{o.getAttribute("data-tab-id")===e?o.addClass("settings-tab-active"):o.removeClass("settings-tab-active")}),this.containerEl.querySelectorAll(".settings-tab-section").forEach(o=>{o.getAttribute("data-tab-id")===e?(o.addClass("settings-tab-section-active"),o.style.display="block"):(o.removeClass("settings-tab-section-active"),o.style.display="none")});let i=this.containerEl.querySelector(".settings-tabs-categorized-container"),s=this.containerEl.querySelector(".task-genius-settings-header");e==="general"?(i&&(i.style.display="flex"),s&&(s.style.display="block")):(i&&(i.style.display="none"),s&&(s.style.display="none"))}openTab(e){this.currentTab=e,this.display()}navigateToTab(e,t,r){this.currentTab=e,this.display(),setTimeout(()=>{r&&this.searchComponent&&this.searchComponent.performSearch(r),t&&this.scrollToSection(t)},100)}scrollToSection(e){var r;if(this.containerEl.querySelectorAll("h3, h4").forEach(i=>{var o;let s=(o=i.textContent)==null?void 0:o.toLowerCase();s&&s.includes(e.replace("-"," "))&&i.scrollIntoView({behavior:"smooth",block:"start"})}),e==="cursor"&&this.currentTab==="mcp-integration"){let i=this.containerEl.querySelector(".mcp-client-section");if(i){let s=i.querySelector(".mcp-client-header");s&&((r=s.textContent)!=null&&r.includes("Cursor"))&&(s.click(),i.scrollIntoView({behavior:"smooth",block:"start"}))}}}createTabSection(e){let t=this.containerEl.querySelector(".settings-tab-sections");if(!t)return this.containerEl;let r=t.createDiv();r.addClass("settings-tab-section"),this.currentTab===e&&r.addClass("settings-tab-section-active"),r.setAttribute("data-tab-id",e);let i=this.tabs.find(s=>s.id===e);if(i!=null&&i.category&&r.setAttribute("data-category",i.category),e!=="general"){let s=r.createDiv();s.addClass("settings-tab-section-header");let o=new Wa.ButtonComponent(s);o.setClass("header-button"),o.setClass("how-to-button"),o.onClick(()=>{var h;let f=this.getHowToUseUrl(e);try{new Yk(this.app,f,`How to use \u2014 ${(h=i==null?void 0:i.name)!=null?h:e}`).open()}catch(g){window.open(f)}});let l=o.buttonEl.createEl("span");l.addClass("header-button-icon"),(0,Wa.setIcon)(l,"book");let c=o.buttonEl.createEl("span");c.addClass("header-button-text"),c.setText(d("How to use"));let u=new Wa.ButtonComponent(s).setClass("header-button").onClick(()=>{this.currentTab="general",this.display()});u.setClass("header-button-back");let p=u.buttonEl.createEl("span");p.addClass("header-button-icon"),(0,Wa.setIcon)(p,"arrow-left");let m=u.buttonEl.createEl("span");m.addClass("header-button-text"),m.setText(d("Back to main settings"))}return r}display(){let{containerEl:e}=this;e.empty(),this.currentTab||(this.currentTab="general"),this.createCategorizedTabsUI();let t=this.createTabSection("general");this.displayGeneralSettings(t);let r=this.createTabSection("progress-bar");this.displayProgressBarSettings(r);let i=this.createTabSection("task-status");this.displayTaskStatusSettings(i);let s=this.createTabSection("task-filter");this.displayTaskFilterSettings(s);let o=this.createTabSection("file-filter");this.displayFileFilterSettings(o);let l=this.createTabSection("task-handler");this.displayTaskHandlerSettings(l);let c=this.createTabSection("quick-capture");this.displayQuickCaptureSettings(c);let u=this.createTabSection("task-timer");this.displayTaskTimerSettings(u);let p=this.createTabSection("time-parsing");this.displayTimeParsingSettings(p);let m=this.createTabSection("timeline-sidebar");this.displayTimelineSidebarSettings(m);let f=this.createTabSection("workflow");this.displayWorkflowSettings(f);let h=this.createTabSection("date-priority");this.displayDatePrioritySettings(h);let g=this.createTabSection("project");this.displayProjectSettings(g);let k=this.createTabSection("index");this.displayIndexSettings(k);let y=this.createTabSection("view-settings");this.displayViewSettings(y);let b=this.createTabSection("reward");this.displayRewardSettings(b);let v=this.createTabSection("habit");this.displayHabitSettings(v);let w=this.createTabSection("ics-integration");this.displayIcsSettings(w);let x=this.createTabSection("desktop-integration");if(this.displayDesktopIntegrationSettings(x),Wa.Platform.isDesktopApp){let C=this.createTabSection("mcp-integration");this.displayMcpSettings(C)}if((0,Wa.requireApiVersion)("1.9.10")){let C=this.createTabSection("bases-support");this.displayBasesSettings(C)}let T=this.createTabSection("about");this.displayAboutSettings(T),this.switchToTab(this.currentTab)}getHowToUseUrl(e){let t="https://taskgenius.md/docs";switch(e){case"index":return`${t}/task-view/indexer`;case"view-settings":return`${t}/task-view`;case"file-filter":return`${t}/file-filter`;case"progress-bar":return`${t}/progress-bars`;case"task-status":return`${t}/task-status`;case"task-handler":return`${t}/task-gutter`;case"task-filter":return`${t}/filtering`;case"project":return`${t}/project`;case"date-priority":return`${t}/date-priority`;case"quick-capture":return`${t}/quick-capture`;case"task-timer":return`${t}/task-timer`;case"time-parsing":return`${t}/time-parsing`;case"workflow":return`${t}/workflows`;case"timeline-sidebar":return`${t}/task-view/timeline-sidebar-view`;case"reward":return`${t}/reward`;case"habit":return`${t}/habit`;case"ics-integration":return`${t}/ics-support`;case"mcp-integration":return`${t}/mcp-integration`;case"bases-support":return`${t}/bases-support`;case"desktop-integration":return`${t}/bases-support`;case"beta-test":return`${t}/getting-started`;case"experimental":return`${t}/getting-started`;case"about":return`${t}/getting-started`;default:return`${t}/getting-started`}}displayGeneralSettings(e){}displayProgressBarSettings(e){qx(this,e)}displayTaskStatusSettings(e){rC(this,e)}displayDatePrioritySettings(e){SC(this,e)}displayTaskFilterSettings(e){tC(this,e)}displayFileFilterSettings(e){MC(this,e)}displayWorkflowSettings(e){xC(this,e)}displayQuickCaptureSettings(e){Gx(this,e)}displayTaskTimerSettings(e){this.renderTaskTimerSettingsTab(e)}displayTimeParsingSettings(e){vj(this,e)}displayTimelineSidebarSettings(e){DC(this,e)}displayTaskHandlerSettings(e){aC(this,e)}displayViewSettings(e){wC(this,e)}displayIndexSettings(e){EC(this,e)}displayProjectSettings(e){CC(this,e)}displayIcsSettings(e){new xm(this.plugin,e,()=>{this.currentTab="general",this.display()}).display()}displayDesktopIntegrationSettings(e){PC(this,e)}displayMcpSettings(e){xj(e,this.plugin,()=>this.applySettingsUpdate())}displayBasesSettings(e){Sj(this,e)}displayAboutSettings(e){Wx(this,e)}displayRewardSettings(e){Kx(this,e)}displayHabitSettings(e){Ux(this,e)}renderTaskTimerSettingsTab(e){Cj(this,e)}renderExperimentalSettingsTab(e){let t=e.createDiv();t.addClass("experimental-settings-section");let r=t.createEl("h2");r.setText("Experimental Features"),r.addClass("experimental-section-heading");let i=t.createDiv();i.addClass("experimental-warning"),i.createEl("strong").setText("\u26A0\uFE0F Warning: "),i.appendText("These features are experimental and may not be stable. Use at your own risk.");let s=t.createDiv();s.addClass("experimental-placeholder"),s.setText("No experimental features are currently available. Check back in future updates for new experimental functionality.")}};var $j=require("@codemirror/state");var Pn=require("obsidian"),jj=require("@codemirror/state"),Hj=require("@codemirror/state");var Aa=require("@codemirror/view"),Kk=require("obsidian"),Dj=require("@codemirror/state"),Qk=require("@codemirror/language");q();var Xi=Dj.Annotation.define(),Hm={highest:{emoji:"\u{1F53A}",text:d("Highest priority"),regex:"\u{1F53A}",dataviewValue:"highest",numericValue:5},high:{emoji:"\u23EB",text:d("High priority"),regex:"\u23EB",dataviewValue:"high",numericValue:4},medium:{emoji:"\u{1F53C}",text:d("Medium priority"),regex:"\u{1F53C}",dataviewValue:"medium",numericValue:3},none:{emoji:"",text:d("No priority"),regex:"",dataviewValue:"none",numericValue:0},low:{emoji:"\u{1F53D}",text:d("Low priority"),regex:"\u{1F53D}",dataviewValue:"low",numericValue:2},lowest:{emoji:"\u23EC\uFE0F",text:d("Lowest priority"),regex:"\u23EC\uFE0F",dataviewValue:"lowest",numericValue:1}},Bm={A:{text:d("Priority A"),regex:"\\[#A\\]",numericValue:4},B:{text:d("Priority B"),regex:"\\[#B\\]",numericValue:3},C:{text:d("Priority C"),regex:"\\[#C\\]",numericValue:2}},f8=Object.values(Hm).map(n=>n.regex).filter(n=>n).join("|"),h8=Object.values(Bm).map(n=>n.regex).join("|"),g8=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/gi;function k8(n,a){let e=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/i;return a&&e.test(n)?"dataview":/(🔺|⏫|🔼|🔽|⏬️)/.test(n)?"tasks":/\[#([ABC])\]/.test(n)?"letter":!a&&e.test(n)?"dataview":"none"}var jm=class extends Aa.WidgetType{constructor(e,t,r,i,s,o,l){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.currentPriority=o;this.mode=l}eq(e){return this.from===e.from&&this.to===e.to&&this.currentPriority===e.currentPriority&&this.mode===e.mode}toDOM(){try{let e=createEl("span",{cls:"priority-widget",attr:{"aria-label":d("Task Priority")}}),t;if(this.mode==="letter"){let r=document.createElement("span");r.classList.add("cm-formatting","cm-formatting-link","cm-hmd-barelink","cm-link","cm-list-1"),r.setAttribute("spellcheck","false"),r.textContent="[",t=document.createElement("span"),t.classList.add("cm-hmd-barelink","cm-link","cm-list-1"),t.textContent=this.currentPriority.slice(1,-1);let i=document.createElement("span");i.classList.add("cm-formatting","cm-formatting-link","cm-hmd-barelink","cm-link","cm-list-1"),i.setAttribute("spellcheck","false"),i.textContent="]",e.appendChild(r),e.appendChild(t),e.appendChild(i)}else this.mode==="dataview"?(t=document.createElement("span"),t.classList.add("task-priority-dataview"),t.textContent=this.currentPriority,e.appendChild(t)):(t=document.createElement("span"),t.classList.add("task-priority"),t.textContent=this.currentPriority,e.appendChild(t));return t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.showPriorityMenu(r)}),e}catch(e){return console.error("Error creating priority widget DOM:",e),createEl("span",{cls:"priority-widget-error",text:this.currentPriority})}}showPriorityMenu(e){try{let t=new Kk.Menu,r=this.plugin.settings.preferMetadataFormat==="dataview";this.mode==="letter"?(Object.entries(Bm).forEach(([i,s])=>{t.addItem(o=>{o.setTitle(s.text),o.onClick(()=>{this.setPriority(`[#${i}]`,"letter")})})}),t.addItem(i=>{i.setTitle(d("Remove Priority")),i.onClick(()=>{this.removePriority("letter")})})):(Object.entries(Hm).forEach(([i,s])=>{i!=="none"&&t.addItem(o=>{let l=r?s.text:`${s.emoji} ${s.text}`;o.setTitle(l),o.onClick(()=>{r?this.setPriority(`[priority:: ${s.dataviewValue}]`,"dataview"):this.setPriority(s.emoji,"tasks")})})}),t.addItem(i=>{i.setTitle(d("Remove Priority")),i.onClick(()=>{this.removePriority(r?"dataview":"tasks")})})),t.showAtMouseEvent(e)}catch(t){console.error("Error showing priority menu:",t)}}setPriority(e,t){try{if(!this.view||this.view.state.doc.length{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m=this.view.state.doc.lineAt(o),f=k8(m.text,p);s(o,l,Aa.Decoration.replace({widget:new jm(n,a,u,o,l,c[0],f)}))}catch(p){console.warn("Error decorating emoji priority:",p)}}});this.letterMatch=new Aa.MatchDecorator({regexp:new RegExp(`(${h8})`,"g"),decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,Aa.Decoration.replace({widget:new jm(n,a,u,o,l,c[0],"letter")}))}catch(p){console.warn("Error decorating letter priority:",p)}}});this.dataviewMatch=new Aa.MatchDecorator({regexp:g8,decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,Aa.Decoration.replace({widget:new jm(n,a,u,o,l,c[0],"dataview")}))}catch(p){console.warn("Error decorating dataview priority:",p)}}});this.view=s,this.plugin=a,this.updateDecorations(s)}update(s){if(!this.isDestroyed)try{if(s.docChanged||s.viewportChanged||s.selectionSet||s.transactions.some(o=>o.annotation(Xi))){let o=Date.now();o-this.lastUpdate>this.updateThreshold?(this.lastUpdate=o,this.updateDecorations(s.view,s)):setTimeout(()=>{this.view&&!this.isDestroyed&&this.updateDecorations(this.view)},this.updateThreshold)}}catch(o){console.error("Error in priority picker update:",o)}}destroy(){this.isDestroyed=!0,this.decorations=Aa.Decoration.none}updateDecorations(s,o){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=Aa.Decoration.none;return}try{let l=this.plugin.settings.preferMetadataFormat==="dataview";if(o&&!o.docChanged&&this.decorations.size>0){if(l){let p=this.dataviewMatch.updateDeco(o,this.decorations);if(p.size>0){this.decorations=p;return}}let c=this.emojiMatch.updateDeco(o,this.decorations);if(c.size>0){this.decorations=c;return}let u=this.letterMatch.updateDeco(o,this.decorations);if(u.size>0){this.decorations=u;return}if(!l){let p=this.dataviewMatch.updateDeco(o,this.decorations);this.decorations=p}}else{let c=Aa.Decoration.none;l?(c=this.dataviewMatch.createDeco(s),c.size===0&&(c=this.emojiMatch.createDeco(s))):(c=this.emojiMatch.createDeco(s),c.size===0&&(c=this.dataviewMatch.createDeco(s)));let u=this.letterMatch.createDeco(s);if(u.size>0){let p=[],m=u.iter();for(;m.value!==null;)p.push({from:m.from,to:m.to,value:m.value}),m.next();p.length>0&&(c=c.update({add:p}))}this.decorations=c}}catch(l){console.warn("Error updating priority decorations, clearing decorations",l),this.decorations=Aa.Decoration.none}}}isLivePreview(s){try{return s.field(Kk.editorLivePreviewField)}catch(o){return console.warn("Error checking live preview state:",o),!1}}shouldRender(s,o,l){try{if(o<0||l>s.state.doc.length||o>=l)return!1;let u=(0,Qk.syntaxTree)(s.state).resolveInner(o+1).type.prop(Qk.tokenClassNodeProp);if(u){let f=u.split(" ");if(f.includes("hmd-codeblock")||f.includes("hmd-frontmatter"))return!1}return!s.state.selection.ranges.some(f=>!(f.to<=o||f.from>=l))&&this.isLivePreview(s.state)}catch(c){return console.warn("Error checking if priority should render",c),!1}}}let t={decorations:i=>{try{return i.isDestroyed?Aa.Decoration.none:i.decorations.update({filter:(s,o,l)=>{var c;try{if(((c=l.spec)==null?void 0:c.widget).error||s<0||o>i.view.state.doc.length||s>=o)return!1;let p=i.view.state.selection;for(let m of p.ranges)if(!(m.to<=s||m.from>=o))return!1;return!0}catch(u){return console.warn("Error filtering priority decoration",u),!1}}})}catch(s){return console.error("Failed to update decorations filter",s),i.decorations}}};return Aa.ViewPlugin.fromClass(e,t)}var w8=require("@codemirror/language");q();var Lj=Hj.Annotation.define();function Bj(n,a){return jj.EditorState.transactionFilter.of(e=>T8(e,n,a))}function no(n){let a=/\[stage::([^\]]+)\]/,e=n.match(a);if(e){let i=e[1];if(i.includes(".")){let s=i.split(".");return{workflowType:"fromParent",currentStage:s[0],subStage:s[1]}}return{workflowType:"fromParent",currentStage:i,subStage:void 0}}let t=/#workflow\/([^\/\s]+)/,r=n.match(t);return r?{workflowType:r[1],currentStage:"root",subStage:void 0}:null}function OC(n,a){let e=Math.min(a,n.lines);if(e<=0)return null;let t=e-1,i=n.line(t+1).text.match(/^([\s|\t]*)/),s=i?i[1].length:0;for(let o=t;o>=0;o--){let c=n.line(o+1).text,u=c.match(/^([\s|\t]*)/),p=u?u[1].length:0,m=c.match(/#workflow\/([^\/\s]+)/);if(m&&(m[0],m[1],p{t.push({fromA:c,toA:u,fromB:p,toB:m,text:f.toString()})});let r=e.settings.taskStatuses.completed.split("|");if(!t.some(c=>r.includes(c.text)||r.some(u=>c.text===`- [${u}]`||c.text===`[${u}]`)))return n;let i=[];for(let c of t)if(r.includes(c.text)||r.some(u=>c.text===`- [${u}]`||c.text===`[${u}]`)){let u=n.newDoc.lineAt(c.fromB),p=u.text,m=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(p.match(m)){let h=Mn(p,n.newDoc,u.number,e);h&&i.push({line:u.number,lineText:p,workflowType:h.workflowType,currentStage:h.currentStage.id,currentSubStage:(l=h.currentSubStage)==null?void 0:l.id})}}let s=[];if(i.length>0)for(let c of i){let u=n.newDoc.line(c.line),p=Mn(c.lineText,n.newDoc,c.line,e);if(!p)continue;let{workflowType:m,currentStage:f,currentSubStage:h,workflow:g,isRootTask:k}=p,y=Vj(u.text,n.newDoc,u.from,u.number,m,e);s.push(...y);let b=/\s*\[stage::[^\]]+\]/,v=u.text.match(b);if(v&&v.index&&e.settings.workflow.autoRemoveLastStageMarker&&s.push({from:u.from+v.index,to:u.from+v.index+v[0].length,insert:""}),f.type==="terminal"){let W=u.text.match(/^([\s|\t]*)/),B=W?W[1].length:0,X=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;for(let V=c.line-1;V>=1;V--){let G=n.newDoc.line(V),Y=G.text.match(/^([\s|\t]*)/);if((Y?Y[1].length:0)W.id===w);if(!T)continue;let C;x&&T.subStages&&(C=T.subStages.find(W=>W.id===x));let S=c.lineText.match(/^([\s|\t]*)/),E=S?S[1]:"",A=Ni(a),N=Ha(a),I=k?E+N:E,R=ny(T,I,e,!0,C),j=x8(u,n.newDoc,E);n.annotation(ft)!=="autoCompleteParent.DONE"&&s.push({from:j,to:j,insert:` ${R}`})}return s.length>0?{changes:[n.changes,...s],selection:n.selection,annotations:Lj.of("workflowChange")}:n}function Vj(n,a,e,t,r,i){let s=[],o=i.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss",l=`\u{1F6EB} ${(0,Pn.moment)().format(o)}`.length,c=n.indexOf("\u{1F6EB}");if(c===-1)return s;let u=c+l,p=n.substring(c,u),m=(0,Pn.moment)(p,o),f=(0,Pn.moment)(),h=Pn.moment.duration(f.diff(m));if(i.settings.workflow.removeTimestampOnTransition){let g=e+c,k=g+l;s.push({from:g-1,to:k,insert:""})}if(i.settings.workflow.calculateSpentTime){let g=Pn.moment.utc(h.asMilliseconds()).format(i.settings.workflow.spentTimeFormat),k=n.indexOf("[stage::"),y=e+(k!==-1?k:n.length);if((!yl(n,t,a,i)||!i.settings.workflow.calculateFullSpentTime)&&s.push({from:y,to:y,insert:` (\u23F1\uFE0F ${g})`}),i.settings.workflow.calculateFullSpentTime&&yl(n,t,a,i)){let b=`#workflow/${r}`,v=Pn.moment.duration(0),w=!1,x=/\(⏱️\s+([0-9:]+)\)/,T=n.match(/^(\s*)/),C=T?T[1].length:0;for(let S=t-1;S>=1;S--){if(S>=a.lines)continue;if(a.line(S).text.includes(b)){for(let A=S;A<=t;A++){if(A>=a.lines)continue;let N=a.line(A),I=N.text.match(/^(\s*)/);if((I?I[1].length:0)>C)continue;let j=N.text.match(x);if(j&&j[1]){let W=j[1].split(":"),B=0;W.length===3?B=(parseInt(W[0])*3600+parseInt(W[1])*60+parseInt(W[2]))*1e3:W.length===2&&(B=(parseInt(W[0])*60+parseInt(W[1]))*1e3),B>0&&(v.add(B),w=!0)}}break}}if(w?v.add(h):(v=h,w=!0),w){let S=Pn.moment.utc(v.asMilliseconds()).format(i.settings.workflow.spentTimeFormat);s.push({from:y,to:y,insert:` (${d("Total")}: ${S})`})}}}return s}function Wj(n,a,e){if(!e.settings.workflow.enableWorkflow)return;let t=a.getCursor(),r=a.getLine(t.line),i=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(!r.match(i))return;let o=no(r);if(!o){n.addItem(h=>{h.setTitle(d("Workflow")),h.setIcon("list-ordered");let g=h.setSubmenu();g.addItem(k=>{k.setTitle(d("Add as workflow root")),k.setIcon("plus-circle");let y=k.setSubmenu();e.settings.workflow.definitions.forEach(b=>{y.addItem(v=>{v.setTitle(b.name),v.onClick(()=>{a.cm.dispatch({changes:{from:a.posToOffset(t),to:a.posToOffset(t),insert:`#workflow/${b.id}`}})})})})}),g.addSeparator(),g.addItem(k=>{k.setTitle(d("Convert to workflow template")),k.setIcon("convert"),k.onClick(()=>{Promise.resolve().then(()=>(Vm(),ry)).then(({convertTaskToWorkflowCommand:y})=>{y(!1,a,null,e)})})}),g.addItem(k=>{k.setTitle(d("Start workflow here")),k.setIcon("play"),k.onClick(()=>{Promise.resolve().then(()=>(Vm(),ry)).then(({startWorkflowHereCommand:y})=>{y(!1,a,null,e)})})}),g.addItem(k=>{k.setTitle(d("Create quick workflow")),k.setIcon("zap"),k.onClick(()=>{Promise.resolve().then(()=>(Vm(),ry)).then(({createQuickWorkflowCommand:y})=>{y(!1,a,null,e)})})})});return}let l=Mn(r,a.cm.state.doc,t.line+1,e);if(!l)return;let{workflowType:c,currentStage:u,currentSubStage:p,workflow:m,isRootTask:f}=l;n.addItem(h=>{h.setTitle(d("Workflow")),h.setIcon("list-ordered");let g=h.setSubmenu();if(u.id==="_root_task_"){if(m.stages.length>0){let k=m.stages[0];g.addItem(y=>{y.setTitle(`${d("Move to stage")} ${k.name}`),y.onClick(()=>{let b=Ti(e,a,r,t.line,k,!0,void 0,void 0);a.cm.dispatch({changes:b,annotations:ft.of("workflowChange")})})})}}else if(u.canProceedTo)u.canProceedTo.forEach(k=>{let y=m.stages.find(b=>b.id===k);y&&g.addItem(b=>{let v=yl(r,t.line,a.cm.state.doc,e);b.setTitle(v?`${d("Complete stage")}: ${y.name}`:`${d("Move to stage")} ${y.name}`),b.onClick(()=>{let w=Ti(e,a,r,t.line,y,!1,void 0,p);a.cm.dispatch({changes:w,annotations:ft.of(v?"workflowChange.completeStage":"workflowChange.moveToStage")})})})});else if(u.type==="terminal")g.addItem(k=>{k.setTitle(d("Complete workflow")),k.onClick(()=>{let y=Ti(e,a,r,t.line,u,!1,void 0,p);a.cm.dispatch({changes:y,annotations:ft.of("workflowChange")})})});else{let{nextStageId:k}=iy(u,m,p);if(k&&k!==u.id){let y=m.stages.find(b=>b.id===k);y&&g.addItem(b=>{b.setTitle(`${d("Move to")} ${y.name}`),b.onClick(()=>{let v=Ti(e,a,r,t.line,y,!1,void 0,void 0);a.cm.dispatch({changes:v,annotations:ft.of("workflowChange")})})})}}g.addSeparator(),g.addItem(k=>{k.setTitle(d("Add child task with same stage")),k.setIcon("plus-circle"),k.onClick(()=>{if(o.currentStage==="root"){if(m.stages.length>0){let y=m.stages[0],b=Ti(e,a,r,t.line,y,!1,void 0,void 0);a.cm.dispatch({changes:b,annotations:ft.of("workflowChange")})}}else if(u.id==="_root_task_"){if(m.stages.length>0){let y=m.stages[0],b=Ti(e,a,r,t.line,y,!1,void 0,void 0);a.cm.dispatch({changes:b,annotations:ft.of("workflowChange")})}}else{let y=Ti(e,a,r,t.line,u,!1,p,void 0);a.cm.dispatch({changes:y,annotations:ft.of("workflowChange")})}})})})}function yl(n,a,e,t){t.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=no(n);if(!r)return!0;let i=r.workflowType,s=r.currentStage,o=r.subStage;if(i==="fromParent"){e.lines;let m=Math.min(a,e.lines),f=OC(e,m);if(!f)return!0;i=f}let l=t.settings.workflow.definitions.find(m=>m.id===i);if(t.settings.workflow.definitions.map(m=>({id:m.id,name:m.name})),!l)return!0;if(l.name,s==="root")return!1;let c=l.stages.find(m=>m.id===s);if(!c)return console.warn(`Stage definition not found: ${s} in workflow ${i}`),!0;if(c.type==="terminal")return!0;if(c.type==="cycle"&&c.subStages&&o){let m=c.subStages.find(k=>k.id===o);if(!m)return console.warn(`SubStage definition not found: ${o} in stage ${s}`),!0;let f=!m.next,h=c.canProceedTo&&c.canProceedTo.length>0,g=typeof c.next=="string"||Array.isArray(c.next)&&c.next.length>0;return!!(f&&!h&&!g&&l.stages.findIndex(y=>y.id===c.id)===l.stages.length-1)}if(c.next||c.canProceedTo&&c.canProceedTo.length>0)return!1;let p=l.stages.findIndex(m=>m.id===c.id);return p<0?(console.warn(`Current stage ${c.id} not found in workflow stages array.`),!0):p===l.stages.length-1}function iy(n,a,e){let t,r;if(n.id==="_root_task_")t=a.stages[0].id;else if(n.type==="terminal")t=n.id;else if(n.type==="cycle"&&e)if(e.next)t=n.id,r=e.next;else if(n.canProceedTo&&n.canProceedTo.length>0)t=n.canProceedTo[0],r=void 0;else{let i=n.subStages?n.subStages.length:0;i===1?(t=n.id,r=e.id):i>1?(t=n.id,r=n.subStages[0].id):(t=n.id,r=void 0)}else if(n.type==="linear")if(typeof n.next=="string")t=n.next;else if(Array.isArray(n.next)&&n.next.length>0)t=n.next[0];else if(n.canProceedTo&&n.canProceedTo.length>0)t=n.canProceedTo[0];else{let i=a.stages.findIndex(s=>s.id===n.id);i>=0&&i0?t=n.canProceedTo[0]:t=n.id;return{nextStageId:t,nextSubStageId:r}}function Ti(n,a,e,t,r,i,s,o){let l=a.cm.state.doc,c=n.app,u=Math.min(t+1,l.lines),p=l.line(u),m=e.match(/^([\s|\t]*)/),f=Ha(c),h=Ni(c),g=m?m[1]+(i?f:""):"";n.settings.workflow.autoAddTimestamp&&`${(0,Pn.moment)().format(n.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`;let k=[],y=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,b=e.match(y);if(b){let T=p.from+b[0].indexOf("[");k.push({from:T+1,to:T+2,insert:"x"})}let v="",w=e.match(/#workflow\/([^\/\s]+)/);w?v=w[1]:v=OC(l,u)||r.id.split(".")[0];let x=Vj(e,l,p.from,t,v,n);if(k.push(...x),o&&!s&&!yl(e,t,l,n)){let T=/\s*\[stage::[^\]]+\]/,C=e.match(T);C&&C.index&&n.settings.workflow.autoRemoveLastStageMarker&&k.push({from:p.from+C.index,to:p.from+C.index+C[0].length,insert:""}),g=g.slice(0,-h)}if(!yl(e,t,l,n)){let T=ny(r,g,n,!0,s);k.push({from:p.to,to:p.to,insert:` ${T}`})}if(n!=null&&n.settings.workflow.autoRemoveLastStageMarker){let T=/\s*\[stage::[^\]]+\]/,C=e.match(T);C&&C.index&&k.push({from:p.from+C.index,to:p.from+C.index+C[0].length,insert:""})}return k}function Mn(n,a,e,t){t.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=no(n);if(!r)return null;let i=r.workflowType,s=r.currentStage,o=r.subStage;if(i==="fromParent"){a.lines;let m=Math.min(e,a.lines),f=OC(a,m);if(!f)return null;i=f}let l=t.settings.workflow.definitions.find(m=>m.id===i);if(!l)return null;l.name;let c=s==="root"||n.includes(`#workflow/${i}`)&&!n.includes("[stage::"),u;if(s==="root"||c)u={id:"_root_task_",name:"Root Task",type:"linear",next:l.stages.length>0?l.stages[0].id:void 0};else{let m=l.stages.find(f=>f.id===s);if(!m)return l.stages.map(f=>f.id),null;u=m}let p;return o&&u.subStages&&(p=u.subStages.find(m=>m.id===o)),{workflowType:i,currentStage:u,currentSubStage:p,workflow:l,isRootTask:c}}function ny(n,a,e,t=!0,r){let i=e.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${(0,Pn.moment)().format(e.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`:"",s=Ha(e.app);if(r)return`${a}- [ ] ${n.name} (${r.name}) [stage::${n.id}.${r.id}]${i}`;{let o=`${a}- [ ] ${n.name} [stage::${n.id}]${i}`;if(t&&n.type==="cycle"&&n.subStages&&n.subStages.length>0){let l=n.subStages[0],c=a+s;o+=` ${c}- [ ] ${n.name} (${l.name}) [stage::${n.id}.${l.id}]${i}`}return o}}function x8(n,a,e){let t=n.to,r=e.length,i=n.number,s=!1;for(let o=n.number+1;o<=Math.min(n.number+20,a.lines);o++){let c=a.line(o).text.match(/^([\s|\t]*)/);if((c?c[1].length:0)>r)i=o,s=!0;else if(s)break}return s&&(t=a.line(i).to),t}function _j(n,a){return $j.EditorState.transactionFilter.of(e=>C8(e,n,a))}function C8(n,a,e){if(!n.docChanged||!e.settings.autoCompleteParent)return n;let t=n.annotation(ft);if(typeof t=="string"&&t.includes("autoCompleteParent")||n.isUserEvent("input.paste")||n.isUserEvent("set")||S8(n))return n;let r=D8(n);if(!r)return n;let{doc:i,lineNumber:s}=r,o=E8(i,s);if(!o)return n;let{lineNumber:l,indentationLevel:c}=o;if(e.settings.autoCompleteParent&&zj(i,l,c,e))return P8(n,l,i);if(e.settings.markParentInProgressWhenPartiallyComplete){let u=I8(i,l),p=zj(i,l,c,e),m=M8(i,l,c,a),f=F8(i,l,c,a);if(u===" "&&m||u==="x"&&!p&&f){let h=e.settings.taskStatuses.inProgress.split("|")[0]||"/";return A8(n,l,i,[h])}}return n}function S8(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r0&&a.push({type:"insert",content:l.toString(),fromA:r,toA:i,fromB:s,toB:o})});let e=a.filter(r=>r.type==="delete"),t=a.filter(r=>r.type==="insert");if(e.length===0||t.length===0)return!1;for(let r of e)for(let i of t){let s=r.content.split(` `).filter(l=>l.trim()),o=i.content.split(` `).filter(l=>l.trim());if(s.length===o.length&&s.length>0){let l=!0;for(let c=0;c{if(s.length>0&&a===null){let m=s.toString(),f=m.match(/\n[\s|\t]*([-*+]|\d+\.)\s\[ \]/);if(f)try{a=n.newDoc.lineAt(r+m.indexOf(f[0])+1).number;return}catch(g){}if(m.match(/^[\s|\t]*([-*+]|\d+\.)\s\[ \]/))try{a=n.newDoc.lineAt(r).number;return}catch(g){}}let o=r,l=n.newDoc.lineAt(o),c=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i;if(c.match(u)){let m=null;try{let f=e;f>=0&&f0&&l.from+c.indexOf("[")<=i&&l.from+c.indexOf("]")>=r)&&(a=l.number)}}),a===null?null:{doc:n.newDoc,lineNumber:a}}function E8(n,a){let r=n.line(a).text.match(/^[\s|\t]*/),i=r?r[0].length:0;if(i===0)return null;let s=r&&r[0].includes(" "),o=r&&r[0].includes(" ");for(let l=a-1;l>=1;l--){let u=n.line(l).text;if(u.trim()==="")continue;let p=u.match(/^[\s|\t]*/),m=p?p[0].length:0,f=p&&p[0].includes(" "),h=p&&p[0].includes(" ");if(!(m>0&&i>0&&(s&&!f||o&&!h))&&m"))break}}return null}function zj(n,a,e,t){let r=Ni(t.app),i=e+r,s=!1;for(let o=a+1;o<=n.lines;o++){let c=n.line(o).text;if(c.trim()==="")continue;let u=c.match(/^[\s|\t]*/),m=(u?u[0]:"").length;if(m<=e)break;if(m===i){let f=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i,h=c.match(f);if(h){s=!0;let g=h[2];if(g!=="x"&&g!=="X")return!1;if(t.settings.workflow.enableWorkflow&&t.settings.workflow.autoRemoveLastStageMarker&&!yl(c,o,n,t))return!1}}}return s}function P8(n,a,e){let t=e.line(a),r=t.text,i=r.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/);if(!i)return n;let s=i[2];if(s==="x"||s==="X")return n;let o=!1;if(n.changes.iterChanges((u,p,m,f,h)=>{let g=r.indexOf("[")+1,k=t.from+g;k>=m&&k{let k=i.indexOf("[")+1,y=r.from+k;y>=f&&yN8(e,n,a))}function Gj(n){return{cycle:n.settings.taskStatusCycle,excludeMarksFromCycle:n.settings.excludeMarksFromCycle||[],marks:n.settings.taskStatusMarks}}function R8(n,a,e,t,r,i,s,o){if(e-a!==1||t.length!==1)return!1;let l=n.startState.selection.main;if(l&&!l.empty&&l&&a>=l.from&&e<=l.to)return`${l.from}${l.to}${a}${e}`,!1;let{marks:u}=Gj(o),p=Object.values(u),m=p.includes(r)||r===" ",f=p.includes(t)||t===" ";if(!m||!f)return!1;let h=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/;return s.match(h)?(`${r}${t}${a}${e}`,!0):!1}function O8(n,a,e){let t=[],r=!1;if(n.changes.length>1){let s=[];n.changes.iterChanges((o,l,c,u,p)=>{s.push({fromA:o,toA:l,fromB:c,toB:u,text:p.toString()})}),s.length>1&&s.every(l=>l.text===" "||l.text===" "||l.text===""&&(n.startState.doc.sliceString(l.fromA,l.toA)===" "||n.startState.doc.sliceString(l.fromA,l.toA)===" "))&&(r=!0)}if(r)return[];let i=!1;return n.changes.iterChanges((s,o,l,c,u)=>{if(u.toString()===""&&o>s&&n.startState.doc.sliceString(s,o)==="-"){let m=n.startState.doc.lineAt(s);m.text.substring(0,s-m.from).trim()===""&&(i=!0)}}),i?[]:(n.changes.iterChanges((s,o,l,c,u)=>{let p=u.toString();if(p.includes(` `)||p.includes("[[")||p.includes("]]")||l>n.startState.doc.length)return;let m=l,h=n.startState.doc.lineAt(m).text;if(h.trim()==="")return;let g=n.newDoc.lineAt(m),k=g.text,y=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,b=h.match(y),v=k.match(y);if(v&&!b&&p===k){let w=k.indexOf("[")+1,x=g.from+w,T=v[2];t.push({position:x,currentMark:T,wasCompleteTask:!0,tasksInfo:{isTaskChange:!0,originalFromA:s,originalToA:o,originalFromB:l,originalToB:c,originalInsertedText:p}});return}if(b){let w=null,x=null,T=!1,C=!1,S=!1;if(p.trim().match(/^(?:[\s|\t]*(?:[-*+]|\d+\.)\s+\[.(?:\])?)/)){let E=k.indexOf("[")+1;w=g.from+E,x=b[2],T=!0,C=!0}else if(p.length===1){let E=k.indexOf("[")+1;if(m===g.from+E&&p!=="["){if(s!==o){let A=n.startState.doc.sliceString(s,o);if(e){if(!R8(n,s,o,p,A,m,k,e)){`${s}${o}${p}${A}`;return}`${s}${o}${A}${p}`}else{`${s}${o}${p}`;return}}w=m,x=b[2],T=!0,C=!0}}else if(p.indexOf("[")!==-1&&p.indexOf("]")!==-1&&p!=="[]"){let E=k.indexOf("[")+1;w=g.from+E,x=b[2],T=!0,C=!0}a&&k===p&&(p.includes("\u2705")||p.includes("\u274C")||p.includes("\u{1F6EB}")||p.includes("\u{1F4C5}")||h.includes("\u2705")||h.includes("\u274C")||h.includes("\u{1F6EB}")||h.includes("\u{1F4C5}"))&&(S=!0),w!==null&&x!==null&&C&&t.push({position:w,currentMark:x,wasCompleteTask:T,tasksInfo:S?{isTaskChange:S,originalFromA:s,originalToA:o,originalFromB:l,originalToB:c,originalInsertedText:p}:null})}}),t)}function N8(n,a,e){var h,g;if(!n.docChanged||n.annotation(ft)||n.annotation(Xi)||n.isUserEvent("set")&&n.changes.length>1||n.isUserEvent("input.paste"))return n;if(n.changes,n.isUserEvent("input.autocomplete")){let k=!1;if(n.changes.iterChanges((y,b,v,w,x)=>{let T=x.toString();T.includes("](")&&T.startsWith("[")&&T.endsWith(")")&&(k=!0)}),k)return n}let t=!1;if(n.changes.iterChanges((k,y,b,v,w)=>{let x=w.toString();n.startState.doc.sliceString(k,y)==="-"&&x===""&&(b!==k||v!==y)&&n.newDoc.sliceString(Math.max(0,b-5),Math.min(b+5,n.newDoc.length)).includes("[")&&(t=!0)}),t)return n;let r=O8(n,!!Ls(e),e);if(r.length===0)return n;let{cycle:i,marks:s,excludeMarksFromCycle:o}=Gj(e),l=i.filter(k=>!o.includes(k));if(l.length===0)return n;let c=!1;if(n.changes.length>1){let k=[];n.changes.iterChanges((v,w,x,T,C)=>{k.push({fromA:v,toA:w,fromB:x,toB:T,text:C.toString()})});let y=k.some(v=>v.text===""&&v.toA>v.fromA),b=k.some(v=>{let w=v.fromB;try{let x=n.newDoc.lineAt(w);return x.text.includes("[")&&x.text.includes("]")}catch(x){return!1}});y&&b&&(c=!0)}if(c)return n;let u=!1;if(n.changes.iterChanges((k,y,b,v,w)=>{if(k===0||n.startState.doc.sliceString(k-1,k)===` `){let T=n.startState.doc.lineAt(k).text,C=w.toString();C.trim()===T.trim()&&C.length>T.length&&(u=!0),T.trim()===C.trim()&&T.length>C.length&&(u=!0)}}),u)return n;let p=!1;if(n.changes.iterChanges((k,y,b,v,w)=>{let x=n.startState.doc.sliceString(k,y),T=w.toString(),C=/(?:-|\*|\+|\d+\.)\s\[.\]/;if(x.includes(` `)&&!T.includes(` `)&&C.test(T)&&C.test(x)){let S=T.trim();x.includes(S)&&(p=!0)}k===0&&y===n.startState.doc.length&&C.test(T)&&!T.includes(` `)&&(p=!0)}),p)return n;let m=[],f=!1;for(let k of r){let{position:y,currentMark:b,wasCompleteTask:v,tasksInfo:w}=k;if(w!=null&&w.isTaskChange)continue;let x=-1;for(let V=0;V{let Te=de.toString();Y===y&&Te.length===1&&(E=Te)}),E===S){`${E}${S}`;continue}let N=n.newDoc.lineAt(y).text,R=n.startState.doc.lineAt(Math.min(y,n.startState.doc.length)).text;if(v){for(let[Y,le]of Object.entries(s))if(le===b)break;let V=b===" "&&(((h=w==null?void 0:w.originalInsertedText)==null?void 0:h.includes("[ ]"))||N.includes("[ ]")&&!R.includes("[ ]")),G=b===" "&&(Y=>(Y==null?void 0:Y.includes("- [ ]"))||(Y==null?void 0:Y.includes("* [ ]"))||(Y==null?void 0:Y.includes("+ [ ]"))||/^\d+\.\s+\[\s\]/.test(Y||""))(w==null?void 0:w.originalInsertedText);if(V||G)continue}let j=y,W=n.newDoc.lineAt(j),B=W.to;if(j=B){`${j}${W.from}${B}`;continue}let X=Math.min(j+1,B);if(X<=j){`${j}${X}`;continue}if((S==="x"||S==="X")&&(f=!0),(S==="x"||S==="X"||S===" ")&&w!==null){let V=n.startState.doc.lineAt(w.originalFromA),G=n.startState.doc.lineAt(Math.min(w.originalToA,n.startState.doc.length));V.number!==G.number?(`${V.number}${G.number}`,m.push({from:j,to:X,insert:S})):m.push({from:w.originalFromA,to:w.originalToA,insert:w.originalInsertedText})}else m.push({from:j,to:X,insert:S})}if(m.length>0){let k=n.startState.field(Uj.editorInfoField),y=m[0],b=n.newDoc.lineAt(y.from),v=Vs(((g=k==null?void 0:k.file)==null?void 0:g.path)||"",b.text,b.number,e.settings.preferMetadataFormat,e);return{changes:m,selection:n.selection,annotations:ft.of("taskStatusChange")}}return n}var ms=require("@codemirror/view"),Kj=require("obsidian"),Qj=require("@codemirror/state"),sy=require("@codemirror/language");q();var Xj=require("@codemirror/search"),Jj=require("obsidian");var s2e=Qj.Annotation.define(),NC=class extends ms.WidgetType{constructor(e,t,r,i,s,o,l,c){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.workflowType=o;this.stageId=l;this.subStageId=c}eq(e){return e.from===this.from&&e.to===this.to&&e.workflowType===this.workflowType&&e.stageId===this.stageId&&e.subStageId===this.subStageId}toDOM(){let e=document.createElement("span");e.className="cm-workflow-stage-indicator";let{icon:t,stageType:r}=this.getStageIconAndType();(0,Jj.setIcon)(e.createSpan(),t),e.setAttribute("data-stage-type",r);let i=this.generateTooltipContent();return(0,Kj.setTooltip)(e,i),e.addEventListener("click",s=>{this.handleClick(s)}),e}getStageIconAndType(){let e=this.plugin.settings.workflow.definitions.find(r=>r.id===this.workflowType);if(!e)return{icon:"help-circle",stageType:"unknown"};let t=e.stages.find(r=>r.id===this.stageId);if(!t)return{icon:"help-circle",stageType:"unknown"};switch(t.type){case"linear":return{icon:"arrow-right",stageType:"linear"};case"cycle":return{icon:"rotate-cw",stageType:"cycle"};case"terminal":return{icon:"check",stageType:"terminal"};default:return{icon:"circle",stageType:"default"}}}generateTooltipContent(){var i;let e=this.plugin.settings.workflow.definitions.find(s=>s.id===this.workflowType);if(!e)return d("Workflow not found");let t=e.stages.find(s=>s.id===this.stageId);if(!t)return d("Stage not found");let r=`${d("Workflow")}: ${e.name} `;if(this.subStageId){let s=(i=t.subStages)==null?void 0:i.find(o=>o.id===this.subStageId);s?r+=`${d("Current stage")}: ${t.name} (${s.name}) `:r+=`${d("Current stage")}: ${t.name} `}else r+=`${d("Current stage")}: ${t.name} `;if(r+=`${d("Type")}: ${t.type}`,t.type!=="terminal"){if(t.next){let s=e.stages.find(o=>o.id===t.next);s&&(r+=` ${d("Next")}: ${s.name}`)}else if(t.canProceedTo&&t.canProceedTo.length>0){let s=e.stages.find(o=>o.id===t.canProceedTo[0]);s&&(r+=` ${d("Next")}: ${s.name}`)}}return r}handleClick(e){var y,b;e.preventDefault(),e.stopPropagation();let t=this.app.workspace.activeLeaf;if(!t||!t.view||!t.view.editor)return;let r=t.view.editor,i=this.view.state.doc.lineAt(this.from),s=i.text,o=Mn(s,this.view.state.doc,i.number,this.plugin);if(!o)return;let{currentStage:l,workflow:c,currentSubStage:u}=o,p,m;if(l.type==="terminal")return;if(l.type==="cycle"&&u)u.next?(p=l.id,m=u.next):l.canProceedTo&&l.canProceedTo.length>0?(p=l.canProceedTo[0],m=void 0):(p=l.id,m=(b=(y=l.subStages)==null?void 0:y[0])==null?void 0:b.id);else if(l.canProceedTo&&l.canProceedTo.length>0)p=l.canProceedTo[0];else if(l.next)p=Array.isArray(l.next)?l.next[0]:l.next;else{let v=c.stages.findIndex(w=>w.id===l.id);if(v>=0&&vv.id===p))return;let h;m?h=`[stage::${p}.${m}]`:h=`[stage::${p}]`;let g=/\[stage::[^\]]+\]/,k=s.match(g);if(k&&k.index!==void 0){let v=i.from+k.index,w=v+k[0].length;r.cm.dispatch({changes:{from:v,to:w,insert:h}})}}ignoreEvent(){return!1}};function Zj(n,a){return a.settings.workflow.enableWorkflow?ms.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.decorations=ms.Decoration.none;this.lastDocVersion=0;this.lastViewportFrom=0;this.lastViewportTo=0;this.decorationCache=new Map;this.updateTimeout=null;this.MAX_CACHE_SIZE=100;this.updateDecorations()}update(e){let t=e.viewportChanged&&(Math.abs(this.view.viewport.from-this.lastViewportFrom)>100||Math.abs(this.view.viewport.to-this.lastViewportTo)>100);(e.docChanged||t)&&(e.docChanged&&(this.decorationCache.clear(),this.lastDocVersion=this.view.state.doc.length),this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=window.setTimeout(()=>{this.updateDecorations(),this.updateTimeout=null},e.docChanged?0:50))}destroy(){this.decorations=ms.Decoration.none,this.decorationCache.clear(),this.updateTimeout&&clearTimeout(this.updateTimeout)}updateDecorations(){let e=[];this.lastViewportFrom=this.view.viewport.from,this.lastViewportTo=this.view.viewport.to;for(let{from:t,to:r}of this.view.visibleRanges){let i=new Xj.RegExpCursor(this.view.state.doc,"(#workflow\\/[^\\/\\s]+|\\[stage::[^\\]]+\\])",{},t,r);for(;!i.next().done;){let{from:s,to:o}=i.value,l=this.view.state.doc.lineAt(s),c=this.simpleHash(l.text),u=`${l.number}:${c}`;if(this.decorationCache.has(u)){let x=this.decorationCache.get(u);e.push(x);continue}if(!this.shouldRender(s,o))continue;let p=l.text,m=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,f=/\[([ xX\-])\]/.test(p);if(!m.test(p)&&!f||!no(p))continue;let g=Mn(p,this.view.state.doc,l.number,a);if(!g)continue;let{workflowType:k,currentStage:y,currentSubStage:b}=g,w=ms.Decoration.widget({widget:new NC(n,a,this.view,s,o,k,y.id,b==null?void 0:b.id),side:1}).range(o,o);if(e.push(w),this.decorationCache.size>=this.MAX_CACHE_SIZE){let x=this.decorationCache.keys().next().value;this.decorationCache.delete(x)}this.decorationCache.set(u,w)}}this.decorations=ms.Decoration.set(e.sort((t,r)=>t.from-r.from))}simpleHash(e){let t=0;for(let r=0;rl.from===t||l.to===e)}catch(r){return console.warn("Error checking if workflow decorator should render",r),!1}}},{decorations:e=>e.decorations}):[]}var Jd=require("obsidian"),e3=require("@codemirror/state"),t3=require("@codemirror/view");q();function L8(n,a,e,t,r){var g;let i=new Jd.Menu,o=n.state.doc.line(t).text,l=Mn(o,n.state.doc,t,e);if(!l)return!1;let{currentStage:c,currentSubStage:u,workflow:p,isRootTask:m}=l;if(c.type,r.currentStage==="root"||m)i.addItem(k=>{k.setTitle(d("Start workflow")).setIcon("play").onClick(()=>{B8(n,a,e,t)})});else if(c.type==="terminal")i.addItem(k=>{k.setTitle(d("Complete workflow")).setIcon("check").onClick(()=>{W8(n,a,e,t)})});else{let{nextStageId:k,nextSubStageId:y}=iy(c,p,u);if(k){let b=p.stages.find(v=>v.id===k);if(b){let v;if(k===c.id&&y===(u==null?void 0:u.id))v=`${d("Continue")} ${b.name}${y?` (${u==null?void 0:u.name})`:""}`;else if(k===c.id&&y){let w=(g=b.subStages)==null?void 0:g.find(x=>x.id===y);v=`${d("Move to")} ${b.name} (${(w==null?void 0:w.name)||y})`}else v=`${d("Move to")} ${b.name}`;i.addItem(w=>{w.setTitle(v).setIcon("arrow-right").onClick(()=>{var x;V8(n,a,e,t,b,!1,y?(x=b.subStages)==null?void 0:x.find(T=>T.id===y):void 0,u)})})}}if(u&&c.type==="cycle"){let b=c.canProceedTo;if(b&&b.length>0)b.forEach(v=>{let w=p.stages.find(x=>x.id===v);w&&i.addItem(x=>{x.setTitle(`${d("Complete substage and move to")} ${w.name}`).setIcon("skip-forward").onClick(()=>{oy(n,a,e,t,w,u)})})});else if(typeof c.next=="string"){let v=p.stages.find(w=>w.id===c.next);v&&i.addItem(w=>{w.setTitle(`${d("Complete substage and move to")} ${v.name}`).setIcon("skip-forward").onClick(()=>{oy(n,a,e,t,v,u)})})}else if(Array.isArray(c.next)&&c.next.length>0){let v=p.stages.find(w=>w.id===c.next[0]);v&&i.addItem(w=>{w.setTitle(`${d("Complete substage and move to")} ${v.name}`).setIcon("skip-forward").onClick(()=>{oy(n,a,e,t,v,u)})})}else{let v=p.stages.findIndex(w=>w.id===c.id);if(v>=0&&v{x.setTitle(`${d("Complete substage and move to")} ${w.name}`).setIcon("skip-forward").onClick(()=>{oy(n,a,e,t,w,u)})})}}}i.addSeparator(),i.addItem(b=>{b.setTitle(d("Add child task with same stage")).setIcon("plus-circle").onClick(()=>{z8(n,a,e,t,c,u)})})}i.addSeparator(),i.addItem(k=>{k.setTitle(d("Add new task")).setIcon("plus").onClick(()=>{j8(n,a,t)})}),i.addItem(k=>{k.setTitle(d("Add new sub-task")).setIcon("plus-circle").onClick(()=>{H8(n,a,t)})});let f=n.state.selection.main,h=n.coordsAtPos(f.head);return h?i.showAtPosition({x:h.left,y:h.bottom}):i.showAtMouseEvent(window.event),!0}function j8(n,a,e){let t=n.state.doc.line(e),r=t.text.match(/^([\s|\t]*)/),i=r?r[1]:"";n.dispatch({changes:{from:t.to,to:t.to,insert:` ${i}- [ ] `},selection:{anchor:t.to+i.length+7}}),n.focus()}function H8(n,a,e){let t=n.state.doc.line(e),r=t.text.match(/^([\s|\t]*)/),i=r?r[1]:"",s=Ha(a),o=i+s;n.dispatch({changes:{from:t.to,to:t.to,insert:` ${o}- [ ] `},selection:{anchor:t.to+o.length+7}}),n.focus()}function B8(n,a,e,t){let r=n.state.doc.line(t),i=r.text;if(!no(i))return;let o=Mn(i,n.state.doc,t,e);if(!o||!o.workflow.stages.length)return;let{workflow:l}=o,c=l.stages[0],u=i.match(/^([\s|\t]*)/),p=u?u[1]:"",m=Ha(a),f=p+m,h=e.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${new Date().toISOString().slice(0,19).replace("T"," ")}`:"",g=`${f}- [ ] ${c.name} [stage::${c.id}]${h}`;if(c.type==="cycle"&&c.subStages&&c.subStages.length>0){let v=c.subStages[0],w=f+m;g+=` ${w}- [ ] ${c.name} (${v.name}) [stage::${c.id}.${v.id}]${h}`}let k=` ${g}`,b=r.to+1+f.length+7;n.dispatch({changes:{from:r.to,to:r.to,insert:k},selection:{anchor:b}}),n.focus()}function a3(n,a){return a.settings.workflow.enableWorkflow?[e3.Prec.high(t3.keymap.of([{key:"Enter",run:t=>{let r=t.state.selection.main,i=t.state.doc.lineAt(r.head),s=i.text,o=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(!s.match(o))return!1;let c=no(s);return!c||r.head!==i.to?!1:L8(t,n,a,i.number,c)}}]))]:[]}function V8(n,a,e,t,r,i,s,o){var g;let l=n.state.doc,c=l.line(t),u=c.text;if(t>l.lines||t<1){console.warn(`Invalid line number: ${t}, doc has ${l.lines} lines`);return}let p=(g=n.state.field(Jd.editorInfoField))==null?void 0:g.editor;if(!p){console.warn("Editor not found");return}let m=Ti(e,p,u,t-1,r,i,s,o),f=c.to,h=m.find(k=>k.insert&&k.insert.includes("- [ ]"));if(h){let k=u.match(/^([\s|\t]*)/),y=k?k[1]:"",b=Ha(a),v=y+(i?b:"");f=h.from+1+v.length+6}n.dispatch({changes:m,selection:{anchor:f},annotations:ft.of("workflowChange")}),n.focus()}function W8(n,a,e,t){var m;let r=n.state.doc,s=r.line(t).text;if(t>r.lines||t<1){console.warn(`Invalid line number: ${t}, doc has ${r.lines} lines`);return}let o=(m=n.state.field(Jd.editorInfoField))==null?void 0:m.editor;if(!o){console.warn("Editor not found");return}let l=Mn(s,r,t,e);if(!l){console.warn("Could not resolve workflow information");return}let{currentStage:c,currentSubStage:u}=l,p=Ti(e,o,s,t-1,c,!1,void 0,u);n.dispatch({changes:p,annotations:ft.of("workflowChange")}),n.focus()}function z8(n,a,e,t,r,i){let s=n.state.doc.line(t),o=s.text.match(/^([\s|\t]*)/),l=o?o[1]:"",c=Ha(a),u=l+c,p=ny(r,u,e,!1,i);n.dispatch({changes:{from:s.to,to:s.to,insert:` ${p}`},selection:{anchor:s.to+u.length+7}}),n.focus()}function oy(n,a,e,t,r,i){var g;let s=n.state.doc,l=s.line(t).text;if(t>s.lines||t<1){console.warn(`Invalid line number: ${t}, doc has ${s.lines} lines`);return}let c=(g=n.state.field(Jd.editorInfoField))==null?void 0:g.editor;if(!c){console.warn("Editor not found");return}let u=[],p=l.match(/^([\s|\t]*)/),m=p?p[1].length:0,f=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;for(let k=t-1;k>=1;k--){let y=s.line(k),b=y.text.match(/^([\s|\t]*)/);if((b?b[1].length:0)!C.insert||!C.insert.includes("- [ ]"));u.push(...T);break}}let h=Ti(e,c,l,t-1,r,!1,void 0,i);u.push(...h),n.dispatch({changes:u,annotations:ft.of("workflowChange")}),n.focus()}function r3(n,a,e,t){return n3(n,a,t,"forward")}function i3(n,a,e,t){return n3(n,a,t,"backward")}function n3(n,a,e,t){let r=a.getCursor(),i=a.getLine(r.line),s=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,o=i.match(s);if(!o)return!1;if(n)return!0;let{cycle:l,marks:c,excludeMarksFromCycle:u}=$8(e),p=l.filter(b=>!u.includes(b));if(p.length===0)return!1;let m=o[2],f=-1;for(let b=0;bLC(r)).filter(r=>r.path!==this.currentFile.path);return t.sort((r,i)=>r.path.localeCompare(i.path)),t}getItemText(a){return typeof a=="string"?`Create new file: ${a}`:a.path}renderSuggestion(a,e){let t=a.item;typeof t=="string"?e.createEl("div",{text:`${d("Create new file:")} ${t}`}):e.createEl("div",{text:t.path})}onChooseItem(a,e){typeof a=="string"?this.createNewFileWithTasks(a):new BC(this.app,this.plugin,this.editor,this.currentFile,a,this.taskLine).open()}getSuggestions(a){let e=super.getSuggestions(a);return a&&!e.some(t=>typeof t.item=="string"&&t.item===a)&&this.isValidFileName(a)&&e.push({item:a,match:{score:1,matches:[]}}),e.slice(0,20)}isValidFileName(a){return a.length>0&&!a.includes("/")&&!a.includes("\\")}async createNewFileWithTasks(a){try{a.endsWith(".md")||(a+=".md");let e=this.getTaskWithChildren(),t=this.resetIndentation(e),r=this.currentFile.parent,i=r?`${r.path}/${a}`:a,s=await this.app.vault.create(i,t);this.removeTaskFromCurrentFile(),this.app.workspace.getLeaf(!0).openFile(s),new In.Notice(`${d("Task moved to")} ${a}`)}catch(e){new In.Notice(`${d("Failed to create file:")} ${e}`),console.error(e)}}getTaskWithChildren(){let e=this.editor.getValue().split(` `),t=e[this.taskLine],r=this.getIndentation(t),i=[t];for(let s=this.taskLine+1;sr.trim().length===0?r:r.substring(t)).join(` `)}},BC=class extends In.SuggestModal{constructor(a,e,t,r,i,s){super(a),this.plugin=e,this.editor=t,this.sourceFile=r,this.targetFile=i,this.taskLine=s,this.metadataCache=a.metadataCache,this.setPlaceholder("Select where to insert the task")}async getSuggestions(a){let t=(await this.app.vault.read(this.targetFile)).split(` `),r=this.metadataCache.getFileCache(this.targetFile),i=[];if(i.push({id:"beginning",text:d("Beginning of file"),level:0,line:0}),i.push({id:"end",text:d("End of file"),level:0,line:t.length}),r&&r.headings)for(let s of r.headings){let o=t[s.position.start.line];i.push({id:`heading-start-${s.position.start.line}`,text:`${d("After heading")}: ${o}`,level:s.level,line:s.position.start.line}),i.push({id:`heading-end-${s.position.start.line}`,text:`${d("End of section")}: ${o}`,level:s.level,line:s.position.start.line})}return a&&(i=i.filter(s=>s.text.toLowerCase().includes(a.toLowerCase()))),i.slice(0,20)}renderSuggestion(a,e){let t=" ".repeat(a.level);e.createEl("div",{text:`${t}${a.text}`})}onChooseSuggestion(a,e){this.moveTaskToTargetFile(a)}async moveTaskToTargetFile(a){try{let e=this.getTaskWithChildren(),r=(await this.app.vault.read(this.targetFile)).split(` `),i,s=0;if(a.id==="beginning")i=0;else if(a.id==="end")i=r.length;else if(a.id.startsWith("heading-start-"))i=a.line+1,s=Ha(this.app).length;else if(a.id.startsWith("heading-end-"))i=this.findSectionEnd(r,a.line,a.level),s=Ha(this.app).length;else throw new Error("Invalid block ID");let o=this.resetIndentation(e),l=this.addIndentation(o,0);await this.app.vault.modify(this.targetFile,[...r.slice(0,i),l,...r.slice(i)].join(` `)),this.removeTaskFromSourceFile(),new In.Notice(`${d("Task moved to")} ${this.targetFile.path}`)}catch(e){new In.Notice(`${d("Failed to move task:")} ${e}`),console.error(e)}}findSectionEnd(a,e,t){for(let r=e+1;rr.trim().length===0?r:r.substring(t)).join(` `)}addIndentation(a,e){if(e<=0)return a;let t=Ha(this.app).repeat(e/Ha(this.app).length);return a.split(` `).map(r=>r.length>0?t+r:r).join(` `)}removeTaskFromSourceFile(){let e=this.editor.getValue().split(` `),t=this.getIndentation(e[this.taskLine]),r=this.taskLine;for(let i=this.taskLine+1;i(0,va.moment)().format(t)):""}static processDateMarker(a){return a?a.replace(/\{\{date\}\}/g,()=>(0,va.moment)().format("YYYY-MM-DD")):""}static addMarkerToTask(a,e,t,r,i=!1){var g;let{taskMarkerType:s,versionMarker:o,dateMarker:l,customMarker:c,withCurrentFileLink:u}=e.completedTaskMover,p=a.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return a;let m=p[1].trimEnd(),f=(g=p[2])==null?void 0:g.trim(),h=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(c)))switch(s){case"version":o&&(h=`${m} ${o}`);break;case"date":let k=this.processDateMarker(l);k&&(h=`${m} ${k}`);break;case"custom":let y=this.processCustomMarker(c);y&&(h=`${m} ${y}`);break;default:h=m}if(u&&i){let k=r.fileManager.generateMarkdownLink(t,t.path);h=`${h} from ${k}`}return f&&(h=`${h} ${f}`),h}static addMarkerToIncompletedTask(a,e,t,r,i=!1){var g;let{incompletedTaskMarkerType:s,incompletedVersionMarker:o,incompletedDateMarker:l,incompletedCustomMarker:c,withCurrentFileLinkForIncompleted:u}=e.completedTaskMover,p=a.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return a;let m=p[1].trimEnd(),f=(g=p[2])==null?void 0:g.trim(),h=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(c)))switch(s){case"version":o&&(h=`${m} ${o}`);break;case"date":let k=this.processDateMarker(l);k&&(h=`${m} ${k}`);break;case"custom":let y=this.processCustomMarker(c);y&&(h=`${m} ${y}`);break;default:h=m}if(u&&i){let k=r.fileManager.generateMarkdownLink(t,t.path);h=`${h} from ${k}`}return f&&(h=`${h} ${f}`),h}static isCompletedTaskMark(a,e){var r,i;let t=((r=e.taskStatuses.completed)==null?void 0:r.split("|"))||["x","X"];if(e.completedTaskMover.treatAbandonedAsCompleted){let s=((i=e.taskStatuses.abandoned)==null?void 0:i.split("|"))||["-"];return t.includes(a)||s.includes(a)}return t.includes(a)}static isIncompletedTaskMark(a,e){var i,s;let t=((i=e.taskStatuses.completed)==null?void 0:i.split("|"))||["x","X"],r=[];return e.completedTaskMover.treatAbandonedAsCompleted&&(r=((s=e.taskStatuses.abandoned)==null?void 0:s.split("|"))||["-"]),!t.includes(a)&&!r.includes(a)}static completeTaskIfNeeded(a,e){var i;if(!e.completedTaskMover.completeAllMovedTasks)return a;let t=a.match(/^(\s*(?:-|\d+\.|\*)\s+\[)(.)(].*)$/);if(!t)return a;let r=((i=e.taskStatuses.completed)==null?void 0:i.split("|")[0])||"x";return`${t[1]}${r}${t[3]}`}static resetIndentation(a,e){let t=a.split(` `),r=Number.MAX_SAFE_INTEGER;for(let i of t){if(i.trim().length===0)continue;let s=this.getIndentation(i,e);r=Math.min(r,s)}return r===Number.MAX_SAFE_INTEGER||r===0?a:t.map(i=>i.trim().length===0?i:i.substring(r)).join(` `)}static findParentTaskIndex(a,e,t){for(let r=t.findIndex(i=>i.index===a)-1;r>=0;r--)if(t[r].indent{let c=this.getIndentation(o,t);if(l===0)return Ha(t).repeat(e)+o.substring(c);let u=c-i,p=Math.max(0,e+u);return Ha(t).repeat(p/Ni(t))+o.trimStart()}).join(` `)}static processSelectedTasks(a,e,t,r,i,s,o=!0){let l=[...e].sort((h,g)=>g-h),c=new Set,u=new Map;for(let h of l){let g=this.processSingleSelectedTask(a,h,t,r,i,s,o);u.set(h,g.content.split(` `)),g.linesToRemove.forEach(k=>c.add(k))}let p=[...e].sort((h,g)=>h-g),m=[];for(let h=0;h{if(y===g)return!1;let v=a.getValue().split(` `),w=this.getIndentation(v[y],s),x=this.getIndentation(v[g],s);return g>y&&x>w&&!p.some(T=>T>y&&T0&&m.push("");let k=u.get(g);k&&m.push(...k)}let f=Array.from(c);return{content:m.filter(h=>h.trim()!=="").join(` `),linesToRemove:f}}static processSingleSelectedTask(a,e,t,r,i,s,o=!0){let c=a.getValue().split(` `),u=[],p=[],m=c[e],f=this.getIndentation(m,s),h=m.match(/\[(.)]/),g=h?h[1]:"",k;if(t==="allIncompleted"||t==="directIncompletedChildren"?k=this.addMarkerToIncompletedTask(m,r,i,s,!0):(k=this.addMarkerToTask(m,r,i,s,!0),k=this.completeTaskIfNeeded(k,r)),u.push(k),t==="all"){for(let y=e+1;y{if(T.isCompleted){b.add(T.index),v.add(T.index);let C=T,S=this.findParentTaskIndex(C.index,C.indent,y);for(;S!==-1;){v.add(S);let E=y.find(A=>A.index===S);if(!E)break;E.isCompleted||w.add(S),S=this.findParentTaskIndex(E.index,E.indent,y)}}}),y.forEach(T=>{let C=this.findParentTaskIndex(T.index,T.indent,y);C!==-1&&b.has(C)&&v.add(T.index)});let x=[...v].sort((T,C)=>T-C);u.length=0,u.push(k);for(let T of x){let C=y.find(S=>S.index===T);if(C){if(w.has(T)){let S=this.addMarkerToTask(C.line,r,i,s,!1);S=this.completeTaskIfNeeded(S,r),u.push(S)}else u.push(this.completeTaskIfNeeded(C.line,r));w.has(T)||p.push(T)}}this.isCompletedTaskMark(g,r)&&p.push(e)}else if(t==="directChildren"){let b=new Set,v=Number.MAX_SAFE_INTEGER;for(let x of y)x.indent>f&&x.indentx-T);for(let x of w){let T=y.find(E=>E.index===x);if(!T)continue;u.push(this.completeTaskIfNeeded(T.line,r)),p.push(x);let C=y.findIndex(E=>E.index===x)+1,S=T.indent;for(;C{if(T.isIncompleted){b.add(T.index),v.add(T.index);let C=T,S=this.findParentTaskIndex(C.index,C.indent,y);for(;S!==-1;){v.add(S);let E=y.find(A=>A.index===S);if(!E)break;E.isIncompleted||w.add(S),S=this.findParentTaskIndex(E.index,E.indent,y)}}}),y.forEach(T=>{let C=this.findParentTaskIndex(T.index,T.indent,y);C!==-1&&b.has(C)&&v.add(T.index)});let x=[...v].sort((T,C)=>T-C);u.length=0,u.push(k);for(let T of x){let C=y.find(S=>S.index===T);if(C){if(w.has(T)){let S=this.addMarkerToIncompletedTask(C.line,r,i,s,!1);u.push(S)}else u.push(C.line);w.has(T)||p.push(T)}}this.isIncompletedTaskMark(g,r)&&p.push(e)}else if(t==="directIncompletedChildren"){let b=new Set,v=Number.MAX_SAFE_INTEGER;for(let x of y)x.indent>f&&x.indentx-T);for(let x of w){let T=y.find(E=>E.index===x);if(!T)continue;u.push(T.line),p.push(x);let C=y.findIndex(E=>E.index===x)+1,S=T.indent;for(;Co-s);a.transaction({changes:i.map(s=>{let o={line:s,ch:0},l=s+1t.path!==this.currentFile.path);return e.sort((t,r)=>t.path.localeCompare(r.path)),e}getItemText(a){return typeof a=="string"?`Create new file: ${a}`:a.path}renderSuggestion(a,e){let t=a.item;typeof t=="string"?e.createEl("div",{text:`${d("Create new file:")} ${t}`}):e.createEl("div",{text:t.path})}onChooseItem(a,e){typeof a=="string"?this.createNewFileWithTasks(a):new VC(this.app,this.plugin,this.editor,this.currentFile,a,this.taskLines,this.moveMode).open()}getSuggestions(a){let e=super.getSuggestions(a);return a&&!e.some(t=>typeof t.item=="string"&&t.item===a)&&this.isValidFileName(a)&&e.push({item:a,match:{score:1,matches:[]}}),e.slice(0,20)}isValidFileName(a){return a.length>0&&!a.includes("/")&&!a.includes("\\")}async createNewFileWithTasks(a){try{a.endsWith(".md")||(a+=".md");let{content:e,linesToRemove:t}=Qr.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.currentFile,this.app),r=Qr.resetIndentation(e,this.app),i=this.currentFile.parent,s=i?`${i.path}/${a}`:a,o=await this.app.vault.create(s,r);Qr.removeTasksFromFile(this.editor,t),this.app.workspace.getLeaf(!0).openFile(o),new va.Notice(`${d("Completed tasks moved to")} ${a}`)}catch(e){new va.Notice(`${d("Failed to create file:")} ${e}`),console.error(e)}}},VC=class extends va.SuggestModal{constructor(a,e,t,r,i,s,o){super(a),this.plugin=e,this.editor=t,this.sourceFile=r,this.targetFile=i,this.taskLines=s,this.metadataCache=a.metadataCache,this.moveMode=o,this.setPlaceholder("Select a block to insert after")}async getSuggestions(a){let t=(await this.app.vault.read(this.targetFile)).split(` `),r=this.metadataCache.getFileCache(this.targetFile),i=[];if(i.push({id:"beginning",text:d("Beginning of file"),level:0}),i.push({id:"end",text:d("End of file"),level:0}),r&&r.headings)for(let s of r.headings){let o=t[s.position.start.line];i.push({id:`heading-${s.position.start.line}`,text:o,level:s.level})}if(r&&r.listItems)for(let s of r.listItems){let o=t[s.position.start.line];i.push({id:`list-${s.position.start.line}`,text:o,level:Qr.getIndentation(o,this.app)})}return a&&(i=i.filter(s=>s.text.toLowerCase().includes(a.toLowerCase()))),i.slice(0,20)}renderSuggestion(a,e){let t=" ".repeat(a.level);a.id==="beginning"||a.id==="end"?e.createEl("div",{text:a.text}):e.createEl("div",{text:`${t}${a.text}`})}onChooseSuggestion(a,e){this.moveCompletedTasksToTargetFile(a)}async moveCompletedTasksToTargetFile(a){try{let{content:e,linesToRemove:t}=Qr.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.sourceFile,this.app),i=(await this.app.vault.read(this.targetFile)).split(` `),s,o=0;if(a.id==="beginning")s=0;else if(a.id==="end")s=i.length;else{let u=a.id.match(/-(\d+)$/);if(!u)throw new Error("Invalid block ID");let p=parseInt(u[1]);s=p+1,o=Qr.getIndentation(i[p],this.app)}let l=Qr.adjustIndentation(e,o,this.app),c=[...i.slice(0,s),l,...i.slice(s)].join(` `);await this.app.vault.modify(this.targetFile,c),Qr.removeTasksFromFile(this.editor,t),new va.Notice(`${d("Completed tasks moved to")} ${this.targetFile.path}`)}catch(e){new va.Notice(`${d("Failed to move tasks:")} ${e}`),console.error(e)}}};function dy(n,a,e,t,r){let i=e.file;if(n){if(!i||i.extension!=="md")return!1;if(a.getSelection().length===0){let u=a.getCursor();return a.getLine(u.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new va.Notice(d("No active file found")),!1;let s=a.listSelections(),o=new Set;s.forEach(c=>{let u=Math.min(c.anchor.line,c.head.line),p=Math.max(c.anchor.line,c.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new Wm(t.app,t,a,i,l,r).open(),!0}function WC(n,a,e,t,r){let i=e.file;if(n){if(!i||i.extension!=="md")return!1;if(a.getSelection().length===0){let u=a.getCursor();return a.getLine(u.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new va.Notice(d("No active file found")),!1;let s=a.listSelections(),o=new Set;s.forEach(c=>{let u=Math.min(c.anchor.line,c.head.line),p=Math.max(c.anchor.line,c.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new Wm(t.app,t,a,i,l,r).open(),!0}async function _8(n,a,e,t,r){let i=e.settings.completedTaskMover,s=r==="allCompleted"||r==="directChildren"||r==="all",o=s?i.enableAutoMove:i.enableIncompletedAutoMove,l=s?i.defaultTargetFile:i.incompletedDefaultTargetFile,c=s?i.defaultInsertionMode:i.incompletedDefaultInsertionMode,u=s?i.defaultHeadingName:i.incompletedDefaultHeadingName;if(!o||!l)return!1;try{let{content:p,linesToRemove:m}=Qr.processSelectedTasks(n,t,r,e.settings,a,e.app),f=e.app.vault.getFileByPath(l);if(f||(f=await e.app.vault.create(l,"")),!(f instanceof va.TFile))throw new Error(`Target path ${l} is not a file`);let g=(await e.app.vault.read(f)).split(` `),k,y=0;switch(c){case"beginning":k=0;break;case"end":k=g.length;break;case"after-heading":let x=new RegExp(`^#+\\s+${u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),T=g.findIndex(C=>x.test(C));for(T===-1&&(g.length>0&&g[g.length-1].trim()!==""&&g.push(""),g.push(`## ${u}`),g.push(""),T=g.length-2),k=T+1;k{let u=Math.min(c.anchor.line,c.head.line),p=Math.max(c.anchor.line,c.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return _8(a,i,t,l,r).then(c=>{c||new Wm(t.app,t,a,i,l,r).open()}),!0}Vm();var Xr=require("@codemirror/view"),gy=require("obsidian"),O3=require("@codemirror/state"),ky=require("@codemirror/language");var A3=require("obsidian");var zt="top",ba="bottom",ma="right",Zt="left",cy="auto",so=[zt,ba,ma,Zt],fs="start",vl="end",d3="clippingParents",uy="viewport",ec="popper",c3="reference",zC=so.reduce(function(n,a){return n.concat([a+"-"+fs,a+"-"+vl])},[]),py=[].concat(so,[cy]).reduce(function(n,a){return n.concat([a,a+"-"+fs,a+"-"+vl])},[]),U8="beforeRead",Y8="read",q8="afterRead",G8="beforeMain",K8="main",Q8="afterMain",X8="beforeWrite",J8="write",Z8="afterWrite",u3=[U8,Y8,q8,G8,K8,Q8,X8,J8,Z8];function Fa(n){return n?(n.nodeName||"").toLowerCase():null}function Rt(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var a=n.ownerDocument;return a&&a.defaultView||window}return n}function xi(n){var a=Rt(n).Element;return n instanceof a||n instanceof Element}function wa(n){var a=Rt(n).HTMLElement;return n instanceof a||n instanceof HTMLElement}function tc(n){if(typeof ShadowRoot=="undefined")return!1;var a=Rt(n).ShadowRoot;return n instanceof a||n instanceof ShadowRoot}function eG(n){var a=n.state;Object.keys(a.elements).forEach(function(e){var t=a.styles[e]||{},r=a.attributes[e]||{},i=a.elements[e];!wa(i)||!Fa(i)||(Object.assign(i.style,t),Object.keys(r).forEach(function(s){var o=r[s];o===!1?i.removeAttribute(s):i.setAttribute(s,o===!0?"":o)}))})}function tG(n){var a=n.state,e={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,e.popper),a.styles=e,a.elements.arrow&&Object.assign(a.elements.arrow.style,e.arrow),function(){Object.keys(a.elements).forEach(function(t){var r=a.elements[t],i=a.attributes[t]||{},s=Object.keys(a.styles.hasOwnProperty(t)?a.styles[t]:e[t]),o=s.reduce(function(l,c){return l[c]="",l},{});!wa(r)||!Fa(r)||(Object.assign(r.style,o),Object.keys(i).forEach(function(l){r.removeAttribute(l)}))})}}var p3={name:"applyStyles",enabled:!0,phase:"write",fn:eG,effect:tG,requires:["computeStyles"]};function Ra(n){return n.split("-")[0]}var Ji=Math.max,bl=Math.min,hs=Math.round;function ac(){var n=navigator.userAgentData;return n!=null&&n.brands&&Array.isArray(n.brands)?n.brands.map(function(a){return a.brand+"/"+a.version}).join(" "):navigator.userAgent}function zm(){return!/^((?!chrome|android).)*safari/i.test(ac())}function Ci(n,a,e){a===void 0&&(a=!1),e===void 0&&(e=!1);var t=n.getBoundingClientRect(),r=1,i=1;a&&wa(n)&&(r=n.offsetWidth>0&&hs(t.width)/n.offsetWidth||1,i=n.offsetHeight>0&&hs(t.height)/n.offsetHeight||1);var s=xi(n)?Rt(n):window,o=s.visualViewport,l=!zm()&&e,c=(t.left+(l&&o?o.offsetLeft:0))/r,u=(t.top+(l&&o?o.offsetTop:0))/i,p=t.width/r,m=t.height/i;return{width:p,height:m,top:u,right:c+p,bottom:u+m,left:c,x:c,y:u}}function wl(n){var a=Ci(n),e=n.offsetWidth,t=n.offsetHeight;return Math.abs(a.width-e)<=1&&(e=a.width),Math.abs(a.height-t)<=1&&(t=a.height),{x:n.offsetLeft,y:n.offsetTop,width:e,height:t}}function $m(n,a){var e=a.getRootNode&&a.getRootNode();if(n.contains(a))return!0;if(e&&tc(e)){var t=a;do{if(t&&n.isSameNode(t))return!0;t=t.parentNode||t.host}while(t)}return!1}function yr(n){return Rt(n).getComputedStyle(n)}function $C(n){return["table","td","th"].indexOf(Fa(n))>=0}function za(n){return((xi(n)?n.ownerDocument:n.document)||window.document).documentElement}function gs(n){return Fa(n)==="html"?n:n.assignedSlot||n.parentNode||(tc(n)?n.host:null)||za(n)}function m3(n){return!wa(n)||yr(n).position==="fixed"?null:n.offsetParent}function aG(n){var a=/firefox/i.test(ac()),e=/Trident/i.test(ac());if(e&&wa(n)){var t=yr(n);if(t.position==="fixed")return null}var r=gs(n);for(tc(r)&&(r=r.host);wa(r)&&["html","body"].indexOf(Fa(r))<0;){var i=yr(r);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||a&&i.willChange==="filter"||a&&i.filter&&i.filter!=="none")return r;r=r.parentNode}return null}function Zi(n){for(var a=Rt(n),e=m3(n);e&&$C(e)&&yr(e).position==="static";)e=m3(e);return e&&(Fa(e)==="html"||Fa(e)==="body"&&yr(e).position==="static")?a:e||aG(n)||a}function Tl(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function xl(n,a,e){return Ji(n,bl(a,e))}function f3(n,a,e){var t=xl(n,a,e);return t>e?e:t}function _m(){return{top:0,right:0,bottom:0,left:0}}function Um(n){return Object.assign({},_m(),n)}function Ym(n,a){return a.reduce(function(e,t){return e[t]=n,e},{})}var rG=function(a,e){return a=typeof a=="function"?a(Object.assign({},e.rects,{placement:e.placement})):a,Um(typeof a!="number"?a:Ym(a,so))};function iG(n){var a,e=n.state,t=n.name,r=n.options,i=e.elements.arrow,s=e.modifiersData.popperOffsets,o=Ra(e.placement),l=Tl(o),c=[Zt,ma].indexOf(o)>=0,u=c?"height":"width";if(!(!i||!s)){var p=rG(r.padding,e),m=wl(i),f=l==="y"?zt:Zt,h=l==="y"?ba:ma,g=e.rects.reference[u]+e.rects.reference[l]-s[l]-e.rects.popper[u],k=s[l]-e.rects.reference[l],y=Zi(i),b=y?l==="y"?y.clientHeight||0:y.clientWidth||0:0,v=g/2-k/2,w=p[f],x=b-m[u]-p[h],T=b/2-m[u]/2+v,C=xl(w,T,x),S=l;e.modifiersData[t]=(a={},a[S]=C,a.centerOffset=C-T,a)}}function nG(n){var a=n.state,e=n.options,t=e.element,r=t===void 0?"[data-popper-arrow]":t;r!=null&&(typeof r=="string"&&(r=a.elements.popper.querySelector(r),!r)||$m(a.elements.popper,r)&&(a.elements.arrow=r))}var h3={name:"arrow",enabled:!0,phase:"main",fn:iG,effect:nG,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Si(n){return n.split("-")[1]}var sG={top:"auto",right:"auto",bottom:"auto",left:"auto"};function oG(n,a){var e=n.x,t=n.y,r=a.devicePixelRatio||1;return{x:hs(e*r)/r||0,y:hs(t*r)/r||0}}function g3(n){var a,e=n.popper,t=n.popperRect,r=n.placement,i=n.variation,s=n.offsets,o=n.position,l=n.gpuAcceleration,c=n.adaptive,u=n.roundOffsets,p=n.isFixed,m=s.x,f=m===void 0?0:m,h=s.y,g=h===void 0?0:h,k=typeof u=="function"?u({x:f,y:g}):{x:f,y:g};f=k.x,g=k.y;var y=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),v=Zt,w=zt,x=window;if(c){var T=Zi(e),C="clientHeight",S="clientWidth";if(T===Rt(e)&&(T=za(e),yr(T).position!=="static"&&o==="absolute"&&(C="scrollHeight",S="scrollWidth")),T=T,r===zt||(r===Zt||r===ma)&&i===vl){w=ba;var E=p&&T===x&&x.visualViewport?x.visualViewport.height:T[C];g-=E-t.height,g*=l?1:-1}if(r===Zt||(r===zt||r===ba)&&i===vl){v=ma;var A=p&&T===x&&x.visualViewport?x.visualViewport.width:T[S];f-=A-t.width,f*=l?1:-1}}var N=Object.assign({position:o},c&&sG),I=u===!0?oG({x:f,y:g},Rt(e)):{x:f,y:g};if(f=I.x,g=I.y,l){var R;return Object.assign({},N,(R={},R[w]=b?"0":"",R[v]=y?"0":"",R.transform=(x.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",R))}return Object.assign({},N,(a={},a[w]=b?g+"px":"",a[v]=y?f+"px":"",a.transform="",a))}function lG(n){var a=n.state,e=n.options,t=e.gpuAcceleration,r=t===void 0?!0:t,i=e.adaptive,s=i===void 0?!0:i,o=e.roundOffsets,l=o===void 0?!0:o,c={placement:Ra(a.placement),variation:Si(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:r,isFixed:a.options.strategy==="fixed"};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,g3(Object.assign({},c,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:s,roundOffsets:l})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,g3(Object.assign({},c,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var k3={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:lG,data:{}};var my={passive:!0};function dG(n){var a=n.state,e=n.instance,t=n.options,r=t.scroll,i=r===void 0?!0:r,s=t.resize,o=s===void 0?!0:s,l=Rt(a.elements.popper),c=[].concat(a.scrollParents.reference,a.scrollParents.popper);return i&&c.forEach(function(u){u.addEventListener("scroll",e.update,my)}),o&&l.addEventListener("resize",e.update,my),function(){i&&c.forEach(function(u){u.removeEventListener("scroll",e.update,my)}),o&&l.removeEventListener("resize",e.update,my)}}var y3={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:dG,data:{}};var cG={left:"right",right:"left",bottom:"top",top:"bottom"};function rc(n){return n.replace(/left|right|bottom|top/g,function(a){return cG[a]})}var uG={start:"end",end:"start"};function fy(n){return n.replace(/start|end/g,function(a){return uG[a]})}function Cl(n){var a=Rt(n),e=a.pageXOffset,t=a.pageYOffset;return{scrollLeft:e,scrollTop:t}}function Sl(n){return Ci(za(n)).left+Cl(n).scrollLeft}function _C(n,a){var e=Rt(n),t=za(n),r=e.visualViewport,i=t.clientWidth,s=t.clientHeight,o=0,l=0;if(r){i=r.width,s=r.height;var c=zm();(c||!c&&a==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:i,height:s,x:o+Sl(n),y:l}}function UC(n){var a,e=za(n),t=Cl(n),r=(a=n.ownerDocument)==null?void 0:a.body,i=Ji(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=Ji(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-t.scrollLeft+Sl(n),l=-t.scrollTop;return yr(r||e).direction==="rtl"&&(o+=Ji(e.clientWidth,r?r.clientWidth:0)-i),{width:i,height:s,x:o,y:l}}function Dl(n){var a=yr(n),e=a.overflow,t=a.overflowX,r=a.overflowY;return/auto|scroll|overlay|hidden/.test(e+r+t)}function hy(n){return["html","body","#document"].indexOf(Fa(n))>=0?n.ownerDocument.body:wa(n)&&Dl(n)?n:hy(gs(n))}function oo(n,a){var e;a===void 0&&(a=[]);var t=hy(n),r=t===((e=n.ownerDocument)==null?void 0:e.body),i=Rt(t),s=r?[i].concat(i.visualViewport||[],Dl(t)?t:[]):t,o=a.concat(s);return r?o:o.concat(oo(gs(s)))}function ic(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function pG(n,a){var e=Ci(n,!1,a==="fixed");return e.top=e.top+n.clientTop,e.left=e.left+n.clientLeft,e.bottom=e.top+n.clientHeight,e.right=e.left+n.clientWidth,e.width=n.clientWidth,e.height=n.clientHeight,e.x=e.left,e.y=e.top,e}function v3(n,a,e){return a===uy?ic(_C(n,e)):xi(a)?pG(a,e):ic(UC(za(n)))}function mG(n){var a=oo(gs(n)),e=["absolute","fixed"].indexOf(yr(n).position)>=0,t=e&&wa(n)?Zi(n):n;return xi(t)?a.filter(function(r){return xi(r)&&$m(r,t)&&Fa(r)!=="body"}):[]}function YC(n,a,e,t){var r=a==="clippingParents"?mG(n):[].concat(a),i=[].concat(r,[e]),s=i[0],o=i.reduce(function(l,c){var u=v3(n,c,t);return l.top=Ji(u.top,l.top),l.right=bl(u.right,l.right),l.bottom=bl(u.bottom,l.bottom),l.left=Ji(u.left,l.left),l},v3(n,s,t));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function qm(n){var a=n.reference,e=n.element,t=n.placement,r=t?Ra(t):null,i=t?Si(t):null,s=a.x+a.width/2-e.width/2,o=a.y+a.height/2-e.height/2,l;switch(r){case zt:l={x:s,y:a.y-e.height};break;case ba:l={x:s,y:a.y+a.height};break;case ma:l={x:a.x+a.width,y:o};break;case Zt:l={x:a.x-e.width,y:o};break;default:l={x:a.x,y:a.y}}var c=r?Tl(r):null;if(c!=null){var u=c==="y"?"height":"width";switch(i){case fs:l[c]=l[c]-(a[u]/2-e[u]/2);break;case vl:l[c]=l[c]+(a[u]/2-e[u]/2);break;default:}}return l}function en(n,a){a===void 0&&(a={});var e=a,t=e.placement,r=t===void 0?n.placement:t,i=e.strategy,s=i===void 0?n.strategy:i,o=e.boundary,l=o===void 0?d3:o,c=e.rootBoundary,u=c===void 0?uy:c,p=e.elementContext,m=p===void 0?ec:p,f=e.altBoundary,h=f===void 0?!1:f,g=e.padding,k=g===void 0?0:g,y=Um(typeof k!="number"?k:Ym(k,so)),b=m===ec?c3:ec,v=n.rects.popper,w=n.elements[h?b:m],x=YC(xi(w)?w:w.contextElement||za(n.elements.popper),l,u,s),T=Ci(n.elements.reference),C=qm({reference:T,element:v,strategy:"absolute",placement:r}),S=ic(Object.assign({},v,C)),E=m===ec?S:T,A={top:x.top-E.top+y.top,bottom:E.bottom-x.bottom+y.bottom,left:x.left-E.left+y.left,right:E.right-x.right+y.right},N=n.modifiersData.offset;if(m===ec&&N){var I=N[r];Object.keys(A).forEach(function(R){var j=[ma,ba].indexOf(R)>=0?1:-1,W=[zt,ba].indexOf(R)>=0?"y":"x";A[R]+=I[W]*j})}return A}function qC(n,a){a===void 0&&(a={});var e=a,t=e.placement,r=e.boundary,i=e.rootBoundary,s=e.padding,o=e.flipVariations,l=e.allowedAutoPlacements,c=l===void 0?py:l,u=Si(t),p=u?o?zC:zC.filter(function(h){return Si(h)===u}):so,m=p.filter(function(h){return c.indexOf(h)>=0});m.length===0&&(m=p);var f=m.reduce(function(h,g){return h[g]=en(n,{placement:g,boundary:r,rootBoundary:i,padding:s})[Ra(g)],h},{});return Object.keys(f).sort(function(h,g){return f[h]-f[g]})}function fG(n){if(Ra(n)===cy)return[];var a=rc(n);return[fy(n),a,fy(a)]}function hG(n){var a=n.state,e=n.options,t=n.name;if(!a.modifiersData[t]._skip){for(var r=e.mainAxis,i=r===void 0?!0:r,s=e.altAxis,o=s===void 0?!0:s,l=e.fallbackPlacements,c=e.padding,u=e.boundary,p=e.rootBoundary,m=e.altBoundary,f=e.flipVariations,h=f===void 0?!0:f,g=e.allowedAutoPlacements,k=a.options.placement,y=Ra(k),b=y===k,v=l||(b||!h?[rc(k)]:fG(k)),w=[k].concat(v).reduce(function(Re,Pe){return Re.concat(Ra(Pe)===cy?qC(a,{placement:Pe,boundary:u,rootBoundary:p,padding:c,flipVariations:h,allowedAutoPlacements:g}):Pe)},[]),x=a.rects.reference,T=a.rects.popper,C=new Map,S=!0,E=w[0],A=0;A=0,W=j?"width":"height",B=en(a,{placement:N,boundary:u,rootBoundary:p,altBoundary:m,padding:c}),X=j?R?ma:Zt:R?ba:zt;x[W]>T[W]&&(X=rc(X));var V=rc(X),G=[];if(i&&G.push(B[I]<=0),o&&G.push(B[X]<=0,B[V]<=0),G.every(function(Re){return Re})){E=N,S=!1;break}C.set(N,G)}if(S)for(var Y=h?3:1,le=function(Pe){var nt=w.find(function(et){var Ne=C.get(et);if(Ne)return Ne.slice(0,Pe).every(function(oe){return oe})});if(nt)return E=nt,"break"},de=Y;de>0;de--){var Te=le(de);if(Te==="break")break}a.placement!==E&&(a.modifiersData[t]._skip=!0,a.placement=E,a.reset=!0)}}var b3={name:"flip",enabled:!0,phase:"main",fn:hG,requiresIfExists:["offset"],data:{_skip:!1}};function w3(n,a,e){return e===void 0&&(e={x:0,y:0}),{top:n.top-a.height-e.y,right:n.right-a.width+e.x,bottom:n.bottom-a.height+e.y,left:n.left-a.width-e.x}}function T3(n){return[zt,ma,ba,Zt].some(function(a){return n[a]>=0})}function gG(n){var a=n.state,e=n.name,t=a.rects.reference,r=a.rects.popper,i=a.modifiersData.preventOverflow,s=en(a,{elementContext:"reference"}),o=en(a,{altBoundary:!0}),l=w3(s,t),c=w3(o,r,i),u=T3(l),p=T3(c);a.modifiersData[e]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:p},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":p})}var x3={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:gG};function kG(n,a,e){var t=Ra(n),r=[Zt,zt].indexOf(t)>=0?-1:1,i=typeof e=="function"?e(Object.assign({},a,{placement:n})):e,s=i[0],o=i[1];return s=s||0,o=(o||0)*r,[Zt,ma].indexOf(t)>=0?{x:o,y:s}:{x:s,y:o}}function yG(n){var a=n.state,e=n.options,t=n.name,r=e.offset,i=r===void 0?[0,0]:r,s=py.reduce(function(u,p){return u[p]=kG(p,a.rects,i),u},{}),o=s[a.placement],l=o.x,c=o.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=l,a.modifiersData.popperOffsets.y+=c),a.modifiersData[t]=s}var C3={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:yG};function vG(n){var a=n.state,e=n.name;a.modifiersData[e]=qm({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var S3={name:"popperOffsets",enabled:!0,phase:"read",fn:vG,data:{}};function GC(n){return n==="x"?"y":"x"}function bG(n){var a=n.state,e=n.options,t=n.name,r=e.mainAxis,i=r===void 0?!0:r,s=e.altAxis,o=s===void 0?!1:s,l=e.boundary,c=e.rootBoundary,u=e.altBoundary,p=e.padding,m=e.tether,f=m===void 0?!0:m,h=e.tetherOffset,g=h===void 0?0:h,k=en(a,{boundary:l,rootBoundary:c,padding:p,altBoundary:u}),y=Ra(a.placement),b=Si(a.placement),v=!b,w=Tl(y),x=GC(w),T=a.modifiersData.popperOffsets,C=a.rects.reference,S=a.rects.popper,E=typeof g=="function"?g(Object.assign({},a.rects,{placement:a.placement})):g,A=typeof E=="number"?{mainAxis:E,altAxis:E}:Object.assign({mainAxis:0,altAxis:0},E),N=a.modifiersData.offset?a.modifiersData.offset[a.placement]:null,I={x:0,y:0};if(T){if(i){var R,j=w==="y"?zt:Zt,W=w==="y"?ba:ma,B=w==="y"?"height":"width",X=T[w],V=X+k[j],G=X-k[W],Y=f?-S[B]/2:0,le=b===fs?C[B]:S[B],de=b===fs?-S[B]:-C[B],Te=a.elements.arrow,Re=f&&Te?wl(Te):{width:0,height:0},Pe=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:_m(),nt=Pe[j],et=Pe[W],Ne=xl(0,C[B],Re[B]),oe=v?C[B]/2-Y-Ne-nt-A.mainAxis:le-Ne-nt-A.mainAxis,ge=v?-C[B]/2+Y+Ne+et+A.mainAxis:de+Ne+et+A.mainAxis,Ee=a.elements.arrow&&Zi(a.elements.arrow),tt=Ee?w==="y"?Ee.clientTop||0:Ee.clientLeft||0:0,Ke=(R=N==null?void 0:N[w])!=null?R:0,ue=X+oe-Ke-tt,wt=X+ge-Ke,st=xl(f?bl(V,ue):V,X,f?Ji(G,wt):G);T[w]=st,I[w]=st-X}if(o){var xa,Gt=w==="x"?zt:Zt,pt=w==="x"?ba:ma,Dt=T[x],dr=x==="y"?"height":"width",wr=Dt+k[Gt],ai=Dt-k[pt],ia=[zt,Zt].indexOf(y)!==-1,ri=(xa=N==null?void 0:N[x])!=null?xa:0,qa=ia?wr:Dt-C[dr]-S[dr]-ri+A.altAxis,ii=ia?Dt+C[dr]+S[dr]-ri-A.altAxis:ai,Is=f&&ia?f3(qa,Dt,ii):xl(f?qa:wr,Dt,f?ii:ai);T[x]=Is,I[x]=Is-Dt}a.modifiersData[t]=I}}var D3={name:"preventOverflow",enabled:!0,phase:"main",fn:bG,requiresIfExists:["offset"]};function KC(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function QC(n){return n===Rt(n)||!wa(n)?Cl(n):KC(n)}function wG(n){var a=n.getBoundingClientRect(),e=hs(a.width)/n.offsetWidth||1,t=hs(a.height)/n.offsetHeight||1;return e!==1||t!==1}function XC(n,a,e){e===void 0&&(e=!1);var t=wa(a),r=wa(a)&&wG(a),i=za(a),s=Ci(n,r,e),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(t||!t&&!e)&&((Fa(a)!=="body"||Dl(i))&&(o=QC(a)),wa(a)?(l=Ci(a,!0),l.x+=a.clientLeft,l.y+=a.clientTop):i&&(l.x=Sl(i))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function TG(n){var a=new Map,e=new Set,t=[];n.forEach(function(i){a.set(i.name,i)});function r(i){e.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(o){if(!e.has(o)){var l=a.get(o);l&&r(l)}}),t.push(i)}return n.forEach(function(i){e.has(i.name)||r(i)}),t}function JC(n){var a=TG(n);return u3.reduce(function(e,t){return e.concat(a.filter(function(r){return r.phase===t}))},[])}function ZC(n){var a;return function(){return a||(a=new Promise(function(e){Promise.resolve().then(function(){a=void 0,e(n())})})),a}}function e0(n){var a=n.reduce(function(e,t){var r=e[t.name];return e[t.name]=r?Object.assign({},r,t,{options:Object.assign({},r.options,t.options),data:Object.assign({},r.data,t.data)}):t,e},{});return Object.keys(a).map(function(e){return a[e]})}var E3={placement:"bottom",modifiers:[],strategy:"absolute"};function P3(){for(var n=arguments.length,a=new Array(n),e=0;e{this.popoverRef&&!this.popoverRef.contains(e.target)&&this.close()};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=t,this.initialDate=r,this.dateMark=i,this.win=e.workspace.containerEl.win||window,this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"date-picker-popover-content"});this.registerDomEvent(t,"click",i=>{i.stopPropagation()}),this.datePickerComponent=new nc(t,this.app,this.plugin,this.initialDate,this.dateMark),this.datePickerComponent.onload(),this.datePickerComponent.setOnDateChange(i=>{this.onDateSelected&&this.onDateSelected(i),this.close()}),this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"date-picker-popover tg-menu bm-menu"}),this.popoverRef.appendChild(t),document.body.appendChild(this.popoverRef);let r={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=El(r,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.datePickerComponent&&this.datePickerComponent.onunload()}};a0();var N3=O3.Annotation.define(),r0=class extends Xr.WidgetType{constructor(e,t,r,i,s,o,l){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.currentDate=o;this.dateMark=l}eq(e){return this.from===e.from&&this.to===e.to&&this.currentDate===e.currentDate}toDOM(){try{let e=createEl("span",{cls:"date-picker-widget",attr:{"aria-label":"Task Date"}}),t=createSpan({cls:"task-date-text",text:this.currentDate});return t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.showDateMenu(r)}),e.appendChild(t),e}catch(e){return console.error("Error creating date picker widget DOM:",e),createEl("span",{cls:"date-picker-widget-error",text:this.currentDate})}}showDateMenu(e){try{let t=this.currentDate.match(/\d{4}-\d{2}-\d{2}/),r=t?t[0]:null;if(gy.Platform.isDesktop){let i=new lo(this.app,this.plugin,r||void 0,this.dateMark);i.onDateSelected=s=>{s?this.setDate(s):this.setDate("")},i.showAtPosition({x:e.clientX,y:e.clientY})}else{let i=new Gm(this.app,this.plugin,r||void 0,this.dateMark);i.onDateSelected=s=>{s?this.setDate(s):this.setDate("")},i.open()}}catch(t){console.error("Error showing date menu:",t)}}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}resolveCurrentRange(){var e;try{let t=(e=this.view)==null?void 0:e.state;if(!t)return null;let r=t.doc.lineAt(this.from),i=r.text;if(this.plugin.settings.preferMetadataFormat==="dataview"){let o=/\[[^\]]+::\s*\d{4}-\d{2}-\d{2}\]/g,l;for(;(l=o.exec(i))!==null;){let c=r.from+l.index,u=c+l[0].length;if(l[0].startsWith(this.dateMark)||this.from>=c&&this.from<=u)return{from:c,to:u}}}else{let o=new RegExp(`${this.escapeRegex(this.dateMark)}\\s*\\d{4}-\\d{2}-\\d{2}`,"g"),l;for(;(l=o.exec(i))!==null;){let c=r.from+l.index,u=c+l[0].length;if(this.from>=c&&this.from<=u)return{from:c,to:u}}}return null}catch(t){return console.warn("Failed to resolve current date range:",t),null}}setDate(e){try{if(!this.view){console.warn("Invalid view state, skipping date update");return}let t=this.resolveCurrentRange();if(!t){console.warn("Could not locate current date range; skipping update");return}let r=this.view.state.doc.lineAt(t.from),i=this.view.state.doc.lineAt(t.to);if(r.number!==i.number){console.warn("Refusing to replace multi-line range for date");return}let s=this.plugin.settings.preferMetadataFormat==="dataview",o="";e&&(s?o=`${this.dateMark}${e}]`:o=`${this.dateMark} ${e}`);let l=this.view.state.update({changes:{from:t.from,to:t.to,insert:o},annotations:[N3.of(!0)]});this.view.dispatch(l)}catch(t){console.error("Error setting date:",t)}}};function L3(n,a){if(!a.settings.enableDatePicker)return[];class e{constructor(s){this.decorations=Xr.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.dateMatch=new Xr.MatchDecorator({regexp:this.createDateRegex(a.settings.preferMetadataFormat),decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m,f;m=c[0],f=c[1],s(o,l,Xr.Decoration.replace({widget:new r0(n,a,u,o,l,m,f)}))}catch(p){console.warn("Error decorating date:",p)}}});this.view=s,this.plugin=a,this.updateDecorations(s)}createDateRegex(s){return s==="dataview"?new RegExp(`(\\[[^\\]\\ ]+::\\s*)(\\d{4}-\\d{2}-\\d{2})\\]`,"g"):new RegExp("([\\p{Emoji}\\p{Emoji_Modifier}\\p{Emoji_Component}\\p{Emoji_Modifier_Base}\\p{Emoji_Presentation}])\\s*(\\d{4}-\\d{2}-\\d{2})","gu")}update(s){if(!this.isDestroyed)try{if(s.docChanged||s.viewportChanged||s.selectionSet||s.transactions.some(o=>o.annotation(N3))){let o=Date.now();o-this.lastUpdate>this.updateThreshold?(this.lastUpdate=o,this.updateDecorations(s.view,s)):setTimeout(()=>{this.view&&!this.isDestroyed&&this.updateDecorations(this.view)},this.updateThreshold)}}catch(o){console.error("Error in date picker update:",o)}}destroy(){this.isDestroyed=!0,this.decorations=Xr.Decoration.none}updateDecorations(s,o){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=Xr.Decoration.none;return}try{o&&!o.docChanged&&this.decorations.size>0?this.decorations=this.dateMatch.updateDeco(o,this.decorations):this.decorations=this.dateMatch.createDeco(s)}catch(l){console.warn("Error updating date decorations, clearing decorations",l),this.decorations=Xr.Decoration.none}}}isLivePreview(s){try{return s.field(gy.editorLivePreviewField)}catch(o){return console.warn("Error checking live preview state:",o),!1}}shouldRender(s,o,l){try{if(o<0||l>s.state.doc.length||o>=l)return!1;let u=(0,ky.syntaxTree)(s.state).resolveInner(o+1).type.prop(ky.tokenClassNodeProp);if(u){let f=u.split(" ");if(f.includes("hmd-codeblock")||f.includes("hmd-frontmatter"))return!1}return!s.state.selection.ranges.some(f=>!(f.to<=o||f.from>=l))&&this.isLivePreview(s.state)}catch(c){return console.warn("Error checking if date should render",c),!1}}}let t={decorations:i=>{try{return i.isDestroyed?Xr.Decoration.none:i.decorations.update({filter:(s,o,l)=>{var c;try{if(((c=l.spec)==null?void 0:c.widget).error||s<0||o>i.view.state.doc.length||s>=o)return!1;let p=i.view.state.selection;for(let m of p.ranges)if(!(m.to<=s||m.from>=o))return!1;return!0}catch(u){return console.warn("Error filtering date decoration:",u),!1}}})}catch(s){return console.warn("Error filtering date decorations",s),i.decorations}}};return Xr.ViewPlugin.fromClass(e,t)}var Ot=require("obsidian"),co=require("@codemirror/state"),B3=require("@codemirror/view");gd();q();var Ta=require("obsidian"),j3=require("@codemirror/state");q();var yy=class extends Ta.EditorSuggest{constructor(e,t){super(e);this.isQuickCaptureMode=!1;this.taskMetadata=null;this.updateButtonState=null;this.dateButton=null;this.priorityButton=null;this.tagsButton=null;this.targetFileUpdater=null;this.plugin=t}setQuickCaptureContext(e,t,r,i,s){this.isQuickCaptureMode=e,this.taskMetadata=t,this.updateButtonState=r,i&&(this.dateButton=i.dateButton,this.priorityButton=i.priorityButton,this.tagsButton=i.tagsButton),this.targetFileUpdater=s||null}onTrigger(e,t,r){var l;if(!this.isQuickCaptureMode)return null;let i=(l=t.cm)==null?void 0:l.dom;if(!i||!i.closest(".quick-capture-panel"))return null;let s=t.getLine(e.line),o=["~","!","#","*","@"];for(let c=e.ch-1;c>=0;c--){let u=s.charAt(c);if(o.includes(u)){if(c===0||/\s/.test(s.charAt(c-1))){let p=s.substring(c+1,e.ch);return{start:{line:e.line,ch:c},end:e,query:u+p}}break}if(/[\s~!#*@]/.test(u))break}return null}getSuggestions(e){let t=e.query.charAt(0),r=e.query.substring(1).toLowerCase(),i=[];switch(t){case"~":i=this.getDateSuggestions();break;case"!":i=this.getPrioritySuggestions();break;case"#":i=this.getTagSuggestions();break;case"*":case"@":i=this.getLocationSuggestions();break;default:return[]}return r&&(i=i.filter(s=>s.label.toLowerCase().includes(r)||s.description.toLowerCase().includes(r))),i}getDateSuggestions(){return[{id:"date-today",label:d("Today"),icon:"calendar",description:(0,Ta.moment)().format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-tomorrow",label:d("Tomorrow"),icon:"calendar",description:(0,Ta.moment)().add(1,"day").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"day").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"day").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-week",label:d("Next week"),icon:"calendar",description:(0,Ta.moment)().add(1,"week").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"week").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"week").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-month",label:d("Next month"),icon:"calendar",description:(0,Ta.moment)().add(1,"month").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"month").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"month").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}}]}getPrioritySuggestions(){return[{id:"priority-highest",label:d("Highest"),icon:"arrow-up",description:d("\u{1F53A} Highest priority"),replacement:"\u{1F53A}",trigger:"!",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.priority=5),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-high",label:d("High"),icon:"arrow-up",description:d("\u23EB High priority"),replacement:"\u23EB",trigger:"!",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.priority=4),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-medium",label:d("Medium"),icon:"minus",description:d("\u{1F53C} Medium priority"),replacement:"\u{1F53C}",trigger:"!",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.priority=3),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-low",label:d("Low"),icon:"arrow-down",description:d("\u{1F53D} Low priority"),replacement:"\u{1F53D}",trigger:"!",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.priority=2),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-lowest",label:d("Lowest"),icon:"arrow-down",description:d("\u23EC Lowest priority"),replacement:"\u23EC",trigger:"!",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.priority=1),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}}]}getTagSuggestions(){return["important","urgent","todo","review","idea","question","work","personal"].map(t=>({id:`tag-${t}`,label:`#${t}`,icon:"tag",description:d(`Add tag: ${t}`),replacement:`#${t}`,trigger:"#",action:(r,i,s)=>{this.taskMetadata&&(this.taskMetadata.tags||(this.taskMetadata.tags=[]),this.taskMetadata.tags.includes(t)||this.taskMetadata.tags.push(t)),this.updateButtonState&&this.tagsButton&&this.updateButtonState(this.tagsButton,!0)}}))}getLocationSuggestions(){let e=[],t=this.plugin.settings.quickCapture,r=t.dailyNoteSettings||{},i=(0,Ta.moment)().format(r.format||"YYYY-MM-DD"),s=i+".md";return r.folder&&r.folder.trim()!==""&&(s=`${r.folder.replace(/\/$/,"")}/${i}.md`),e.push({id:"location-fixed",label:d("Fixed File"),icon:"file",description:t.targetFile||"Quick Capture.md",replacement:"",trigger:"*",action:(o,l,c)=>{let u=this.plugin.settings.quickCapture.targetFile||"Quick Capture.md";this.targetFileUpdater&&this.targetFileUpdater(u)}}),e.push({id:"location-daily",label:d("Daily Note"),icon:"calendar-days",description:s,replacement:"",trigger:"*",action:(o,l,c)=>{let u=this.plugin.settings.quickCapture.dailyNoteSettings||{},p=(0,Ta.moment)().format(u.format||"YYYY-MM-DD"),m=p+".md";u.folder&&u.folder.trim()!==""&&(m=`${u.folder.replace(/\/$/,"")}/${p}.md`),this.targetFileUpdater&&this.targetFileUpdater(m)}}),e.push({id:"location-inbox",label:d("Inbox"),icon:"inbox",description:d("Save to Inbox.md"),replacement:"",trigger:"*",action:(o,l,c)=>{this.targetFileUpdater&&this.targetFileUpdater("Inbox.md")}}),e}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let r=t.createDiv("menu-item-icon");(0,Ta.setIcon)(r,e.icon);let i=t.createDiv("menu-item-title");if(i.textContent=e.label,e.description){let s=t.createDiv("menu-item-description");s.textContent=e.description}}selectSuggestion(e,t){var l,c,u,p;let r=(l=this.context)==null?void 0:l.editor,i=(c=this.context)==null?void 0:c.start,s=(u=this.context)==null?void 0:u.end;if(!r||!i||!s)return;let o=r.cm;if(!o)r.replaceRange(e.replacement,i,s);else if((p=o.state)!=null&&p.doc){let m=o.state.doc.line(i.line+1).from+i.ch,f=o.state.doc.line(s.line+1).from+s.ch;o.dispatch({changes:{from:m,to:f,insert:e.replacement},annotations:[j3.Transaction.userEvent.of("input")]})}e.action&&e.action(r,s,this.taskMetadata),this.close()}};function CG(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function SG(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?CG(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var ks=co.StateEffect.define(),s0=co.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(ks)&&(e=a.state.field(Ot.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>B3.showPanel.from(n,a=>a?DG:null)}),H3=(n,a)=>{n.dispatch({effects:ks.of(!1)}),setTimeout(()=>{let e=a.workspace.activeLeaf;e&&e.view instanceof Ot.MarkdownView&&e.view.editor&&!e.view.editor.hasFocus()&&e.view.editor.focus()},10)},vy=async(n,a,e,t,r,i)=>{if(!e)return;let s=e.value.trim();if(!s){new Ot.Notice(d("Nothing to capture"));return}if(i){let o=[];if(i.dueDate&&o.push(`\u{1F4C5} ${(0,Ot.moment)(i.dueDate).format("YYYY-MM-DD")}`),i.priority){let l=["\u23EC","\u{1F53D}","\u{1F53C}","\u23EB","\u{1F53A}"];o.push(l[i.priority-1])}i.tags&&i.tags.length>0&&o.push(...i.tags.map(l=>`#${l}`)),o.length>0&&(s=`${s} ${o.join(" ")}`)}if(t.autoAddTaskPrefix!==!1){let o=t.taskPrefix||"- [ ]";["- [ ]","- [x]","- [X]","- [/]","- [-]","- [>]","- ","* ","+ "].some(u=>s.trimStart().startsWith(u))||(s=s.split(` `).map(p=>p.trim()?`${o} ${p.trim()}`:p).join(` `))}try{let o={...t,targetFile:r};await mn(a,s,o),e.set("",!1),n.dispatch({effects:ks.of(!1)});let l=r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let c=(0,Ot.moment)().format(t.dailyNoteSettings.format),u=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${c}.md`:`${c}.md`;l=SG(u)}new Ot.Notice(`${d("Captured successfully to")} ${l}`)}catch(o){new Ot.Notice(`${d("Failed to save:")} ${o}`)}},V3=co.Facet.define({combine:n=>{var a,e,t,r,i,s,o,l,c,u,p,m,f,h;return{targetFile:((a=n.find(g=>g.targetFile))==null?void 0:a.targetFile)||"Quick capture.md",placeholder:((e=n.find(g=>g.placeholder))==null?void 0:e.placeholder)||d("Capture thoughts, tasks, or ideas..."),appendToFile:(r=(t=n.find(g=>g.appendToFile!==void 0))==null?void 0:t.appendToFile)!=null?r:"append",targetType:(s=(i=n.find(g=>g.targetType))==null?void 0:i.targetType)!=null?s:"fixed",targetHeading:(l=(o=n.find(g=>g.targetHeading))==null?void 0:o.targetHeading)!=null?l:"",dailyNoteSettings:(u=(c=n.find(g=>g.dailyNoteSettings))==null?void 0:c.dailyNoteSettings)!=null?u:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(m=(p=n.find(g=>g.autoAddTaskPrefix!==void 0))==null?void 0:p.autoAddTaskPrefix)!=null?m:!0,taskPrefix:(h=(f=n.find(g=>g.taskPrefix))==null?void 0:f.taskPrefix)!=null?h:"- [ ]"}}});function i0(n,a,e){n.showAtMouseEvent(new MouseEvent("click",{clientX:a,clientY:e}))}function DG(n){let a=createDiv({cls:"quick-capture-panel"}),e=n.state.facet(W3),t=n.state.facet(V3),r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let b=(0,Ot.moment)().format(t.dailyNoteSettings.format||"YYYY-MM-DD"),v=b+".md";t.dailyNoteSettings.folder&&t.dailyNoteSettings.folder.trim()!==""&&(v=`${t.dailyNoteSettings.folder.replace(/\/$/,"")}/${b}.md`),r=v}else r=t.targetFile||"Quick Capture.md";let i=a.createEl("div",{cls:"quick-capture-header-container"});i.createEl("span",{cls:"quick-capture-title",text:d("Capture to")});let s=i.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:"true",spellcheck:"false"},text:r});s.addEventListener("input",()=>{r=s.textContent||""}),s.addEventListener("blur",()=>{var v;let b=(v=s.textContent)==null?void 0:v.trim();b?(r=b,r.endsWith(".md")||(r+=".md",s.textContent=r)):(r=t.targetFile||"Quick Capture.md",s.textContent=r)});let o=i.createEl("div",{cls:"quick-capture-actions"}),l={},c=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set date")}});(0,Ot.setIcon)(c,"calendar");let u=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set priority")}});(0,Ot.setIcon)(u,"zap");let p=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Add tags")}});(0,Ot.setIcon)(p,"tag");let m=(b,v)=>{v?b.addClass("active"):b.removeClass("active")},f=a.createEl("div",{cls:"quick-capture-editor"}),h=null;setTimeout(()=>{var v;h=pn(e,f,{placeholder:t.placeholder,onEnter:(w,x,T)=>x?(vy(n,e,h,t,r,l),!0):!1,onEscape:w=>{H3(n,e)},onSubmit:w=>{vy(n,e,h,t,r)}}),(v=h==null?void 0:h.editor)==null||v.focus(),s.addEventListener("keydown",w=>{var x;w.key==="Enter"&&(w.preventDefault(),s.blur(),(x=h==null?void 0:h.editor)==null||x.focus())});let b=n.state.facet(n0);b.quickCaptureSuggest&&(h!=null&&h.editor)&&b.quickCaptureSuggest.setQuickCaptureContext(!0,l,m,{dateButton:c,priorityButton:u,tagsButton:p},w=>{r=w,s&&(s.textContent=w)}),h.scope.register(["Alt"],"c",w=>(w.preventDefault(),h?h.value.trim()===""?(H3(n,e),!0):(vy(n,e,h,t,r),!0):!1)),t.targetType==="fixed"&&h.scope.register(["Alt"],"x",w=>(w.preventDefault(),s.focus(),!0)),h.scope.register(["Alt"],"d",w=>(w.preventDefault(),c.click(),!0)),h.scope.register(["Alt"],"p",w=>(w.preventDefault(),u.click(),!0)),h.scope.register(["Alt"],"t",w=>(w.preventDefault(),p.click(),!0))},10);let g=a.createEl("div",{cls:"quick-capture-buttons"});return g.createEl("button",{cls:"quick-capture-submit mod-cta",text:d("Capture")}).addEventListener("click",()=>{vy(n,e,h,t,r)}),g.createEl("button",{cls:"quick-capture-cancel mod-destructive",text:d("Cancel")}).addEventListener("click",()=>{n.dispatch({effects:ks.of(!1)})}),t.targetType==="fixed"&&new jo(e,s,t,b=>{var v;s.textContent=b.path,r=b.path,(v=h==null?void 0:h.editor)==null||v.focus()}),c.addEventListener("click",()=>{let b=[{label:d("Today"),date:(0,Ot.moment)().toDate()},{label:d("Tomorrow"),date:(0,Ot.moment)().add(1,"day").toDate()},{label:d("Next week"),date:(0,Ot.moment)().add(1,"week").toDate()},{label:d("Next month"),date:(0,Ot.moment)().add(1,"month").toDate()}],v=new Ot.Menu;b.forEach(x=>{v.addItem(T=>{T.setTitle(x.label),T.setIcon("calendar"),T.onClick(()=>{var C;l.dueDate=x.date,m(c,!0),(C=h==null?void 0:h.editor)==null||C.focus()})})}),v.addSeparator(),v.addItem(x=>{x.setTitle(d("Clear date")),x.setIcon("x"),x.onClick(()=>{var T;delete l.dueDate,m(c,!1),(T=h==null?void 0:h.editor)==null||T.focus()})});let w=c.getBoundingClientRect();i0(v,w.left,w.bottom+5)}),u.addEventListener("click",()=>{let b=[{level:5,label:d("Highest"),icon:"\u{1F53A}"},{level:4,label:d("High"),icon:"\u23EB"},{level:3,label:d("Medium"),icon:"\u{1F53C}"},{level:2,label:d("Low"),icon:"\u{1F53D}"},{level:1,label:d("Lowest"),icon:"\u23EC"}],v=new Ot.Menu;b.forEach(x=>{v.addItem(T=>{T.setTitle(`${x.icon} ${x.label}`),T.onClick(()=>{var C;l.priority=x.level,m(u,!0),(C=h==null?void 0:h.editor)==null||C.focus()})})}),v.addSeparator(),v.addItem(x=>{x.setTitle(d("Clear priority")),x.setIcon("x"),x.onClick(()=>{var T;delete l.priority,m(u,!1),(T=h==null?void 0:h.editor)==null||T.focus()})});let w=u.getBoundingClientRect();i0(v,w.left,w.bottom+5)}),p.addEventListener("click",()=>{let b=new Ot.Menu;["important","urgent","todo","review","idea","question"].forEach(x=>{var C;let T=(C=l.tags)==null?void 0:C.includes(x);b.addItem(S=>{S.setTitle(T?`\u2713 #${x}`:`#${x}`),S.setIcon("tag"),S.onClick(()=>{var E;l.tags||(l.tags=[]),T?(l.tags=l.tags.filter(A=>A!==x),l.tags.length===0&&(delete l.tags,m(p,!1))):(l.tags.push(x),m(p,!0)),(E=h==null?void 0:h.editor)==null||E.focus()})})}),b.addSeparator(),b.addItem(x=>{x.setTitle(d("Clear all tags")),x.setIcon("x"),x.onClick(()=>{var T;delete l.tags,m(p,!1),(T=h==null?void 0:h.editor)==null||T.focus()})});let w=p.getBoundingClientRect();i0(b,w.left,w.bottom+5)}),{dom:a,top:!1,update:b=>{},destroy:()=>{let b=n.state.facet(n0);b.quickCaptureSuggest&&b.quickCaptureSuggest.setQuickCaptureContext(!1),h==null||h.destroy(),h=null}}}var W3=co.Facet.define({combine:n=>n[0]}),n0=co.Facet.define({combine:n=>n[0]});function o0(n,a){var e,t,r,i,s,o,l,c,u,p,m,f,h,g;return a.quickCaptureSuggest||(a.quickCaptureSuggest=new yy(n,a),a.registerEditorSuggest(a.quickCaptureSuggest)),[s0,V3.of({targetFile:((e=a.settings.quickCapture)==null?void 0:e.targetFile)||"Quick Capture.md",placeholder:((t=a.settings.quickCapture)==null?void 0:t.placeholder)||d("Capture thoughts, tasks, or ideas..."),appendToFile:(i=(r=a.settings.quickCapture)==null?void 0:r.appendToFile)!=null?i:"append",targetType:(o=(s=a.settings.quickCapture)==null?void 0:s.targetType)!=null?o:"fixed",targetHeading:(c=(l=a.settings.quickCapture)==null?void 0:l.targetHeading)!=null?c:"",dailyNoteSettings:(p=(u=a.settings.quickCapture)==null?void 0:u.dailyNoteSettings)!=null?p:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(f=(m=a.settings.quickCapture)==null?void 0:m.autoAddTaskPrefix)!=null?f:!0,taskPrefix:(g=(h=a.settings.quickCapture)==null?void 0:h.taskPrefix)!=null?g:"- [ ]"}),W3.of(n),n0.of(a)]}var $t=require("obsidian");gd();q();Lo();var by=class extends $t.Modal{constructor(e,t){super(e);this.markdownEditor=null;this.capturedContent="";this.taskMetadata={};this.dateButton=null;this.priorityButton=null;this.locationButton=null;this.tagButton=null;this.universalSuggest=null;this.plugin=t,this.minimalSuggest=t.minimalQuickCaptureSuggest,this.suggestManager=new is(e,t);let r=this.plugin.settings.quickCapture.minimalModeSettings;this.taskMetadata.location=this.plugin.settings.quickCapture.targetType||"fixed",this.taskMetadata.targetFile=this.getTargetFile()}onOpen(){let{contentEl:e}=this;this.modalEl.addClass("quick-capture-modal"),this.modalEl.addClass("minimal"),this.modalEl.__minimalQuickCaptureModal=this,this.suggestManager.startManaging(),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!0),this.createMinimalInterface(e),setTimeout(()=>{var t,r;(r=(t=this.markdownEditor)==null?void 0:t.editor)!=null&&r.editor&&(this.universalSuggest=this.suggestManager.enableForMinimalModal(this.markdownEditor.editor.editor),this.universalSuggest.enable())},100)}onClose(){this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.suggestManager.stopManaging(),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!1),this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),delete this.modalEl.__minimalQuickCaptureModal,this.contentEl.empty()}createMinimalInterface(e){this.titleEl.setText(d("Minimal Quick Capture"));let t=e.createDiv({cls:"quick-capture-minimal-editor-container"});this.setupMarkdownEditor(t);let r=e.createDiv({cls:"quick-capture-minimal-buttons"});this.createQuickActionButtons(r),this.createMainButtons(r)}setupMarkdownEditor(e){setTimeout(()=>{var t,r;this.markdownEditor=pn(this.app,e,{placeholder:d("Enter your task..."),singleLine:!0,onEnter:(i,s,o)=>s?(this.handleSubmit(),!0):(this.handleSubmit(),!0),onEscape:i=>{this.close()},onChange:i=>{var s;this.capturedContent=((s=this.markdownEditor)==null?void 0:s.value)||"",this.parseContentAndUpdateButtons()}}),(r=(t=this.markdownEditor)==null?void 0:t.editor)==null||r.focus()},50)}createQuickActionButtons(e){let t=this.plugin.settings.quickCapture.minimalModeSettings||{},r=e.createDiv({cls:"quick-actions-left"});this.dateButton=r.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set date")}}),(0,$t.setIcon)(this.dateButton,"calendar"),this.dateButton.addEventListener("click",()=>this.showDatePicker()),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.priorityButton=r.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set priority")}}),(0,$t.setIcon)(this.priorityButton,"zap"),this.priorityButton.addEventListener("click",()=>this.showPriorityMenu()),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.locationButton=r.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set location")}}),(0,$t.setIcon)(this.locationButton,"folder"),this.locationButton.addEventListener("click",()=>this.showLocationMenu()),this.updateButtonState(this.locationButton,this.taskMetadata.location!==(this.plugin.settings.quickCapture.targetType||"fixed")),this.tagButton=r.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Add tags")}}),(0,$t.setIcon)(this.tagButton,"tag"),this.tagButton.addEventListener("click",()=>{}),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0))}createMainButtons(e){e.createDiv({cls:"quick-actions-right"}).createEl("button",{text:d("Save"),cls:"mod-cta quick-action-save"}).addEventListener("click",()=>this.handleSubmit())}updateButtonState(e,t){t?e.addClass("active"):e.removeClass("active")}showMenuAtCoords(e,t,r){e.showAtMouseEvent(new MouseEvent("click",{clientX:t,clientY:r}))}showDatePickerAtCursor(e,t){this.showDatePicker(t,e)}showDatePicker(e,t){let r=[{label:d("Tomorrow"),date:(0,$t.moment)().add(1,"day").toDate()},{label:d("Day after tomorrow"),date:(0,$t.moment)().add(2,"day").toDate()},{label:d("Next week"),date:(0,$t.moment)().add(1,"week").toDate()},{label:d("Next month"),date:(0,$t.moment)().add(1,"month").toDate()}],i=new $t.Menu;if(r.forEach(s=>{i.addItem(o=>{o.setTitle(s.label),o.setIcon("calendar"),o.onClick(()=>{this.taskMetadata.dueDate=s.date,this.updateButtonState(this.dateButton,!0),e&&this.markdownEditor&&this.replaceAtCursor(e,this.formatDate(s.date))})})}),i.addSeparator(),i.addItem(s=>{s.setTitle(d("Choose date...")),s.setIcon("calendar-days"),s.onClick(()=>{})}),t)this.showMenuAtCoords(i,t.left,t.top);else if(this.dateButton){let s=this.dateButton.getBoundingClientRect();this.showMenuAtCoords(i,s.left,s.bottom+5)}}showPriorityMenuAtCursor(e,t){this.showPriorityMenu(t,e)}showPriorityMenu(e,t){let r=[{level:5,label:d("Highest"),icon:"\u{1F53A}"},{level:4,label:d("High"),icon:"\u23EB"},{level:3,label:d("Medium"),icon:"\u{1F53C}"},{level:2,label:d("Low"),icon:"\u{1F53D}"},{level:1,label:d("Lowest"),icon:"\u23EC"}],i=new $t.Menu;if(r.forEach(s=>{i.addItem(o=>{o.setTitle(`${s.icon} ${s.label}`),o.onClick(()=>{this.taskMetadata.priority=s.level,this.updateButtonState(this.priorityButton,!0),e&&this.markdownEditor&&this.replaceAtCursor(e,s.icon)})})}),t)this.showMenuAtCoords(i,t.left,t.top);else if(this.priorityButton){let s=this.priorityButton.getBoundingClientRect();this.showMenuAtCoords(i,s.left,s.bottom+5)}}showLocationMenuAtCursor(e,t){this.showLocationMenu(t,e)}showLocationMenu(e,t){let r=new $t.Menu;if(r.addItem(i=>{i.setTitle(d("Fixed location")),i.setIcon("file"),i.onClick(()=>{this.taskMetadata.location="fixed",this.taskMetadata.targetFile=this.plugin.settings.quickCapture.targetFile,this.updateButtonState(this.locationButton,this.taskMetadata.location!==(this.plugin.settings.quickCapture.targetType||"fixed")),e&&this.markdownEditor&&this.replaceAtCursor(e,d("Fixed location"))})}),r.addItem(i=>{i.setTitle(d("Daily note")),i.setIcon("calendar"),i.onClick(()=>{var s;this.taskMetadata.location="daily-note",this.taskMetadata.targetFile=this.getDailyNoteFile(),this.updateButtonState(this.locationButton,this.taskMetadata.location!==(((s=this.plugin.settings.quickCapture)==null?void 0:s.targetType)||"fixed")),e&&this.markdownEditor&&this.replaceAtCursor(e,d("Daily note"))})}),t)this.showMenuAtCoords(r,t.left,t.top);else if(this.locationButton){let i=this.locationButton.getBoundingClientRect();this.showMenuAtCoords(r,i.left,i.bottom+5)}}showTagSelectorAtCursor(e,t){}replaceAtCursor(e,t){if(!this.markdownEditor)return;let r=this.markdownEditor.editor.cm;r&&r.replaceRange&&r.replaceRange(t,{line:e.line,ch:e.ch-1},e)}getTargetFile(){let e=this.plugin.settings.quickCapture;return this.taskMetadata.location==="daily-note"?this.getDailyNoteFile():e.targetFile}getDailyNoteFile(){let e=this.plugin.settings.quickCapture.dailyNoteSettings,t=(0,$t.moment)().format(e.format);return e.folder?`${e.folder}/${t}.md`:`${t}.md`}formatDate(e){return(0,$t.moment)(e).format("YYYY-MM-DD")}processMinimalContent(e){return e.trim()?e.split(` `).map(i=>{let s=i.trim();return s&&!s.startsWith("- [")?`- [ ] ${Ka(s)}`:i}).join(` `):""}cleanTemporaryMarks(e){let t=e;return t=t.replace(/\s*!\s*/g," "),t=t.replace(/\s*~\s*/g," "),t=t.replace(/\s*[🔺⏫🔼🔽⏬️]\s*/g," "),t=t.replace(/\s*[📅🛫⏳✅➕❌]\s*/g," "),t=t.replace(/\s*[📁🏠🏢🏪🏫🏬🏭🏯🏰]\s*/g," "),t=t.replace(/\s*[🆔⛔🏁🔁]\s*/g," "),t=t.replace(/\s*@\w*\s*/g," "),t=t.replace(/\s*target:\s*/gi," "),t=t.replace(/\s+/g," ").trim(),t}addMetadataToContent(e){let t=[];if(this.taskMetadata.dueDate&&t.push(`\u{1F4C5} ${this.formatDate(this.taskMetadata.dueDate)}`),this.taskMetadata.priority){let r=["\u23EC","\u{1F53D}","\u{1F53C}","\u23EB","\u{1F53A}"];t.push(r[this.taskMetadata.priority-1])}return this.taskMetadata.tags&&this.taskMetadata.tags.length>0&&t.push(...this.taskMetadata.tags.map(r=>`#${r}`)),t.length>0?`${e} ${t.join(" ")}`:e}async handleSubmit(){let e=this.capturedContent.trim();if(!e){new $t.Notice(d("Nothing to capture"));return}try{let t=this.processMinimalContent(e);t=this.addMetadataToContent(t);let r={...this.plugin.settings.quickCapture,targetFile:this.taskMetadata.targetFile||this.getTargetFile(),targetType:this.taskMetadata.location||"fixed"};await mn(this.app,t,r),new $t.Notice(d("Captured successfully")),this.close()}catch(t){new $t.Notice(`${d("Failed to save:")} ${t}`)}}parseContentAndUpdateButtons(){try{let e=this.capturedContent.trim();if(!e){this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile));return}let t=new No({}),[r,i,s]=t.extractMetadataAndTags(e);if(i.dueDate&&(this.taskMetadata.dueDate=new Date(i.dueDate)),i.priority){let o={highest:5,high:4,medium:3,low:2,lowest:1};this.taskMetadata.priority=o[i.priority]||3}s&&s.length>0&&(this.taskMetadata.tags||(this.taskMetadata.tags=[]),s.forEach(o=>{this.taskMetadata.tags.includes(o)||this.taskMetadata.tags.push(o)})),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile||i.project||i.location))}catch(e){console.error("Error parsing content:",e),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile))}}};var Ty=require("obsidian"),l0=require("@codemirror/state");q();var wy=class extends Ty.EditorSuggest{constructor(e,t){super(e);this.isMinimalMode=!1;this.plugin=t}setMinimalMode(e){this.isMinimalMode=e}onTrigger(e,t,r){var c,u;if(!this.isMinimalMode)return null;let i=(c=t.cm)==null?void 0:c.dom;if(!i||!i.closest(".quick-capture-modal.minimal"))return null;let s=t.getLine(e.line),l=["/",((u=this.plugin.settings.quickCapture.minimalModeSettings)==null?void 0:u.suggestTrigger)||"/","~","!","*","#"];if(e.ch>0){let p=s.charAt(e.ch-1);if(l.includes(p))return{start:{line:e.line,ch:e.ch-1},end:e,query:p}}return null}getSuggestions(e){let t=e.query;return t==="/"?[{id:"date",label:d("Date"),icon:"calendar",description:d("Add date (triggers ~)"),replacement:"~",trigger:"/"},{id:"priority",label:d("Priority"),icon:"zap",description:d("Set priority (triggers !)"),replacement:"!",trigger:"/"},{id:"target",label:d("Target Location"),icon:"folder",description:d("Set target location (triggers *)"),replacement:"*",trigger:"/"},{id:"tag",label:d("Tag"),icon:"tag",description:d("Add tags (triggers #)"),replacement:"#",trigger:"/"}]:bm(t==="@"?"*":t,this.plugin)}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let r=t.createDiv("menu-item-icon");(0,Ty.setIcon)(r,e.icon);let i=t.createDiv("menu-item-title");i.textContent=e.label}selectSuggestion(e,t){var p,m,f,h,g;let r=(p=this.context)==null?void 0:p.editor,i=(m=this.context)==null?void 0:m.end;if(!r||!i)return;let s=((f=this.context)==null?void 0:f.query)||"";if(["!","~","#","*"].includes(s)&&!["date","priority","target","tag"].includes(e.id)){let k=r.cm;if(k){let y=k.state.doc.line(i.line+1).from+i.ch-1,b=k.state.doc.line(i.line+1).from+i.ch;k.dispatch({changes:{from:y,to:b,insert:""},annotations:[l0.Transaction.userEvent.of("input")]})}else{let y={line:i.line,ch:i.ch-1},b=i;r.replaceRange("",y,b),r.setCursor(y)}}else{let k=r.cm;if(k)if((h=k.state)!=null&&h.doc){let y=k.state.doc.line(i.line+1).from+i.ch-1,b=k.state.doc.line(i.line+1).from+i.ch;k.dispatch({changes:{from:y,to:b,insert:e.replacement},annotations:[l0.Transaction.userEvent.of("input")]})}else{let y={line:i.line,ch:i.ch-1},b=i;r.replaceRange(e.replacement,y,b);let v={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(v)}else{let y={line:i.line,ch:i.ch-1},b=i;r.replaceRange(e.replacement,y,b);let v={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(v)}}let l=(g=r.cm)==null?void 0:g.dom,c=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=c==null?void 0:c.__minimalQuickCaptureModal;if(e.action){let k={line:i.line,ch:i.ch-1+e.replacement.length};e.action(r,k)}u&&typeof u.parseContentAndUpdateButtons=="function"&&setTimeout(()=>{u.parseContentAndUpdateButtons()},50),this.close()}};var D4=require("obsidian"),kt=require("obsidian");q();var bt=require("obsidian");var ws=require("obsidian");q();var sn=require("obsidian");var oc=require("obsidian");var po=require("obsidian");Wi();q();var $3=require("obsidian");var uo=require("obsidian");q();function rr(n){if(n==null)return"";let a=String(n).trim(),e=parseInt(a,10);return!isNaN(e)&&e>=1&&e<=5?String(e):a.replace(/\s+/g,"-").replace(/[^\w-]/g,"").replace(/--+/g,"-").replace(/^-|-$/g,"")}var z3=require("obsidian");q();var xy=class extends z3.Modal{constructor(e,t,r){super(e);this.currentValue="";this.isValid=!1;this.plugin=t,this.options=r,this.currentValue=r.initialValue||"",this.modalEl.addClass("oncompletion-modal"),this.titleEl.setText(d("Configure On Completion Action"))}onOpen(){let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"oncompletion-modal-content"}),r={initialValue:this.currentValue,onChange:c=>{this.currentValue=c},onValidationChange:(c,u)=>{this.isValid=c,this.updateSaveButtonState()}};this.configurator=new $s(t,this.plugin,r),this.configurator.onload();let i=e.createDiv({cls:"oncompletion-modal-buttons"}),s=i.createEl("button",{text:d("Save"),cls:"mod-cta"});s.addEventListener("click",()=>this.handleSave()),i.createEl("button",{text:d("Cancel")}).addEventListener("click",()=>this.handleCancel());let l=i.createEl("button",{text:d("Reset")});l.addEventListener("click",()=>this.handleReset()),this.saveButton=s,this.resetButton=l,this.updateSaveButtonState()}updateSaveButtonState(){let e=this.saveButton;e&&(e.disabled=!this.isValid&&this.currentValue.trim()!=="")}handleSave(){this.options.onSave&&this.options.onSave(this.currentValue),this.close()}handleCancel(){this.options.onCancel&&this.options.onCancel(),this.close()}handleReset(){this.currentValue="",this.configurator.setValue(""),this.updateSaveButtonState()}onClose(){let{contentEl:e}=this;this.configurator&&this.configurator.unload(),e.empty()}};var Cy=class extends uo.Component{constructor(e,t,r,i){super();this.app=e;this.plugin=t;this.isEditing=!1;this.originalTask=null;this.isSaving=!1;this.contentInput=null;this.embeddedEditor=null;this.activeInput=null;this.activeSuggest=null;this.debouncedSave=null;this.boundHandlers={stopPropagation:e=>e.stopPropagation(),handleKeydown:e=>this.handleKeydown(e),handleBlur:e=>this.handleBlur(e),handleInput:e=>this.handleInput(e)};this.task=r,this.options=i}onload(){this.containerEl=createDiv({cls:"inline-editor"})}initializeEditingState(){this.isEditing&&(console.warn("Editor already in editing state, forcing cleanup"),this.cleanupEditors()),this.isEditing=!1,this.isSaving=!1,this.debouncedSave=(0,uo.debounce)(async()=>{await this.saveTask()},800),this.originalTask={...this.task,metadata:{...this.task.metadata}}}showContentEditor(e){this.initializeEditingState(),this.isEditing=!0,e.empty();let t=Ka(this.task.content);if(!t&&this.task.originalMarkdown){let r=this.task.originalMarkdown.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"");t=Ka(r).trim()}!t&&this.task.content&&(t=Ka(this.task.content).trim()),this.options.useEmbeddedEditor?this.createEmbeddedEditor(e,t||""):this.createTextareaEditor(e,t||"")}createEmbeddedEditor(e,t){let r=e.createDiv({cls:"inline-embedded-editor-container"});this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);try{this.embeddedEditor=pn(this.app,r,{value:t,placeholder:"Enter task content...",cls:"inline-embedded-editor",onEnter:(i,s,o)=>(this.finishContentEdit(e).catch(console.error),!0),onEscape:i=>{this.cancelContentEdit(e)},onBlur:()=>{this.finishContentEdit(e).catch(console.error)},onChange:()=>{var i;this.task.content=((i=this.embeddedEditor)==null?void 0:i.value)||""}}),this.focusEditor()}catch(i){console.error("Failed to create embedded editor, falling back to textarea:",i),r.remove(),this.createTextareaEditor(e,t)}}createTextareaEditor(e,t){this.contentInput=e.createEl("textarea",{cls:"inline-content-editor"}),this.registerDomEvent(this.contentInput,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(this.contentInput,"mousedown",this.boundHandlers.stopPropagation),this.contentInput.value=t,this.autoResizeTextarea(this.contentInput),this.contentInput.focus(),this.contentInput.select(),this.registerDomEvent(this.contentInput,"input",this.boundHandlers.handleInput),this.registerDomEvent(this.contentInput,"blur",this.boundHandlers.handleBlur),this.registerDomEvent(this.contentInput,"keydown",this.boundHandlers.handleKeydown)}showMetadataEditor(e,t,r){this.initializeEditingState(),this.isEditing=!0,e.empty();let i=e.createDiv({cls:"inline-metadata-editor"});switch(this.registerDomEvent(i,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(i,"mousedown",this.boundHandlers.stopPropagation),t){case"project":this.createProjectEditor(i,r);break;case"tags":this.createTagsEditor(i,r);break;case"context":this.createContextEditor(i,r);break;case"dueDate":case"startDate":case"scheduledDate":case"cancelledDate":case"completedDate":this.createDateEditor(i,t,r);break;case"priority":this.createPriorityEditor(i,r);break;case"recurrence":this.createRecurrenceEditor(i,r);break;case"onCompletion":this.createOnCompletionEditor(i,r);break;case"dependsOn":this.createDependsOnEditor(i,r);break;case"id":this.createIdEditor(i,r);break}}showAddMetadataButton(e){let t=e.createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,uo.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}createProjectEditor(e,t){let r=Vt(this.task),i=ci(this.task),s=e.createEl("input",{type:"text",cls:"inline-project-input",value:r||"",placeholder:"Enter project name"});if(this.task.metadata.tgProject&&(!this.task.metadata.project||!this.task.metadata.project.trim())){let l=this.task.metadata.tgProject,c=e.createDiv({cls:"project-source-indicator inline-indicator"}),u="",p="";switch(l.type){case"path":u=d("Auto from path"),p="\u{1F4C1}";break;case"metadata":u=d("Auto from metadata"),p="\u{1F4C4}";break;case"config":u=d("Auto from config"),p="\u2699\uFE0F";break;default:u=d("Auto-assigned"),p="\u{1F517}"}c.createEl("span",{cls:"indicator-icon",text:p}),c.createEl("span",{cls:"indicator-text",text:u}),i?(c.addClass("readonly-indicator"),s.disabled=!0,s.title=d("This project is automatically assigned and cannot be changed")):(c.addClass("override-indicator"),s.title=d("You can override the auto-assigned project"))}this.activeInput=s,this.registerDomEvent(s,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(s,"mousedown",this.boundHandlers.stopPropagation);let o=l=>{i||(this.task.metadata.project=l||void 0)};this.setupInputEvents(s,o,"project"),i||(this.activeSuggest=new Dr(this.app,s,this.plugin)),s.focus(),s.select()}createTagsEditor(e,t){let r=e.createEl("input",{type:"text",cls:"inline-tags-input",value:t||"",placeholder:"Enter tags (comma separated)"});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=s=>{this.task.metadata.tags=s?s.split(",").map(o=>o.trim()).filter(o=>o):[]};this.setupInputEvents(r,i,"tags"),this.activeSuggest=new ui(this.app,r,this.plugin),r.focus(),r.select()}createContextEditor(e,t){let r=e.createEl("input",{type:"text",cls:"inline-context-input",value:t||"",placeholder:"Enter context"});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=s=>{this.task.metadata.context=s||void 0};this.setupInputEvents(r,i,"context"),this.activeSuggest=new Er(this.app,r,this.plugin),r.focus(),r.select()}createDateEditor(e,t,r){let i=e.createEl("input",{type:"date",cls:"inline-date-input",value:r||""});this.activeInput=i,this.registerDomEvent(i,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(i,"mousedown",this.boundHandlers.stopPropagation);let s=o=>{if(o){let l=es(o);this.task.metadata[t]=l}else this.task.metadata[t]=void 0};this.setupInputEvents(i,s,t),i.focus()}createPriorityEditor(e,t){let r=e.createEl("select",{cls:"inline-priority-select"});this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation),[{value:"",text:"None"},{value:"1",text:"\u23EC\uFE0F Lowest"},{value:"2",text:"\u{1F53D} Low"},{value:"3",text:"\u{1F53C} Medium"},{value:"4",text:"\u23EB High"},{value:"5",text:"\u{1F53A} Highest"}].forEach(o=>{let l=r.createEl("option",{value:o.value,text:o.text})}),r.value=t||"",this.activeInput=r;let s=o=>{this.task.metadata.priority=o?parseInt(o):void 0};this.setupInputEvents(r,s,"priority"),r.focus()}createRecurrenceEditor(e,t){let r=e.createEl("input",{type:"text",cls:"inline-recurrence-input",value:t||"",placeholder:"e.g. every day, every 2 weeks"});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=s=>{this.task.metadata.recurrence=s||void 0};this.setupInputEvents(r,i,"recurrence"),r.focus(),r.select()}createOnCompletionEditor(e,t){let r=e.createDiv({cls:"inline-oncompletion-button-container"});this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=r.createEl("button",{cls:"inline-oncompletion-config-button",text:t||this.task.metadata.onCompletion||d("Configure...")});this.registerDomEvent(i,"click",s=>{s.preventDefault(),s.stopPropagation(),this.openOnCompletionModal(e,t)}),this.registerDomEvent(r,"keydown",s=>{var o;if(s.key==="Escape"){let l=(o=r.closest(".inline-metadata-editor"))==null?void 0:o.parentElement;l&&this.cancelMetadataEdit(l)}else s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),this.openOnCompletionModal(e,t))}),i.focus()}async openOnCompletionModal(e,t){new xy(this.app,this.plugin,{initialValue:t||this.task.metadata.onCompletion||"",onSave:i=>{var l,c;this.task.metadata.onCompletion=i||void 0;let s=e.querySelector(".inline-oncompletion-config-button");s&&(s.textContent=i||d("Configure...")),(l=this.debouncedSave)==null||l.call(this);let o=(c=e.closest(".inline-metadata-editor"))==null?void 0:c.parentElement;o&&this.finishMetadataEdit(o,"onCompletion").catch(console.error)},onCancel:()=>{var s;let i=(s=e.closest(".inline-metadata-editor"))==null?void 0:s.parentElement;i&&this.cancelMetadataEdit(i)}}).open()}createDependsOnEditor(e,t){let r=e.createEl("input",{type:"text",cls:"inline-dependson-input",value:t||(this.task.metadata.dependsOn?this.task.metadata.dependsOn.join(", "):""),placeholder:"Task IDs separated by commas"});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=s=>{s.trim()?this.task.metadata.dependsOn=s.split(",").map(o=>o.trim()).filter(o=>o.length>0):this.task.metadata.dependsOn=void 0};this.setupInputEvents(r,i,"dependsOn"),r.focus(),r.select()}createIdEditor(e,t){let r=e.createEl("input",{type:"text",cls:"inline-id-input",value:t||this.task.metadata.id||"",placeholder:"Unique task identifier"});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=s=>{this.task.metadata.id=s||void 0};this.setupInputEvents(r,i,"id"),r.focus(),r.select()}setupInputEvents(e,t,r){e._fieldType=r,e._updateCallback=t,r&&["dueDate","startDate","scheduledDate","cancelledDate","completedDate"].includes(r)?this.registerDomEvent(e,"input",s=>{let o=s.target,l=o._updateCallback;l&&l(o.value)}):this.registerDomEvent(e,"input",this.boundHandlers.handleInput),this.registerDomEvent(e,"blur",this.boundHandlers.handleBlur),this.registerDomEvent(e,"keydown",this.boundHandlers.handleKeydown)}handleInput(e){var r;let t=e.target;if(t===this.contentInput)this.autoResizeTextarea(t),this.task.content=t.value;else if(t===this.activeInput){let i=t._updateCallback;i&&(i(t.value),(r=this.debouncedSave)==null||r.call(this))}}handleBlur(e){var i,s;let t=e.target,r=e.relatedTarget;if(!(r&&((i=this.containerEl)!=null&&i.contains(r)))){if(t===this.contentInput&&this.isEditing){let o=t.closest(".task-item-content");o&&this.finishContentEdit(o).catch(console.error);return}if(t===this.activeInput&&this.isEditing){let o=t._fieldType,l=(s=t.closest(".inline-metadata-editor"))==null?void 0:s.parentElement;l&&o&&this.finishMetadataEdit(l,o).catch(console.error)}}}handleKeydown(e){var t,r;if(e.key==="Escape"){let i=e.target;if(i===this.contentInput){let s=i.closest(".task-item-content");s&&this.cancelContentEdit(s)}else if(i===this.activeInput){let s=(t=i.closest(".inline-metadata-editor"))==null?void 0:t.parentElement;s&&this.cancelMetadataEdit(s)}}else if(e.key==="Enter"&&!e.shiftKey){let i=e.target;if(i===this.activeInput){e.preventDefault();let s=i._fieldType,o=(r=i.closest(".inline-metadata-editor"))==null?void 0:r.parentElement;o&&s&&this.finishMetadataEdit(o,s).catch(console.error)}}}autoResizeTextarea(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}focusEditor(){requestAnimationFrame(()=>{var e;(e=this.embeddedEditor)!=null&&e.activeCM&&(this.embeddedEditor.activeCM.focus(),this.embeddedEditor.activeCM.dispatch({selection:{anchor:0,head:this.embeddedEditor.value.length}}))})}showMetadataMenu(e){let t=new uo.Menu,i=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(s=>{switch(s.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});i.length===0?t.addItem(s=>{s.setTitle("All metadata fields are already set").setDisabled(!0)}):i.forEach(s=>{t.addItem(o=>{o.setTitle(s.label).setIcon(s.icon).onClick(()=>{this.showMetadataEditor(e.parentElement,s.key)})})}),t.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}async saveTask(){if(!this.isEditing||!this.originalTask||this.isSaving)return!1;if(!this.hasTaskChanges(this.originalTask,this.task))return!0;this.isSaving=!0;try{return this.originalTask.content,this.task.content,await this.options.onTaskUpdate(this.originalTask,this.task),this.originalTask={...this.task,metadata:{...this.task.metadata}},!0}catch(t){return console.error("Failed to save task:",t),this.task={...this.originalTask,metadata:{...this.originalTask.metadata}},!1}finally{this.isSaving=!1}}hasTaskChanges(e,t){if(e.content!==t.content)return!0;let r=["project","tags","context","priority","dueDate","startDate","scheduledDate","cancelledDate","completedDate","recurrence"];for(let i of r){let s=e.metadata[i],o=t.metadata[i];if(i==="tags"){let l=Array.isArray(s)?s:[],c=Array.isArray(o)?o:[];if(l.length!==c.length)return!0;for(let u=0;usetTimeout(r,50));this.embeddedEditor?this.task.content=this.embeddedEditor.value:this.contentInput&&(this.task.content=this.contentInput.value);let t=await this.saveTask();if(!t){console.error("Failed to save task, not finishing edit");return}this.isEditing=!1,this.cleanupEditors(),this.options.onContentEditFinished?this.options.onContentEditFinished(e,this.task):e.textContent=this.task.content,this.releaseFromManager()}cancelContentEdit(e){this.isEditing=!1,this.originalTask&&(this.task.content=this.originalTask.content),this.cleanupEditors(),this.options.onContentEditFinished?this.options.onContentEditFinished(e,this.task):e.textContent=this.task.content,this.releaseFromManager()}async finishMetadataEdit(e,t){if(this.isSaving)for(;this.isSaving;)await new Promise(i=>setTimeout(i,50));if(!await this.saveTask()){console.error("Failed to save task metadata, not finishing edit");return}this.cleanupEditors(),this.isEditing=!1,this.originalTask=null,e.empty(),this.restoreMetadataDisplay(e,t),this.options.onMetadataEditFinished&&this.options.onMetadataEditFinished(e,this.task,t),this.releaseFromManager()}cancelMetadataEdit(e){let t=this.activeInput?this.activeInput._fieldType:null;this.originalTask&&(this.task={...this.originalTask,metadata:{...this.originalTask.metadata}}),this.cleanupEditors(),this.isEditing=!1,this.originalTask=null,t&&(e.empty(),this.restoreMetadataDisplay(e,t)),this.options.onMetadataEditFinished&&t&&this.options.onMetadataEditFinished(e,this.task,t),this.releaseFromManager()}restoreMetadataDisplay(e,t){switch(t){case"project":this.task.metadata.project&&(e.textContent=this.task.metadata.project.split("/").pop()||this.task.metadata.project,e.className="task-project");break;case"tags":this.task.metadata.tags&&this.task.metadata.tags.length>0&&(e.className="task-tags-container",this.task.metadata.tags.filter(i=>!i.startsWith("#project")).forEach(i=>{let s=e.createEl("span",{cls:"task-tag",text:i.startsWith("#")?i:`#${i}`})}));break;case"context":this.task.metadata.context&&(e.textContent=this.task.metadata.context,e.className="task-context");break;case"dueDate":case"startDate":case"scheduledDate":case"cancelledDate":case"completedDate":let r=this.task.metadata[t];if(r){let i=new Date(r);e.textContent=i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}),e.className=`task-date task-${t}`}break;case"recurrence":this.task.metadata.recurrence&&(e.textContent=this.task.metadata.recurrence,e.className="task-date task-recurrence");break;case"priority":if(this.task.metadata.priority){e.textContent="!".repeat(this.task.metadata.priority);let i=rr(this.task.metadata.priority);e.className=i?`task-priority priority-${i}`:"task-priority"}break;case"onCompletion":this.task.metadata.onCompletion&&(e.textContent=this.task.metadata.onCompletion,e.className="task-oncompletion");break;case"dependsOn":this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&(e.textContent=this.task.metadata.dependsOn.join(", "),e.className="task-dependson");break;case"id":this.task.metadata.id&&(e.textContent=this.task.metadata.id,e.className="task-id");break}}cleanupEditors(){this.embeddedEditor&&(this.embeddedEditor.destroy(),this.embeddedEditor=null),this.activeSuggest&&(typeof this.activeSuggest.close=="function"&&this.activeSuggest.close(),this.activeSuggest=null),this.activeInput=null,this.contentInput=null,this.debouncedSave=null}isCurrentlyEditing(){return this.isEditing}getUpdatedTask(){return this.task}updateTask(e,t){this.task=e,this.options=t,this.originalTask=null,this.isEditing=!1,this.cleanupEditors()}reset(){this.isEditing=!1,this.originalTask=null,this.isSaving=!1,this.cleanupEditors(),this.task={}}onunload(){this.cleanupEditors(),this.containerEl&&this.containerEl.remove()}releaseFromManager(){this.isEditing=!1,this.originalTask=null,this.isSaving=!1}};var sc=class extends $3.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.editorPool=[];this.activeEditors=new Map;this.maxPoolSize=3;this.lastCleanupTime=0;this.cleanupInterval=3e4;this.stats={editorsCreated:0,editorsReused:0,editorsDestroyed:0}}getEditor(e,t){let r=this.activeEditors.get(e.id);if(r)return this.shouldUpdateEditor(r,t)&&r.updateTask(e,t),r;this.performPeriodicCleanup();let i=this.editorPool.pop();return i?(i.updateTask(e,t),this.stats.editorsReused++):(i=this.createNewEditor(e,t),this.stats.editorsCreated++),this.activeEditors.set(e.id,i),i}releaseEditor(e){let t=this.activeEditors.get(e);if(t){if(this.activeEditors.delete(e),t.isCurrentlyEditing()){this.destroyEditor(t);return}t.reset(),this.editorPool.lengththis.maxPoolSize){let r=this.editorPool.splice(this.maxPoolSize);for(let i of r)this.destroyEditor(i)}}onload(){this.lastCleanupTime=Date.now()}onunload(){this.forceReleaseAllEditors()}};var tn=class tn extends po.Component{constructor(e,t,r,i){super();this.task=e;this.viewMode=t;this.app=r;this.plugin=i;this.element=createEl("div",{cls:"task-item",attr:{"data-task-id":this.task.id}}),this.settings=this.plugin.settings,tn.editorManager||(tn.editorManager=new sc(this.app,this.plugin))}getInlineEditor(){let e={onTaskUpdate:async(t,r)=>{if(this.onTaskUpdate){t.content,r.content;try{await this.onTaskUpdate(t,r)}catch(i){throw console.error("Error in listItem onTaskUpdate:",i),i}}else console.warn("No onTaskUpdate callback available")},onContentEditFinished:(t,r)=>{var i;this.task=r,this.renderMarkdown(),this.updateTaskDisplay(),(i=tn.editorManager)==null||i.releaseEditor(this.task.id)},onMetadataEditFinished:(t,r,i)=>{var s;this.task=r,this.updateTaskDisplay(),(s=tn.editorManager)==null||s.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return tn.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=tn.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))||!1}onload(){this.registerDomEvent(this.element,"contextmenu",e=>{this.task,this.onTaskContextMenu&&this.onTaskContextMenu(e,this.task)}),this.renderTaskItem()}renderTaskItem(){this.element.empty(),this.task.completed&&this.element.classList.add("task-completed");let e=createEl("div",{cls:"task-checkbox"},t=>{let r=Pt(this.task.status,this.task,t);this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(r.checked=!0,r.dataset.task="x")})});if(this.element.appendChild(e),this.containerEl=this.element.createDiv({cls:"task-item-container"}),this.contentMetadataContainer=this.containerEl.createDiv({cls:"task-content-metadata-container"}),this.contentEl=this.contentMetadataContainer.createDiv({cls:"task-item-content"}),this.registerContentClickHandler(),this.renderMarkdown(),this.metadataEl=this.contentMetadataContainer.createDiv({cls:"task-item-metadata"}),this.renderMetadata(),this.task.metadata.priority){this.task.metadata.priority;let t;if(typeof this.task.metadata.priority=="string")switch(this.task.metadata.priority.toLowerCase()){case"low":t=1;break;case"medium":t=2;break;case"high":t=3;break;default:t=parseInt(this.task.metadata.priority)||1;break}else t=this.task.metadata.priority;let r=rr(t),i=["task-priority"];r&&i.push(`priority-${r}`);let s=createDiv({cls:i}),o="\u2022";o="!".repeat(t),s.textContent=o,this.element.appendChild(s)}this.registerDomEvent(this.element,"click",()=>{this.onTaskSelected&&this.onTaskSelected(this.task)})}renderMetadata(){this.metadataEl.empty(),this.task.metadata.cancelledDate&&this.renderDateMetadata("cancelled",this.task.metadata.cancelledDate),this.task.completed?(this.task.metadata.completedDate&&this.renderDateMetadata("completed",this.task.metadata.completedDate),this.task.metadata.createdDate&&this.renderDateMetadata("created",this.task.metadata.createdDate)):(this.task.metadata.dueDate&&this.renderDateMetadata("due",this.task.metadata.dueDate),this.task.metadata.scheduledDate&&this.renderDateMetadata("scheduled",this.task.metadata.scheduledDate),this.task.metadata.startDate&&this.renderDateMetadata("start",this.task.metadata.startDate),this.task.metadata.recurrence&&this.renderRecurrenceMetadata()),(this.task.metadata.project||this.task.metadata.tgProject)&&this.viewMode!=="projects"&&this.renderProjectMetadata(),this.task.metadata.tags&&this.task.metadata.tags.length>0&&this.renderTagsMetadata(),this.task.metadata.onCompletion&&this.renderOnCompletionMetadata(),this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&this.renderDependsOnMetadata(),this.task.metadata.id&&this.renderIdMetadata(),this.renderAddMetadataButton()}renderDateMetadata(e,t){let r=this.metadataEl.createEl("div",{cls:["task-date",`task-${e}-date`]}),i=new Date(t),s="",o="";if(e==="due"){let l=new Date;l.setHours(0,0,0,0);let c=new Date(l);c.setDate(c.getDate()+1),i.getTime(){if(l.stopPropagation(),!this.isCurrentlyEditing()){let c=this.formatDateForInput(i),u=e==="due"?"dueDate":e==="scheduled"?"scheduledDate":e==="start"?"startDate":e==="cancelled"?"cancelledDate":e==="completed"?"completedDate":null;u&&this.getInlineEditor().showMetadataEditor(r,u,c)}})}renderProjectMetadata(){let e,t=!1;if(this.task.metadata.project?e=this.task.metadata.project:this.task.metadata.tgProject&&(e=this.task.metadata.tgProject.name,t=this.task.metadata.tgProject.readonly||!1),!e)return;let r=this.metadataEl.createEl("div",{cls:"task-project"});!this.task.metadata.project&&this.task.metadata.tgProject&&(r.addClass("task-project-tg"),r.title=`Project from ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`),r.textContent=e.split("/").pop()||e,this.plugin.settings.enableInlineEditor&&!t&&this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(r,"project",this.task.metadata.project||"")})}renderTagsMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-tags-container"});this.task.metadata.tags.filter(t=>!t.startsWith("#project")).forEach(t=>{let r=e.createEl("span",{cls:"task-tag",text:t.startsWith("#")?t:`#${t}`});this.plugin.settings.enableInlineEditor&&this.registerDomEvent(r,"click",i=>{var s;if(i.stopPropagation(),!this.isCurrentlyEditing()){let o=((s=this.task.metadata.tags)==null?void 0:s.join(", "))||"";this.getInlineEditor().showMetadataEditor(e,"tags",o)}})})}renderRecurrenceMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-date task-recurrence"});e.textContent=this.task.metadata.recurrence||"",this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"recurrence",this.task.metadata.recurrence||"")})}renderOnCompletionMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-oncompletion"});e.textContent=`\u{1F3C1} ${this.task.metadata.onCompletion}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"onCompletion",this.task.metadata.onCompletion||"")})}renderDependsOnMetadata(){var t;let e=this.metadataEl.createEl("div",{cls:"task-dependson"});e.textContent=`\u26D4 ${(t=this.task.metadata.dependsOn)==null?void 0:t.join(", ")}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",r=>{var i;r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"dependsOn",((i=this.task.metadata.dependsOn)==null?void 0:i.join(", "))||"")})}renderIdMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-id"});e.textContent=`\u{1F194} ${this.task.metadata.id}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"id",this.task.metadata.id||"")})}renderAddMetadataButton(){if(!this.plugin.settings.enableInlineEditor)return;let t=this.metadataEl.createDiv({cls:"add-metadata-container"}).createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,po.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}showMetadataMenu(e){let t=this.getInlineEditor(),r=new po.Menu,s=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(o=>{switch(o.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});s.length===0?r.addItem(o=>{o.setTitle("All metadata fields are already set").setDisabled(!0)}):s.forEach(o=>{r.addItem(l=>{l.setTitle(o.label).setIcon(o.icon).onClick(()=>{let c=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(c,o.key)})})}),r.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}formatDateForInput(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${i}`}renderMarkdown(){this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.contentEl.empty(),requestAnimationFrame(()=>{this.markdownRenderer=new Lt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown||"\u200B"),this.registerContentClickHandler(),requestAnimationFrame(()=>{this.updateLayoutMode()})})}updateLayoutMode(){if(!this.contentEl||!this.contentMetadataContainer)return;if(!this.plugin.settings.enableDynamicMetadataPositioning){this.contentMetadataContainer.toggleClass("multi-line-content",!0),this.contentMetadataContainer.toggleClass("single-line-content",!1);return}let e=window.getComputedStyle(this.contentEl),t=parseFloat(e.lineHeight)||parseFloat(e.fontSize)*1.4,i=this.contentEl.scrollHeight>t*1.2;this.contentMetadataContainer.toggleClass("multi-line-content",i),this.contentMetadataContainer.toggleClass("single-line-content",!i)}registerContentClickHandler(){this.registerDomEvent(this.contentEl,"click",async e=>{po.Keymap.isModEvent(e)?(e.stopPropagation(),await this.openTaskInFile()):this.plugin.settings.enableInlineEditor&&!this.isCurrentlyEditing()&&(e.stopPropagation(),this.getInlineEditor().showContentEditor(this.contentEl))})}updateTaskDisplay(){this.renderTaskItem()}getTask(){return this.task}updateTask(e){let t=this.task;this.task=e,t.completed!==e.completed&&(e.completed?this.element.classList.add("task-completed"):this.element.classList.remove("task-completed")),(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&(this.contentEl.empty(),this.renderMarkdown()),JSON.stringify(t.metadata)!==JSON.stringify(e.metadata)&&this.renderMetadata()}async openTaskInFile(){let e=this.app.vault.getFileByPath(this.task.filePath);e&&await this.app.workspace.getLeaf(!1).openFile(e,{eState:{line:this.task.line}})}setSelected(e){e?this.element.classList.add("selected"):this.element.classList.remove("selected")}onunload(){var e;(e=tn.editorManager)!=null&&e.hasActiveEditor(this.task.id)&&tn.editorManager.releaseEditor(this.task.id),this.element.detach()}};tn.editorManager=null;var Pl=tn;function _3(n){let a=new Map;n.forEach(t=>{a.set(t.id,{...t})});let e=[];return n.forEach(t=>{let r=a.get(t.id);if(t.metadata.parent&&a.has(t.metadata.parent)){let i=a.get(t.metadata.parent);i.metadata.children.includes(t.id)||i.metadata.children.push(t.id)}else e.push(r)}),e}var an=require("obsidian");Wi();q();var mo=require("obsidian");q();var U3=(l=>(l.Overdue="overdue",l.DueSoon="due_soon",l.InProgress="/",l.Incomplete=" ",l.Forwarded=">",l.Question="?",l.Completed="x",l.Cancelled="-",l))(U3||{});function EG(n){let a=n.match(/^(\s*)/);return a?a[1].length:0}function PG(n,a=0,e,t,r){let i=n.split(` `),s=[],o={},l=[];return i.forEach((c,u)=>{let p=a+u,m=Vs(e,c,p+1,t,r);if(m){let f=EG(c),h=m.status,g=new Date;g.setHours(0,0,0,0);let k=g.getTime();!m.completed&&m.status!=="-"&&m.metadata.dueDate&&m.metadata.dueDate0&&f<=l[l.length-1].indentation;)l.pop();if(l.length>0){let b=l[l.length-1];b.children.push(y),y.parent=b}else s.push(y);l.push(y)}}),s}function Y3(n){var p,m,f,h;let a={},e=1;a.overdue=e++;let t=n.taskStatusCycle||[],r=n.taskStatusMarks||{},i=n.excludeMarksFromCycle||[],s=(((p=n.taskStatuses)==null?void 0:p.completed)||"x|X").split("|"),o=(((m=n.taskStatuses)==null?void 0:m.abandoned)||"-").split("|"),l=[],c=[],u=[];for(let g of t){let k=r[g];k&&!i.includes(g)&&(s.includes(k)?c.push(k):o.includes(k)?u.push(k):(k in a||(a[k]=e++),l.push(k)))}c.forEach(g=>{g in a||(a[g]=98)}),u.forEach(g=>{g in a||(a[g]=99)});for(let g in n.taskStatuses)(n.taskStatuses[g]||"").split("|").forEach(y=>{y&&!(y in a)&&(s.includes(y)?a[y]=98:o.includes(y)?a[y]=99:a[y]=e++)});return" "in a||(a[" "]=(f=a[" "])!=null?f:10),"x"in a||(a.x=(h=a.x)!=null?h:98),a}function q3(n,a,e,t){var m,f,h,g;let r=(k,y)=>{if(k==null)return;let b=k[y];return b!=null?b:k.metadata?k.metadata[y]:void 0},i=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}),s={status:(k,y,b)=>{var C,S;let v=k.calculatedStatus||k.status||"",w=y.calculatedStatus||y.status||"",x=(C=t[v])!=null?C:1e3,T=(S=t[w])!=null?S:1e3;if(typeof x=="number"&&typeof T=="number"){let E=x-T;return b==="asc"?E:-E}else return console.warn(`Non-numeric status order values detected: ${x}, ${T}`),0},completed:(k,y,b)=>{let v=!!k.completed,w=!!y.completed;if(v===w)return 0;let x=v?1:-1;return b==="asc"?x:-x},priority:(k,y,b)=>{let v=r(k,"priority"),w=r(y,"priority"),x=v!=null&&v>0,T=w!=null&&w>0;if(!x&&!T)return 0;if(x)if(T){let C=v-w;return b==="asc"?C:-C}else return-1;else return 1},dueDate:(k,y,b)=>o("dueDate",k,y,b),startDate:(k,y,b)=>o("startDate",k,y,b),scheduledDate:(k,y,b)=>o("scheduledDate",k,y,b),createdDate:(k,y,b)=>o("createdDate",k,y,b),completedDate:(k,y,b)=>o("completedDate",k,y,b),content:(k,y,b)=>{var T,C;let v=((T=k.content)==null?void 0:T.trim())||null,w=((C=y.content)==null?void 0:C.trim())||null;if(!v&&!w)return 0;if(!v)return 1;if(!w)return-1;let x=i.compare(v,w);return b==="asc"?x:-x},tags:(k,y,b)=>{let v=r(k,"tags"),w=r(y,"tags"),x=Array.isArray(v)&&v.length>0?v.join(", "):null,T=Array.isArray(w)&&w.length>0?w.join(", "):null;if(!x&&!T)return 0;if(!x)return 1;if(!T)return-1;let C=i.compare(x,T);return b==="asc"?C:-C},project:(k,y,b)=>{var T,C;let v=((T=r(k,"project"))==null?void 0:T.trim())||null,w=((C=r(y,"project"))==null?void 0:C.trim())||null;if(!v&&!w)return 0;if(!v)return 1;if(!w)return-1;let x=i.compare(v,w);return b==="asc"?x:-x},context:(k,y,b)=>{var T,C;let v=((T=r(k,"context"))==null?void 0:T.trim())||null,w=((C=r(y,"context"))==null?void 0:C.trim())||null;if(!v&&!w)return 0;if(!v)return 1;if(!w)return-1;let x=i.compare(v,w);return b==="asc"?x:-x},recurrence:(k,y,b)=>{var T,C;let v=((T=r(k,"recurrence"))==null?void 0:T.trim())||null,w=((C=r(y,"recurrence"))==null?void 0:C.trim())||null;if(!v&&!w)return 0;if(!v)return 1;if(!w)return-1;let x=i.compare(v,w);return b==="asc"?x:-x},filePath:(k,y,b)=>{var T,C;let v=((T=k.filePath)==null?void 0:T.trim())||null,w=((C=y.filePath)==null?void 0:C.trim())||null;if(!v&&!w)return 0;if(!v)return 1;if(!w)return-1;let x=i.compare(v,w);return b==="asc"?x:-x},lineNumber:(k,y,b)=>(k.line||0)-(y.line||0)};function o(k,y,b,v){let w=r(y,k),x=r(b,k),T=w!=null,C=x!=null,S=0;if(!T&&!C)S=0;else if(!T)S=1;else if(!C)S=-1;else{let E=w,A=x,N=Date.now(),I=Ei.lineNumber-s.lineNumber),e=[],t=[a[0]];function r(i){if(!i.children||i.children.length===0)return i.lineNumber;let s=i.lineNumber;for(let o of i.children){let l=r(o);s=Math.max(s,l)}return s}for(let i=1;i0&&e.push(t),e}function ea(n,a,e){let t=Y3(e),r=n.map(i=>i.calculatedStatus?i:{...i,calculatedStatus:i.status||""});return r.sort((i,s)=>q3(i,s,a,t)),r}function G3(n,a,e){let t=Y3(e);n.sort((r,i)=>q3(r,i,a,t));for(let r of n)r.children&&r.children.length>0&&(r.children=G3(r.children,a,e));return n}function d0(n,a,e=!1){let t=a.app,r=t.workspace.getActiveFile();if(!r)return new mo.Notice("Sort Tasks: No active file found."),null;let i=r.path,s=t.metadataCache.getFileCache(r);if(!s)return new mo.Notice("Sort Tasks: Metadata cache not available."),null;let o=n.state.doc,l=a.settings,c=l.preferMetadataFormat,u=l.sortCriteria||me.sortCriteria;if(!l.sortTasks||!u||u.length===0)return new mo.Notice(d("Task sorting is disabled or no sort criteria are defined in settings.")),null;let p=0,m=o.lines-1,f="full document";if(e)f="full document (forced)";else{let A=n.state.selection.main.head,N=o.lineAt(A).number-1,I=s.headings||[],R=null,j=o.lines;for(let W=I.length-1;W>=0;W--)if(I[W].position.start.line<=N){R=I[W],p=R.position.start.line;for(let B=W+1;Bg)return new mo.Notice(`Sort Tasks: Invalid range calculated for ${f}.`),null;let k=o.sliceString(h,g),y=PG(k,p,i,c,a);if(y.length===0){let A=`Sort Tasks: No tasks found in the ${f} (Lines ${p+1}-${m+1}) to sort.`;return new mo.Notice(A),null}let b=MG(y);for(let A=0;A=0&&N=0&&B0)for(let X of W.children)R(X)},N=Number.MAX_SAFE_INTEGER;for(let W of A){let B=W.lineNumber-p;B>=0&&B{if(this.onTaskUpdate)try{await this.onTaskUpdate(t,r)}catch(i){throw console.error("Error in treeItem onTaskUpdate:",i),i}else console.warn("No onTaskUpdate callback available")},onContentEditFinished:(t,r)=>{var i;this.task=r,this.renderMarkdown(),this.updateTaskDisplay(),(i=Di.editorManager)==null||i.releaseEditor(this.task.id)},onMetadataEditFinished:(t,r,i)=>{var s;this.task=r,this.updateTaskDisplay(),(s=Di.editorManager)==null||s.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return Di.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=Di.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))||!1}onload(){this.element=createDiv({cls:["task-item","tree-task-item"],attr:{"data-task-id":this.task.id}}),this.registerDomEvent(this.element,"contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.onTaskContextMenu&&this.onTaskContextMenu(e,this.task)}),this.parentContainer=this.element.createDiv({cls:"task-parent-container"}),this.renderTaskContent(),this.childrenContainer=this.element.createDiv({cls:"task-children-container"}),this.renderChildTasks(),this.registerDomEvent(this.parentContainer,"click",e=>{(e.target===this.parentContainer||this.parentContainer.contains(e.target))&&(e.target.classList.contains("task-checkbox")?(e.stopPropagation(),this.toggleTaskCompletion()):e.target.classList.contains("task-expand-toggle")?e.stopPropagation():this.selectTask())})}renderTaskContent(){if(this.parentContainer.empty(),this.parentContainer.classList.toggle("completed",this.task.completed),this.parentContainer.classList.toggle("selected",this.isSelected),this.indentLevel>0){let i=this.parentContainer.createDiv({cls:"task-indent"});i.style.width=`${this.indentLevel*30}px`}this.task.metadata.children&&this.task.metadata.children.length>0&&(this.toggleEl=this.parentContainer.createDiv({cls:"task-expand-toggle"}),(0,an.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.registerDomEvent(this.toggleEl,"click",i=>{i.stopPropagation(),this.toggleExpand()}));let e=this.parentContainer.createDiv({cls:"task-checkbox"},i=>{let s=Pt(this.task.status,this.task,i);this.registerDomEvent(s,"click",o=>{o.stopPropagation(),this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(s.checked=!0,s.dataset.task="x")})}),t=this.parentContainer.createDiv({cls:"task-item-container"});this.contentMetadataContainer=t.createDiv({cls:"task-content-metadata-container"}),this.contentEl=this.contentMetadataContainer.createDiv({cls:"task-item-content"}),this.registerContentClickHandler(),this.renderMarkdown();let r=this.contentMetadataContainer.createDiv({cls:"task-metadata"});if(this.renderMetadata(r),this.task.metadata.priority){let i=rr(this.task.metadata.priority),s=["task-priority"];i&&s.push(`priority-${i}`);let o=createDiv({cls:s}),l="\u2022";l="!".repeat(this.task.metadata.priority),o.textContent=l,this.parentContainer.appendChild(o)}}renderMetadata(e){e.empty(),this.task.metadata.cancelledDate&&this.renderDateMetadata(e,"cancelled",this.task.metadata.cancelledDate),this.task.completed?(this.task.metadata.completedDate&&this.renderDateMetadata(e,"completed",this.task.metadata.completedDate),this.task.metadata.createdDate&&this.renderDateMetadata(e,"created",this.task.metadata.createdDate)):(this.task.metadata.dueDate&&this.renderDateMetadata(e,"due",this.task.metadata.dueDate),this.task.metadata.scheduledDate&&this.renderDateMetadata(e,"scheduled",this.task.metadata.scheduledDate),this.task.metadata.startDate&&this.renderDateMetadata(e,"start",this.task.metadata.startDate),this.task.metadata.recurrence&&this.renderRecurrenceMetadata(e)),(this.task.metadata.project||this.task.metadata.tgProject)&&this.viewMode!=="projects"&&this.renderProjectMetadata(e),this.task.metadata.tags&&this.task.metadata.tags.length>0&&this.renderTagsMetadata(e),this.task.metadata.onCompletion&&this.renderOnCompletionMetadata(e),this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&this.renderDependsOnMetadata(e),this.task.metadata.id&&this.renderIdMetadata(e),this.renderAddMetadataButton(e)}renderDateMetadata(e,t,r){var c,u,p,m;let i=e.createEl("div",{cls:["task-date",`task-${t}-date`]}),s=new Date(r),o="",l="";if(t==="due"){let f=new Date;f.setHours(0,0,0,0);let h=new Date(f);h.setDate(h.getDate()+1),s.getTime(){if(f.stopPropagation(),!this.isCurrentlyEditing()){let h=this.getInlineEditor(),g=this.formatDateForInput(s),k=t==="due"?"dueDate":t==="scheduled"?"scheduledDate":t==="start"?"startDate":t==="cancelled"?"cancelledDate":t==="completed"?"completedDate":null;k&&h.showMetadataEditor(i,k,g)}})}renderProjectMetadata(e){let t,r=!1;if(this.task.metadata.project?t=this.task.metadata.project:this.task.metadata.tgProject&&(t=this.task.metadata.tgProject.name,r=this.task.metadata.tgProject.readonly||!1),!t)return;let i=e.createEl("div",{cls:"task-project"});!this.task.metadata.project&&this.task.metadata.tgProject&&(i.addClass("task-project-tg"),i.title=`Project from ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`),i.textContent=t.split("/").pop()||t,this.plugin.settings.enableInlineEditor&&!r&&this.registerDomEvent(i,"click",s=>{s.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(i,"project",this.task.metadata.project||"")})}renderTagsMetadata(e){let t=e.createEl("div",{cls:"task-tags-container"}),r=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";this.task.metadata.tags.filter(i=>!i.startsWith(`#${r}`)).forEach(i=>{let s=t.createEl("span",{cls:"task-tag",text:i.startsWith("#")?i:`#${i}`});this.plugin.settings.enableInlineEditor&&this.registerDomEvent(s,"click",o=>{var l;if(o.stopPropagation(),!this.isCurrentlyEditing()){let c=this.getInlineEditor(),u=((l=this.task.metadata.tags)==null?void 0:l.join(", "))||"";c.showMetadataEditor(t,"tags",u)}})})}renderRecurrenceMetadata(e){let t=e.createEl("div",{cls:"task-date task-recurrence"});t.textContent=this.task.metadata.recurrence||"",this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"recurrence",this.task.metadata.recurrence||"")})}renderOnCompletionMetadata(e){let t=e.createEl("div",{cls:"task-oncompletion"});t.textContent=`\u{1F3C1} ${this.task.metadata.onCompletion}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"onCompletion",this.task.metadata.onCompletion||"")})}renderDependsOnMetadata(e){var r;let t=e.createEl("div",{cls:"task-dependson"});t.textContent=`\u26D4 ${(r=this.task.metadata.dependsOn)==null?void 0:r.join(", ")}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",i=>{var s;i.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"dependsOn",((s=this.task.metadata.dependsOn)==null?void 0:s.join(", "))||"")})}renderIdMetadata(e){let t=e.createEl("div",{cls:"task-id"});t.textContent=`\u{1F194} ${this.task.metadata.id}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"id",this.task.metadata.id||"")})}renderAddMetadataButton(e){if(!this.plugin.settings.enableInlineEditor)return;let r=e.createDiv({cls:"add-metadata-container"}).createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,an.setIcon)(r,"plus"),this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.showMetadataMenu(r)})}showMetadataMenu(e){let t=this.getInlineEditor(),r=new an.Menu,s=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(o=>{switch(o.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});s.length===0?r.addItem(o=>{o.setTitle("All metadata fields are already set").setDisabled(!0)}):s.forEach(o=>{r.addItem(l=>{l.setTitle(o.label).setIcon(o.icon).onClick(()=>{let c=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(c,o.key)})})}),r.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}formatDateForInput(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${i}`}renderMarkdown(){this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.contentEl.empty(),this.markdownRenderer=new Lt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown),this.registerContentClickHandler(),requestAnimationFrame(()=>{this.updateLayoutMode()})}updateLayoutMode(){if(!this.contentEl||!this.contentMetadataContainer)return;if(!this.plugin.settings.enableDynamicMetadataPositioning){this.contentMetadataContainer.toggleClass("multi-line-content",!0),this.contentMetadataContainer.toggleClass("single-line-content",!1);return}let e=window.getComputedStyle(this.contentEl),t=parseFloat(e.lineHeight)||parseFloat(e.fontSize)*1.4,i=this.contentEl.scrollHeight>t*1.2;this.contentMetadataContainer.toggleClass("multi-line-content",i),this.contentMetadataContainer.toggleClass("single-line-content",!i)}registerContentClickHandler(){this.registerDomEvent(this.contentEl,"click",async e=>{an.Keymap.isModEvent(e)?(e.stopPropagation(),await this.openTaskInFile()):this.plugin.settings.enableInlineEditor&&!this.isCurrentlyEditing()&&(e.stopPropagation(),this.getInlineEditor().showContentEditor(this.contentEl))})}updateTaskDisplay(){this.renderTaskContent()}renderChildTasks(){this.childComponents.forEach(o=>{o.unload()}),this.childComponents=[],this.childrenContainer.empty(),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide();let e=gt(this.plugin,this.viewMode),t=this.plugin.settings.taskStatuses.abandoned.split("|"),r=this.plugin.settings.taskStatuses.completed.split("|"),i=this.childTasks;e.hideCompletedAndAbandonedTasks&&(i=this.childTasks.filter(o=>!o.completed&&!t.includes(o.status.toLowerCase())&&!r.includes(o.status.toLowerCase())));let s=e.sortCriteria;s&&s.length>0?i=ea([...i],s,this.plugin.settings):i=[...i].sort((o,l)=>{var b,v,w,x,T,C,S,E;let c=o.completed,u=l.completed;if(c!==u)return c?1:-1;let p=(b=o.metadata.priority)!=null?b:0,m=(v=l.metadata.priority)!=null?v:0;if(p!==m)return m-p;let f=(w=o.metadata.dueDate)!=null?w:1/0,h=(x=l.metadata.dueDate)!=null?x:1/0;if(f!==h)return f-h;let k=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((T=o.content)!=null?T:"",(C=l.content)!=null?C:"");if(k!==0)return k;let y=(o.filePath||"").localeCompare(l.filePath||"");return y!==0?y:((S=o.line)!=null?S:0)-((E=l.line)!=null?E:0)}),i.forEach(o=>{let l=[];this.taskMap.forEach(u=>{u.metadata.parent===o.id&&l.push(u)});let c=new Di(o,this.viewMode,this.app,this.indentLevel+1,l,this.taskMap,this.plugin);c.onTaskSelected=u=>{this.onTaskSelected&&this.onTaskSelected(u)},c.onTaskCompleted=u=>{this.onTaskCompleted&&this.onTaskCompleted(u)},c.onToggleExpand=(u,p)=>{this.onToggleExpand&&this.onToggleExpand(u,p)},c.onTaskContextMenu=(u,p)=>{this.onTaskContextMenu&&this.onTaskContextMenu(u,p)},c.onTaskUpdate=async(u,p)=>{this.onTaskUpdate&&await this.onTaskUpdate(u,p)},this.addChild(c),c.load(),this.childrenContainer.appendChild(c.element),this.childComponents.push(c)})}updateChildTasks(e){this.childTasks=e,this.renderChildTasks()}selectTask(){this.onTaskSelected&&this.onTaskSelected(this.task)}toggleTaskCompletion(){let e={...this.task,completed:!this.task.completed};this.task.completed?e.metadata={...this.task.metadata,completedDate:void 0}:e.metadata={...this.task.metadata,completedDate:Date.now()},this.onTaskCompleted&&this.onTaskCompleted(e)}toggleExpand(){this.isExpanded=!this.isExpanded,this.toggleEl instanceof HTMLElement&&(0,an.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide(),this.onToggleExpand&&this.onToggleExpand(this.task.id,this.isExpanded)}async openTaskInFile(){let e=this.app.vault.getFileByPath(this.task.filePath);e&&await this.app.workspace.getLeaf(!1).openFile(e,{eState:{line:this.task.line}})}setSelected(e){this.isSelected=e,this.element.classList.toggle("selected",e)}updateTask(e){let t=this.task;if(this.task=e,this.renderTaskContent(),t.completed!==e.completed&&(e.completed?this.element.classList.add("task-completed"):this.element.classList.remove("task-completed")),(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&(this.contentEl.empty(),this.renderMarkdown()),JSON.stringify(t.metadata)!==JSON.stringify(e.metadata)){let r=this.parentContainer.querySelector(".task-metadata");r&&this.renderMetadata(r)}}updateTaskRecursively(e){for(let t of this.childComponents){if(t.getTask().id===e.id)return t.updateTask(e),!0;if(t.updateTaskRecursively(e))return!0}return!1}findComponentByTaskId(e){if(this.task.id===e)return this;for(let t of this.childComponents){let r=t.findComponentByTaskId(e);if(r)return r}return null}removeChildByTaskId(e){for(let t=0;ti.updateSelectionVisuals(e))}setExpanded(e){this.isExpanded!==e&&(this.isExpanded=e,this.toggleEl instanceof HTMLElement&&(0,an.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide())}onunload(){var e;(e=Di.editorManager)!=null&&e.hasActiveEditor(this.task.id)&&Di.editorManager.releaseEditor(this.task.id),this.childComponents.forEach(t=>{t.unload()}),this.element&&this.element.parentNode&&this.element.remove()}};Di.editorManager=null;var Ml=Di;q();function IG(n){return n.settings.defaultViewMode==="tree"}function AG(n,a){let e=n.loadLocalStorage(`task-genius:view-mode:${a}`);return e==null?null:e==="tree"}function Fn(n,a,e){let t=e?"tree":"list";n.saveLocalStorage(`task-genius:view-mode:${a}`,t)}function Rn(n,a,e){let t=AG(n,e);return t!==null?t:IG(a)}var jr=require("obsidian");function c0(n){if(!n)return null;let a=n.toLowerCase().trim(),e=(0,jr.moment)();if(a!=="today")if(a==="tomorrow")e=(0,jr.moment)().add(1,"day");else if(a==="yesterday")e=(0,jr.moment)().subtract(1,"day");else if(a==="next week")e=(0,jr.moment)().add(1,"week").startOf("week");else if(a==="last week")e=(0,jr.moment)().subtract(1,"week").startOf("week");else if(a==="next month")e=(0,jr.moment)().add(1,"month").startOf("month");else if(a==="last month")e=(0,jr.moment)().subtract(1,"month").startOf("month");else{let t=(0,jr.moment)(a,"YYYY-MM-DD",!0);if(t.isValid())e=t;else return console.warn(`Could not parse date filter string: ${n}`),null}return e.startOf("day")}function K3(n,a,e){let t=gt(n,e),r=n.settings.taskStatuses.abandoned.split("|"),i=n.settings.taskStatuses.completed.split("|");return t.hideCompletedAndAbandonedTasks?!a.completed&&!r.includes(a.status.toLowerCase())&&!i.includes(a.status.toLowerCase()):!0}function Q3(n,a,e){return gt(n,e).filterBlanks?a.content.trim()!=="":!0}function u0(n,a){if(!a.filterGroups||a.filterGroups.length===0)return!0;let e=a.filterGroups.map(t=>FG(n,t));return a.rootCondition==="all"?e.every(t=>t):a.rootCondition==="any"?e.some(t=>t):a.rootCondition==="none"?!e.some(t=>t):!0}function FG(n,a){if(!a.filters||a.filters.length===0)return!0;let e=a.filters.map(t=>RG(n,t));return a.groupCondition==="all"?e.every(t=>t):a.groupCondition==="any"?e.some(t=>t):a.groupCondition==="none"?!e.some(t=>t):!0}function RG(n,a){let{property:e,condition:t,value:r}=a;if(!t)return!0;switch(e){case"content":return OG(n.content,t,r);case"status":return NG(n.status,t,r);case"priority":return LG(n.metadata.priority,t,r);case"dueDate":return p0(n.metadata.dueDate,t,r);case"startDate":return p0(n.metadata.startDate,t,r);case"scheduledDate":return p0(n.metadata.scheduledDate,t,r);case"tags":return jG(n.metadata.tags,t,r);case"filePath":return HG(n.filePath,t,r);case"completed":return BG(n.completed,t);default:return!0}}function OG(n,a,e){switch(n||(n=""),e||(e=""),a){case"contains":return n.toLowerCase().includes(e.toLowerCase());case"doesNotContain":return!n.toLowerCase().includes(e.toLowerCase());case"is":return n.toLowerCase()===e.toLowerCase();case"isNot":return n.toLowerCase()!==e.toLowerCase();case"startsWith":return n.toLowerCase().startsWith(e.toLowerCase());case"endsWith":return n.toLowerCase().endsWith(e.toLowerCase());case"isEmpty":return n.trim()==="";case"isNotEmpty":return n.trim()!=="";default:return!0}}function NG(n,a,e){switch(n||(n=""),e||(e=""),a){case"contains":return n.toLowerCase().includes(e.toLowerCase());case"doesNotContain":return!n.toLowerCase().includes(e.toLowerCase());case"is":return n.toLowerCase()===e.toLowerCase();case"isNot":return n.toLowerCase()!==e.toLowerCase();case"isEmpty":return n.trim()==="";case"isNotEmpty":return n.trim()!=="";default:return!0}}function LG(n,a,e){let t=typeof n=="number"?n:0;switch(a){case"isEmpty":return n===void 0;case"isNotEmpty":return n!==void 0}if(!e)return!0;let r;try{r=parseInt(e),isNaN(r)&&(r=0)}catch(i){r=0}switch(a){case"is":return t===r;case"isNot":return t!==r;default:return!0}}function p0(n,a,e){switch(a){case"isEmpty":return n===void 0;case"isNotEmpty":return n!==void 0}if(n===void 0||!e)return!["is","isNot",">","<",">=","<="].includes(a);let t=(0,jr.moment)(n).startOf("day"),r=(0,jr.moment)(e,"YYYY-MM-DD").startOf("day");if(!t.isValid()||!r.isValid())return!1;switch(a){case"is":return t.isSame(r,"day");case"isNot":return!t.isSame(r,"day");case">":return t.isAfter(r,"day");case"<":return t.isBefore(r,"day");case">=":return t.isSameOrAfter(r,"day");case"<=":return t.isSameOrBefore(r,"day");default:return!0}}function jG(n,a,e){n||(n=[]),e||(e="");let t=e.toLowerCase();switch(a){case"contains":return n.some(r=>r.toLowerCase().includes(t));case"doesNotContain":return!n.some(r=>r.toLowerCase().includes(t));case"isEmpty":return n.length===0;case"isNotEmpty":return n.length>0;default:return!0}}function HG(n,a,e){switch(n||(n=""),e||(e=""),a){case"contains":return n.toLowerCase().includes(e.toLowerCase());case"doesNotContain":return!n.toLowerCase().includes(e.toLowerCase());case"is":return n.toLowerCase()===e.toLowerCase();case"isNot":return n.toLowerCase()!==e.toLowerCase();case"startsWith":return n.toLowerCase().startsWith(e.toLowerCase());case"endsWith":return n.toLowerCase().endsWith(e.toLowerCase());case"isEmpty":return n.trim()==="";case"isNotEmpty":return n.trim()!=="";default:return!0}}function BG(n,a){switch(a){case"isTrue":return n===!0;case"isFalse":return n===!1;default:return!0}}function _t(n,a,e,t={}){var u,p,m;let r=[...n],i=gt(e,a),s=i.filterRules||{},o=e.settings.globalFilterRules||{},l=a==="calendar"||typeof a=="string"&&a.startsWith("calendar"),c=a==="forecast"||typeof a=="string"&&a.startsWith("forecast");if(!l&&!c&&(r=r.filter(f=>{var k,y,b,v;return!(((v=(y=(k=f.metadata)==null?void 0:k.source)==null?void 0:y.type)!=null?v:(b=f.source)==null?void 0:b.type)==="ics")})),i.hideCompletedAndAbandonedTasks&&(r=r.filter(f=>!f.completed)),i.filterBlanks&&(r=r.filter(f=>f.content.trim()!=="")),o.advancedFilter&&((u=o.advancedFilter.filterGroups)==null?void 0:u.length)>0&&(o.advancedFilter,r=r.filter(f=>u0(f,o.advancedFilter))),s.advancedFilter&&((p=s.advancedFilter.filterGroups)==null?void 0:p.length)>0&&(s.advancedFilter,r=r.filter(f=>u0(f,s.advancedFilter))),t.advancedFilter&&((m=t.advancedFilter.filterGroups)==null?void 0:m.length)>0){if(t.advancedFilter,r=r.filter(f=>u0(f,t.advancedFilter)),r=r.filter(f=>K3(e,f,a)),r=r.filter(f=>Q3(e,f,a)),t.textQuery){let f=t.textQuery.toLowerCase();r=r.filter(h=>{var g,k,y;return h.content.toLowerCase().includes(f)||((g=h.metadata.project)==null?void 0:g.toLowerCase().includes(f))||((k=h.metadata.context)==null?void 0:k.toLowerCase().includes(f))||((y=h.metadata.tags)==null?void 0:y.some(b=>b.toLowerCase().includes(f)))})}return r}if(s.textContains){let f=s.textContains.toLowerCase();r=r.filter(h=>h.content.toLowerCase().includes(f))}if(s.tagsInclude&&s.tagsInclude.length>0&&(r=r.filter(f=>{var h;return(h=s.tagsInclude)==null?void 0:h.some(g=>f.metadata.tags.some(k=>typeof k=="string"&&k===g))})),s.tagsExclude&&s.tagsExclude.length>0&&(r=r.filter(f=>{if(!f.metadata.tags||f.metadata.tags.length===0)return!0;let h=f.metadata.tags.map(g=>g.toLowerCase());return!s.tagsExclude.some(g=>{let k=g.toLowerCase();return h.includes(k)||h.includes("#"+k)})})),s.project&&(r=r.filter(f=>{var h,g;return((h=f.metadata.project)==null?void 0:h.trim())===((g=s.project)==null?void 0:g.trim())})),s.priority!==void 0&&(r=r.filter(f=>{var h,g,k;return s.priority==="none"?f.metadata.priority===void 0:(h=s.priority)!=null&&h.includes(",")?s.priority.split(",").includes(String((g=f.metadata.priority)!=null?g:0)):f.metadata.priority===parseInt((k=s.priority)!=null?k:"0")})),s.statusInclude&&s.statusInclude.length>0&&(r=r.filter(f=>s.statusInclude.includes(f.status))),s.statusExclude&&s.statusExclude.length>0&&(r=r.filter(f=>!s.statusExclude.includes(f.status))),s.pathIncludes){let f=s.pathIncludes.split(",").filter(h=>h.trim()!=="").map(h=>h.trim().toLowerCase());r=r.filter(h=>f.some(g=>h.filePath.toLowerCase().includes(g)))}if(s.pathExcludes){let f=s.pathExcludes.split(",").filter(h=>h.trim()!=="").map(h=>h.trim().toLowerCase());r=r.filter(h=>!f.some(g=>h.filePath.toLowerCase().includes(g)))}if(s.dueDate){let f=c0(s.dueDate);f&&(r=r.filter(h=>h.metadata.dueDate?(0,jr.moment)(h.metadata.dueDate).isSame(f,"day"):!1))}if(s.startDate){let f=c0(s.startDate);f&&(r=r.filter(h=>h.metadata.startDate?(0,jr.moment)(h.metadata.startDate).isSame(f,"day"):!1))}if(s.scheduledDate){let f=c0(s.scheduledDate);f&&(r=r.filter(h=>h.metadata.scheduledDate?(0,jr.moment)(h.metadata.scheduledDate).isSame(f,"day"):!1))}if(Object.keys(s).length===0)switch(a){case"inbox":r=r.filter(f=>!RO(f));break;case"flagged":r=r.filter(f=>{var h,g;return((h=f.metadata.priority)!=null?h:0)>=3||((g=f.metadata.tags)==null?void 0:g.includes("flagged"))});break}if(r=r.filter(f=>K3(e,f,a)),r=r.filter(f=>Q3(e,f,a)),t.textQuery){let f=t.textQuery.toLowerCase();r=r.filter(h=>{var g,k,y;return h.content.toLowerCase().includes(f)||((g=h.metadata.project)==null?void 0:g.toLowerCase().includes(f))||((k=h.metadata.context)==null?void 0:k.toLowerCase().includes(f))||((y=h.metadata.tags)==null?void 0:y.some(b=>b.toLowerCase().includes(f)))})}return s.hasDueDate&&(s.hasDueDate==="any"||(s.hasDueDate==="hasDate"?r=r.filter(f=>f.metadata.dueDate):s.hasDueDate==="noDate"&&(r=r.filter(f=>!f.metadata.dueDate)))),s.hasStartDate&&(s.hasStartDate==="any"||(s.hasStartDate==="hasDate"?r=r.filter(f=>f.metadata.startDate):s.hasStartDate==="noDate"&&(r=r.filter(f=>!f.metadata.startDate)))),s.hasScheduledDate&&(s.hasScheduledDate==="any"||(s.hasScheduledDate==="hasDate"?r=r.filter(f=>f.metadata.scheduledDate):s.hasScheduledDate==="noDate"&&(r=r.filter(f=>!f.metadata.scheduledDate)))),s.hasCompletedDate&&(s.hasCompletedDate==="any"||(s.hasCompletedDate==="hasDate"?r=r.filter(f=>f.metadata.completedDate):s.hasCompletedDate==="noDate"&&(r=r.filter(f=>!f.metadata.completedDate)))),s.hasRecurrence&&(s.hasRecurrence==="any"||(s.hasRecurrence==="hasProperty"?r=r.filter(f=>f.metadata.recurrence):s.hasRecurrence==="noProperty"&&(r=r.filter(f=>!f.metadata.recurrence)))),s.hasCreatedDate&&(s.hasCreatedDate==="any"||(s.hasCreatedDate==="hasDate"?r=r.filter(f=>f.metadata.createdDate):s.hasCreatedDate==="noDate"&&(r=r.filter(f=>!f.metadata.createdDate)))),r}var Ei=class extends oc.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.allTasks=[];this.notFilteredTasks=[];this.filteredTasks=[];this.selectedTask=null;this.taskComponents=[];this.treeComponents=[];this.taskPageSize=50;this.nextTaskIndex=0;this.nextRootTaskIndex=0;this.rootTasks=[];this.currentViewId="inbox";this.selectedProjectForView=null;this.focusFilter=null;this.isTreeView=!1;this.isRendering=!1;this.pendingForceRefresh=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:"task-content"}),this.createContentHeader(),this.taskListEl=this.containerEl.createDiv({cls:"task-list"}),this.initializeViewMode(),this.initializeVirtualList()}createContentHeader(){this.headerEl=this.containerEl.createDiv({cls:"content-header"}),this.titleEl=this.headerEl.createDiv({cls:"content-title",text:d("Inbox")}),this.countEl=this.headerEl.createDiv({cls:"task-count",text:d("0 tasks")});let e=this.headerEl.createDiv({cls:"content-filter"});this.filterInput=e.createEl("input",{cls:"filter-input",attr:{type:"text",placeholder:d("Filter tasks...")}});let t=this.headerEl.createDiv({cls:"view-toggle-btn"});(0,oc.setIcon)(t,"list"),t.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(t,"click",()=>{this.toggleViewMode()});let r;this.registerDomEvent(this.filterInput,"input",()=>{clearTimeout(r),r=setTimeout(()=>{this.filterTasks(this.filterInput.value)},300)})}initializeVirtualList(){this.taskListObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&t.target.classList.contains("task-load-marker")&&this.loadMoreTasks()})},{root:this.taskListEl,threshold:.1})}initializeViewMode(){var t;this.isTreeView=Rn(this.app,this.plugin,this.currentViewId);let e=(t=this.headerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,oc.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.headerEl.querySelector(".view-toggle-btn");e&&(0,oc.setIcon)(e,this.isTreeView?"git-branch":"list"),Fn(this.app,this.currentViewId,this.isTreeView),this.refreshTaskList()}setTasks(e,t,r=!1){var i,s,o,l;if(r){this.isRendering=!1,this.pendingForceRefresh=!0,this.allTasks=e,this.notFilteredTasks=t,this.applyFilters(),this.refreshTaskList();return}if(!this.pendingForceRefresh&&!(this.allTasks===e&&this.notFilteredTasks===t)){if(this.allTasks.length===e.length&&this.notFilteredTasks.length===t.length&&e.length>0){let c=Math.min(5,e.length),u=!0;for(let p=0;pi.id===this.currentViewId))==null?void 0:r.sortCriteria;e&&e.length>0?this.filteredTasks=ea(this.filteredTasks,e,this.plugin.settings):this.filteredTasks.sort((i,s)=>{var k,y,b,v,w,x,T,C;let o=i.completed,l=s.completed;if(o!==l)return o?1:-1;let c=(k=i.metadata.priority)!=null?k:0,u=(y=s.metadata.priority)!=null?y:0;if(c!==u)return u-c;let p=(b=i.metadata.dueDate)!=null?b:1/0,m=(v=s.metadata.dueDate)!=null?v:1/0;if(p!==m)return p-m;let h=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((w=i.content)!=null?w:"",(x=s.content)!=null?x:"");if(h!==0)return h;let g=(i.filePath||"").localeCompare(s.filePath||"");return g!==0?g:((T=i.line)!=null?T:0)-((C=s.line)!=null?C:0)}),this.countEl.setText(`${this.filteredTasks.length} ${d("tasks")}`)}filterTasks(e){this.applyFilters(),this.refreshTaskList()}cleanupComponents(){this.taskComponents.forEach(e=>this.removeChild(e)),this.taskComponents=[],this.treeComponents.forEach(e=>this.removeChild(e)),this.treeComponents=[],this.taskListObserver.disconnect(),this.taskListEl.empty()}refreshTaskList(){var t;if(this.pendingForceRefresh&&(this.isRendering=!1),this.isRendering)return;this.isRendering=!0;let e=this.captureScrollState();try{if(this.cleanupComponents(),this.nextTaskIndex=0,this.nextRootTaskIndex=0,this.rootTasks=[],this.filteredTasks.length===0){this.addEmptyState(d("No tasks found."));return}if(this.isTreeView){let r=new Map;this.notFilteredTasks.forEach(s=>r.set(s.id,s)),this.rootTasks=_3(this.filteredTasks);let i=(t=this.plugin.settings.viewConfiguration.find(s=>s.id===this.currentViewId))==null?void 0:t.sortCriteria;i&&i.length>0?this.rootTasks=ea(this.rootTasks,i,this.plugin.settings):this.rootTasks.sort((s,o)=>{var y,b,v,w,x,T,C,S;let l=s.completed,c=o.completed;if(l!==c)return l?1:-1;let u=(y=s.metadata.priority)!=null?y:0,p=(b=o.metadata.priority)!=null?b:0;if(u!==p)return p-u;let m=(v=s.metadata.dueDate)!=null?v:1/0,f=(w=o.metadata.dueDate)!=null?w:1/0;if(m!==f)return m-f;let g=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((x=s.content)!=null?x:"",(T=o.content)!=null?T:"");if(g!==0)return g;let k=(s.filePath||"").localeCompare(o.filePath||"");return k!==0?k:((C=s.line)!=null?C:0)-((S=o.line)!=null?S:0)}),this.loadRootTaskBatch(r)}else this.loadTaskBatch();this.checkAndAddLoadMarker(),this.restoreScrollState(e)}finally{setTimeout(()=>{this.isRendering=!1,this.pendingForceRefresh=!1},50)}}captureScrollState(){let e=this.taskListEl;if(!e)return{scrollTop:0,anchorId:null,anchorOffset:0};let t=e.scrollTop,r=null,i=0,s=e.getBoundingClientRect(),o=Array.from(e.querySelectorAll(".task-item"));for(let l of o){let c=l.getBoundingClientRect(),u=c.top-s.top;if(c.bottom>s.top){r=l.getAttribute("data-task-id"),i=Math.max(0,u);break}}return{scrollTop:t,anchorId:r,anchorOffset:i}}restoreScrollState(e){let t=this.taskListEl;if(t){if(e.anchorId){let r=t.querySelector(`[data-task-id="${e.anchorId}"]`);if(r){let i=e.anchorOffset,o=r.getBoundingClientRect().top-t.getBoundingClientRect().top-i;t.scrollTop+=o;return}}t.scrollTop=e.scrollTop}}loadTaskBatch(){let e=document.createDocumentFragment(),t=this.taskPageSize,r=this.nextTaskIndex,i=Math.min(r+t,this.filteredTasks.length);for(let s=r;s{this.params.onTaskCompleted&&this.params.onTaskCompleted(c)},l.onTaskUpdate=async(c,u)=>{this.params.onTaskUpdate&&(c.content,u.content,await this.params.onTaskUpdate(c,u))},l.onTaskContextMenu=(c,u)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(c,u)},this.addChild(l),l.load(),e.appendChild(l.element),this.taskComponents.push(l)}return this.taskListEl.appendChild(e),this.nextTaskIndex=i,i}loadRootTaskBatch(e){let t=document.createDocumentFragment(),r=this.taskPageSize,i=this.nextRootTaskIndex,s=Math.min(i+r,this.rootTasks.length);this.notFilteredTasks.forEach(o=>{e.has(o.id)||e.set(o.id,o)});for(let o=i;op.metadata.parent===l.id),u=new Ml(l,this.currentViewId,this.app,0,c,e,this.plugin);u.onTaskSelected=this.selectTask.bind(this),u.onTaskCompleted=p=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(p)},u.onTaskUpdate=async(p,m)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(p,m)},u.onTaskContextMenu=(p,m)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(p,m)},this.addChild(u),u.load(),t.appendChild(u.element),this.treeComponents.push(u)}return this.taskListEl.appendChild(t),this.nextRootTaskIndex=s,s}checkAndAddLoadMarker(){this.removeLoadMarker(),(this.isTreeView?this.nextRootTaskIndexe.set(t.id,t)),this.loadRootTaskBatch(e)}}else this.nextTaskIndexp.id===e.id);t!==-1&&(this.allTasks[t]={...e});let r=this.notFilteredTasks.findIndex(p=>p.id===e.id);r!==-1&&(this.notFilteredTasks[r]={...e}),this.selectedTask&&this.selectedTask.id===e.id&&(this.selectedTask={...e});let i=this.filteredTasks.length;this.applyFilters();let s=this.filteredTasks.find(p=>p.id===e.id),o=!!s,l=p=>{let m=new Set(this.taskComponents.map(k=>k.getTask().id)),f=this.filteredTasks.findIndex(k=>k.id===p.id),h=null;for(let k=f+1;kb.getTask().id===y);break}}let g=new Pl(p,this.currentViewId,this.app,this.plugin);if(g.onTaskSelected=this.selectTask.bind(this),g.onTaskCompleted=k=>{var y,b;(b=(y=this.params).onTaskCompleted)==null||b.call(y,k)},g.onTaskUpdate=async(k,y)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(k,y)},g.onTaskContextMenu=(k,y)=>{var b,v;(v=(b=this.params).onTaskContextMenu)==null||v.call(b,k,y)},this.addChild(g),g.load(),h){this.taskListEl.insertBefore(g.element,h.element);let k=this.taskComponents.indexOf(h);this.taskComponents.splice(k,0,g)}else this.taskListEl.appendChild(g.element),this.taskComponents.push(g)},c=p=>{let m=this.taskComponents.findIndex(f=>f.getTask().id===p);if(m>=0){let f=this.taskComponents[m];this.removeChild(f),f.element.remove(),this.taskComponents.splice(m,1)}},u=(p,m)=>{var h,g;let f=(p.filePath||"").localeCompare(m.filePath||"");return f!==0?f:((h=p.line)!=null?h:0)-((g=m.line)!=null?g:0)};if(o)if(this.isTreeView){let p=this.treeComponents.find(m=>m.getTask().id===e.id);if(p)p.updateTask(s);else{let m=!1;for(let f of this.treeComponents)if(f.updateTaskRecursively(s)){m=!0;break}if(!m){let f=s.metadata.parent;if(f)for(let h of this.treeComponents){let g=h.findComponentByTaskId(f);if(g){let k=this.notFilteredTasks.filter(y=>y.metadata.parent===f);g.updateChildTasks(k),m=!0;break}}else{let h=new Map;this.notFilteredTasks.forEach(b=>h.set(b.id,b));let g=this.notFilteredTasks.filter(b=>b.metadata.parent===s.id),k=new Ml(s,this.currentViewId,this.app,0,g,h,this.plugin);k.onTaskSelected=this.selectTask.bind(this),k.onTaskCompleted=b=>{var v,w;(w=(v=this.params).onTaskCompleted)==null||w.call(v,b)},k.onTaskUpdate=async(b,v)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(b,v)},k.onTaskContextMenu=(b,v)=>{var w,x;(x=(w=this.params).onTaskContextMenu)==null||x.call(w,b,v)},this.addChild(k),k.load();let y=this.treeComponents.length;for(let b=0;bm.getTask().id===e.id);p?p.updateTask(s):l(s)}else if(!this.isTreeView)c(e.id),this.nextTaskIndexm.getTask().id===e.id);if(p>=0){let m=this.treeComponents[p];this.removeChild(m),m.element.remove(),this.treeComponents.splice(p,1)}else for(let m of this.treeComponents)if(m.removeChildByTaskId(e.id))break}this.filteredTasks.length!==i&&this.countEl.setText(`${this.filteredTasks.length} ${d("tasks")}`)}getSelectedTask(){return this.selectedTask}onunload(){this.cleanupComponents(),this.containerEl.empty(),this.containerEl.remove()}};var $a=require("obsidian");var Km=require("obsidian");q();var Sy=class extends Km.Component{constructor(e,t={}){super();this.parentEl=e;this.config=t;this.currentDate=new Date;this.selectedDate=new Date;this.calendarDays=[];this.tasks=[];this.options={showWeekends:!0,firstDayOfWeek:0,showTaskCounts:!0};this.displayedMonth=this.currentDate.getMonth(),this.displayedYear=this.currentDate.getFullYear(),this.options={...this.options,...this.config}}onload(){this.containerEl=this.parentEl.createDiv({cls:"mini-calendar-container"}),this.options.showWeekends||this.containerEl.addClass("hide-weekends"),this.createCalendarHeader(),this.calendarGridEl=this.containerEl.createDiv({cls:"calendar-grid"}),this.generateCalendar()}createCalendarHeader(){this.headerEl=this.containerEl.createDiv({cls:"calendar-header"});let e=this.headerEl.createDiv({cls:"calendar-title"});this.monthLabel=e.createSpan({cls:"calendar-month"}),this.yearLabel=e.createSpan({cls:"calendar-year"});let t=this.headerEl.createDiv({cls:"calendar-nav"}),r=t.createDiv({cls:"calendar-nav-btn"});(0,Km.setIcon)(r,"chevron-left");let i=t.createDiv({cls:"calendar-nav-btn"});(0,Km.setIcon)(i,"chevron-right");let s=t.createDiv({cls:"calendar-today-btn"});s.setText(d("Today")),this.registerDomEvent(r,"click",()=>{this.navigateMonth(-1)}),this.registerDomEvent(i,"click",()=>{this.navigateMonth(1)}),this.registerDomEvent(s,"click",()=>{this.goToToday()})}generateCalendar(){this.calendarGridEl.empty(),this.calendarDays=[];let e=["January","February","March","April","May","June","July","August","September","October","November","December"];this.monthLabel.setText(e[this.displayedMonth]),this.yearLabel.setText(this.displayedYear.toString());let r=[...["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]];if(this.options.firstDayOfWeek>0)for(let x=0;xx!=="Sat"&&x!=="Sun")).forEach(x=>{let T=this.calendarGridEl.createDiv({cls:"calendar-day-header",text:x});(x==="Sat"||x==="Sun")&&!this.options.showWeekends&&T.addClass("calendar-weekend")});let o=new Date(this.displayedYear,this.displayedMonth,1).getDay()-this.options.firstDayOfWeek;o<0&&(o+=7);let l=new Date(this.displayedYear,this.displayedMonth+1,0).getDate(),c=o,u=this.displayedMonth===0?11:this.displayedMonth-1,p=this.displayedMonth===0?this.displayedYear-1:this.displayedYear,m=new Date(p,u+1,0).getDate(),f=new Date;f.setHours(0,0,0,0);let h=this.selectedDate.getDate(),g=this.selectedDate.getMonth(),k=this.selectedDate.getFullYear();for(let x=0;xf;this.addCalendarDay(T,C,S,E,A,!0)}let b=42-(c+l),v=this.displayedMonth===11?0:this.displayedMonth+1,w=this.displayedMonth===11?this.displayedYear+1:this.displayedYear;for(let x=1;x<=b;x++){let T=new Date(w,v,x),C=x===h&&v===g&&w===k;this.addCalendarDay(T,!1,C,!1,!0)}}addCalendarDay(e,t,r,i,s,o=!1){let l=e.getDay()===0||e.getDay()===6;if(!this.options.showWeekends&&l)return;let c=this.getTasksForDate(e),u={date:e,tasks:c,isToday:t,isSelected:r,isPastDue:i,isFuture:s,isThisMonth:o};this.calendarDays.push(u);let p=this.calendarGridEl.createDiv({cls:"calendar-day"});o||p.addClass("other-month"),t&&p.addClass("today"),r&&p.addClass("selected"),i&&p.addClass("past-due");let m=p.createDiv({cls:"calendar-day-number",text:e.getDate().toString()});if(this.options.showTaskCounts&&c.length>0){let f=p.createDiv({cls:"calendar-day-count",text:c.length.toString()});c.some(g=>g.metadata.priority&&g.metadata.priority>=2)&&f.addClass("has-priority")}this.registerDomEvent(p,"click",()=>{this.selectDate(e)})}selectDate(e){if(this.selectedDate=e,e.getMonth()!==this.displayedMonth||e.getFullYear()!==this.displayedYear?(this.displayedMonth=e.getMonth(),this.displayedYear=e.getFullYear(),this.generateCalendar()):this.calendarGridEl.querySelectorAll(".calendar-day").forEach((r,i)=>{if(i11?(this.displayedMonth=0,this.displayedYear++):this.displayedMonth<0&&(this.displayedMonth=11,this.displayedYear--),this.generateCalendar(),this.onMonthChanged&&this.onMonthChanged(this.displayedMonth,this.displayedYear)}goToToday(){let e=new Date;this.displayedMonth=e.getMonth(),this.displayedYear=e.getFullYear(),this.selectDate(e)}getTasksForDate(e){let t=new Date(e);t.setHours(0,0,0,0);let r=new Date(e);r.setHours(23,59,59,999);let i=t.getTime(),s=r.getTime();return this.tasks.filter(o=>{if(o.metadata.dueDate){let l=new Date(o.metadata.dueDate);return l.setHours(0,0,0,0),l.getTime()===i}return!1})}setTasks(e){this.tasks=e,this.generateCalendar()}setOptions(e){this.options={...this.options,...e},this.generateCalendar()}setCurrentDate(e){this.currentDate=new Date(e),this.currentDate.setHours(0,0,0,0),this.generateCalendar()}onunload(){this.containerEl.empty(),this.containerEl.remove()}};q();var X3=require("obsidian");q();var Jr=class extends X3.Component{constructor(e,t,r,i,s){super();this.parent=e;this.containerEl=t;this.plugin=r;this.app=i;this.context=s;this.taskComponents=[];this.treeComponents=[];this.allTasksMap=new Map;e.addChild(this)}renderTasks(e,t,r,i=d("No tasks found."),s=!1){if(s||(this.cleanupComponents(),this.containerEl.empty()),e.length===0&&!s){this.renderEmptyState(i);return}if(r?this.allTasksMap=r:t&&(console.warn("TaskListRendererComponent: allTasksMap not provided for tree view. Tree may be incomplete."),this.allTasksMap=new Map(e.map(o=>[o.id,o]))),t){if(!this.allTasksMap||this.allTasksMap.size===0){console.error("TaskListRendererComponent: Cannot render tree view without allTasksMap."),this.renderEmptyState("Error: Task data unavailable for tree view.");return}this.renderTreeView(e,this.allTasksMap)}else this.renderListView(e)}renderListView(e){let t=document.createDocumentFragment();e.forEach(r=>{let i=new Pl(r,this.context,this.app,this.plugin);i.onTaskSelected=s=>{this.onTaskSelected&&this.onTaskSelected(s)},i.onTaskCompleted=s=>{this.onTaskCompleted&&this.onTaskCompleted(s)},i.onTaskUpdate=async(s,o)=>{this.onTaskUpdate,s.content,o.content,this.onTaskUpdate&&(s.content,o.content,await this.onTaskUpdate(s,o))},i.onTaskContextMenu=(s,o)=>{this.onTaskContextMenu&&this.onTaskContextMenu(s,o)},this.parent.addChild(i),i.load(),t.appendChild(i.element),this.taskComponents.push(i)}),this.containerEl.appendChild(t)}renderTreeView(e,t){let r=document.createDocumentFragment(),i=new Set(e.map(c=>c.id)),s=(c,u,p)=>{u.has(c.id)&&p.add(c.id),c.metadata.children&&c.metadata.children.forEach(m=>{let f=t.get(m);f&&s(f,u,p)})},o=[],l=new Set;for(let c of e)if(!l.has(c.id)&&(!c.metadata.parent||!i.has(c.metadata.parent))){let u=c;if(c.metadata.parent){let p=c;for(;p.metadata.parent&&!i.has(p.metadata.parent);){let m=t.get(p.metadata.parent);if(!m){console.warn(`Parent task ${p.metadata.parent} not found in allTasksMap.`);break}u=m,p=m}}o.some(p=>p.id===u.id)||o.push(u),s(u,i,l)}o.sort((c,u)=>c.line-u.line),o.forEach(c=>{let u=[];c.metadata.children&&c.metadata.children.forEach(m=>{let f=t.get(m);f?u.push(f):console.warn(`Child task ${m} (parent: ${c.id}) not found in allTasksMap.`)}),u.sort((m,f)=>m.line-f.line);let p=new Ml(c,this.context,this.app,0,u,t,this.plugin);p.onTaskSelected=m=>{this.onTaskSelected&&this.onTaskSelected(m)},p.onTaskCompleted=m=>{this.onTaskCompleted&&this.onTaskCompleted(m)},p.onTaskUpdate=async(m,f)=>{this.onTaskUpdate&&await this.onTaskUpdate(m,f)},p.onTaskContextMenu=(m,f)=>{this.onTaskContextMenu&&this.onTaskContextMenu(m,f)},this.parent.addChild(p),p.load(),r.appendChild(p.element),this.treeComponents.push(p)}),this.containerEl.appendChild(r)}renderEmptyState(e){this.containerEl.empty(),this.containerEl.createDiv({cls:`${this.context}-empty-state`}).setText(e)}updateTask(e){this.allTasksMap.has(e.id)&&this.allTasksMap.set(e.id,e);let t=this.taskComponents.find(r=>r.getTask().id===e.id);if(t){t.updateTask(e);return}for(let r of this.treeComponents)if(r.getTask().id===e.id){r.updateTask(e);return}else if(r.updateTaskRecursively(e))return}cleanupComponents(){this.taskComponents.forEach(e=>{this.parent.removeChild(e)}),this.taskComponents=[],this.treeComponents.forEach(e=>{this.parent.removeChild(e)}),this.treeComponents=[]}onunload(){this.cleanupComponents()}};var On=class extends $a.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.taskComponents=[];this.allTasks=[];this.pastTasks=[];this.todayTasks=[];this.futureTasks=[];this.dateSections=[];this.focusFilter=null;this.isTreeView=!1;this.treeComponents=[];this.allTasksMap=new Map;this.currentDate=new Date,this.currentDate.setHours(0,0,0,0),this.selectedDate=new Date(this.currentDate)}onload(){this.containerEl=this.parentEl.createDiv({cls:"forecast-container"});let e=this.containerEl.createDiv({cls:"forecast-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode(),this.windowFocusHandler=()=>{let t=new Date;t.setHours(0,0,0,0);let r=new Date(this.currentDate);r.setHours(0,0,0,0),this.currentDate=t,this.calendarComponent.setCurrentDate(this.currentDate);let i=new Date(this.selectedDate).setHours(0,0,0,0),s=r.getTime(),o=t.getTime();i===s&&i{new $a.ExtraButtonComponent(s).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})});let e=this.forecastHeaderEl.createDiv({cls:"forecast-title-container"});this.titleEl=e.createDiv({cls:"forecast-title",text:d("Forecast")}),e.createDiv({cls:"forecast-count"}).setText(d("0 tasks, 0 projects"));let i=this.forecastHeaderEl.createDiv({cls:"forecast-actions"}).createDiv({cls:"view-toggle-btn"});(0,$a.setIcon)(i,"list"),i.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()})}initializeViewMode(){var t;this.isTreeView=Rn(this.app,this.plugin,"forecast");let e=(t=this.forecastHeaderEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,$a.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.forecastHeaderEl.querySelector(".view-toggle-btn");e&&(0,$a.setIcon)(e,this.isTreeView?"git-branch":"list"),Fn(this.app,"forecast",this.isTreeView),this.refreshDateSectionsUI()}createFocusBar(){this.focusBarEl=this.taskContainerEl.createDiv({cls:"forecast-focus-bar"});let e=this.focusBarEl.createEl("input",{cls:"focus-input",attr:{type:"text",placeholder:d("Focusing on Work")}}),t=this.focusBarEl.createEl("button",{cls:"unfocus-button",text:d("Unfocus")});this.registerDomEvent(t,"click",()=>{e.value=""})}createLeftColumn(e){var i,s,o;if(this.leftColumnEl=e.createDiv({cls:"forecast-left-column"}),$a.Platform.isPhone){let l=this.leftColumnEl.createDiv({cls:"forecast-sidebar-close"});new $a.ExtraButtonComponent(l).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.createStatsBar(this.leftColumnEl),this.calendarContainerEl=this.leftColumnEl.createDiv({cls:"forecast-calendar-section"});let t=(i=this.plugin.settings.viewConfiguration.find(l=>l.id==="forecast"))==null?void 0:i.specificConfig,r={firstDayOfWeek:(s=t==null?void 0:t.firstDayOfWeek)!=null?s:0,showWeekends:!((o=t==null?void 0:t.hideWeekends)!=null&&o),showTaskCounts:!0};this.calendarComponent=new Sy(this.calendarContainerEl,r),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.createDueSoonSection(this.leftColumnEl),this.calendarComponent.onDateSelected=(l,c)=>{let u=new Date(l);u.setHours(0,0,0,0),this.selectedDate=u,this.updateDueSoonSection(),this.refreshDateSectionsUI(),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}}createStatsBar(e){this.statsContainerEl=e.createDiv({cls:"forecast-stats"});let t=(r,i,s,o)=>{let l=this.statsContainerEl.createDiv({cls:`stat-item tg-${r}`}),c=l.createDiv({cls:"stat-count",text:s.toString()}),u=l.createDiv({cls:"stat-label",text:i});return this.registerDomEvent(l,"click",()=>{this.focusTaskList(o),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}),l};t("past-due",d("Past Due"),0,"past-due"),t("today",d("Today"),0,"today"),t("future",d("Future"),0,"future")}createDueSoonSection(e){this.dueSoonContainerEl=e.createDiv({cls:"forecast-due-soon-section"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"forecast-right-column"}),this.createForecastHeader(),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"forecast-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.updateHeaderCount(),this.categorizeTasks(),this.calendarComponent.setTasks(this.allTasks),this.updateTaskStats(),this.updateDueSoonSection(),this.calculateDateSections(),this.renderDateSectionsUI()}updateHeaderCount(){let e=new Set;this.allTasks.forEach(s=>{s.metadata.project&&e.add(s.metadata.project)});let t=this.allTasks.length,r=e.size,i=this.forecastHeaderEl.querySelector(".forecast-count");i&&(i.textContent=`${t} ${d("tasks")}, ${r} ${d("project")}${r!==1?"s":""}`)}categorizeTasks(){var s;let e=new Date(this.currentDate);e.setHours(0,0,0,0);let t=e.getTime(),r=(s=this.plugin.settings.viewConfiguration.find(o=>o.id==="forecast"))==null?void 0:s.sortCriteria,i=this.allTasks.filter(o=>this.getRelevantDate(o)!==void 0);this.pastTasks=i.filter(o=>this.getRelevantDate(o)this.getRelevantDate(o)===t),this.futureTasks=i.filter(o=>this.getRelevantDate(o)>t),r&&r.length>0?(this.pastTasks=ea(this.pastTasks,r,this.plugin.settings),this.todayTasks=ea(this.todayTasks,r,this.plugin.settings),this.futureTasks=ea(this.futureTasks,r,this.plugin.settings)):(this.pastTasks=this.sortTasksByPriorityAndRelevantDate(this.pastTasks),this.todayTasks=this.sortTasksByPriorityAndRelevantDate(this.todayTasks),this.futureTasks=this.sortTasksByPriorityAndRelevantDate(this.futureTasks))}sortTasksByPriorityAndRelevantDate(e){return e.sort((t,r)=>{let i=t.metadata.priority||0,s=r.metadata.priority||0;if(i!==s)return s-i;let o=this.getRelevantDate(t),l=this.getRelevantDate(r);return o===void 0&&l===void 0?0:o===void 0?1:l===void 0?-1:o-l})}updateTaskStats(){this.statsContainerEl.querySelectorAll(".stat-item").forEach(t=>{let r=t.querySelector(".stat-count");r&&(t.hasClass("tg-past-due")?r.textContent=this.pastTasks.length.toString():t.hasClass("tg-today")?r.textContent=this.todayTasks.length.toString():t.hasClass("tg-future")&&(r.textContent=this.futureTasks.length.toString()))})}updateDueSoonSection(){this.dueSoonContainerEl.empty();let e=new Date(this.selectedDate);e.setHours(0,0,0,0);let t=[];for(let i=0;i<15;i++){let s=new Date(e);if(s.setDate(s.getDate()+i),s.getTime()===e.getTime())continue;let o=this.getTasksForRelevantDate(s);o.length>0&&t.push({date:s,tasks:o})}this.dueSoonContainerEl.createDiv({cls:"due-soon-header"}).setText(d("Coming Up")),t.forEach(i=>{let s=this.dueSoonContainerEl.createDiv({cls:"due-soon-item"}),o=this.formatDateForDueSoon(i.date),l=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][i.date.getDay()];s.createDiv({cls:"due-soon-date"}).setText(`${l}, ${o}`);let u=s.createDiv({cls:"due-soon-count"}),p=i.tasks.length;u.setText(`${p} ${p===1?d("Task"):d("Tasks")}`),this.registerDomEvent(s,"click",()=>{this.calendarComponent.selectDate(i.date),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)})}),t.length===0&&this.dueSoonContainerEl.createDiv({cls:"due-soon-empty"}).setText(d("No upcoming tasks"))}formatDateForDueSoon(e){return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e.getMonth()]} ${e.getDate()}`}calculateDateSections(){this.dateSections=[],this.todayTasks.length>0&&this.dateSections.push({title:this.formatSectionTitleForDate(this.currentDate),date:new Date(this.currentDate),tasks:this.todayTasks,isExpanded:!0});let e=new Map;this.futureTasks.forEach(i=>{let s=this.getRelevantDate(i);if(s){let o=new Date(s),l=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e.has(l)||e.set(l,[]),e.get(l).some(c=>c.id===i.id)||e.get(l).push(i)}}),Array.from(e.keys()).sort().forEach(i=>{let[s,o,l]=i.split("-").map(Number),c=new Date(s,o-1,l),u=e.get(i);new Date(this.currentDate).setHours(0,0,0,0);let m=this.formatSectionTitleForDate(c);this.dateSections.push({title:m,date:c,tasks:u,isExpanded:this.shouldExpandFutureSection(c,this.currentDate)})}),this.pastTasks.length>0&&this.dateSections.unshift({title:d("Past Due"),date:new Date(0),tasks:this.pastTasks,isExpanded:!0});let r=this.plugin.settings.viewConfiguration.find(i=>i.id==="forecast");if(r!=null&&r.sortCriteria&&r.sortCriteria.length>0){let i=r.sortCriteria.find(o=>o.field==="dueDate"),s=r.sortCriteria.find(o=>o.field==="scheduledDate");i&&i.order==="desc"?this.dateSections.reverse():s&&s.order==="desc"&&this.dateSections.reverse()}}renderDateSectionsUI(){if(this.cleanupRenderers(),this.allTasksMap=new Map(this.allTasks.map(e=>[e.id,e])),this.dateSections.length===0){this.taskListContainerEl.createDiv({cls:"forecast-empty-state"}).setText(d("No tasks scheduled"));return}this.dateSections.forEach(e=>{let t=this.taskListContainerEl.createDiv({cls:"task-date-section"}),r=new Date;r.setHours(0,0,0,0);let i=new Date(e.date);i.setHours(0,0,0,0),(i.getTime(){e.isExpanded=!e.isExpanded,(0,$a.setIcon)(o,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?u.show():u.hide()}),e.renderer=new Jr(this,u,this.plugin,this.app,"forecast"),this.params.onTaskSelected&&(e.renderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(e.renderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskContextMenu&&(e.renderer.onTaskContextMenu=this.params.onTaskContextMenu),e.renderer.onTaskUpdate=async(p,m)=>{this.params.onTaskUpdate?await this.params.onTaskUpdate(p,m):this.updateTask(m)},e.renderer.renderTasks(e.tasks,this.isTreeView,this.allTasksMap,d("No tasks for this section."))})}formatDate(e){return`${["January","February","March","April","May","June","July","August","September","October","November","December"][e.getMonth()]} ${e.getDate()}, ${e.getFullYear()}`}focusTaskList(e){if(this.statsContainerEl.querySelectorAll(".stat-item").forEach(r=>r.classList.remove("active")),this.focusFilter===e)this.focusFilter=null;else{this.focusFilter=e;let r=this.statsContainerEl.querySelector(`.stat-item.tg-${e}`);r&&r.classList.add("active")}if(this.focusFilter==="past-due")this.dateSections=this.pastTasks.length>0?[{title:d("Past Due"),date:new Date(0),tasks:this.pastTasks,isExpanded:!0}]:[];else if(this.focusFilter==="today")this.dateSections=this.todayTasks.length>0?[{title:this.formatSectionTitleForDate(this.currentDate),date:new Date(this.currentDate),tasks:this.todayTasks,isExpanded:!0}]:[];else if(this.focusFilter==="future"){this.calculateDateSections();let r=new Date(this.currentDate).setHours(0,0,0,0);this.dateSections=this.dateSections.filter(i=>i.date.getTime()>r)}else this.calculateDateSections();this.renderDateSectionsUI()}refreshDateSectionsUI(){this.focusFilter||(this.cleanupRenderers(),this.calculateFilteredDateSections(),this.renderDateSectionsUI())}calculateFilteredDateSections(){var f;this.dateSections=[];let e=new Date(this.selectedDate).setHours(0,0,0,0),t=this.allTasks.filter(h=>this.getRelevantDate(h)!==void 0),r=t.filter(h=>this.getRelevantDate(h)this.getRelevantDate(h)===e),s=t.filter(h=>this.getRelevantDate(h)>e),o=(f=this.plugin.settings.viewConfiguration.find(h=>h.id==="forecast"))==null?void 0:f.sortCriteria,l,c,u;o&&o.length>0?(l=ea(r,o,this.plugin.settings),c=ea(i,o,this.plugin.settings),u=ea(s,o,this.plugin.settings)):(l=this.sortTasksByPriorityAndRelevantDate(r),c=this.sortTasksByPriorityAndRelevantDate(i),u=this.sortTasksByPriorityAndRelevantDate(s)),c.length>0&&this.dateSections.push({title:this.formatSectionTitleForDate(this.selectedDate),date:new Date(this.selectedDate),tasks:c,isExpanded:!0}),l.length>0&&this.dateSections.unshift({title:d("Past Due"),date:new Date(0),tasks:l,isExpanded:!0});let p=new Map;if(u.forEach(h=>{let g=this.getRelevantDate(h),k=new Date(g),y=`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.getDate()).padStart(2,"0")}`;p.has(y)||p.set(y,[]),p.get(y).some(b=>b.id===h.id)||p.get(y).push(h)}),Array.from(p.keys()).sort().forEach(h=>{let[g,k,y]=h.split("-").map(Number),b=new Date(g,k-1,y),v=p.get(h),w=this.formatSectionTitleForDate(b);this.dateSections.push({title:w,date:b,tasks:v,isExpanded:this.shouldExpandFutureSection(b,this.selectedDate)})}),o&&o.length>0){let h=o.find(k=>k.field==="dueDate"),g=o.find(k=>k.field==="scheduledDate");h&&h.order==="desc"?this.dateSections.reverse():g&&g.order==="desc"&&this.dateSections.reverse()}}formatSectionTitleForDate(e){let t=new Date(e).setHours(0,0,0,0),r=new Date(this.currentDate).setHours(0,0,0,0),i="",s=Math.round((t-r)/(1e3*3600*24));s===0?i=d("Today")+", ":s===1&&(i=d("Tomorrow")+", ");let o=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],l=this.formatDate(e);return s===0?d("Today")+" \u2014 "+l:`${i}${o}, ${l}`}shouldExpandFutureSection(e,t){let r=new Date(t).setHours(0,0,0,0),i=new Date(e).setHours(0,0,0,0),s=Math.round((i-r)/(1e3*3600*24));return s>0&&s<=7}getTasksForRelevantDate(e){if(!e)return[];let t=new Date(e).setHours(0,0,0,0);return this.allTasks.filter(r=>this.getRelevantDate(r)===t)}updateTask(e){let t=this.allTasks.findIndex(r=>r.id===e.id);t!==-1?this.allTasks[t]=e:this.allTasks.push(e),this.allTasksMap.set(e.id,e),this.categorizeTasks(),this.updateHeaderCount(),this.updateTaskStats(),this.updateDueSoonSection(),this.calendarComponent.setTasks(this.allTasks),this.focusFilter?this.focusTaskList(this.focusFilter):this.refreshDateSectionsUI()}cleanupRenderers(){this.dateSections.forEach(e=>{e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0)}),this.taskListContainerEl.empty()}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}getRelevantDate(e){let t=e.metadata.scheduledDate||e.metadata.dueDate;if(!t)return;let r=new Date(t);return r.setHours(0,0,0,0),r.getTime()}};var _a=require("obsidian");q();var Nn=class extends _a.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.taskComponents=[];this.treeComponents=[];this.mainTaskRenderer=null;this.allTasks=[];this.filteredTasks=[];this.tagSections=[];this.selectedTags={tags:[],tasks:[],isMultiSelect:!1};this.allTagsMap=new Map;this.isTreeView=!1;this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:"tags-container"});let e=this.containerEl.createDiv({cls:"tags-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode()}createTagsHeader(){this.tagsHeaderEl=this.containerEl.createDiv({cls:"tags-header"});let e=this.tagsHeaderEl.createDiv({cls:"tags-title-container"});this.titleEl=e.createDiv({cls:"tags-title",text:d("Tags")}),this.countEl=e.createDiv({cls:"tags-count"}),this.countEl.setText("0 tags")}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:"tags-left-column"});let t=this.leftColumnEl.createDiv({cls:"tags-sidebar-header"}),r=t.createDiv({cls:"tags-sidebar-title",text:d("Tags")}),i=t.createDiv({cls:"tags-multi-select-btn"});if((0,_a.setIcon)(i,"list-plus"),i.setAttribute("aria-label",d("Toggle multi-select")),this.registerDomEvent(i,"click",()=>{this.toggleMultiSelect()}),_a.Platform.isPhone){let s=t.createDiv({cls:"tags-sidebar-close"});new _a.ExtraButtonComponent(s).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.tagsListEl=this.leftColumnEl.createDiv({cls:"tags-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"tags-right-column"});let t=this.taskContainerEl.createDiv({cls:"tags-task-header"});_a.Platform.isPhone&&t.createEl("div",{cls:"tags-sidebar-toggle"},o=>{new _a.ExtraButtonComponent(o).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),t.createDiv({cls:"tags-task-title"}).setText(d("Tasks")),t.createDiv({cls:"tags-task-count"}).setText("0 tasks");let s=t.createDiv({cls:"view-toggle-btn"});(0,_a.setIcon)(s,"list"),s.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(s,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"tags-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.buildTagsIndex(),this.renderTagsList(),this.selectedTags.tags.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(d("Select a tag to see related tasks")))}buildTagsIndex(){var e;this.allTagsMap.clear(),this.allTasks.forEach(t=>{t.metadata.tags&&t.metadata.tags.length>0&&t.metadata.tags.forEach(r=>{var i;typeof r=="string"&&(this.allTagsMap.has(r)||this.allTagsMap.set(r,new Set),(i=this.allTagsMap.get(r))==null||i.add(t.id))})}),(e=this.countEl)==null||e.setText(`${this.allTagsMap.size} tags`)}renderTagsList(){this.tagsListEl.empty();let e=Array.from(this.allTagsMap.keys()).sort(),t={};e.forEach(r=>{let i=r.split("/"),s=t;i.forEach((o,l)=>{s[o]||(s[o]={_tasks:new Set,_path:i.slice(0,l+1).join("/")});let c=this.allTagsMap.get(r);c&&c.forEach(u=>s[o]._tasks.add(u)),s=s[o]})}),this.renderTagHierarchy(t,this.tagsListEl,0)}renderTagHierarchy(e,t,r){Object.keys(e).filter(s=>!s.startsWith("_")).sort().forEach(s=>{let o=e[s],l=o._path,c=o._tasks.size,u=t.createDiv({cls:"tag-list-item",attr:{"data-tag":l,"aria-label":l}});if(r>0){let g=u.createDiv({cls:"tag-indent"});g.style.width=`${r*20}px`}let p=u.createDiv({cls:"tag-icon"});if((0,_a.setIcon)(p,"hash"),u.createDiv({cls:"tag-name"}).setText(s.replace("#","")),u.createDiv({cls:"tag-count"}).setText(c.toString()),u.dataset.tag=l,this.selectedTags.tags.includes(l)&&u.classList.add("selected"),this.registerDomEvent(u,"click",g=>{this.handleTagSelection(l,g.ctrlKey||g.metaKey)}),Object.keys(o).filter(g=>!g.startsWith("_")).length>0){let g=t.createDiv({cls:"tag-children"});this.renderTagHierarchy(o,g,r+1)}})}handleTagSelection(e,t){if(this.selectedTags.isMultiSelect||t){let i=this.selectedTags.tags.indexOf(e);if(i===-1?this.selectedTags.tags.push(e):this.selectedTags.tags.splice(i,1),this.selectedTags.tags.length===0&&!this.selectedTags.isMultiSelect){this.cleanupRenderers(),this.renderEmptyTaskList(d("Select a tag to see related tasks"));return}}else this.selectedTags.tags=[e];this.tagsListEl.querySelectorAll(".tag-list-item").forEach(i=>{let s=i.getAttribute("data-tag");s&&this.selectedTags.tags.includes(s)?i.classList.add("selected"):i.classList.remove("selected")}),this.updateSelectedTasks(),_a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}toggleMultiSelect(){this.selectedTags.isMultiSelect=!this.selectedTags.isMultiSelect,this.selectedTags.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedTags.tags.length===0&&(this.cleanupRenderers(),this.renderEmptyTaskList(d("Select a tag to see related tasks"))))}initializeViewMode(){var t;this.isTreeView=Rn(this.app,this.plugin,"tags");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,_a.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,_a.setIcon)(e,this.isTreeView?"git-branch":"list"),Fn(this.app,"tags",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedTags.tags.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(d("Select a tag to see related tasks"));return}this.selectedTags.tags;let e=this.selectedTags.tags.map(t=>{let r=new Set,i=this.allTagsMap.get(t);return i&&i.forEach(s=>r.add(s)),this.allTagsMap.forEach((s,o)=>{o!==t&&o.startsWith(t+"/")&&s.forEach(l=>r.add(l))}),r});if(this.allTagsMap,e.length===0)this.filteredTasks=[];else{let t=new Set;e.forEach(i=>{i.forEach(s=>t.add(s))}),this.filteredTasks=this.allTasks.filter(i=>t.has(i.id));let r=this.plugin.settings.viewConfiguration.find(i=>i.id==="tags");r!=null&&r.sortCriteria&&r.sortCriteria.length>0?this.filteredTasks=ea(this.filteredTasks,r.sortCriteria,this.plugin.settings):this.filteredTasks.sort((i,s)=>{if(i.completed!==s.completed)return i.completed?1:-1;let o=i.metadata.priority||0,l=s.metadata.priority||0;if(o!==l)return l-o;let c=i.metadata.dueDate||Number.MAX_SAFE_INTEGER,u=s.metadata.dueDate||Number.MAX_SAFE_INTEGER;return c-u})}!this.isTreeView&&this.selectedTags.tags.length>1?this.createTagSections():(this.tagSections=[],this.renderTaskList())}createTagSections(){this.cleanupRenderers(),this.tagSections=[];let e=new Map;this.selectedTags.tags.forEach(t=>{let r=this.filteredTasks.filter(i=>i.metadata.tags?i.metadata.tags.some(s=>typeof s=="string"&&(s===t||s.startsWith(t+"/"))):!1);r.length>0&&e.set(t,r)}),e.forEach((t,r)=>{this.tagSections.push({tag:r,tasks:t,isExpanded:!0})}),this.tagSections.sort((t,r)=>t.tag.localeCompare(r.tag)),this.renderTaskList()}updateTaskListHeader(){let e=this.taskContainerEl.querySelector(".tags-task-title");e&&(this.selectedTags.tags.length===1?e.textContent=`#${this.selectedTags.tags[0].replace("#","")}`:this.selectedTags.tags.length>1?e.textContent=`${this.selectedTags.tags.length} ${d("tags selected")}`:e.textContent=d("Tasks"));let t=this.taskContainerEl.querySelector(".tags-task-count");t&&(t.textContent=`${this.filteredTasks.length} ${d("tasks")}`)}cleanupRenderers(){this.mainTaskRenderer&&(this.removeChild(this.mainTaskRenderer),this.mainTaskRenderer=null),this.tagSections.forEach(e=>{e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0)}),this.taskListContainerEl.empty()}renderTaskList(){if(this.cleanupRenderers(),this.updateTaskListHeader(),this.filteredTasks.length===0&&this.selectedTags.tags.length>0){this.renderEmptyTaskList(d("No tasks with the selected tags"));return}if(this.filteredTasks.length===0&&this.selectedTags.tags.length===0){this.renderEmptyTaskList(d("Select a tag to see related tasks"));return}!this.isTreeView&&this.tagSections.length>0&&this.selectedTags.tags.length>1?this.renderTagSections():(this.mainTaskRenderer=new Jr(this,this.taskListContainerEl,this.plugin,this.app,"tags"),this.params.onTaskSelected&&(this.mainTaskRenderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(this.mainTaskRenderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskUpdate&&(this.mainTaskRenderer.onTaskUpdate=this.params.onTaskUpdate),this.params.onTaskContextMenu&&(this.mainTaskRenderer.onTaskContextMenu=this.params.onTaskContextMenu),this.mainTaskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,d("No tasks found.")))}renderTagSections(){this.tagSections.forEach(e=>{let t=this.taskListContainerEl.createDiv({cls:"task-tag-section"}),r=t.createDiv({cls:"tag-section-header"}),i=r.createDiv({cls:"section-toggle"});(0,_a.setIcon)(i,e.isExpanded?"chevron-down":"chevron-right"),r.createDiv({cls:"section-title"}).setText(`#${e.tag.replace("#","")}`),r.createDiv({cls:"section-count"}).setText(`${e.tasks.length}`);let l=t.createDiv({cls:"section-tasks"});e.isExpanded||l.hide(),e.renderer=new Jr(this,l,this.plugin,this.app,"tags"),this.params.onTaskSelected&&(e.renderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(e.renderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskUpdate&&(e.renderer.onTaskUpdate=this.params.onTaskUpdate),this.params.onTaskContextMenu&&(e.renderer.onTaskContextMenu=this.params.onTaskContextMenu),e.renderer.renderTasks(e.tasks,this.isTreeView,this.allTasksMap,d("No tasks found for this tag.")),this.registerDomEvent(r,"click",()=>{e.isExpanded=!e.isExpanded,(0,_a.setIcon)(i,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?l.show():l.hide()})})}renderEmptyTaskList(e){this.cleanupRenderers(),this.taskListContainerEl.empty(),this.taskListContainerEl.createDiv({cls:"tags-empty-state"}).setText(e)}updateTask(e){let t=!1,r=this.allTasks.findIndex(i=>i.id===e.id);if(r!==-1){let i=this.allTasks[r];(!i.metadata.tags||!e.metadata.tags||i.metadata.tags.join(",")!==e.metadata.tags.join(","))&&(t=!0),this.allTasks[r]=e}else this.allTasks.push(e),t=!0;if(t)this.buildTagsIndex(),this.renderTagsList(),this.updateSelectedTasks();else{let i=this.filteredTasks.findIndex(s=>s.id===e.id);i!==-1?(this.filteredTasks[i]=e,this.mainTaskRenderer?this.mainTaskRenderer.updateTask(e):this.tagSections.forEach(s=>{var o,l;(o=e.metadata.tags)!=null&&o.some(c=>typeof c=="string"&&(c===s.tag||c.startsWith(s.tag+"/")))&&s.tasks.some(c=>c.id===e.id)&&((l=s.renderer)==null||l.updateTask(e))})):this.updateSelectedTasks()}}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};var ir=require("obsidian");q();var rH=require("obsidian");var J3=require("obsidian");var lc=require("obsidian"),Dy=class n extends lc.Component{constructor(e,t,r,i={}){super();this.childRenderers=[];this.containerEl=e,this.node=t,this.events=i,this.config={renderContent:r.renderContent,iconResolver:r.iconResolver||(()=>"folder"),classPrefix:r.classPrefix||"tree",showToggle:r.showToggle!==!1,enableSelection:r.enableSelection!==!1}}onload(){this.render()}render(){let e=this.config.classPrefix;this.nodeEl=this.containerEl.createDiv({cls:`${e}-item`,attr:{"data-node-id":this.node.id,"data-level":this.node.level.toString(),role:"treeitem"}}),this.nodeEl.style.setProperty("--tree-level",this.node.level.toString()),this.node.children.length>0&&this.nodeEl.setAttribute("aria-expanded",this.node.isExpanded.toString()),this.node.isSelected&&this.nodeEl.addClass("is-selected");let t=this.nodeEl.createDiv({cls:`${e}-item-content`});if(this.config.showToggle&&this.node.children.length>0?(this.toggleEl=t.createDiv({cls:`${e}-item-toggle`}),(0,lc.setIcon)(this.toggleEl,this.node.isExpanded?"chevron-down":"chevron-right"),this.registerDomEvent(this.toggleEl,"click",r=>{r.stopPropagation(),this.toggleExpanded()})):this.config.showToggle&&t.createDiv({cls:`${e}-item-toggle-spacer`}),this.config.iconResolver){this.iconEl=t.createDiv({cls:`${e}-item-icon`});let r=this.config.iconResolver(this.node);(0,lc.setIcon)(this.iconEl,r)}this.contentEl=t.createDiv({cls:`${e}-item-content-wrapper`}),this.config.renderContent(this.node,this.contentEl),this.config.enableSelection&&this.registerDomEvent(t,"click",r=>{let i=r.ctrlKey||r.metaKey;this.selectNode(i)}),this.registerDomEvent(t,"contextmenu",r=>{this.events.onContextMenu&&this.events.onContextMenu(this.node,r)}),this.node.children.length>0&&(this.childrenContainerEl=this.nodeEl.createDiv({cls:`${e}-item-children`}),this.node.isExpanded?this.renderChildren():this.childrenContainerEl.hide())}renderChildren(){if(this.childrenContainerEl){this.clearChildren();for(let e of this.node.children){let t=new n(this.childrenContainerEl,e,this.config,this.events);this.addChild(t),this.childRenderers.push(t)}}}clearChildren(){for(let e of this.childRenderers)this.removeChild(e);this.childRenderers=[],this.childrenContainerEl&&this.childrenContainerEl.empty()}toggleExpanded(){this.setExpanded(!this.node.isExpanded)}setExpanded(e){this.node.isExpanded!==e&&(this.node.isExpanded=e,this.toggleEl&&(0,lc.setIcon)(this.toggleEl,e?"chevron-down":"chevron-right"),this.childrenContainerEl&&(e?(this.renderChildren(),this.childrenContainerEl.show()):(this.childrenContainerEl.hide(),this.clearChildren())),this.events.onToggle&&this.events.onToggle(this.node,e))}selectNode(e){this.events.onSelect&&this.events.onSelect(this.node,e)}setSelected(e){var t,r;this.node.isSelected=e,e?(t=this.nodeEl)==null||t.addClass("is-selected"):(r=this.nodeEl)==null||r.removeClass("is-selected")}updateNode(e){this.node=e,this.contentEl&&(this.contentEl.empty(),this.config.renderContent(this.node,this.contentEl)),this.setSelected(e.isSelected||!1),this.node.children.length>0&&this.node.isExpanded&&this.renderChildren()}getNode(){return this.node}findChildRenderer(e){for(let t of this.childRenderers){if(t.getNode().id===e)return t;let r=t.findChildRenderer(e);if(r)return r}}onunload(){var e;this.clearChildren(),(e=this.nodeEl)==null||e.remove()}};var Ey=class extends J3.Component{constructor(e,t){super();this.parentEl=e;this.config=t;this.tree=null;this.selectedNodes=new Set;this.expandedNodes=new Set;this.nodeRenderers=new Map;this.isMultiSelectMode=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:`${this.config.classPrefix||"tree"}-container`}),this.treeContainerEl=this.containerEl.createDiv({cls:`${this.config.classPrefix||"tree"}`}),this.config.indentSize&&this.containerEl.style.setProperty("--tree-indent-size",`${this.config.indentSize}px`),this.config.stateKey&&this.restoreTreeState()}setTree(e){this.tree=e,this.config.autoExpandLevel!==void 0&&this.expandedNodes.size===0?this.autoExpandToLevel(e,this.config.autoExpandLevel):this.expandedNodes.size>0&&this.restoreExpandedState(e),this.renderTree()}getTree(){return this.tree}renderTree(){if(this.clearRenderers(),this.treeContainerEl.empty(),!this.tree)return;let e=this.tree.fullPath===""?this.tree.children:[this.tree];for(let t of e)this.renderNode(t,this.treeContainerEl);this.updateSelectionVisuals()}renderNode(e,t){let r=t.createDiv(),i=new Dy(r,e,{renderContent:this.config.renderContent,iconResolver:this.config.iconResolver,classPrefix:this.config.classPrefix||"tree",showToggle:this.config.showToggle!==!1,enableSelection:this.config.enableSelection!==!1},{onToggle:(s,o)=>{this.handleNodeToggle(s,o)},onSelect:(s,o)=>{this.handleNodeSelection(s,o||this.isMultiSelectMode)}});if(this.nodeRenderers.set(e.fullPath,i),this.selectedNodes.has(e.fullPath)&&i.setSelected(!0),this.addChild(i),e.isExpanded&&e.children.length>0){let s=r.createDiv({cls:`${this.config.classPrefix||"tree"}-children`});for(let o of e.children)this.renderNode(o,s)}}handleNodeSelection(e,t){this.config.enableSelection&&(t?this.selectedNodes.has(e.fullPath)?this.selectedNodes.delete(e.fullPath):this.selectedNodes.add(e.fullPath):(this.selectedNodes.clear(),this.selectedNodes.add(e.fullPath)),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set(this.selectedNodes)),this.config.stateKey&&this.persistTreeState())}handleNodeToggle(e,t){e.isExpanded=t,t?this.expandedNodes.add(e.fullPath):this.expandedNodes.delete(e.fullPath),this.renderTree(),this.config.onNodeToggled&&this.config.onNodeToggled(e,t),this.config.stateKey&&this.persistTreeState()}updateSelectionVisuals(){for(let[e,t]of this.nodeRenderers)t.setSelected(this.selectedNodes.has(e))}clearRenderers(){for(let e of this.nodeRenderers.values())this.removeChild(e);this.nodeRenderers.clear()}autoExpandToLevel(e,t,r=0){if(r{t.isExpanded=!0,this.expandedNodes.add(t.fullPath),t.children.forEach(e)};e(this.tree),this.renderTree(),this.config.stateKey&&this.persistTreeState()}collapseAll(){if(!this.tree)return;let e=t=>{t.isExpanded=!1,t.children.forEach(e)};e(this.tree),this.expandedNodes.clear(),this.renderTree(),this.config.stateKey&&this.persistTreeState()}findNodeByPath(e){if(!this.tree)return;let t=r=>{if(r.fullPath===e)return r;for(let i of r.children){let s=t(i);if(s)return s}};return t(this.tree)}persistTreeState(){if(!this.config.stateKey)return;let e={expandedNodes:Array.from(this.expandedNodes),selectedNodes:Array.from(this.selectedNodes)};localStorage.setItem(this.config.stateKey,JSON.stringify(e))}restoreTreeState(){if(this.config.stateKey)try{let e=localStorage.getItem(this.config.stateKey);if(e){let t=JSON.parse(e);this.expandedNodes=new Set(t.expandedNodes||[]),this.selectedNodes=new Set(t.selectedNodes||[])}}catch(e){console.error("Failed to restore tree state:",e)}}onunload(){this.clearRenderers(),this.containerEl&&(this.containerEl.empty(),this.containerEl.remove())}};function VG(n,a="/"){if(!n||!n.trim())return[];let e=n.trim().replace(new RegExp(`${m0(a)}+`,"g"),a).replace(new RegExp(`^${m0(a)}|${m0(a)}$`,"g"),"");return e?e.split(a):[]}function m0(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f0(n,a="/"){let e={id:"root",name:"Projects",fullPath:"",data:{directTaskIds:new Set,allTaskIds:new Set,directTaskCount:0,totalTaskCount:0},children:[],level:0,isExpanded:!0};for(let[t,r]of n.entries()){let i=VG(t,a);if(i.length===0)continue;let s=e,o="";for(let l=0;lm.name===c);p?u&&(p.data.directTaskIds=r,p.data.directTaskCount=r.size):(p={id:o,name:c,fullPath:o,data:{directTaskIds:u?r:new Set,allTaskIds:new Set(r),directTaskCount:u?r.size:0,totalTaskCount:r.size},children:[],parent:s,level:s.level+1,isExpanded:!1},s.children.push(p)),s=p}}return Z3(e),eH(e),e}function Z3(n){let a=new Set(n.data.directTaskIds);for(let e of n.children)Z3(e).forEach(r=>a.add(r));return n.data.allTaskIds=a,n.data.totalTaskCount=a.size,a}function eH(n){n.children.sort((a,e)=>a.name.localeCompare(e.name));for(let a of n.children)eH(a)}function tH(n,a="/"){var t;let e=new Map;for(let r of n){let i=Vt(r);i&&(e.has(i)||e.set(i,new Set),(t=e.get(i))==null||t.add(r.id))}return f0(e,a)}function aH(n,a){if(a===""||a===n.fullPath)return n;let e=[n];for(;e.length>0;){let t=e.shift();if(t.fullPath===a)return t;e.push(...t.children)}}var Py=class extends rH.Component{constructor(e,t,r){super();this.parentEl=e;this.app=t;this.plugin=r;this.projectTree=null;this.allTasks=[]}onload(){this.treeComponent=new Ey(this.parentEl,{classPrefix:"project-tree",indentSize:24,showToggle:!0,enableSelection:!0,enableMultiSelect:!0,stateKey:"task-genius-project-tree-state",autoExpandLevel:1,renderContent:(e,t)=>{let r=t.createSpan({cls:"project-tree-item-name",text:e.name}),i=t.createSpan({cls:"project-tree-item-counts"}),s=o=>{let l=0;return o.forEach(c=>{let u=this.allTasks.find(p=>p.id===c);u&&this.isTaskCompleted(u)&&l++}),l};if(e.data.directTaskCount>0){let o=s(e.data.directTaskIds),l=i.createSpan({cls:"project-tree-item-count-direct"});this.plugin.settings.addProgressBarToProjectsView?(l.setText(`${o}/${e.data.directTaskCount}`),l.dataset.completed=o.toString(),l.dataset.total=e.data.directTaskCount.toString(),o===e.data.directTaskCount?l.classList.add("all-completed"):o>0&&l.classList.add("partially-completed")):l.setText(e.data.directTaskCount.toString())}if(e.children.length>0&&e.data.totalTaskCount>e.data.directTaskCount){let o=s(e.data.allTaskIds),l=i.createSpan({cls:"project-tree-item-count-total"});this.plugin.settings.addProgressBarToProjectsView?(l.setText(`${o}/${e.data.totalTaskCount}`),l.dataset.completed=o.toString(),l.dataset.total=e.data.totalTaskCount.toString(),o===e.data.totalTaskCount?l.classList.add("all-completed"):o>0&&l.classList.add("partially-completed")):l.setText(e.data.totalTaskCount.toString())}},iconResolver:e=>e.children.length>0?e.isExpanded?"folder-open":"folder":"file",onNodeSelected:e=>{let t=this.getTasksForSelection(e);this.onNodeSelected&&this.onNodeSelected(e,t)},onMultiSelectToggled:e=>{this.onMultiSelectToggled&&this.onMultiSelectToggled(e)}}),this.addChild(this.treeComponent),this.treeComponent.load()}buildTree(e){this.allTasks=e;let t=this.plugin.settings.projectPathSeparator||"/";this.projectTree=tH(e,t),this.projectTree&&this.treeComponent.setTree(this.projectTree)}setTree(e,t){this.projectTree=e,this.allTasks=t,this.treeComponent.setTree(e)}isTaskCompleted(e){var i,s,o,l,c,u,p;if(e.completed)return!0;let t=e.status;return t?(i=this.plugin)!=null&&i.settings.useOnlyCountMarks?(((o=(s=this.plugin)==null?void 0:s.settings.onlyCountTaskMarks)==null?void 0:o.split("|"))||[]).includes(t):(l=this.plugin)!=null&&l.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(t)?!1:(((p=(u=(c=this.plugin)==null?void 0:c.settings.taskStatuses)==null?void 0:u.completed)==null?void 0:p.split("|"))||["x","X"]).includes(t):!1}getTasksForSelection(e){if(!this.projectTree||e.size===0)return[];let t=new Set;for(let r of e){let i=aH(this.projectTree,r);i&&i.data.allTaskIds.forEach(s=>t.add(s))}return this.allTasks.filter(r=>t.has(r.id))}setMultiSelectMode(e){this.treeComponent.setMultiSelectMode(e)}getSelectedPaths(){return this.treeComponent.getSelectedPaths()}setSelectedPaths(e){this.treeComponent.setSelectedPaths(e)}clearSelection(){this.treeComponent.clearSelection()}expandAll(){this.treeComponent.expandAll()}collapseAll(){this.treeComponent.collapseAll()}onunload(){}};function iH(n,a,e="/"){if(!a||a.length===0)return n;let t=a.map(r=>(r||"").toLowerCase());return n.filter(r=>{var s,o,l,c,u;let i=((o=(s=r.metadata)==null?void 0:s.project)==null?void 0:o.toLowerCase())||((u=(c=(l=r.metadata)==null?void 0:l.tgProject)==null?void 0:c.name)==null?void 0:u.toLowerCase())||"";return i?t.some(p=>i===p||i.startsWith(p+e)):!1})}var Ln=class extends ir.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.allTasks=[];this.filteredTasks=[];this.selectedProjects={projects:[],tasks:[],isMultiSelect:!1};this.allProjectsMap=new Map;this.isTreeView=!1;this.allTasksMap=new Map;this.isProjectTreeView=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:"projects-container"});let e=this.containerEl.createDiv({cls:"projects-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode();let t=localStorage.getItem("task-genius-project-tree-view");this.isProjectTreeView=t==="true",this.taskRenderer=new Jr(this,this.taskListContainerEl,this.plugin,this.app,"projects"),this.taskRenderer.onTaskSelected=r=>{this.params.onTaskSelected&&this.params.onTaskSelected(r)},this.taskRenderer.onTaskCompleted=r=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(r)},this.taskRenderer.onTaskUpdate=async(r,i)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(r,i)},this.taskRenderer.onTaskContextMenu=(r,i)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(r,i)}}createProjectsHeader(){this.projectsHeaderEl=this.containerEl.createDiv({cls:"projects-header"});let e=this.projectsHeaderEl.createDiv({cls:"projects-title-container"});this.titleEl=e.createDiv({cls:"projects-title",text:d("Projects")}),this.countEl=e.createDiv({cls:"projects-count"}),this.countEl.setText(`0 ${d("projects")}`)}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:"projects-left-column"});let t=this.leftColumnEl.createDiv({cls:"projects-sidebar-header"}),r=t.createDiv({cls:"projects-sidebar-title",text:d("Projects")}),i=t.createDiv({cls:"projects-sidebar-header-btn-group"}),s=i.createDiv({cls:"projects-tree-toggle-btn"});(0,ir.setIcon)(s,this.isProjectTreeView?"git-branch":"list"),s.setAttribute("aria-label",d("Toggle tree/list view")),this.registerDomEvent(s,"click",()=>{this.toggleProjectTreeView()});let o=i.createDiv({cls:"projects-multi-select-btn"});if((0,ir.setIcon)(o,"list-plus"),o.setAttribute("aria-label",d("Toggle multi-select")),ir.Platform.isPhone){let l=t.createDiv({cls:"projects-sidebar-close"});new ir.ExtraButtonComponent(l).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.registerDomEvent(o,"click",()=>{this.toggleMultiSelect()}),this.projectsListEl=this.leftColumnEl.createDiv({cls:"projects-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"projects-right-column"});let t=this.taskContainerEl.createDiv({cls:"projects-task-header"});ir.Platform.isPhone&&t.createEl("div",{cls:"projects-sidebar-toggle"},u=>{new ir.ExtraButtonComponent(u).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})});let i=t.createDiv({cls:"projects-header-main-content"}).createDiv({cls:"projects-header-top-row"});i.createDiv({cls:"projects-header-top-left"}).createDiv({cls:"projects-task-title"}).setText(d("Tasks"));let o=i.createDiv({cls:"projects-header-top-right"});o.createDiv({cls:"projects-task-count"}).setText(`0 ${d("tasks")}`);let c=o.createDiv({cls:"view-toggle-btn"});(0,ir.setIcon)(c,"list"),c.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(c,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"projects-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0?this.updateSelectedTasks():(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,d("Select a project to see related tasks")),this.updateTaskListHeader(d("Tasks"),`0 ${d("tasks")}`))}buildProjectsIndex(){var e;if(this.allProjectsMap.clear(),this.allTasks.forEach(t=>{var i;let r=Vt(t);r&&(this.allProjectsMap.has(r)||this.allProjectsMap.set(r,new Set),(i=this.allProjectsMap.get(r))==null||i.add(t.id))}),this.isProjectTreeView){let t=this.plugin.settings.projectPathSeparator||"/";this.projectTree=f0(this.allProjectsMap,t)}(e=this.countEl)==null||e.setText(`${this.allProjectsMap.size} projects`)}renderProjectsList(){if(this.projectsListEl.empty(),this.isProjectTreeView&&this.projectTree)this.projectTreeComponent&&this.projectTreeComponent.unload(),this.projectTreeComponent=new Py(this.projectsListEl,this.app,this.plugin),this.projectTreeComponent.onNodeSelected=(e,t)=>{this.selectedProjects.projects=Array.from(e),this.updateSelectedTasks()},this.projectTreeComponent.onMultiSelectToggled=e=>{this.selectedProjects.isMultiSelect=e,!e&&this.selectedProjects.projects.length===0&&(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,d("Select a project to see related tasks")),this.updateTaskListHeader(d("Tasks"),`0 ${d("tasks")}`))},this.projectTreeComponent.load(),this.projectTree&&this.projectTreeComponent.setTree(this.projectTree,this.allTasks);else{this.projectTreeComponent&&(this.projectTreeComponent.unload(),this.projectTreeComponent=void 0);let e=Array.from(this.allProjectsMap.keys()).sort();e.forEach(t=>{let r=this.allProjectsMap.get(t),i=(r==null?void 0:r.size)||0,s=0;r&&r.forEach(p=>{let m=this.allTasksMap.get(p);m&&this.getTaskStatus(m)==="completed"&&s++});let o=this.projectsListEl.createDiv({cls:"project-list-item"}),l=o.createDiv({cls:"project-icon"});(0,ir.setIcon)(l,"folder"),o.createDiv({cls:"project-name"}).setText(t);let u=o.createDiv({cls:"project-count"});this.plugin.settings.addProgressBarToProjectsView&&i>0?(u.setText(`${s}/${i}`),u.dataset.completed=s.toString(),u.dataset.total=i.toString(),u.toggleClass("has-progress",!0),s===i?u.classList.add("all-completed"):s>0&&u.classList.add("partially-completed")):u.setText(i.toString()),o.dataset.project=t,this.selectedProjects.projects.includes(t)&&o.classList.add("selected"),this.registerDomEvent(o,"click",p=>{this.handleProjectSelection(t,p.ctrlKey||p.metaKey)})}),e.length===0&&this.projectsListEl.createDiv({cls:"projects-empty-state"}).setText(d("No projects found"))}}handleProjectSelection(e,t){if(this.selectedProjects.isMultiSelect||t){let i=this.selectedProjects.projects.indexOf(e);if(i===-1?this.selectedProjects.projects.push(e):this.selectedProjects.projects.splice(i,1),this.selectedProjects.projects.length===0&&!this.selectedProjects.isMultiSelect){this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,d("Select a project to see related tasks")),this.updateTaskListHeader(d("Tasks"),`0 ${d("tasks")}`);return}}else this.selectedProjects.projects=[e];this.projectsListEl.querySelectorAll(".project-list-item").forEach(i=>{let s=i.getAttribute("data-project");s&&this.selectedProjects.projects.includes(s)?i.classList.add("selected"):i.classList.remove("selected")}),this.updateSelectedTasks()}toggleMultiSelect(){this.selectedProjects.isMultiSelect=!this.selectedProjects.isMultiSelect,this.selectedProjects.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedProjects.projects.length===0&&(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,d("Select a project to see related tasks")),this.updateTaskListHeader(d("Tasks"),`0 ${d("tasks")}`))),this.projectTreeComponent&&this.projectTreeComponent.setMultiSelectMode(this.selectedProjects.isMultiSelect)}initializeViewMode(){var t;this.isTreeView=Rn(this.app,this.plugin,"projects");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,ir.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,ir.setIcon)(e,this.isTreeView?"git-branch":"list"),Fn(this.app,"projects",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedProjects.projects.length===0){this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,d("Select a project to see related tasks")),this.updateTaskListHeader(d("Tasks"),`0 ${d("tasks")}`);return}if(this.isProjectTreeView)this.filteredTasks=iH(this.allTasks,this.selectedProjects.projects,this.plugin.settings.projectPathSeparator||"/");else{let t=new Set;this.selectedProjects.projects.forEach(r=>{let i=this.allProjectsMap.get(r);i&&i.forEach(s=>t.add(s))}),this.filteredTasks=this.allTasks.filter(r=>t.has(r.id))}let e=this.plugin.settings.viewConfiguration.find(t=>t.id==="projects");e!=null&&e.sortCriteria&&e.sortCriteria.length>0?this.filteredTasks=ea(this.filteredTasks,e.sortCriteria,this.plugin.settings):this.filteredTasks.sort((t,r)=>{if(t.completed!==r.completed)return t.completed?1:-1;let i=t.metadata.priority||0,s=r.metadata.priority||0;if(i!==s)return s-i;let o=t.metadata.dueDate||Number.MAX_SAFE_INTEGER,l=r.metadata.dueDate||Number.MAX_SAFE_INTEGER;return o-l}),this.renderTaskList()}updateTaskListHeader(e,t){let r=this.taskContainerEl.querySelector(".projects-task-title");r&&(r.textContent=e);let i=this.taskContainerEl.querySelector(".projects-task-count");i&&(i.textContent=t),this.updateProgressBar()}updateProgressBar(){if(!this.plugin.settings.addProgressBarToProjectsView||this.plugin.settings.progressBarDisplayMode==="none"||this.filteredTasks.length===0){let i=this.taskContainerEl.querySelector(".projects-header-progress");i&&i.remove();return}let e=this.calculateProgressData(),t=this.taskContainerEl.querySelector(".projects-header-progress");if(t)t.empty();else{let i=this.taskContainerEl.querySelector(".projects-header-main-content");i&&(t=i.createDiv({cls:"projects-header-progress"}))}if(!t)return;let r=this.plugin.settings.progressBarDisplayMode;if(r==="graphical"||r==="both"){let s=t.createSpan({cls:"cm-task-progress-bar projects-progress"}).createDiv({cls:"progress-bar-inline-background"}),o=Math.round(e.completed/e.total*1e4)/100,l=e.inProgress?Math.round(e.inProgress/e.total*1e4)/100:0,c=e.abandoned?Math.round(e.abandoned/e.total*1e4)/100:0,u=e.planned?Math.round(e.planned/e.total*1e4)/100:0,p=s.createDiv({cls:"progress-bar-inline progress-completed"});if(p.style.width=o+"%",e.inProgress&&e.inProgress>0){let f=s.createDiv({cls:"progress-bar-inline progress-in-progress"});f.style.width=l+"%",f.style.left=o+"%"}if(e.abandoned&&e.abandoned>0){let f=s.createDiv({cls:"progress-bar-inline progress-abandoned"});f.style.width=c+"%",f.style.left=o+l+"%"}if(e.planned&&e.planned>0){let f=s.createDiv({cls:"progress-bar-inline progress-planned"});f.style.width=u+"%",f.style.left=o+l+c+"%"}let m="progress-bar-inline";switch(!0){case o===0:m+=" progress-bar-inline-empty";break;case(o>0&&o<25):m+=" progress-bar-inline-0";break;case(o>=25&&o<50):m+=" progress-bar-inline-1";break;case(o>=50&&o<75):m+=" progress-bar-inline-2";break;case(o>=75&&o<100):m+=" progress-bar-inline-3";break;case o>=100:m+=" progress-bar-inline-complete";break}p.className=m}if(r==="text"||r==="both"){let i=Qn(e,this.plugin);if(i){if(r==="text")t.createDiv({cls:"progress-status projects-progress-text"}).setText(i);else if(r==="both"){let s=t.querySelector(".cm-task-progress-bar");s&&s.createDiv({cls:"progress-status"}).setText(i)}}}}calculateProgressData(){let e={completed:0,total:this.filteredTasks.length,inProgress:0,abandoned:0,notStarted:0,planned:0};return this.filteredTasks.forEach(t=>{switch(this.getTaskStatus(t)){case"completed":e.completed++;break;case"inProgress":e.inProgress=(e.inProgress||0)+1;break;case"abandoned":e.abandoned=(e.abandoned||0)+1;break;case"planned":e.planned=(e.planned||0)+1;break;case"notStarted":default:e.notStarted=(e.notStarted||0)+1;break}}),e}getTaskStatus(e){var r,i,s,o;if(e.completed)return"completed";let t=e.status;return t?(r=this.plugin)!=null&&r.settings.useOnlyCountMarks?(((s=(i=this.plugin)==null?void 0:i.settings.onlyCountTaskMarks)==null?void 0:s.split("|"))||[]).includes(t)?"completed":this.determineNonCompletedStatus(t):(o=this.plugin)!=null&&o.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(t)?"notStarted":this.determineTaskStatus(t):"notStarted"}determineNonCompletedStatus(e){var s,o,l,c,u,p,m,f,h,g;return(((l=(o=(s=this.plugin)==null?void 0:s.settings.taskStatuses)==null?void 0:o.inProgress)==null?void 0:l.split("|"))||["/","-"]).includes(e)?"inProgress":(((p=(u=(c=this.plugin)==null?void 0:c.settings.taskStatuses)==null?void 0:u.abandoned)==null?void 0:p.split("|"))||[">"]).includes(e)?"abandoned":(((h=(f=(m=this.plugin)==null?void 0:m.settings.taskStatuses)==null?void 0:f.planned)==null?void 0:h.split("|"))||["?"]).includes(e)?"planned":((g=this.plugin)==null?void 0:g.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,c,u,p,m,f,h,g,k,y,b,v,w,x,T,C;return(((u=(c=(l=this.plugin)==null?void 0:l.settings.taskStatuses)==null?void 0:c.completed)==null?void 0:u.split("|"))||["x","X"]).includes(e)?"completed":(((f=(m=(p=this.plugin)==null?void 0:p.settings.taskStatuses)==null?void 0:m.inProgress)==null?void 0:f.split("|"))||["/","-"]).includes(e)?"inProgress":(((k=(g=(h=this.plugin)==null?void 0:h.settings.taskStatuses)==null?void 0:g.abandoned)==null?void 0:k.split("|"))||[">"]).includes(e)?"abandoned":(((v=(b=(y=this.plugin)==null?void 0:y.settings.taskStatuses)==null?void 0:b.planned)==null?void 0:v.split("|"))||["?"]).includes(e)?"planned":(((T=(x=(w=this.plugin)==null?void 0:w.settings.taskStatuses)==null?void 0:x.notStarted)==null?void 0:T.split("|"))||[" "]).includes(e)?"notStarted":((C=this.plugin)==null?void 0:C.settings.countOtherStatusesAs)||"notStarted"}renderTaskList(){let e=d("Tasks");this.selectedProjects.projects.length===1?e=this.selectedProjects.projects[0]:this.selectedProjects.projects.length>1&&(e=`${this.selectedProjects.projects.length} ${d("projects selected")}`);let t=`${this.filteredTasks.length} ${d("tasks")}`;this.updateTaskListHeader(e,t),this.taskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,d("No tasks in the selected projects"))}updateTask(e){let t=this.allTasks.findIndex(i=>i.id===e.id),r=!1;if(t!==-1?(this.allTasks[t].metadata.project!==e.metadata.project&&(r=!0),this.allTasks[t]=e):(this.allTasks.push(e),r=!0),r)this.buildProjectsIndex(),this.renderProjectsList(),this.updateSelectedTasks();else{let i=this.filteredTasks.findIndex(s=>s.id===e.id);i!==-1?(this.filteredTasks[i]=e,this.taskRenderer.updateTask(e)):this.updateSelectedTasks()}}toggleProjectTreeView(){this.isProjectTreeView=!this.isProjectTreeView;let e=this.leftColumnEl.querySelector(".projects-tree-toggle-btn");e&&(0,ir.setIcon)(e,this.isProjectTreeView?"git-branch":"list"),localStorage.setItem("task-genius-project-tree-view",this.isProjectTreeView.toString()),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0&&this.updateSelectedTasks()}onunload(){this.projectTreeComponent&&this.projectTreeComponent.unload(),this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};var Ut=require("obsidian");q();var nH={daily:1,weekly:7,"every 2 weeks":14,monthly:30,quarterly:90,"every 6 months":180,yearly:365},h0=class extends Ut.Modal{constructor(e,t,r,i,s){super(e);this.frequency="";this.frequencyOptions=["daily","weekly","every 2 weeks","monthly","quarterly","every 6 months","yearly"];this.projectName=r,this.existingSetting=i,this.plugin=t,this.onSave=s,i&&i.frequency?this.frequency=i.frequency:this.frequency="weekly"}async onOpen(){var h;let{contentEl:e}=this;e.createEl("h2",{text:d("Configure Review for")+` "${this.projectName}"`,cls:"review-modal-title"});let t=e.createDiv({cls:"review-modal-form"}),r=t.createDiv({cls:"review-modal-field"});r.createEl("label",{text:d("Review Frequency"),cls:"review-modal-label",attr:{for:"review-frequency"}}),r.createEl("div",{text:d("How often should this project be reviewed"),cls:"review-modal-description"});let i=r.createEl("select",{cls:"review-modal-select",attr:{id:"review-frequency"}});this.frequencyOptions.forEach(g=>{let k=i.createEl("option",{text:g,value:g});g===this.frequency&&(k.selected=!0)});let s=i.createEl("option",{text:d("Custom..."),value:"custom"}),o=r.createDiv({cls:"review-modal-custom-frequency"});o.style.display="none";let l=o.createEl("input",{cls:"review-modal-input",attr:{type:"text",placeholder:d("e.g., every 3 months")}});i.addEventListener("change",g=>{let k=g.target.value;k==="custom"?(o.style.display="block",l.focus(),this.frequency=""):(o.style.display="none",this.frequency=k)}),l.addEventListener("input",g=>{this.frequency=g.target.value}),this.frequency&&!this.frequencyOptions.includes(this.frequency)&&(s.selected=!0,o.style.display="block",l.value=this.frequency);let c=t.createDiv({cls:"review-modal-field"});c.createEl("label",{text:d("Last Reviewed"),cls:"review-modal-label"});let u=(h=this.existingSetting)!=null&&h.lastReviewed?new Date(this.existingSetting.lastReviewed).toLocaleString():"Never";c.createEl("div",{text:u,cls:"review-modal-last-reviewed"});let p=e.createDiv({cls:"review-modal-buttons"});p.createEl("button",{text:d("Cancel"),cls:"review-modal-button review-modal-button-cancel"}).addEventListener("click",()=>{this.close()}),p.createEl("button",{text:d("Save"),cls:"review-modal-button review-modal-button-save"}).addEventListener("click",()=>{this.saveSettings()})}validateFrequency(){return!this.frequency||this.frequency.trim()===""?(new Ut.Notice(d("Please specify a review frequency")),!1):!0}async saveSettings(){var t,r;if(!this.validateFrequency())return;let e={frequency:this.frequency,lastReviewed:((t=this.existingSetting)==null?void 0:t.lastReviewed)||void 0,reviewedTaskIds:((r=this.existingSetting)==null?void 0:r.reviewedTaskIds)||[]};this.plugin.settings.reviewSettings[this.projectName]=e,await this.plugin.saveSettings(),this.onSave(e),new Ut.Notice(d("Review schedule updated for")+` ${this.projectName}`),this.close()}async onClose(){let{contentEl:e}=this;e.empty()}},fo=class extends Ut.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.allTasks=[];this.reviewableProjects=new Map;this.selectedProject={project:null,tasks:[],setting:null};this.showAllTasks=!1;this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:"review-container"});let e=this.containerEl.createDiv({cls:"review-content"});this.createLeftColumn(e),this.createRightColumn(e),this.taskRenderer=new Jr(this,this.taskListContainerEl,this.plugin,this.app,"review"),this.taskRenderer.onTaskSelected=t=>{this.params.onTaskSelected&&this.params.onTaskSelected(t)},this.taskRenderer.onTaskCompleted=t=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(t)},this.taskRenderer.onTaskUpdate=async(t,r)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(t,r)},this.taskRenderer.onTaskContextMenu=(t,r)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(t,r)},this.loadReviewSettings()}createLeftColumn(e){if(this.leftColumnEl=e.createDiv({cls:"review-left-column"}),Ut.Platform.isPhone){let i=this.leftColumnEl.createDiv({cls:"review-sidebar-close"});new Ut.ExtraButtonComponent(i).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}let r=this.leftColumnEl.createDiv({cls:"review-sidebar-header"}).createDiv({cls:"review-sidebar-title",text:d("Review Projects")});this.projectsListEl=this.leftColumnEl.createDiv({cls:"review-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"review-right-column"}),this.taskHeaderEl=this.taskContainerEl.createDiv({cls:"review-task-header"}),Ut.Platform.isPhone&&this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},t=>{new Ut.ExtraButtonComponent(t).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"review-task-list"})}loadReviewSettings(){this.reviewableProjects.clear();let e=this.plugin.settings.reviewSettings,t=new Set;this.allTasks.forEach(r=>{r.metadata.project&&t.add(r.metadata.project)});for(let r of t)if(e[r])this.reviewableProjects.set(r,e[r]);else{let i={frequency:"",lastReviewed:void 0,reviewedTaskIds:[]};this.reviewableProjects.set(r,i)}this.reviewableProjects,this.renderProjectsList(),this.selectedProject.project&&!this.allTasks.some(r=>r.metadata.project===this.selectedProject.project)?this.clearSelection():this.selectedProject.project?this.selectProject(this.selectedProject.project):this.renderEmptyTaskList(d("Select a project to review its tasks."))}clearSelection(){this.selectedProject={project:null,tasks:[],setting:null},this.projectsListEl.querySelectorAll(".review-project-item").forEach(t=>t.classList.remove("selected")),this.renderEmptyTaskList(d("Select a project to review its tasks."))}setTasks(e){this.allTasks=e,this.loadReviewSettings()}renderProjectsList(){this.projectsListEl.empty();let e=Array.from(this.reviewableProjects.keys()).sort(),t=e.filter(s=>{let o=this.reviewableProjects.get(s);return o&&o.frequency}),r=e.filter(s=>{let o=this.reviewableProjects.get(s);return!o||!o.frequency}),i=s=>{let o=this.reviewableProjects.get(s);if(!o)return;let l=this.projectsListEl.createDiv({cls:"review-project-item"});l.dataset.project=s,o.frequency&&l.addClass("has-review-settings"),this.isReviewDue(o)&&l.addClass("is-review-due");let c=l.createDiv({cls:"review-project-icon"});(0,Ut.setIcon)(c,o.frequency?"folder-check":"folder"),l.createDiv({cls:"review-project-name"}).setText(s),this.selectedProject.project===s&&l.addClass("selected"),this.registerDomEvent(l,"click",()=>{this.selectProject(s)})};t.length>0&&(this.projectsListEl.createDiv({cls:"review-projects-group-header"}).setText(d("Configured for Review")),t.forEach(i)),r.length>0&&(this.projectsListEl.createDiv({cls:"review-projects-group-header"}).setText(d("Not Configured")),r.forEach(i)),e.length===0&&this.projectsListEl.createDiv({cls:"review-empty-state"}).setText(d("No projects available."))}selectProject(e){if(!e||!this.reviewableProjects.has(e)){this.selectedProject={project:null,tasks:[],setting:null},this.renderEmptyTaskList(d("Select a project to review.")),this.projectsListEl.querySelectorAll(".review-project-item").forEach(s=>s.classList.remove("selected"));return}let t=this.reviewableProjects.get(e);if(!t)return;this.selectedProject.project=e,this.selectedProject.setting=t,this.projectsListEl.querySelectorAll(".review-project-item").forEach(i=>{i.getAttribute("data-project")===e?i.classList.add("selected"):i.classList.remove("selected")}),Ut.Platform.isPhone&&this.toggleLeftColumnVisibility(!1),this.updateSelectedProjectTasks()}updateSelectedProjectTasks(){if(!this.selectedProject.project){this.renderEmptyTaskList(d("Select a project to review its tasks."));return}let e=this.allTasks.filter(o=>o.metadata.project===this.selectedProject.project),t=this.selectedProject.setting,r=[],i=this.taskHeaderEl.querySelector(".review-header-content"),s=i==null?void 0:i.querySelector(".review-filter-info");if(s&&s.remove(),t&&t.lastReviewed&&!this.showAllTasks){let o=t.lastReviewed,l=new Set(t.reviewedTaskIds||[]);if(r=e.filter(c=>c.metadata.createdDate&&c.metadata.createdDate>o?!0:l.has(c.id)&&c.completed?!1:!!(l.has(c.id)&&!c.completed||!l.has(c.id))),r.length{this.toggleShowAllTasks()})}}else if(r=e,this.showAllTasks&&i&&(t!=null&&t.lastReviewed)){let o=i.createDiv({cls:"review-filter-info"}),l=o.createSpan({text:d("Showing all tasks, including completed tasks from previous reviews.")}),c=o.createSpan({cls:"review-filter-toggle",text:d("Show only new and in-progress tasks")});this.registerDomEvent(c,"click",()=>{this.toggleShowAllTasks()})}this.selectedProject.tasks=r,this.selectedProject.tasks.sort((o,l)=>{if(o.completed!==l.completed)return o.completed?1:-1;let c=o.metadata.dueDate?new Date(o.metadata.dueDate).getTime():Number.MAX_SAFE_INTEGER,u=l.metadata.dueDate?new Date(l.metadata.dueDate).getTime():Number.MAX_SAFE_INTEGER;if(c!==u)return c-u;let p=o.metadata.priority||0;return(l.metadata.priority||0)-p}),this.renderTaskList(),this.updateFilterInfoInHeader(e.length,r.length)}updateFilterInfoInHeader(e,t){let r=this.taskHeaderEl.querySelector(".review-header-content");if(!r)return;let i=r.querySelector(".review-filter-info");i&&i.remove();let s=this.selectedProject.setting;if(s!=null&&s.lastReviewed){let o=e-t;if(!this.showAllTasks&&o>0){let l=r.createDiv({cls:"review-filter-info"});l.createSpan({text:d(`Showing new and in-progress tasks only. ${o} completed tasks from previous reviews are hidden.`)});let c=l.createSpan({cls:"review-filter-toggle",text:d("Show all tasks")});this.registerDomEvent(c,"click",()=>{this.toggleShowAllTasks()})}else if(this.showAllTasks&&e>0){let l=r.createDiv({cls:"review-filter-info"});l.createSpan({text:d("Showing all tasks, including completed tasks from previous reviews.")});let c=l.createSpan({cls:"review-filter-toggle",text:d("Show only new and in-progress tasks")});this.registerDomEvent(c,"click",()=>{this.toggleShowAllTasks()})}}}toggleShowAllTasks(){this.showAllTasks=!this.showAllTasks,this.updateSelectedProjectTasks()}renderTaskList(){if(this.taskHeaderEl.empty(),Ut.Platform.isPhone&&this.renderMobileToggle(),!this.selectedProject.project||!this.selectedProject.setting){this.renderEmptyTaskList(d("Select a project to review its tasks."));return}this.renderReviewHeader(this.selectedProject.project,this.selectedProject.setting),this.allTasksMap=new Map(this.allTasks.map(e=>[e.id,e])),this.taskRenderer.renderTasks(this.selectedProject.tasks,!1,this.allTasksMap,d("No tasks found for this project."))}renderReviewHeader(e,t){this.taskHeaderEl.empty(),Ut.Platform.isPhone&&this.renderMobileToggle();let r=this.taskHeaderEl.createDiv({cls:"review-header-content"});r.createEl("h3",{cls:["review-title","content-title"],text:e});let i=r.createDiv({cls:"review-info"});if(t.frequency){let s=`${d("Review every")} ${t.frequency}`;i.createSpan({cls:"review-frequency",text:s},u=>{this.registerDomEvent(u,"click",()=>{this.openConfigureModal(e,t)})}),i.createSpan({cls:"review-separator",text:"\u2022"});let o=t.lastReviewed?new Date(t.lastReviewed).toLocaleDateString():d("never");i.createSpan({cls:"review-last-date",text:`${d("Last reviewed")}: ${o}`});let c=r.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-complete-btn",text:d("Mark as Reviewed")});this.registerDomEvent(c,"click",()=>{this.markProjectAsReviewed(e)})}else{i.createSpan({cls:"review-no-settings",text:d("No review schedule configured for this project")});let o=r.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-configure-btn",text:d("Configure Review Schedule")});this.registerDomEvent(o,"click",()=>{this.openConfigureModal(e,t)})}}openConfigureModal(e,t){new h0(this.app,this.plugin,e,t,i=>{this.selectedProject.project===e&&(this.selectedProject.setting=i,this.renderReviewHeader(e,i)),this.loadReviewSettings()}).open()}async markProjectAsReviewed(e){`${e}`;let t=Date.now(),r=this.plugin.settings.reviewSettings,s=this.allTasks.filter(o=>o.metadata.project===e).map(o=>o.id);if(r[e])r[e].lastReviewed=t,r[e].reviewedTaskIds=s,await this.plugin.saveSettings(),this.selectedProject.setting=r[e],new Ut.Notice(d(`${e} marked as reviewed with ${s.length} tasks`)),this.renderReviewHeader(e,r[e]),this.updateSelectedProjectTasks();else{let o={frequency:"weekly",lastReviewed:t,reviewedTaskIds:s};r[e]=o,await this.plugin.saveSettings(),this.selectedProject.setting=o,this.reviewableProjects.set(e,o),new Ut.Notice(d(`${e} marked as reviewed with ${s.length} tasks`)),this.renderReviewHeader(e,o),this.renderProjectsList(),this.updateSelectedProjectTasks()}}renderMobileToggle(){this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},e=>{new Ut.ExtraButtonComponent(e).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})})}renderEmptyTaskList(e){if(this.taskHeaderEl.empty(),Ut.Platform.isPhone&&this.renderMobileToggle(),!this.selectedProject.project){let t=this.taskHeaderEl.createDiv({cls:"review-header-content"});t.createEl("h3",{cls:["review-title","content-title"],text:d("Project Review")}),t.createDiv({cls:"review-info",text:d("Select a project from the left sidebar to review its tasks.")})}this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.taskRenderer.renderTasks([],!1,this.allTasksMap,e)}updateTask(e){e.id,e.metadata.project;let t=!1,r=this.allTasks.findIndex(i=>i.id===e.id);if(r!==-1){if(this.allTasks[r].metadata.project!==e.metadata.project){this.loadReviewSettings();return}this.allTasks[r]=e}else if(this.allTasks.push(e),e.metadata.project===this.selectedProject.project)t=!0;else if(e.metadata.project&&!this.reviewableProjects.has(e.metadata.project)){this.loadReviewSettings();return}if(this.selectedProject.project===e.metadata.project){let i=this.selectedProject.tasks.findIndex(o=>o.id===e.id),s=this.checkTaskVisibility(e);i!==-1?s?(this.selectedProject.tasks[i]=e,this.taskRenderer.updateTask(e)):t=!0:s&&(t=!0)}t&&this.updateSelectedProjectTasks()}checkTaskVisibility(e){var i;if(this.showAllTasks||!((i=this.selectedProject.setting)!=null&&i.lastReviewed))return!0;let t=this.selectedProject.setting.lastReviewed,r=new Set(this.selectedProject.setting.reviewedTaskIds||[]);return e.metadata.createdDate&&e.metadata.createdDate>t?!0:r.has(e.id)&&e.completed?!1:!!(r.has(e.id)&&!e.completed||!r.has(e.id))}refreshReviewSettings(){this.loadReviewSettings()}onunload(){var e;(e=this.containerEl)==null||e.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}isReviewDue(e){if(!e.frequency)return!1;if(!e.lastReviewed)return!0;let t=new Date(e.lastReviewed),r=new Date;r.setHours(0,0,0,0);let i=0;if(nH[e.frequency])i=nH[e.frequency];else{let o=e.frequency.match(/every (\d+) days/i);if(o&&o[1])i=parseInt(o[1],10);else return console.warn(`Unknown frequency format: ${e.frequency}`),!1}let s=new Date(t);return s.setDate(t.getDate()+i),s.setHours(0,0,0,0),r>=s}};q();var Oa=require("obsidian");q();var Il=require("obsidian");var ys=require("obsidian");function sH(n){if(n.completed)return"grey"}var g0=class extends ys.Component{constructor(e){super();this.params=e;this.debounceHover=(0,ys.debounce)((e,t)=>{var r,i;(i=(r=this.params)==null?void 0:r.onEventHover)==null||i.call(r,e,t)},400);this.event=e.event,this.viewType=e.viewType,this.layout=e.layout,this.positioningHints=e.positioningHints,this.app=e.app,this.eventEl=createEl("div",{cls:["calendar-event",`calendar-event-${this.viewType}`]}),this.event.metadata.project&&(this.eventEl.dataset.projectId=this.event.metadata.project),this.event.metadata.priority&&(this.eventEl.dataset.priority=this.event.metadata.priority.toString()),this.event.status&&(this.eventEl.dataset.taskStatus=this.event.status),this.event.filePath&&(this.eventEl.dataset.filePath=this.event.filePath),this.eventEl.dataset.eventId=this.event.id}onload(){super.onload(),this.applyStyles(),this.setTooltip(),this.renderByViewType(),this.registerEventListeners()}applyStyles(){let e=sH(this.event);e?(this.eventEl.style.backgroundColor=e,e==="grey"&&this.eventEl.addClass("is-completed")):this.event.completed&&this.eventEl.addClass("is-completed")}setTooltip(){this.eventEl.setAttr("title",`${Ka(this.event.title)||"(No title)"} Status: ${this.event.status}${this.event.metadata.dueDate?` Due: ${(0,ys.moment)(this.event.metadata.dueDate).format("YYYY-MM-DD")}`:""}${this.event.metadata.startDate?` Start: ${(0,ys.moment)(this.event.metadata.startDate).format("YYYY-MM-DD")}`:""}`)}renderByViewType(){this.viewType==="month"||this.viewType==="week-allday"||this.viewType==="day-allday"?this.renderAllDayEvent():this.viewType==="day-timed"||this.viewType==="week-timed"?this.renderTimedEvent():this.viewType==="agenda"&&this.renderAgendaEvent()}renderAllDayEvent(){var r;this.eventEl.addClass("calendar-event-allday");let e=Pt(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",i=>{var s;i.stopPropagation(),(s=this.params)!=null&&s.onEventComplete&&this.params.onEventComplete(i,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createDiv({cls:"calendar-event-title-container"});this.markdownRenderer=new Lt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title),(r=this.positioningHints)!=null&&r.isMultiDay&&(this.eventEl.addClass("is-multi-day"),this.positioningHints.isStart&&this.eventEl.addClass("is-start"),this.positioningHints.isEnd&&this.eventEl.addClass("is-end"))}renderTimedEvent(){if(this.eventEl.toggleClass(["calendar-event-timed","calendar-event"],!0),this.viewType==="week-timed"&&this.eventEl.addClass("calendar-event-timed-week"),this.layout?this.viewType==="week-timed"?(this.eventEl.style.position="absolute",this.eventEl.style.top=`${this.layout.top}px`,this.eventEl.style.left=`${this.layout.left}%`,this.eventEl.style.width=`${this.layout.width}%`,this.eventEl.style.height=`${this.layout.height}px`,this.eventEl.style.zIndex=String(this.layout.zIndex)):(this.eventEl.style.position="relative",this.eventEl.style.width="100%"):this.viewType==="week-timed"&&(console.warn("Timed event render called without layout info for event:",this.event.id),this.eventEl.style.position="relative"),this.event.start&&this.viewType==="week-timed"){let r=(0,ys.moment)(this.event.start).format("h:mma");this.eventEl.createDiv({cls:"calendar-event-time",text:r})}let e=Pt(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",r=>{var i;r.stopPropagation(),(i=this.params)!=null&&i.onEventComplete&&this.params.onEventComplete(r,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createDiv({cls:"calendar-event-title"});this.markdownRenderer=new Lt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title)}renderAgendaEvent(){if(this.event.start&&!this.event.allDay){let r=(0,ys.moment)(this.event.start).format("HH:mm"),i=this.eventEl.createSpan({cls:"calendar-event-time agenda-time",text:r});this.eventEl.appendChild(i)}let e=Pt(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",r=>{var i;r.stopPropagation(),(i=this.params)!=null&&i.onEventComplete&&this.params.onEventComplete(r,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createSpan({cls:"calendar-event-title agenda-title"});this.eventEl.appendChild(t),this.markdownRenderer=new Lt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title)}registerEventListeners(){this.registerDomEvent(this.eventEl,"click",e=>{var t,r;e.stopPropagation(),(r=(t=this.params)==null?void 0:t.onEventClick)==null||r.call(t,e,this.event)}),this.registerDomEvent(this.eventEl,"mouseover",e=>{this.debounceHover(e,this.event)})}};function ho(n){let a=new g0(n);return a.registerDomEvent(a.eventEl,"contextmenu",e=>{var t;(t=n.onEventContextMenu)==null||t.call(n,e,n.event)}),{eventEl:a.eventEl,component:a}}var oH=require("obsidian"),Pi=class extends oH.Component{constructor(a,e,t,r,i={}){super(),this.containerEl=t,this.events=r,this.options=i}handleEventClick(a,e){this.options.onEventClick&&this.options.onEventClick(a,e)}onload(){super.onload(),this.render()}onunload(){this.containerEl.empty(),super.onunload()}};function Qm(n){let a=n.split("-"),e=parseInt(a[0],10),t=parseInt(a[1],10)-1,r=parseInt(a[2],10);return new Date(e,t,r)}var My=class extends Pi{constructor(e,t,r,i,s,o,l){super(t,e,r,o,l);this.currentViewId=i;this.sortableInstances=[];this.debounceHover=(0,Il.debounce)(e=>{var r;let t=e.target;if(t.closest(".calendar-day-cell")){let i=(r=t.closest(".calendar-day-cell"))==null?void 0:r.getAttribute("data-date");if(this.options.onDayHover&&i){let s=Qm(i);this.options.onDayHover(e,s.getTime())}}},200);this.app=e,this.plugin=t,this.currentDate=s}render(){var y,b;let e=(y=this.plugin.settings.viewConfiguration.find(v=>v.id===this.currentViewId))==null?void 0:y.specificConfig,t=e==null?void 0:e.firstDayOfWeek,r=(b=e==null?void 0:e.hideWeekends)!=null?b:!1,i=t===void 0?0:t,s=this.currentDate.clone().startOf("month"),o=this.currentDate.clone().endOf("month"),l=s.clone().weekday(i-7),c=o.clone().weekday(i+6);if(r){let v=0,w=l.clone();for(;w.isSameOrBefore(c,"day");)w.day()===0||w.day()===6||v++,w.add(1,"day");for(;v<30;)c.add(1,"day"),c.day()===0||c.day()===6||v++}else if(c.diff(l,"days")+1<42){let v=42-(c.diff(l,"days")+1);c.add(v,"days")}this.containerEl.empty(),this.containerEl.addClass("view-month"),r?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let u=this.containerEl.createDiv("calendar-weekday-header"),p=Il.moment.weekdaysShort(!0),m=[...p.slice(i),...p.slice(0,i)];(r?m.filter((v,w)=>{let x=(i+w)%7;return x!==0&&x!==6}):m).forEach(v=>{let w=u.createDiv("calendar-weekday");w.textContent=v});let h=this.containerEl.createDiv("calendar-month-grid"),g={},k=l.clone();for(;k.isSameOrBefore(c,"day");){let v=k.day()===0||k.day()===6;if(r&&v){k.add(1,"day");continue}let w=h.createEl("div",{cls:"calendar-day-cell",attr:{"data-date":k.format("YYYY-MM-DD")}}),x=k.format("YYYY-MM-DD");g[x]=w;let C=w.createDiv("calendar-day-header").createDiv("calendar-day-number");C.textContent=k.format("D"),k.isSame(this.currentDate,"month")||w.addClass("is-other-month"),k.isSame((0,Il.moment)(),"day")&&w.addClass("is-today"),!r&&v&&w.addClass("is-weekend"),w.createDiv("calendar-events-container"),k.add(1,"day")}this.events.forEach(v=>{let w=(0,Il.moment)(v.start).startOf("day"),x=c.clone().endOf("day"),T=l.clone().startOf("day");if(!(w.isAfter(x)||v.end&&(0,Il.moment)(v.end).startOf("day").isBefore(T))&&w.isSameOrAfter(T)&&w.isSameOrBefore(x)){let C=w.format("YYYY-MM-DD"),S=g[C];if(S){let E=S.querySelector(".calendar-events-container");if(E){let{eventEl:A,component:N}=ho({event:v,viewType:"month",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(N),E.appendChild(A)}}}}),Object.keys(g).forEach(v=>{var C,S;let w=g[v],x=Qm(v),T=((S=(C=this.options).getBadgeEventsForDate)==null?void 0:S.call(C,x))||[];if(T.length>0){let A=w.querySelector(".calendar-day-header").createDiv("calendar-badges-container");A&&T.forEach(N=>{let I=A.createEl("div",{cls:"calendar-badge"});N.color&&(I.style.backgroundColor=N.color),I.textContent=N.content})}}),`${l.format("YYYY-MM-DD")}${c.format("YYYY-MM-DD")}${i}`,this.registerDomEvent(h,"click",v=>{var x,T;let w=v.target;if(w.closest(".calendar-day-number")){let C=(x=w.closest(".calendar-day-cell"))==null?void 0:x.getAttribute("data-date");if(this.options.onDayClick&&C){let S=Qm(C);this.options.onDayClick(v,S.getTime(),{behavior:"open-task-view"})}return}if(w.closest(".calendar-day-cell")){let C=(T=w.closest(".calendar-day-cell"))==null?void 0:T.getAttribute("data-date");if(this.options.onDayClick&&C){let S=Qm(C);this.options.onDayClick(v,S.getTime(),{behavior:"open-quick-capture"})}}}),this.registerDomEvent(h,"mouseover",v=>{this.debounceHover(v)}),this.initializeDragAndDrop(g)}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}initializeDragAndDrop(e){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[],Object.entries(e).forEach(([t,r])=>{let i=r.querySelector(".calendar-events-container");if(i){let s=Lr.create(i,{group:"calendar-events",animation:150,ghostClass:"calendar-event-ghost",dragClass:"calendar-event-dragging",onEnd:o=>{this.handleDragEnd(o,t)}});this.sortableInstances.push(s)}})}async handleDragEnd(e,t){let i=e.item.dataset.eventId,o=e.to.closest(".calendar-day-cell");if(!i||!o){console.warn("Could not determine event ID or target date for drag operation");return}let l=o.getAttribute("data-date");if(!l||l===t)return;let c=this.events.find(u=>u.id===i);if(!c){console.warn(`Calendar event with ID ${i} not found`);return}try{await this.updateTaskDate(c,l),`${i}${t}${l}`}catch(u){console.error("Failed to update task date:",u),this.render()}}async updateTaskDate(e,t){let r=Qm(t).getTime();if(!this.plugin.writeAPI)throw new Error("WriteAPI not available");let i={...e};e.metadata.dueDate?i.metadata.dueDate=r:e.metadata.scheduledDate?i.metadata.scheduledDate=r:e.metadata.startDate?i.metadata.startDate=r:i.metadata.dueDate=r;let s=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:i});if(!s.success)throw new Error(`Failed to update task: ${s.error}`)}onunload(){this.sortableInstances.forEach(e=>e.destroy()),this.sortableInstances=[],super.onunload()}};var Hr=require("obsidian");var Iy=class extends Pi{constructor(e,t,r,i,s,o,l){super(t,e,r,o,l);this.currentViewId=i;this.sortableInstances=[];this.debounceHover=(0,Hr.debounce)(e=>{var r;let t=e.target;if(t.closest(".calendar-day-column")){let i=(r=t.closest(".calendar-day-column"))==null?void 0:r.getAttribute("data-date");this.options.onDayHover&&this.options.onDayHover(e,(0,Hr.moment)(i).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=s}render(){var w,x;let e=gt(this.plugin,this.currentViewId),t=e.specificConfig.firstDayOfWeek,r=(x=(w=e.specificConfig)==null?void 0:w.hideWeekends)!=null?x:!1,i=t===void 0?0:t,s=this.currentDate.clone().weekday(i),o=s.clone().add(6,"days");this.containerEl.empty(),this.containerEl.addClass("view-week"),r?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let l=this.containerEl.createDiv("calendar-week-header"),c={},u=s.clone(),p=Hr.moment.weekdaysShort(!0),m=[...p.slice(i),...p.slice(0,i)],f=r?m.filter((T,C)=>{let S=(i+C)%7;return S!==0&&S!==6}):m,h=0;for(;u.isSameOrBefore(o,"day");){let T=u.day()===0||u.day()===6;if(r&&T){u.add(1,"day");continue}let C=u.format("YYYY-MM-DD"),S=l.createDiv("calendar-header-cell");c[C]=S;let E=S.createDiv("calendar-weekday");E.textContent=f[h];let A=S.createDiv("calendar-day-number");A.textContent=u.format("D"),u.isSame((0,Hr.moment)(),"day")&&S.addClass("is-today"),u.add(1,"day"),h++}let k=this.containerEl.createDiv("calendar-week-grid-section").createDiv("calendar-week-grid"),y={};for(u=s.clone();u.isSameOrBefore(o,"day");){let T=u.day()===0||u.day()===6;if(r&&T){u.add(1,"day");continue}let C=u.format("YYYY-MM-DD"),S=k.createEl("div",{cls:"calendar-day-column",attr:{"data-date":C}});y[C]=S.createDiv("calendar-day-events-container"),u.isSame((0,Hr.moment)(),"day")&&S.addClass("is-today"),T&&S.addClass("is-weekend"),u.add(1,"day")}[...this.events.filter(T=>{let C=(0,Hr.moment)(T.start),S=T.end?(0,Hr.moment)(T.end):C;return C.isBefore(o.clone().endOf("day").add(1,"millisecond"))&&S.isSameOrAfter(s.clone().startOf("day"))})].sort((T,C)=>(0,Hr.moment)(T.start).valueOf()-(0,Hr.moment)(C.start).valueOf()).forEach(T=>{if(!T.start)return;let C=(0,Hr.moment)(T.start).startOf("day"),S=s.clone().startOf("day"),E=o.clone().endOf("day");if(C.isSameOrAfter(S)&&C.isSameOrBefore(E)){let A=C.format("YYYY-MM-DD"),N=y[A];if(N){let{eventEl:I,component:R}=ho({event:T,viewType:"week-allday",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(R),N.appendChild(I)}}}),`${s.format("YYYY-MM-DD")}${o.format("YYYY-MM-DD")}${i}`,this.registerDomEvent(k,"click",T=>{var S;let C=T.target;if(C.closest(".calendar-day-column")){let E=(S=C.closest(".calendar-day-column"))==null?void 0:S.getAttribute("data-date");this.options.onDayClick&&this.options.onDayClick(T,(0,Hr.moment)(E).valueOf(),{behavior:"open-quick-capture"})}}),this.registerDomEvent(k,"mouseover",T=>{this.debounceHover(T)}),this.initializeDragAndDrop(y)}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}initializeDragAndDrop(e){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[],Object.entries(e).forEach(([t,r])=>{if(r){let i=Lr.create(r,{group:"calendar-events",animation:150,ghostClass:"calendar-event-ghost",dragClass:"calendar-event-dragging",onEnd:s=>{this.handleDragEnd(s,t)}});this.sortableInstances.push(i)}})}async handleDragEnd(e,t){let i=e.item.dataset.eventId,o=e.to.closest(".calendar-day-column");if(!i||!o){console.warn("Could not determine event ID or target date for drag operation");return}let l=o.getAttribute("data-date");if(!l||l===t)return;let c=this.events.find(u=>u.id===i);if(!c){console.warn(`Calendar event with ID ${i} not found`);return}try{await this.updateTaskDate(c,l),`${i}${t}${l}`}catch(u){console.error("Failed to update task date:",u),this.render()}}async updateTaskDate(e,t){let r=(0,Hr.moment)(t).valueOf();if(!this.plugin.writeAPI)throw new Error("WriteAPI not available");let i={...e};e.metadata.dueDate?i.metadata.dueDate=r:e.metadata.scheduledDate?i.metadata.scheduledDate=r:e.metadata.startDate?i.metadata.startDate=r:i.metadata.dueDate=r;let s=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:i});if(!s.success)throw new Error(`Failed to update task: ${s.error}`)}onunload(){this.sortableInstances.forEach(e=>e.destroy()),this.sortableInstances=[],super.onunload()}};var k0=require("obsidian");var Ay=class extends Pi{constructor(a,e,t,r,i,s={}){super(e,a,t,i,s),this.app=a,this.plugin=e,this.currentDate=r}render(){this.containerEl.empty(),this.containerEl.addClass("view-day");let a=this.currentDate.clone().startOf("day"),e=this.currentDate.clone().endOf("day"),t=this.events.filter(s=>{let o=(0,k0.moment)(s.start),l=s.end?(0,k0.moment)(s.end):o.clone().endOf("day");return o.isBefore(e)&&l.isAfter(a)}).sort((s,o)=>s.ido.id?1:0),i=this.containerEl.createDiv("calendar-timeline-section").createDiv("calendar-timeline-events-container");t.length===0?(i.addClass("is-empty"),i.setText("(No events for this day)")):t.forEach(s=>{let{eventEl:o,component:l}=ho({event:s,viewType:"day-timed",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(l),i.appendChild(o),this.options.onEventClick&&this.registerDomEvent(o,"click",c=>{this.options.onEventClick(c,s)}),this.options.onEventHover&&this.registerDomEvent(o,"mouseenter",c=>{this.options.onEventHover(c,s)})})}updateEvents(a){this.events=a,this.render()}updateCurrentDate(a){this.currentDate=a,this.render()}};var go=require("obsidian");var Fy=class extends Pi{constructor(a,e,t,r,i,s={}){super(e,a,t,i,s),this.app=a,this.plugin=e,this.currentDate=r}render(){this.containerEl.empty(),this.containerEl.addClass("view-agenda");let a=this.currentDate.clone().startOf("day"),e=this.currentDate.clone().add(6,"days").endOf("day"),t=this.events.filter(s=>(0,go.moment)(s.start).isBetween(a,e,void 0,"[]")).sort((s,o)=>(0,go.moment)(s.start).valueOf()-(0,go.moment)(o.start).valueOf()),r={};if(t.forEach(s=>{let o=(0,go.moment)(s.start).format("YYYY-MM-DD");r[o]||(r[o]=[]),r[o].push(s)}),Object.keys(r).length===0){this.containerEl.setText(`No upcoming events from ${a.format("MMM D")} to ${e.format("MMM D, YYYY")}.`);return}let i=a.clone();for(;i.isSameOrBefore(e,"day");){let s=i.format("YYYY-MM-DD");if(r[s]&&r[s].length>0){let o=this.containerEl.createDiv("agenda-day-section"),c=o.createDiv("agenda-day-date-column").createDiv("agenda-day-header");c.textContent=i.format("dddd, MMMM D"),i.isSame((0,go.moment)(),"day")&&c.addClass("is-today");let p=o.createDiv("agenda-day-events-column").createDiv("agenda-events-list");r[s].sort((m,f)=>{let h=m.start?(0,go.moment)(m.start).valueOf():0,g=f.start?(0,go.moment)(f.start).valueOf():0;return h-g}).forEach(m=>{let f=p.createDiv("agenda-event-item"),{eventEl:h,component:g}=ho({event:m,viewType:"agenda",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(g),f.appendChild(h)})}i.add(1,"day")}`${a.format("YYYY-MM-DD")}${e.format("YYYY-MM-DD")}`}updateEvents(a){this.events=a,this.render()}updateCurrentDate(a){this.currentDate=a,this.render()}};var Zr=require("obsidian");var Ry=class extends Pi{constructor(e,t,r,i,s,o){super(t,e,r,s,o);this.debounceHover=(0,Zr.debounce)(e=>{var r;let t=e.target;if(t.closest(".mini-day-cell")){let i=(r=t.closest(".mini-day-cell"))==null?void 0:r.getAttribute("data-date");this.options.onDayHover&&this.options.onDayHover(e,(0,Zr.moment)(i).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=i}render(){var g,k;let e=this.currentDate.year();this.containerEl.empty(),this.containerEl.addClass("view-year"),`${e}${this.events.length}`;let t=this.containerEl.createDiv("calendar-year-grid"),r=(0,Zr.moment)({year:e,month:0,day:1}),i=(0,Zr.moment)({year:e,month:11,day:31}),s=performance.now(),o=this.events.filter(y=>{let b=(0,Zr.moment)(y.start),v=y.end?(0,Zr.moment)(y.end):b;return b.isSameOrBefore(i.endOf("day"))&&v.isSameOrAfter(r.startOf("day"))}),l=performance.now();`${o.length}${e}`,l-s;let c=gt(this.plugin,"calendar"),u=c.specificConfig.firstDayOfWeek,p=(k=(g=c.specificConfig)==null?void 0:g.hideWeekends)!=null?k:!1;p?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let m=u===void 0?0:u,f=performance.now();for(let y=0;y<12;y++){let b=performance.now(),v=t.createDiv("calendar-mini-month"),w=(0,Zr.moment)({year:e,month:y,day:1}),x=v.createDiv("mini-month-header");x.textContent=w.format("MMMM"),this.registerDomEvent(x,"click",S=>{this.options.onMonthClick&&this.options.onMonthClick(S,w.valueOf())}),this.registerDomEvent(x,"mouseenter",S=>{this.options.onMonthHover&&this.options.onMonthHover(S,w.valueOf())}),x.style.cursor="pointer";let T=v.createDiv("mini-month-body"),C=this.calculateDaysWithEvents(w,o);this.renderMiniMonthGrid(T,w,C,m,p)}let h=performance.now();`${e}`,h-f,`${m}`}calculateDaysWithEvents(e,t){let r=new Set,i=e.clone().startOf("month"),s=e.clone().endOf("month");return t.forEach(o=>{[o.start,o.metadata.scheduledDate,o.metadata.dueDate].forEach(c=>{if(c){let u=(0,Zr.moment)(c);u.isBetween(i,s,"day","[]")&&r.add(u.date())}})}),r}renderMiniMonthGrid(e,t,r,i,s){e.empty(),e.addClass("mini-month-grid");let o=e.createDiv("mini-weekday-header"),l=Zr.moment.weekdaysMin(!0),c=[...l.slice(i),...l.slice(0,i)];(s?c.filter((k,y)=>{let b=(i+y)%7;return b!==0&&b!==6}):c).forEach(k=>{o.createDiv("mini-weekday").textContent=k});let p=t.clone().startOf("month"),m=t.clone().endOf("month"),f,h;if(s){f=p.clone();let k=(p.weekday()-i+7)%7;for(f.subtract(k,"days");f.day()===0||f.day()===6;)f.add(1,"day");h=m.clone();let y=(i+4-m.weekday()+7)%7;for(h.add(y,"days");h.day()===0||h.day()===6;)h.subtract(1,"day")}else{let k=(p.weekday()-i+7)%7;f=p.clone().subtract(k,"days");let y=(i+6-m.weekday()+7)%7;h=m.clone().add(y,"days")}let g=f.clone();for(;g.isSameOrBefore(h,"day");){let k=g.day()===0||g.day()===6;if(s&&k){g.add(1,"day");continue}let y=e.createEl("div",{cls:"mini-day-cell",attr:{"data-date":g.format("YYYY-MM-DD")}}),b=g.date();g.isSame(t,"month")||y.addClass("is-other-month"),y.textContent=String(b),g.isSame((0,Zr.moment)(),"day")&&y.addClass("is-today"),g.isSame(t,"month")&&r.has(b)&&y.addClass("has-events"),g.isSame(t,"month")?y.style.cursor="pointer":y.style.cursor="default",g.add(1,"day")}this.registerDomEvent(e,"click",k=>{var b;let y=k.target;if(y.closest(".mini-day-cell")){let v=(b=y.closest(".mini-day-cell"))==null?void 0:b.getAttribute("data-date");this.options.onDayClick&&this.options.onDayClick(k,(0,Zr.moment)(v).valueOf(),{behavior:"open-task-view"})}}),this.registerDomEvent(e,"mouseover",k=>{this.debounceHover(k)})}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}};var jn=class extends Oa.Component{constructor(e,t,r,i=[],s={},o="calendar"){super();this.params=s;this.viewId=o;this.tasks=[];this.events=[];this.currentViewMode="month";this.currentDate=(0,Oa.moment)();this.activeViewComponent=null;this.badgeEventsCache=new Map;this.badgeEventsCacheVersion=0;this.onEventClick=(e,t)=>{var r,i,s;this.params,(r=this.params)==null||r.onTaskSelected,(s=(i=this.params)==null?void 0:i.onTaskSelected)==null||s.call(i,t)};this.onEventHover=(e,t)=>{};this.onViewChange=e=>{};this.onDayClick=(e,t,r)=>{this.currentViewMode==="year"?(this.setView("day"),this.currentDate=(0,Oa.moment)(t),this.render()):r.behavior==="open-quick-capture"?new ya(this.app,this.plugin,{dueDate:(0,Oa.moment)(t).toDate()},!0).open():r.behavior==="open-task-view"&&(this.setView("day"),this.currentDate=(0,Oa.moment)(t),this.render())};this.onDayHover=(e,t)=>{};this.onMonthClick=(e,t)=>{this.setView("month"),this.currentDate=(0,Oa.moment)(t),this.render()};this.onMonthHover=(e,t)=>{};this.onEventContextMenu=(e,t)=>{var r,i;(i=(r=this.params)==null?void 0:r.onEventContextMenu)==null||i.call(r,e,t)};this.onEventComplete=(e,t)=>{var r,i;(i=(r=this.params)==null?void 0:r.onTaskCompleted)==null||i.call(r,t)};this.app=e,this.plugin=t,this.containerEl=r.createDiv("full-calendar-container"),this.tasks=i,this.headerEl=this.containerEl.createDiv("calendar-header"),this.viewContainerEl=this.containerEl.createDiv("calendar-view-container");let l=this.app.loadLocalStorage("task-genius:calendar-view");l&&(this.currentViewMode=l),this.params}onload(){super.onload(),this.processTasks(),this.render()}onunload(){super.onunload(),this.activeViewComponent&&(this.removeChild(this.activeViewComponent),this.activeViewComponent=null),this.containerEl.empty()}updateTasks(e){this.tasks=e,this.invalidateBadgeEventsCache(),this.processTasks(),this.activeViewComponent?this.activeViewComponent.updateEvents(this.events):this.renderCurrentView()}setView(e){this.currentViewMode!==e&&(this.currentViewMode=e,this.render(),this.app.saveLocalStorage("task-genius:calendar-view",this.currentViewMode))}navigate(e){let t=this.getViewUnit();e==="prev"?this.currentDate.subtract(1,t):this.currentDate.add(1,t),this.render()}goToToday(){this.currentDate=(0,Oa.moment)(),this.render()}render(){this.renderHeader(),this.renderCurrentView()}setTasks(e){this.tasks=e,this.invalidateBadgeEventsCache(),this.processTasks(),this.render()}renderHeader(){this.headerEl.empty();let e=this.headerEl.createDiv("calendar-nav"),t=new Oa.ButtonComponent(e.createDiv());t.buttonEl.toggleClass(["calendar-nav-button","prev-button"],!0),t.setIcon("chevron-left"),t.onClick(()=>this.navigate("prev"));let r=new Oa.ButtonComponent(e.createDiv());r.buttonEl.toggleClass(["calendar-nav-button","today-button"],!0),r.setButtonText(d("Today")),r.onClick(()=>this.goToToday());let i=new Oa.ButtonComponent(e.createDiv());i.buttonEl.toggleClass(["calendar-nav-button","next-button"],!0),i.setIcon("chevron-right"),i.onClick(()=>this.navigate("next"));let s=this.headerEl.createSpan("calendar-current-date");s.textContent=this.getCurrentDateDisplay();let o=this.headerEl.createDiv("calendar-view-switcher");["year","month","week","day","agenda"].forEach(c=>{let u=o.createEl("button",{text:{year:d("Year"),month:d("Month"),week:d("Week"),day:d("Day"),agenda:d("Agenda")}[c]});c===this.currentViewMode&&u.addClass("is-active"),u.onclick=()=>this.setView(c)}),o.createEl("div",{cls:"calendar-view-switcher-selector"},c=>{new Oa.DropdownComponent(c).addOption("year",d("Year")).addOption("month",d("Month")).addOption("week",d("Week")).addOption("day",d("Day")).addOption("agenda",d("Agenda")).onChange(u=>this.setView(u)).setValue(this.currentViewMode)})}renderCurrentView(){var t;let e=null;switch(this.currentViewMode,this.params,(t=this.params)==null||t.onTaskSelected,this.currentViewMode){case"month":e=new My(this.app,this.plugin,this.viewContainerEl,this.viewId,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete,getBadgeEventsForDate:this.getBadgeEventsForDate.bind(this)});break;case"week":e=new Iy(this.app,this.plugin,this.viewContainerEl,this.viewId,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete,getBadgeEventsForDate:this.getBadgeEventsForDate.bind(this)});break;case"day":e=new Ay(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete});break;case"agenda":e=new Fy(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete});break;case"year":e=new Ry(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onMonthClick:this.onMonthClick,onMonthHover:this.onMonthHover});break;default:this.viewContainerEl.empty(),this.viewContainerEl.setText(`View mode "${this.currentViewMode}" not implemented yet.`),e=null}this.activeViewComponent!==e?(this.activeViewComponent&&this.removeChild(this.activeViewComponent),e?(this.activeViewComponent=e,this.addChild(this.activeViewComponent),this.precomputeBadgeEventsForCurrentView(),this.activeViewComponent.updateEvents(this.events)):this.activeViewComponent=null):this.activeViewComponent&&(this.precomputeBadgeEventsForCurrentView(),this.activeViewComponent.updateEvents(this.events)),this.viewContainerEl.removeClass("view-year","view-month","view-week","view-day","view-agenda"),this.activeViewComponent&&this.viewContainerEl.addClass(`view-${this.currentViewMode}`),this.currentViewMode,this.activeViewComponent&&this.activeViewComponent.constructor.name}async processTasks(){this.events=[],this.invalidateBadgeEventsCache();let e="dueDate";this.tasks.forEach(t=>{var c,u,p,m,f,h;let r=((c=t.source)==null?void 0:c.type)==="ics",i=r?t:null,s=((p=(u=i==null?void 0:i.icsEvent)==null?void 0:u.source)==null?void 0:p.showType)==="badge";if(r&&s)return;let o=null,l=!0;if(r&&(i!=null&&i.icsEvent)?(o=i.icsEvent.dtstart.getTime(),l=i.icsEvent.allDay):t.metadata[e]?o=t.metadata[e]:t.metadata.scheduledDate?o=t.metadata.scheduledDate:t.metadata.startDate&&(o=t.metadata.startDate),o){let g=(0,Oa.moment)(o),k=l?g.startOf("day").toDate():g.toDate(),y,b=k;if(r&&((m=i==null?void 0:i.icsEvent)!=null&&m.dtend))y=i.icsEvent.dtend;else if(t.metadata.startDate&&t.metadata.dueDate&&t.metadata.startDate!==t.metadata.dueDate){let w=(0,Oa.moment)(t.metadata.startDate).startOf("day"),x=(0,Oa.moment)(t.metadata.dueDate).startOf("day");w.isBefore(x)&&(y=x.add(1,"day").toDate(),b=w.toDate())}let v;r&&((h=(f=i==null?void 0:i.icsEvent)==null?void 0:f.source)!=null&&h.color)?v=i.icsEvent.source.color:v=t.completed?"grey":void 0,this.events.push({...t,title:t.content,start:b,end:y,allDay:l,color:v})}}),this.events.sort((t,r)=>t.start.getTime()-r.start.getTime()),`${this.events.length}${this.tasks.length}`}invalidateBadgeEventsCache(){this.badgeEventsCache.clear(),this.badgeEventsCacheVersion++}precomputeBadgeEventsForRange(e,t){let r=l=>{let c=l.getFullYear(),u=String(l.getMonth()+1).padStart(2,"0"),p=String(l.getDate()).padStart(2,"0");return`${c}-${u}-${p}`},i=r(e),s=r(t),o=new Date(e);for(;o<=t;){let l=r(o);this.badgeEventsCache.set(l,[]),o.setDate(o.getDate()+1)}this.tasks.forEach(l=>{var m,f,h;let c=((m=l.source)==null?void 0:m.type)==="ics",u=c?l:null,p=((h=(f=u==null?void 0:u.icsEvent)==null?void 0:f.source)==null?void 0:h.showType)==="badge";if(c&&p&&(u!=null&&u.icsEvent)){let g=new Date(u.icsEvent.dtstart),k=new Date(g.getFullYear(),g.getMonth(),g.getDate()),y=r(k);if(this.badgeEventsCache.has(y)){let b={...l,title:l.content,start:u.icsEvent.dtstart,end:u.icsEvent.dtend,allDay:u.icsEvent.allDay,color:u.icsEvent.source.color},v=this.badgeEventsCache.get(y)||[];v.push(b),this.badgeEventsCache.set(y,v)}}}),`${i}${s}${this.badgeEventsCache.size}`}getBadgeEventsForDate(e){let t=e.getFullYear(),r=e.getMonth(),i=e.getDate(),s=new Date(t,r,i),o=`${t}-${String(r+1).padStart(2,"0")}-${String(i).padStart(2,"0")}`;if(this.badgeEventsCache.has(o))return this.badgeEventsCache.get(o)||[];let l=[];return this.tasks.forEach(c=>{var f,h,g;let u=((f=c.source)==null?void 0:f.type)==="ics",p=u?c:null,m=((g=(h=p==null?void 0:p.icsEvent)==null?void 0:h.source)==null?void 0:g.showType)==="badge";if(u&&m&&(p!=null&&p.icsEvent)){let k=new Date(p.icsEvent.dtstart),y=k.getFullYear(),b=k.getMonth(),v=k.getDate();if(y===t&&b===r&&v===i){let w={...c,title:c.content,start:p.icsEvent.dtstart,end:p.icsEvent.dtend,allDay:p.icsEvent.allDay,color:p.icsEvent.source.color,badge:!0};l.push(w)}}}),this.badgeEventsCache.set(o,l),l}precomputeBadgeEventsForCurrentView(){var r,i;if(!this.activeViewComponent)return;let e,t;switch(this.currentViewMode){case"month":let s=this.currentDate.clone().startOf("month"),o=this.currentDate.clone().endOf("month"),l=(r=this.plugin.settings.viewConfiguration.find(k=>k.id===this.viewId))==null?void 0:r.specificConfig,c=(i=l==null?void 0:l.firstDayOfWeek)!=null?i:0,u=s.clone().weekday(c-7),p=o.clone().weekday(c+6);if(p.diff(u,"days")+1<42){let k=42-(p.diff(u,"days")+1);p.add(k,"days")}e=u.toDate(),t=p.toDate();break;case"week":let m=this.currentDate.clone().startOf("week"),f=this.currentDate.clone().endOf("week");e=m.toDate(),t=f.toDate();break;case"day":e=this.currentDate.clone().startOf("day").toDate(),t=this.currentDate.clone().endOf("day").toDate();break;case"year":let h=this.currentDate.clone().startOf("year"),g=this.currentDate.clone().endOf("year");e=h.toDate(),t=g.toDate();break;default:e=this.currentDate.clone().startOf("day").toDate(),t=this.currentDate.clone().add(30,"days").toDate()}this.precomputeBadgeEventsForRange(e,t)}mapIcsPriorityToTaskPriority(e){if(e!==void 0){if(e>=1&&e<=4)return 1;if(e===5)return 3;if(e>=6&&e<=9)return 5}}getViewUnit(){switch(this.currentViewMode){case"year":return"year";case"month":return"month";case"week":return"week";case"day":return"day";case"agenda":return"week";default:return"month"}}getCurrentDateDisplay(){switch(this.currentViewMode){case"year":return this.currentDate.format("YYYY");case"month":return this.currentDate.format("MMMM/YYYY");case"week":let e=this.currentDate.clone().startOf("week"),t=this.currentDate.clone().endOf("week");return e.month()!==t.month()?e.year()!==t.year()?`${e.format("MMM D, YYYY")} - ${t.format("MMM D, YYYY")}`:`${e.format("MMM D")} - ${t.format("MMM D, YYYY")}`:`${e.format("MMM D")} - ${t.format("D, YYYY")}`;case"day":return this.currentDate.format("dddd, MMMM D, YYYY");case"agenda":let r=this.currentDate.clone().add(6,"days");return`${this.currentDate.format("MMM D")} - ${r.format("MMM D, YYYY")}`;default:return this.currentDate.format("MMMM YYYY")}}get currentViewComponent(){return this.activeViewComponent}};var ko=require("obsidian");var Oy=require("obsidian");var lH=require("obsidian");var Xm=class extends lH.Component{constructor(e,t,r,i,s={}){super();this.app=e;this.containerEl=r;this.params=s;this.plugin=t,this.task=i}onload(){this.element=this.containerEl.createDiv({cls:"tg-kanban-card",attr:{"data-task-id":this.task.id}}),this.task.completed&&this.element.classList.add("task-completed");let e=this.task.metadata||{};if(e.priority){let t=rr(e.priority);t&&this.element.classList.add(`priority-${t}`)}this.element.createDiv({cls:"tg-kanban-card-container"},t=>{var i,s;let r=Pt(this.task.status,this.task,t);this.registerDomEvent(r,"click",o=>{var l;o.stopPropagation(),(l=this.params)!=null&&l.onTaskCompleted&&this.params.onTaskCompleted(this.task),this.task.status===" "&&(r.checked=!0,r.dataset.task="x")}),(s=(i=this.plugin.settings.viewConfiguration.find(o=>o.id==="kanban"))==null?void 0:i.specificConfig)!=null&&s.showCheckbox?r.show():r.hide(),this.contentEl=t.createDiv("tg-kanban-card-content")}),this.renderMarkdown(),this.metadataEl=this.element.createDiv({cls:"tg-kanban-card-metadata"}),this.renderMetadata(),this.registerDomEvent(this.element,"contextmenu",t=>{var r,i;(i=(r=this.params).onTaskContextMenu)==null||i.call(r,t,this.task)})}onunload(){var e;(e=this.element)==null||e.remove()}renderMarkdown(){this.contentEl.empty(),this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.markdownRenderer=new Lt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.content||this.task.originalMarkdown)}renderMetadata(){this.metadataEl.empty();let e=this.task.metadata||{};this.task.completed?e.completedDate&&this.renderCompletionDate():e.dueDate&&this.renderDueDate(),Vt(this.task)&&this.renderProject(),e.tags&&e.tags.length>0&&this.renderTags(),e.priority&&this.renderPriority()}renderDueDate(){let e=this.metadataEl.createEl("div",{cls:["task-date","task-due-date"]}),t=this.task.metadata||{},r=new Date(t.dueDate||""),i=new Date;i.setHours(0,0,0,0);let s=new Date(i);s.setDate(s.getDate()+1);let o="";r.getTime(){i.stopPropagation(),this.params.onFilterApply&&e&&this.params.onFilterApply("project",e)})}renderTags(){let e=this.metadataEl.createEl("div",{cls:"task-tags-container"});((this.task.metadata||{}).tags||[]).forEach(r=>{if(typeof r!="string")return;let i=e.createEl("span",{cls:["task-tag","clickable-metadata"],text:r.startsWith("#")?r:`#${r}`}),s=r.replace("#","");i.setAttribute("data-tag-name",s),this.applyTagColor(i,s),this.registerDomEvent(i,"click",o=>{o.stopPropagation(),this.params.onFilterApply&&this.params.onFilterApply("tag",r)})})}renderPriority(){let e=this.task.metadata||{},t=rr(e.priority),r=["task-priority","clickable-metadata"];t&&r.push(`priority-${t}`);let i=this.metadataEl.createDiv({cls:r});i.textContent=`${"!".repeat(e.priority||0)}`,i.setAttribute("aria-label",`Priority ${e.priority}`),this.registerDomEvent(i,"click",s=>{if(s.stopPropagation(),this.params.onFilterApply&&e.priority){let o=this.getPriorityIcon(e.priority);this.params.onFilterApply("priority",o)}})}getPriorityIcon(e){return{5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"}[e]||e.toString()}applyTagColor(e,t){let r=this.app.plugins.plugins["colored-tags"];if(r&&r.settings){let o=r.settings.tags;if(o&&o[t]){let l=o[t];e.style.setProperty("--tag-color",l),e.classList.add("colored-tag")}}let s=getComputedStyle(document.body).getPropertyValue(`--tag-color-${t}`);s&&(e.style.setProperty("--tag-color",s),e.classList.add("colored-tag"))}getTask(){return this.task}updateTask(e){var s,o;let t=this.task;this.task=e;let r=t.metadata||{},i=e.metadata||{};if(t.completed!==e.completed&&this.element.classList.toggle("task-completed",e.completed),r.priority!==i.priority){if(r.priority){let l=rr(r.priority);l&&this.element.classList.remove(`priority-${l}`)}if(i.priority){let l=rr(i.priority);l&&this.element.classList.add(`priority-${l}`)}}(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&this.renderMarkdown(),(r.dueDate!==i.dueDate||r.completedDate!==i.completedDate||((s=r.tags)==null?void 0:s.join(","))!==((o=i.tags)==null?void 0:o.join(","))||r.priority!==i.priority||r.project!==i.project)&&this.renderMetadata()}};q();var WG=20,Jm=class extends Oy.Component{constructor(e,t,r,i,s,o){super();this.app=e;this.plugin=t;this.containerEl=r;this.statusName=i;this.tasks=s;this.params=o;this.cards=[];this.renderedTaskCount=0;this.isLoadingMore=!1;this.observer=null;this.sentinelEl=null}onload(){var o;this.element=this.containerEl.createDiv({cls:"tg-kanban-column",attr:{"data-status-name":this.statusName}}),this.tasks.length===0&&this.element.classList.add("tg-kanban-column-empty"),this.headerEl=this.element.createEl("div",{cls:"tg-kanban-column-header"});let e=this.headerEl.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"}),t=this.plugin.settings.taskStatusMarks[this.statusName]||" ";e.dataset.task=t;let r=(((o=this.plugin.settings.taskStatuses)==null?void 0:o.completed)||"x|X").split("|");e.checked=r.includes(t),this.registerDomEvent(e,"click",l=>{l.stopPropagation(),l.preventDefault()}),this.titleEl=this.headerEl.createEl("span",{cls:"tg-kanban-column-title",text:this.statusName}),this.countEl=this.headerEl.createEl("span",{cls:"tg-kanban-column-count",text:`(${this.tasks.length})`}),this.contentEl=this.element.createDiv({cls:"tg-kanban-column-content"}),this.sentinelEl=this.contentEl.createDiv({cls:"tg-kanban-sentinel"});let s=this.element.createDiv({cls:"tg-kanban-add-card-container"}).createEl("button",{cls:"tg-kanban-add-card-button"},l=>{l.createEl("span",{},c=>{(0,Oy.setIcon)(c,"plus")}),l.createEl("span",{text:d("Add Card")})});this.registerDomEvent(s,"click",()=>{let l=this.plugin.settings.taskStatusMarks[this.statusName]||this.statusName||" ";new ya(this.app,this.plugin,{status:l},!0).open()}),this.setupIntersectionObserver(),this.loadMoreCards()}onunload(){var e,t,r;(e=this.observer)==null||e.disconnect(),(t=this.sentinelEl)==null||t.remove(),this.cards.forEach(i=>i.unload()),this.cards=[],(r=this.element)==null||r.remove()}loadMoreCards(){var i;if(this.isLoadingMore||this.renderedTaskCount>=this.tasks.length)return;this.isLoadingMore=!0;let e=this.renderedTaskCount,t=Math.min(e+WG,this.tasks.length),r=!1;for(let s=e;s=this.tasks.length&&this.sentinelEl&&((i=this.observer)==null||i.unobserve(this.sentinelEl),this.sentinelEl.hide())}addCard(e){let t=new Xm(this.app,this.plugin,this.contentEl,e,this.params);this.addChild(t),this.cards.push(t),t.load()}removeCard(e){let t=this.cards.findIndex(r=>r.getTask().id===e);if(t>-1){let r=this.cards[t];this.removeChild(r),r.unload(),this.cards.splice(t,1)}}updateTasks(e){this.tasks=e,this.countEl.textContent=`(${this.tasks.length})`,this.tasks.length===0?this.element.classList.add("tg-kanban-column-empty"):this.element.classList.remove("tg-kanban-column-empty"),this.cards.forEach(t=>{this.removeChild(t),t.unload()}),this.cards=[],this.renderedTaskCount=0,this.loadMoreCards()}getContentElement(){return this.contentEl}getTaskCount(){return this.tasks.length}isEmpty(){return this.tasks.length===0}setVisible(e){e?(this.element.style.display="",this.element.classList.remove("tg-kanban-column-hidden")):(this.element.style.display="none",this.element.classList.add("tg-kanban-column-hidden"))}setupIntersectionObserver(){if(!this.sentinelEl)return;let e={root:this.contentEl,rootMargin:"0px",threshold:.1};this.observer=new IntersectionObserver(t=>{t.forEach(r=>{r.isIntersecting&&!this.isLoadingMore&&this.loadMoreCards()})},e),this.observer.observe(this.sentinelEl)}};q();var Hy=require("obsidian");var Al=require("obsidian");q();var Ny=class extends Al.Component{constructor(e,t){super();this.plugin=t;this.currentCategory=null;this.options=e.options,this.anchorElement=e.anchorElement,this.onSelect=e.onSelect,this.onClose=e.onClose}onload(){this.element=this.createDropdownElement(),this.searchInput=this.element.querySelector(".filter-dropdown-search"),this.listContainer=this.element.querySelector(".filter-dropdown-list"),this.renderCategoryList(),this.setupEventListeners(),document.body.appendChild(this.element),setTimeout(()=>{this.element.classList.add("filter-dropdown-visible"),this.positionDropdown()},10),setTimeout(()=>{this.searchInput.focus()},50)}onunload(){this.element.classList.remove("filter-dropdown-visible"),setTimeout(()=>{this.element.remove()},150)}createDropdownElement(){let e=createEl("div",{cls:"filter-dropdown"});return e.createEl("div",{cls:"filter-dropdown-header"}).createEl("input",{type:"text",cls:"filter-dropdown-search",attr:{placeholder:"Filter..."}}),e.createEl("div",{cls:"filter-dropdown-list"}),e}positionDropdown(){let e=this.anchorElement.getBoundingClientRect(),{innerHeight:t,innerWidth:r}=window;this.element.style.visibility="hidden",this.element.style.display="flex";let i=this.element.offsetHeight,s=this.element.offsetWidth;this.element.style.display="",this.element.style.visibility="";let o=e.bottom+8,l=e.left;o+i>t-16&&(o=e.top-i-8),o<16&&(o=16),l+s>r-16&&(l=r-s-16),l<16&&(l=16),this.element.style.top=`${o}px`,this.element.style.left=`${l}px`}renderCategoryList(){this.listContainer.empty(),this.searchInput.placeholder="Filter categories...",this.searchInput.value="",this.options.forEach(e=>{let t=this.createListItem(e.label,()=>this.showCategoryValues(e),!0,!1,!1,e.id);this.listContainer.appendChild(t)}),this.positionDropdown()}showCategoryValues(e){this.currentCategory=e,this.searchInput.value="",this.searchInput.placeholder=`Filter ${e.label.toLowerCase()}...`,this.listContainer.empty();let t=this.createListItem(d("Back to categories"),()=>{this.currentCategory=null,this.renderCategoryList()},!1,!0);this.listContainer.appendChild(t),this.listContainer.createEl("div",{cls:"filter-dropdown-separator"}),this.renderFilterValues(e.options),this.positionDropdown(),this.searchInput.focus()}renderFilterValues(e,t=""){this.listContainer.querySelectorAll(".filter-dropdown-value-item, .filter-dropdown-empty").forEach(s=>s.remove());let i=t?e.filter(s=>s.toLowerCase().includes(t.toLowerCase())):e;i.length===0?this.listContainer.createEl("div",{cls:"filter-dropdown-empty",text:d("No matching options found")}):i.forEach(s=>{let o=this.createListItem(s,()=>{this.currentCategory&&this.onSelect(this.currentCategory.id,s)},!1,!1,!0);this.listContainer.appendChild(o)}),this.positionDropdown()}createListItem(e,t,r=!1,i=!1,s=!1,o=""){let l=createEl("div",{cls:"filter-dropdown-item"});if(i&&l.classList.add("filter-dropdown-back"),s&&l.classList.add("filter-dropdown-value-item"),l.setAttr("tabindex",0),i){let c=l.createEl("span",{cls:"filter-dropdown-item-arrow back"});(0,Al.setIcon)(c,"chevron-left")}if(l.createEl("span",{cls:"filter-dropdown-item-label",text:e}),r){let c=l.createEl("span",{cls:"filter-dropdown-item-arrow"});(0,Al.setIcon)(c,"chevron-right")}return this.registerDomEvent(l,"click",t),this.registerDomEvent(l,"keydown",c=>{c.key==="Enter"&&(c.preventDefault(),t())}),l}setupEventListeners(){let e=(0,Al.debounce)(()=>{let t=this.searchInput.value.trim();this.currentCategory?this.renderFilterValues(this.currentCategory.options,t):this.filterCategoryList(t)},150,!1);this.registerDomEvent(this.searchInput,"input",e),this.registerDomEvent(document,"click",t=>{t.composedPath().includes(this.element)||this.onClose()}),this.registerDomEvent(this.element,"keydown",t=>{if(t.key==="Escape")t.stopPropagation(),this.onClose();else if(t.key==="ArrowDown"||t.key==="ArrowUp")t.preventDefault(),t.key==="ArrowDown"&&document.activeElement===this.searchInput?this.focusFirstItem():this.navigateItems(t.key==="ArrowDown");else if(t.key==="Enter"&&document.activeElement===this.searchInput)this.selectFirstVisibleItem();else if(t.key==="Backspace"&&this.searchInput.value===""&&this.currentCategory){let r=this.listContainer.querySelector(".filter-dropdown-back");r==null||r.click()}})}filterCategoryList(e){this.listContainer.empty();let t=e.toLowerCase(),r=this.options.filter(i=>i.label.toLowerCase().includes(t)||i.options.some(s=>s.toLowerCase().includes(t)));r.length===0?this.listContainer.createEl("div",{cls:"filter-dropdown-empty",text:d("No matching filters found")}):r.forEach(i=>{let s=i.options.filter(l=>l.toLowerCase().includes(t)),o=this.listContainer.createEl("div",{cls:"filter-dropdown-item-container"});if(s.length>0&&e)o.createEl("div",{cls:"filter-dropdown-category-header",text:i.label}),s.forEach(l=>{let c=o.createEl("div",{cls:"filter-dropdown-value-preview",text:l,attr:{tabindex:0,"data-category":i.id,"data-value":l}});this.registerDomEvent(c,"click",u=>{u.stopPropagation(),this.onSelect(i.id,l)}),this.registerDomEvent(c,"keydown",u=>{u.key==="Enter"&&(u.preventDefault(),this.onSelect(i.id,l))})});else{let l=this.createListItem(i.label,()=>this.showCategoryValues(i),!0);o.appendChild(l)}}),this.positionDropdown()}getVisibleFocusableItems(){return Array.from(this.listContainer.querySelectorAll(".filter-dropdown-item, .filter-dropdown-value-preview")).filter(e=>e.offsetParent!==null&&window.getComputedStyle(e).visibility!=="hidden"&&window.getComputedStyle(e).display!=="none")}focusFirstItem(){var t;(t=this.getVisibleFocusableItems()[0])==null||t.focus()}selectFirstVisibleItem(){var t;(t=this.getVisibleFocusableItems()[0])==null||t.click()}navigateItems(e){var o;let t=this.getVisibleFocusableItems();if(t.length===0)return;let r=document.activeElement,i=-1;r&&t.includes(r)?i=t.findIndex(l=>l===r):r===this.searchInput&&(i=e?-1:t.length);let s;e?s=i>=t.length-1?0:i+1:s=i<=0?t.length-1:i-1,s>=0&&s{new jy.ExtraButtonComponent(t).setIcon("x").onClick(()=>{this.removePill()})}),a}removePill(){this.element.classList.add("filter-pill-removing"),setTimeout(()=>{this.onRemove(this.filter.id)},150)}};q();function Zm(n){let a=new Set,e=new Set,t=new Set,r=new Set,i=new Set,s=new Set;n.forEach(k=>{k.status&&a.add(k.status),k.metadata.tags.forEach(y=>{typeof y=="string"&&e.add(y)}),k.metadata.project&&t.add(k.metadata.project),k.metadata.context&&r.add(k.metadata.context),k.metadata.priority!==void 0&&i.add(k.metadata.priority),k.filePath&&s.add(k.filePath)});let o=Array.from(a).sort(),l=Array.from(e).sort(),c=Array.from(t).sort(),u=Array.from(r).sort(),p={},m={5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"};for(let k in ed){let y=ed[k];(k===m[y]||!p[y])&&(p[y]=k)}for(let k in m)p[k]||(p[k]=m[k]);let f=Array.from(i).sort((k,y)=>y-k).map(k=>p[k]||k.toString()).filter(k=>!!k),h=Array.from(s).sort();return[{id:"status",label:d("Status"),options:o},{id:"tag",label:d("Tag"),options:l},{id:"project",label:d("Project"),options:c},{id:"context",label:d("Context"),options:u},{id:"priority",label:d("Priority"),options:f},{id:"completed",label:d("Completed"),options:["Yes","No"]},{id:"filePath",label:d("File Path"),options:h}]}var dc=class extends Hy.Component{constructor(e,t){super();this.params=e;this.plugin=t;this.activeFilters=[];this.filterPills=new Map;this.dropdown=null;this.container=e.container,this.options=e.options||[],this.onChange=e.onChange||(()=>{})}onload(){this.render(),this.setupEventListeners(),this.loadInitialFilters()}onunload(){this.container.empty(),this.filterPills.clear(),this.activeFilters=[]}render(){this.container.empty();let e=this.container.createDiv({cls:"filter-component"});this.filtersContainer=e.createDiv({cls:"filter-pills-container"}),this.controlsContainer=e.createDiv({cls:"filter-controls"}),this.addFilterButton=this.controlsContainer.createEl("button",{cls:"filter-add-button"},t=>{let r=t.createEl("span",{cls:"filter-add-icon"});(0,Hy.setIcon)(r,"plus");let i=t.createEl("span",{text:d("Add filter")})}),this.clearAllButton=this.controlsContainer.createEl("button",{cls:"filter-clear-all-button mod-destructive",text:d("Clear all")}),this.clearAllButton.hide(),this.updateClearAllButton();for(let t of this.params.components||[])this.addChild(t)}setupEventListeners(){this.registerDomEvent(this.addFilterButton,"click",e=>{e.stopPropagation(),this.showFilterDropdown()}),this.registerDomEvent(this.clearAllButton,"click",()=>{this.clearAllFilters()})}showFilterDropdown(){this.hideFilterDropdown();let e=this.options.filter(t=>t.options.length>0&&!this.activeFilters.some(r=>r.category===t.id));e.length!==0&&(this.dropdown=new Ny({options:e,anchorElement:this.addFilterButton,onSelect:(t,r)=>{this.addFilter(t,r),this.hideFilterDropdown()},onClose:()=>{this.hideFilterDropdown()}},this.plugin),this.addChild(this.dropdown))}hideFilterDropdown(){this.dropdown&&(this.removeChild(this.dropdown),this.dropdown=null)}addFilter(e,t){let r=this.options.find(l=>l.id===e);if(!r)return;let i=`filter-${e}-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,s={id:i,category:e,categoryLabel:r.label,value:t};this.activeFilters.push(s);let o=new Ly({filter:s,onRemove:l=>{this.removeFilter(l)}});this.filterPills.set(i,o),this.addChild(o),this.filtersContainer.appendChild(o.element),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}removeFilter(e){let t=this.activeFilters.findIndex(i=>i.id===e);if(t===-1)return;this.activeFilters.splice(t,1);let r=this.filterPills.get(e);r&&(r.element.remove(),this.removeChild(r),this.filterPills.delete(e)),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}clearAllFilters(){this.filterPills.forEach(e=>{e.element.remove(),this.removeChild(e)}),this.filterPills.clear(),this.activeFilters=[],this.filtersContainer.empty(),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}updateClearAllButton(){this.clearAllButton&&(this.activeFilters.length>0?this.clearAllButton.show():this.clearAllButton.hide())}loadInitialFilters(){let e=[...this.activeFilters];this.clearAllFilters(),e.forEach(t=>{if(this.options.some(i=>i.id===t.category)){let i=this.options.find(s=>s.id===t.category);i!=null&&i.options.includes(t.value)?this.addFilter(t.category,t.value):console.warn(`Initial filter value "${t.value}" no longer exists for category "${t.category}". Skipping.`)}else console.warn(`Initial filter category "${t.category}" no longer exists. Skipping filter for value "${t.value}".`)})}updateFilterOptions(e){this.options=Zm(e)}getActiveFilters(){return JSON.parse(JSON.stringify(this.activeFilters))}setFilters(e){this.clearAllFilters(),e.forEach(t=>{let r=this.options.find(i=>i.id===t.category);r&&r.options.includes(t.value)?this.addFilter(t.category,t.value):console.warn(r?`Filter value "${t.value}" not found in options for category "${t.category}".`:`Filter category "${t.category}" not found in options.`)}),this._loaded&&(this.updateClearAllButton(),this.onChange(this.getActiveFilters()))}};var Hn=class extends ko.Component{constructor(e,t,r,i=[],s={},o="kanban"){super();this.columns=[];this.sortableInstances=[];this.columnSortableInstance=null;this.tasks=[];this.allTasks=[];this.currentViewId="kanban";this.columnOrder=[];this.filterComponent=null;this.activeFilters=[];this.sortOption={field:"priority",order:"desc",label:"Priority (High to Low)"};this.hideEmptyColumns=!1;this.handleFilterApply=(e,t)=>{let r=Array.isArray(t)?t[0]:t.toString();e==="priority"&&/^\d+$/.test(r)&&(r=this.convertPriorityToIcon(parseInt(r)));let i={id:`${e}-${r}`,category:e,categoryLabel:this.getCategoryLabel(e),value:r},s=this.activeFilters.findIndex(o=>o.category===e&&o.value===r);s===-1?this.activeFilters.push(i):this.activeFilters.splice(s,1),this.filterComponent&&this.filterComponent.setFilters(this.activeFilters.map(o=>({category:o.category,value:o.value}))),this.applyFiltersAndRender()};this.app=e,this.plugin=t,this.currentViewId=o,this.containerEl=r.createDiv("tg-kanban-component-container"),this.tasks=i,this.params=s}onload(){super.onload(),this.containerEl.empty(),this.containerEl.addClass("tg-kanban-view"),this.loadKanbanConfig(),this.filterContainerEl=this.containerEl.createDiv({cls:"tg-kanban-filters"}),this.renderFilterControls(this.filterContainerEl),this.renderControls(this.filterContainerEl),this.columnContainerEl=this.containerEl.createDiv({cls:"tg-kanban-column-container"}),this.renderColumns()}onunload(){super.onunload(),this.columns.forEach(e=>e.unload()),this.sortableInstances.forEach(e=>e.destroy()),this.columnSortableInstance&&(this.columnSortableInstance.destroy(),this.columnSortableInstance=null),this.columns=[],this.containerEl.empty()}renderControls(e){let i=e.createDiv({cls:"tg-kanban-controls-container"}).createDiv({cls:"tg-kanban-sort-container"}).createEl("button",{cls:"tg-kanban-sort-button clickable-icon"},s=>{(0,ko.setIcon)(s,"arrow-up-down")});this.registerDomEvent(i,"click",s=>{let o=new ko.Menu;[{field:"priority",order:"desc",label:d("Priority (High to Low)")},{field:"priority",order:"asc",label:d("Priority (Low to High)")},{field:"dueDate",order:"asc",label:d("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:d("Due Date (Latest First)")},{field:"scheduledDate",order:"asc",label:d("Scheduled Date (Earliest First)")},{field:"scheduledDate",order:"desc",label:d("Scheduled Date (Latest First)")},{field:"startDate",order:"asc",label:d("Start Date (Earliest First)")},{field:"startDate",order:"desc",label:d("Start Date (Latest First)")}].forEach(c=>{o.addItem(u=>{u.setTitle(c.label).setChecked(c.field===this.sortOption.field&&c.order===this.sortOption.order).onClick(()=>{this.sortOption=c,this.renderColumns()})})}),o.showAtMouseEvent(s)})}renderFilterControls(e){let t=Zm(this.allTasks);this.filterComponent=new dc({container:e,options:t,onChange:r=>{this.columnContainerEl&&(this.activeFilters=r,this.applyFiltersAndRender())}},this.plugin),this.addChild(this.filterComponent)}setTasks(e){e.length,this.allTasks=[...e],this.filterComponent,this.filterComponent?this.filterComponent.updateFilterOptions(this.allTasks):console.warn("Filter component not initialized when setting tasks."),this.applyFiltersAndRender()}applyFiltersAndRender(){if(this.activeFilters,this.activeFilters.length===0)this.tasks=[...this.allTasks];else{let e={"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1,highest:5,high:4,medium:3,low:2,lowest:1,1:1,2:2,3:3,4:4,5:5};this.tasks=this.allTasks.filter(t=>this.activeFilters.every(r=>{switch(r.category){case"status":return t.status===r.value;case"tag":return this.matchesTagFilter(t,r.value);case"project":return t.metadata.project===r.value;case"context":return t.metadata.context===r.value;case"priority":let i=e[r.value]||parseInt(r.value);return t.metadata.priority===i;case"completed":return r.value==="Yes"&&t.completed||r.value==="No"&&!t.completed;case"filePath":return t.filePath===r.value;default:return console.warn(`Unknown filter category in Kanban: ${r.category}`),!0}}))}this.tasks.length,this.renderColumns()}matchesTagFilter(e,t){return!e.metadata.tags||e.metadata.tags.length===0?!1:e.metadata.tags.some(r=>{if(typeof r!="string")return!1;if(r===t)return!0;let i=t.startsWith("#")?t:`#${t}`;return(r.startsWith("#")?r:`#${r}`).startsWith(i+"/")})}convertPriorityToIcon(e){return{5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"}[e]||e.toString()}getCategoryLabel(e){switch(e){case"tag":return d("Tag");case"project":return d("Project");case"priority":return d("Priority");case"status":return d("Status");case"context":return d("Context");default:return e}}renderColumns(){var r,i;(r=this.columnContainerEl)==null||r.empty(),this.columns.forEach(s=>this.removeChild(s)),this.columns=[];let e=(i=this.plugin.settings.viewConfiguration.find(s=>s.id===this.currentViewId))==null?void 0:i.specificConfig,t=(e==null?void 0:e.groupBy)||"status";t==="status"?this.renderStatusColumns():this.renderCustomColumns(t,e==null?void 0:e.customColumns),this.updateColumnVisibility(),this.initializeSortableInstances(),this.initializeColumnSortable()}renderStatusColumns(){let e=this.plugin.settings.taskStatusCycle,t=e.length>0?e:["Todo","In Progress","Done"],r=[],i=[],s=[];t.forEach(u=>{var m;let p=(m=this.resolveStatusMark(u))!=null?m:" ";this.plugin.settings.excludeMarksFromCycle&&this.plugin.settings.excludeMarksFromCycle.includes(u)||(p===" "?r.push(u):p.toLowerCase()==="x"?i.push(u):s.push(u))}),t=[...r,...s,...i];let o=t.map(u=>({title:u}));this.applyColumnOrder(o).map(u=>u.title).forEach(u=>{let p=this.getTasksForStatus(u),m=new Jm(this.app,this.plugin,this.columnContainerEl,u,p,{...this.params,onTaskStatusUpdate:(f,h)=>this.handleStatusUpdate(f,h),onFilterApply:this.handleFilterApply});this.addChild(m),this.columns.push(m)})}renderCustomColumns(e,t){let r=[];t&&t.length>0?r=t.sort((s,o)=>s.order-o.order).map(s=>({title:s.title,value:s.value,id:s.id})):r=this.generateDefaultColumns(e),this.applyColumnOrder(r).forEach(s=>{let o=this.getTasksForProperty(e,s.value),l=new Jm(this.app,this.plugin,this.columnContainerEl,s.title,o,{...this.params,onTaskStatusUpdate:(c,u)=>this.handlePropertyUpdate(c,e,s.value,u),onFilterApply:this.handleFilterApply});this.addChild(l),this.columns.push(l)})}generateDefaultColumns(e){switch(e){case"priority":return[{title:"\u{1F53A} Highest",value:5,id:"priority-5"},{title:"\u23EB High",value:4,id:"priority-4"},{title:"\u{1F53C} Medium",value:3,id:"priority-3"},{title:"\u{1F53D} Low",value:2,id:"priority-2"},{title:"\u23EC Lowest",value:1,id:"priority-1"},{title:"No Priority",value:null,id:"priority-none"}];case"tags":let t=new Set;this.tasks.forEach(u=>{let p=u.metadata||{};p.tags&&p.tags.forEach(m=>{typeof m=="string"&&t.add(m)})});let r=Array.from(t).map(u=>({title:`${u}`,value:u,id:`tag-${u}`}));return r.unshift({title:"No Tags",value:"",id:"tag-none"}),r;case"project":let i=new Set;this.tasks.forEach(u=>{let p=Vt(u);p&&i.add(p)});let s=Array.from(i).map(u=>({title:u,value:u,id:`project-${u}`}));return s.push({title:"No Project",value:"",id:"project-none"}),s;case"context":let o=new Set;this.tasks.forEach(u=>{let p=u.metadata||{};p.context&&o.add(p.context)});let l=Array.from(o).map(u=>({title:`@${u}`,value:u,id:`context-${u}`}));return l.push({title:"No Context",value:"",id:"context-none"}),l;case"dueDate":case"scheduledDate":case"startDate":return[{title:"Overdue",value:"overdue",id:`${e}-overdue`},{title:"Today",value:"today",id:`${e}-today`},{title:"Tomorrow",value:"tomorrow",id:`${e}-tomorrow`},{title:"This Week",value:"thisWeek",id:`${e}-thisWeek`},{title:"Next Week",value:"nextWeek",id:`${e}-nextWeek`},{title:"Later",value:"later",id:`${e}-later`},{title:"No Date",value:null,id:`${e}-none`}];case"filePath":let c=new Set;return this.tasks.forEach(u=>{u.filePath&&c.add(u.filePath)}),Array.from(c).map(u=>({title:u.split("/").pop()||u,value:u,id:`path-${u.replace(/[^a-zA-Z0-9]/g,"-")}`}));default:return[{title:"All Tasks",value:null,id:"all"}]}}updateColumnVisibility(){this.columns.forEach(e=>{this.hideEmptyColumns&&e.isEmpty()?e.setVisible(!1):e.setVisible(!0)})}getTasksForStatus(e){var i;let t=(i=this.resolveStatusMark(e))!=null?i:" ",r=this.tasks.filter(s=>(s.status||" ")===t);return r.sort((s,o)=>this.compareTasks(s,o,this.sortOption)),r}compareTasks(e,t,r){var u,p,m,f,h,g,k,y,b,v;let{field:i,order:s}=r,o=0,l=e.metadata||{},c=t.metadata||{};switch(i){case"priority":let w=(u=l.priority)!=null?u:0,x=(p=c.priority)!=null?p:0;o=w-x;break;case"dueDate":let T=(m=l.dueDate)!=null?m:Number.MAX_SAFE_INTEGER,C=(f=c.dueDate)!=null?f:Number.MAX_SAFE_INTEGER;o=T-C;break;case"scheduledDate":let S=(h=l.scheduledDate)!=null?h:Number.MAX_SAFE_INTEGER,E=(g=c.scheduledDate)!=null?g:Number.MAX_SAFE_INTEGER;o=S-E;break;case"startDate":let A=(k=l.startDate)!=null?k:Number.MAX_SAFE_INTEGER,N=(y=c.startDate)!=null?y:Number.MAX_SAFE_INTEGER;o=A-N;break;case"createdDate":let I=(b=l.createdDate)!=null?b:Number.MAX_SAFE_INTEGER,R=(v=c.createdDate)!=null?v:Number.MAX_SAFE_INTEGER;o=I-R;break}return s==="desc"?-o:o}initializeSortableInstances(){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[];let e=!ko.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0;this.columns.forEach(t=>{let r=t.getContentElement(),i=Lr.create(r,{group:"kanban-group",animation:150,ghostClass:"tg-kanban-card-ghost",dragClass:"tg-kanban-card-dragging",delay:e?150:0,touchStartThreshold:e?5:3,forceFallback:!1,fallbackOnBody:!0,scroll:!0,scrollSensitivity:e?50:30,scrollSpeed:e?15:10,bubbleScroll:!0,onEnd:s=>{this.handleSortEnd(s)}});this.sortableInstances.push(i)})}async handleSortEnd(e){var s,o,l,c;e.oldIndex,e.newIndex;let t=e.item.dataset.taskId,r=e.to,i=e.from;if(t&&r){let u=r.closest(".tg-kanban-column"),p=u?(s=u.querySelector(".tg-kanban-column-title"))==null?void 0:s.textContent:null,m=i.closest(".tg-kanban-column"),f=m?(o=m.querySelector(".tg-kanban-column-title"))==null?void 0:o.textContent:null;if(p&&f){let h=(l=this.plugin.settings.viewConfiguration.find(y=>y.id===this.currentViewId))==null?void 0:l.specificConfig,g=(h==null?void 0:h.groupBy)||"status";if(g==="status"){let y=this.resolveStatusMark((p||"").trim());y!==void 0?(`${t}${p}${y}`,await this.handleStatusUpdate(t,y)):console.warn(`Could not find status mark for status name: ${p}`)}else{let y=this.getColumnValueFromTitle(p,g,h==null?void 0:h.customColumns),b=this.getColumnValueFromTitle(f,g,h==null?void 0:h.customColumns);`${g}${t}${b}${y}`,await this.handlePropertyUpdate(t,g,b,y)}let k=this.allTasks.find(y=>y.id===t)||this.tasks.find(y=>y.id===t);k&&((c=this.params)!=null&&c.onTaskSelected)&&this.params.onTaskSelected(k)}}}loadKanbanConfig(){var t;let e=(t=this.plugin.settings.viewConfiguration.find(r=>r.id===this.currentViewId))==null?void 0:t.specificConfig;e&&(this.hideEmptyColumns=e.hideEmptyColumns||!1,this.sortOption={field:e.defaultSortField||"priority",order:e.defaultSortOrder||"desc",label:this.getSortOptionLabel(e.defaultSortField||"priority",e.defaultSortOrder||"desc")}),this.loadColumnOrder()}getSortOptionLabel(e,t){let r={priority:d("Priority"),dueDate:d("Due Date"),scheduledDate:d("Scheduled Date"),startDate:d("Start Date"),createdDate:d("Created Date")},i=t==="asc"?d("Ascending"):d("Descending");return`${r[e]} (${i})`}resolveStatusMark(e){if(!e)return;let t=e.trim();if(t.length===1)return t;let r=this.plugin.settings.taskStatusMarks[t];if(typeof r=="string")return r;for(let[i,s]of Object.entries(this.plugin.settings.taskStatusMarks))if(i.toLowerCase()===t.toLowerCase())return s}getColumnContainer(){return this.columnContainerEl}async handleStatusUpdate(e,t){if(this.params.onTaskStatusUpdate)try{await this.params.onTaskStatusUpdate(e,t)}catch(r){console.error("Failed to update task status:",r)}}async handlePropertyUpdate(e,t,r,i){if(t==="status"){await this.handleStatusUpdate(e,i);return}let s=this.allTasks.find(l=>l.id===e);if(!s){console.warn(`Task with ID ${e} not found for property update`);return}s.metadata=s.metadata||{};let o={...s};switch(t){case"priority":o.metadata.priority=i===null||i===""?void 0:Number(i);break;case"tags":if(i===null||i==="")o.metadata.tags=[];else{let c=o.metadata.tags||[];if(r&&r!==""&&r!==i){let m=[r,`#${r}`,r.startsWith("#")?r.substring(1):r];c=c.filter(f=>!m.includes(f))}let u=[i,`#${i}`,i.startsWith("#")?i.substring(1):i];if(!c.some(m=>u.includes(m))){let m=c.length>0&&c[0].startsWith("#")?i.startsWith("#")?i:`#${i}`:i.startsWith("#")?i.substring(1):i;c.push(m)}o.metadata.tags=c}break;case"project":ci(s)||(o.metadata.project=i===null||i===""?void 0:i);break;case"context":o.metadata.context=i===null||i===""?void 0:i;break;case"dueDate":case"scheduledDate":case"startDate":let l=this.convertDateCategoryToTimestamp(i);t==="dueDate"?o.metadata.dueDate=l:t==="scheduledDate"?o.metadata.scheduledDate=l:t==="startDate"&&(o.metadata.startDate=l);break;default:console.warn(`Unsupported property type for update: ${t}`);return}try{if(`${e}${t}`,this.plugin.writeAPI){let l=await this.plugin.writeAPI.updateTask({taskId:e,updates:o});l.success||console.error(`Failed to update task ${e} property ${t}:`,l.error)}else console.error("WriteAPI not available")}catch(l){console.error(`Failed to update task ${e} property ${t}:`,l)}}getTasksForProperty(e,t){let r=this.tasks.filter(i=>{let s=i.metadata||{};switch(e){case"priority":return t===null||t===""?!s.priority:s.priority===t;case"tags":return t===null||t===""?!s.tags||s.tags.length===0:s.tags&&s.tags.some(o=>typeof o=="string"&&o===t);case"project":return t===null||t===""?!Vt(i):Vt(i)===t;case"context":return t===null||t===""?!s.context:s.context===t;case"dueDate":case"scheduledDate":case"startDate":return this.matchesDateCategory(i,e,t);case"filePath":return i.filePath===t;default:return!0}});return r.sort((i,s)=>this.compareTasks(i,s,this.sortOption)),r}matchesDateCategory(e,t,r){let i=new Date,s=new Date(i.getFullYear(),i.getMonth(),i.getDate()),o=new Date(s.getTime()+1440*60*1e3),l=new Date(s.getTime()+10080*60*1e3),c=new Date(s.getTime()+336*60*60*1e3),u=e.metadata||{},p;switch(t){case"dueDate":p=u.dueDate;break;case"scheduledDate":p=u.scheduledDate;break;case"startDate":p=u.startDate;break}if(!p)return r==="none"||r===null||r==="";let m=new Date(p);switch(r){case"overdue":return m=s&&m=o&&m=o&&m=l&&m=c;case"none":case null:case"":return!1;default:return!1}}getColumnValueFromTitle(e,t,r){if(r&&r.length>0){let i=r.find(s=>s.title===e);return i?i.value:null}switch(t){case"priority":if(e.includes("Highest"))return 5;if(e.includes("High"))return 4;if(e.includes("Medium"))return 3;if(e.includes("Low"))return 2;if(e.includes("Lowest"))return 1;if(e.includes("No Priority"))return null;break;case"tags":return e==="No Tags"?"":e.startsWith("#")?e.trim().substring(1):e;case"project":return e==="No Project"?"":e;case"context":return e==="No Context"?"":e.startsWith("@")?e.substring(1):e;case"dueDate":case"scheduledDate":case"startDate":if(e==="Overdue")return"overdue";if(e==="Today")return"today";if(e==="Tomorrow")return"tomorrow";if(e==="This Week")return"thisWeek";if(e==="Next Week")return"nextWeek";if(e==="Later")return"later";if(e==="No Date")return null;break;case"filePath":return e}return e}convertDateCategoryToTimestamp(e){if(e===null||e===""||e==="none")return;let t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate());switch(e){case"overdue":return;case"today":return r.getTime();case"tomorrow":return new Date(r.getTime()+1440*60*1e3).getTime();case"thisWeek":let i=7-r.getDay();return new Date(r.getTime()+i*24*60*60*1e3).getTime();case"nextWeek":let s=14-r.getDay();return new Date(r.getTime()+s*24*60*60*1e3).getTime();case"later":let o=new Date(r);return o.setMonth(o.getMonth()+1),o.getTime();default:return}}getTaskOriginalColumnValue(e,t){var i;let r=e.metadata||{};switch(t){case"tags":let s=(i=this.plugin.settings.viewConfiguration.find(o=>o.id===this.currentViewId))==null?void 0:i.specificConfig;if(s!=null&&s.customColumns&&s.customColumns.length>0){for(let o of s.customColumns)if(o.value===""||o.value===null){if(!r.tags||r.tags.length===0)return""}else if(r.tags&&r.tags.some(l=>typeof l=="string"&&l===o.value))return o.value}else return!r.tags||r.tags.length===0?"":r.tags.find(l=>typeof l=="string")||"";return"";case"project":return Vt(e)||"";case"context":return r.context||"";case"priority":return r.priority||null;case"dueDate":return this.getDateCategory(r.dueDate);case"scheduledDate":return this.getDateCategory(r.scheduledDate);case"startDate":return this.getDateCategory(r.startDate);case"filePath":return e.filePath;default:return null}}getDateCategory(e){if(!e)return"none";let t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate()),i=new Date(r.getTime()+1440*60*1e3),s=new Date(r.getTime()+10080*60*1e3),o=new Date(r.getTime()+336*60*60*1e3),l=new Date(e);return l=r&&l=i&&l=i&&l=s&&li.id===this.currentViewId))==null?void 0:r.specificConfig,t=(e==null?void 0:e.groupBy)||"status";return`kanban-column-order-${this.currentViewId}-${t}`}loadColumnOrder(){try{let e=this.getColumnOrderKey(),t=this.app.loadLocalStorage(e);t?this.columnOrder=JSON.parse(t):this.columnOrder=[]}catch(e){console.warn("Failed to load column order from localStorage:",e),this.columnOrder=[]}}saveColumnOrder(e){try{let t=this.getColumnOrderKey();this.app.saveLocalStorage(t,JSON.stringify(e)),this.columnOrder=[...e]}catch(t){console.warn("Failed to save column order to localStorage:",t)}}applyColumnOrder(e){try{if(this.columnOrder.length===0)return e;if(!Array.isArray(e))return console.warn("Invalid columns array provided to applyColumnOrder"),[];let t=[],r=[...e];return this.columnOrder.forEach(i=>{if(i){let s=r.findIndex(o=>o.id&&o.id===i||o.title===i);s!==-1&&t.push(r.splice(s,1)[0])}}),t.push(...r),t}catch(t){return console.error("Error applying column order:",t),e}}initializeColumnSortable(){this.columnSortableInstance&&(this.columnSortableInstance.destroy(),this.columnSortableInstance=null),this.columnSortableInstance=Lr.create(this.columnContainerEl,{group:"kanban-columns",animation:150,ghostClass:"tg-kanban-column-ghost",dragClass:"tg-kanban-column-dragging",handle:".tg-kanban-column-header",direction:"horizontal",swapThreshold:.65,filter:".tg-kanban-column-content, .tg-kanban-card, .tg-kanban-add-card-button",preventOnFilter:!1,onEnd:e=>{this.handleColumnSortEnd(e)}})}handleColumnSortEnd(e){e.oldIndex,e.newIndex;try{if(e.oldIndex===e.newIndex)return;let t=[],r=this.columnContainerEl.querySelectorAll(".tg-kanban-column");if(r.length===0){console.warn("No column elements found during column sort end");return}if(r.forEach(i=>{var o;let s=(o=i.querySelector(".tg-kanban-column-title"))==null?void 0:o.textContent;if(s){let c=i.getAttribute("data-status-name")||s;t.push(c)}}),t.length===0){console.warn("No valid column order found during sort end");return}this.saveColumnOrder(t)}catch(t){console.error("Error handling column sort end:",t)}}};var tf=require("obsidian");var cc=class{dateToX(a,e,t){if(!e)return 0;let r=new Date(Math.max(a.getTime(),e.getTime()));return this.daysBetween(e,r)*t}xToDate(a,e,t){if(!e||t<=0)return null;let r=a/t;return this.addDays(e,r)}daysBetween(a,e){let t=this.startOfDay(a).getTime(),r=this.startOfDay(e).getTime();return Math.floor((r-t)/(1e3*60*60*24))}addDays(a,e){let t=new Date(a);return t.setDate(t.getDate()+e),t}startOfDay(a){let e=new Date(a);return e.setHours(0,0,0,0),e}startOfWeek(a){let e=new Date(a),t=e.getDay(),r=e.getDate()-t+(t===0?-6:1);return e.setDate(r),this.startOfDay(e)}endOfWeek(a){let e=this.startOfWeek(a),t=this.addDays(e,6);return t.setHours(23,59,59,999),t}getWeekNumber(a){a=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate())),a.setUTCDate(a.getUTCDate()+4-(a.getUTCDay()||7));let e=new Date(Date.UTC(a.getUTCFullYear(),0,1));return Math.ceil(((a.getTime()-e.getTime())/864e5+1)/7)}};var dH=require("obsidian"),By=class extends dH.Component{constructor(e,t){super();this.svgEl=null;this.params=null;this.app=e,this.headerContainerEl=t}onload(){}onunload(){this.svgEl&&(this.svgEl.remove(),this.svgEl=null),this.headerContainerEl.empty()}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("TimelineHeaderComponent: Cannot render, params not set.");return}let{startDate:e,endDate:t,totalWidth:r,timescale:i,scrollLeft:s,headerHeight:o,dateHelper:l,shouldDrawMajorTick:c,shouldDrawMinorTick:u,formatMajorTick:p,formatMinorTick:m,formatDayTick:f}=this.params;this.headerContainerEl.empty(),this.svgEl=this.headerContainerEl.createSvg("svg",{cls:"gantt-header-svg"}),this.svgEl.setAttribute("width","100%"),this.svgEl.setAttribute("height",`${o}`);let h=this.svgEl.createSvg("g",{cls:"gantt-header-content"});h.setAttribute("transform",`translate(${-s}, 0)`),h.createSvg("rect",{attr:{x:0,y:0,width:r,height:o,class:"gantt-header-bg"}});let g=30,k=l.addDays(this.params.visibleStartDate,-g),y=l.addDays(this.params.visibleEndDate,g);k=new Date(Math.max(k.getTime(),e.getTime())),y=new Date(Math.min(y.getTime(),t.getTime()));let b=l.startOfDay(k),v={},w={},x={};for(;b<=y;){let C=l.dateToX(b,e,this.params.dayWidth),S=l.addDays(b,1),A=l.dateToX(S,e,this.params.dayWidth)-C;if(c(b)){h.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:o,class:"gantt-header-tick-major"}});let N=p(b);if(N&&A>10){let I=`${b.getFullYear()}-${b.getMonth()}`;v[I]||(v[I]={x:C+5,label:N})}}if(u(b)){h.createSvg("line",{attr:{x1:C,y1:o*.5,x2:C,y2:o,class:"gantt-header-tick-minor"}});let N=m(b);if(N&&A>2){if(i==="Day"||i==="Week"){let I=`${b.getFullYear()}-W${l.getWeekNumber(b)}`;w[I]||(w[I]={x:C+5,label:N})}else if(i==="Month"){let I=b.getDate().toString(),R=`${b.getFullYear()}-${b.getMonth()}-${b.getDate()}`;x[R]||(x[R]={x:C+A/2,label:I})}}}if(i==="Day"){h.createSvg("line",{attr:{x1:C,y1:o*.7,x2:C,y2:o,class:"gantt-header-tick-day"}});let N=f(b);if(N&&A>2){let I=`${b.getFullYear()}-${b.getMonth()}-${b.getDate()}`;x[I]||(x[I]={x:C+A/2,label:N})}}if(b>y)break;b=S}Object.values(v).forEach(C=>{h.createSvg("text",{attr:{x:C.x,y:o*.35,class:"gantt-header-label-major"}}).textContent=C.label}),Object.values(w).forEach(C=>{h.createSvg("text",{attr:{x:C.x,y:o*.65,class:"gantt-header-label-minor"}}).textContent=C.label}),Object.values(x).forEach(C=>{h.createSvg("text",{attr:{x:C.x,y:o*.85,class:"gantt-header-label-day","text-anchor":"middle"}}).textContent=C.label});let T=l.startOfDay(new Date);if(T>=e&&T<=t){let C=l.dateToX(T,e,this.params.dayWidth);h.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:o,class:"gantt-header-today-marker"}})}}};var cH=require("obsidian");var Vy=class extends cH.Component{constructor(e,t){super();this.params=null;this.dateHelper=new cc;this.app=e,this.svgGroupEl=t}onload(){}onunload(){this.svgGroupEl.empty()}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("GridBackgroundComponent: Cannot render, params not set.");return}this.svgGroupEl.empty();let{startDate:e,endDate:t,visibleStartDate:r,visibleEndDate:i,totalWidth:s,totalHeight:o,visibleTasks:l,timescale:c,rowHeight:u,dateHelper:p,shouldDrawMajorTick:m,shouldDrawMinorTick:f}=this.params,h=30,g=p.addDays(r,-h),k=p.addDays(i,h);g=new Date(Math.max(g.getTime(),e.getTime())),k=new Date(Math.min(k.getTime(),t.getTime()));let y=p.startOfDay(g);for(;y<=k;){let v=p.dateToX(y,e,this.params.dayWidth);if(m(y)?this.svgGroupEl.createSvg("line",{attr:{x1:v,y1:0,x2:v,y2:o,class:"gantt-grid-line-major"}}):(f(y)||c==="Day")&&this.svgGroupEl.createSvg("line",{attr:{x1:v,y1:0,x2:v,y2:o,class:"gantt-grid-line-minor"}}),y>k)break;y=p.addDays(y,1)}for(let v=u;v<=o;v+=u)this.svgGroupEl.createSvg("line",{attr:{x1:0,y1:v,x2:s,y2:v,class:"gantt-grid-line-horizontal"}});let b=p.startOfDay(new Date);if(b>=e&&b<=t){let v=p.dateToX(b,e,this.params.dayWidth);this.svgGroupEl.createSvg("line",{attr:{x1:v,y1:0,x2:v,y2:o,class:"gantt-grid-today-marker"}})}}};var uH=require("obsidian");var zG=24,$G=.6,_G=10,ef=5,Wy=class extends uH.Component{constructor(e,t){super();this.params=null;this.eventListeners=[];this.app=e,this.taskGroupEl=t}onload(){}onunload(){this.cleanupEventListeners(),this.taskGroupEl.empty()}cleanupEventListeners(){for(let{element:e,type:t,handler:r}of this.eventListeners)e.removeEventListener(t,r);this.eventListeners=[]}addEventListener(e,t,r){e.addEventListener(t,r),this.eventListeners.push({element:e,type:t,handler:r})}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("TaskRendererComponent: Cannot render, params not set.");return}JSON.stringify(this.params.preparedTasks.map(r=>({id:r.task.id,sx:r.startX,w:r.width})),null,2),this.cleanupEventListeners(),this.taskGroupEl.empty();let{preparedTasks:e,parentComponent:t}=this.params;e.forEach(r=>this.renderSingleTask(r,t))}renderSingleTask(e,t){if(!this.params)return;let{handleTaskClick:r,handleTaskContextMenu:i,showTaskLabels:s,useMarkdownRenderer:o,rowHeight:l=zG,taskBarHeightRatio:c=$G,milestoneSize:u=_G}=this.params,p=e.task,m=this.taskGroupEl.createSvg("g",{cls:"gantt-task-item"});m.setAttribute("data-task-id",p.id);let f=()=>r(p),h=b=>i(b,p);this.addEventListener(m,"click",f),this.addEventListener(m,"contextmenu",h);let g=l*c,k=e.y-g/2,y=null;if(e.isMilestone){let b=e.startX,v=e.y,w=u/2;if(y=m.createSvg("circle",{attr:{cx:b,cy:v,r:w,class:"gantt-task-milestone"}}),p.status&&p.status.trim()&&y.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let x=rr(p.metadata.priority);x&&y.classList.add(`priority-${x}`)}if(s&&p.content)if(o){let x=m.createSvg("foreignObject",{attr:{x:b+w+ef,y:v-8,width:300,height:16,class:"gantt-milestone-label-container"}}),T=document.createElementNS("http://www.w3.org/1999/xhtml","div");T.style.pointerEvents="none",x.appendChild(T);let C=new Lt(this.app,T,p.filePath);this.addChild(C),C.render(p.content)}else{let x=m.createSvg("text",{attr:{x:b+w+ef,y:v,class:"gantt-milestone-label","dominant-baseline":"middle"}});x.textContent=p.content,x.style.pointerEvents="none"}m.setAttribute("title",`${p.content} Due: ${p.metadata.dueDate?new Date(p.metadata.dueDate).toLocaleDateString():"N/A"}`)}else if(e.width!==void 0&&e.width>0){if(y=m.createSvg("rect",{attr:{x:e.startX,y:k,width:e.width,height:g,rx:3,ry:3,class:"gantt-task-bar"}}),p.status&&p.status.trim()&&y.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let b=rr(p.metadata.priority);b&&y.classList.add(`priority-${b}`)}if(m.setAttribute("title",`${p.content} Start: ${p.metadata.startDate?new Date(p.metadata.startDate).toLocaleDateString():"N/A"} Due: ${p.metadata.dueDate?new Date(p.metadata.dueDate).toLocaleDateString():"N/A"}`),s&&p.content)if(e.width>=30){let v=m.createSvg("foreignObject",{attr:{x:e.startX+ef,y:e.y-g/2-2,width:e.width-ef*2,height:g+4,class:"gantt-task-label-fo"}});v.style.pointerEvents="none";let w=v.createDiv({cls:"gantt-task-label-markdown"});if(o){let x=p.filePath||"";w.empty();let T=new Lt(this.app,w,x,!0);this.addChild(T),T.update(p.content)}else w.textContent=p.content,w.style.lineHeight=`${g}px`,w.style.whiteSpace="nowrap",w.style.overflow="hidden",w.style.textOverflow="ellipsis"}else{let v=m.createSvg("text",{attr:{x:e.startX+e.width+ef,y:e.y,class:"gantt-task-label-external","dominant-baseline":"middle","text-anchor":"start"}});v.textContent=p.content,v.style.pointerEvents="none"}}}};var pH=require("obsidian");q();var zy=class extends pH.Component{constructor(a,e){super(),this.containerEl=a,this.scrollToDateCallback=e}onload(){let a=this.containerEl.createEl("button",{text:d("Today"),cls:"gantt-filter-today-button"});this.registerDomEvent(a,"click",()=>{this.scrollToDateCallback(new Date)})}};var uc=24,mH=40,UG=50,YG=10,qG=200,GG=4,Bn=class extends tf.Component{constructor(e,t,r,i="gantt"){super();this.plugin=e;this.params=r;this.viewId=i;this.svgEl=null;this.tasks=[];this.allTasks=[];this.preparedTasks=[];this.timescale="Day";this.dayWidth=UG;this.startDate=null;this.endDate=null;this.totalWidth=0;this.totalHeight=0;this.zoomLevel=1;this.visibleStartDate=null;this.visibleEndDate=null;this.isScrolling=!1;this.isZooming=!1;this.gridGroupEl=null;this.taskGroupEl=null;this.filterComponent=null;this.timelineHeaderComponent=null;this.gridBackgroundComponent=null;this.taskRendererComponent=null;this.dateHelper=new cc;this.config={showDependencies:!1,taskColorBy:"status",useVirtualization:!1,debounceRenderMs:50,showTaskLabels:!0,useMarkdownRenderer:!0};this.handleScroll=e=>{if(this.isZooming||!this.startDate)return;let i=e.target.scrollLeft/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,i),this.debouncedHeaderUpdate(),this.debouncedRender()};this.handleWheel=e=>{if(!e.ctrlKey||!this.startDate||!this.endDate)return;e.preventDefault(),this.isZooming=!0;let t=e.deltaY>0?.8:1.25,r=Math.max(YG,Math.min(qG,this.dayWidth*t));if(r===this.dayWidth){this.isZooming=!1;return}let i=this.scrollContainerEl.getBoundingClientRect(),s=e.clientX-i.left,o=this.scrollContainerEl.scrollLeft,l=this.dateHelper.xToDate(o+s,this.startDate,this.dayWidth);this.dayWidth=r;let c=0;l&&(c=this.dateHelper.dateToX(l,this.startDate,this.dayWidth)-s),this.prepareTasksForRender();let u=this.scrollContainerEl.clientWidth;c=Math.max(0,Math.min(c,this.totalWidth-u)),this.debouncedRender(),requestAnimationFrame(()=>{if(!this.scrollContainerEl)return;this.scrollContainerEl.scrollLeft=c;let p=c/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,p),this.updateHeaderComponent(),this.isZooming=!1})};this.app=e.app,this.containerEl=t.createDiv({cls:"gantt-chart-container"}),this.filterContainerEl=this.containerEl.createDiv("gantt-filter-area"),this.headerContainerEl=this.containerEl.createDiv("gantt-header-container"),this.scrollContainerEl=this.containerEl.createDiv("gantt-scroll-container"),this.contentWrapperEl=this.scrollContainerEl.createDiv("gantt-content-wrapper"),this.leftIndicatorEl=this.containerEl.createDiv("gantt-indicator-container gantt-indicator-container-left"),this.rightIndicatorEl=this.containerEl.createDiv("gantt-indicator-container gantt-indicator-container-right"),this.debouncedRender=(0,tf.debounce)(this.renderInternal,this.config.debounceRenderMs),this.debouncedHeaderUpdate=(0,tf.debounce)(this.updateHeaderComponent,16)}onload(){this.createBaseSVG(),this.filterComponent=this.addChild(new dc({container:this.filterContainerEl,options:Zm(this.tasks),onChange:e=>{this.applyFiltersAndRender(e)},components:[new zy(this.filterContainerEl,e=>this.scrollToDate(e))]},this.plugin)),this.headerContainerEl&&(this.timelineHeaderComponent=this.addChild(new By(this.app,this.headerContainerEl))),this.gridGroupEl&&(this.gridBackgroundComponent=this.addChild(new Vy(this.app,this.gridGroupEl))),this.taskGroupEl&&(this.taskRendererComponent=this.addChild(new Wy(this.app,this.taskGroupEl))),this.registerDomEvent(this.scrollContainerEl,"scroll",this.handleScroll),this.registerDomEvent(this.containerEl,"wheel",this.handleWheel,{passive:!1})}onunload(){this.debouncedRender.cancel(),this.debouncedHeaderUpdate.cancel(),this.svgEl&&this.svgEl.detach(),this.filterContainerEl.detach(),this.headerContainerEl.detach(),this.scrollContainerEl.detach(),this.leftIndicatorEl.detach(),this.rightIndicatorEl.detach(),this.containerEl.removeClass("gantt-chart-container"),this.tasks=[],this.allTasks=[],this.containerEl.removeClass("gantt-chart-container"),this.tasks=[],this.preparedTasks=[]}setTasks(e){var r;if(this.preparedTasks=[],this.tasks=this.sortTasks(e),this.allTasks=[...this.tasks],this.prepareTasksForRender(),this.filterComponent){let i=this.preparedTasks.map(s=>s.task);this.filterComponent.updateFilterOptions(i)}let t=((r=this.filterComponent)==null?void 0:r.getActiveFilters())||[];this.applyFiltersAndRender(t),requestAnimationFrame(()=>{this.scrollContainerEl&&this.scrollToDate(new Date)})}setTimescale(e){this.timescale=e,this.calculateTimescaleParams(),this.prepareTasksForRender(),this.debouncedRender()}createBaseSVG(){this.svgEl&&this.svgEl.remove(),this.svgEl=this.contentWrapperEl.createSvg("svg",{cls:"gantt-svg"}),this.svgEl.setAttribute("width","100%"),this.svgEl.setAttribute("height","100%"),this.svgEl.style.display="block",this.svgEl.createSvg("defs"),this.gridGroupEl=this.svgEl.createSvg("g",{cls:"gantt-grid"}),this.taskGroupEl=this.svgEl.createSvg("g",{cls:"gantt-tasks"})}calculateDateRange(e=!1){if(!e&&this.startDate&&this.endDate)return{startDate:this.startDate,endDate:this.endDate};if(this.tasks.length===0){let s=new Date;return this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(s,-7)),this.endDate=this.dateHelper.addDays(s,30),this.visibleStartDate||(this.visibleStartDate=new Date(this.startDate)),this.visibleEndDate=this.calculateVisibleEndDate(),{startDate:this.startDate,endDate:this.endDate}}let t=1/0,r=-1/0;this.tasks.forEach(s=>{let o=s.metadata.startDate||s.metadata.scheduledDate||s.metadata.createdDate,l=s.metadata.dueDate||s.metadata.completedDate;if(o){let c=new Date(o).getTime();isNaN(c)||(t=Math.min(t,c))}else if(s.metadata.createdDate){let c=new Date(s.metadata.createdDate).getTime();isNaN(c)||(t=Math.min(t,c))}if(l){let c=new Date(l).getTime();if(!isNaN(c)){let u=!s.metadata.startDate&&s.metadata.dueDate;r=Math.max(r,u?c:this.dateHelper.addDays(new Date(c),1).getTime())}}if(o&&!l){let c=new Date(o).getTime();isNaN(c)||(r=Math.max(r,this.dateHelper.addDays(new Date(c),1).getTime()))}});let i=3650;if(t===1/0||r===-1/0){let s=new Date;this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(s,-i)),this.endDate=this.dateHelper.addDays(s,i)}else this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(new Date(t),-i)),this.endDate=this.dateHelper.startOfDay(this.dateHelper.addDays(new Date(r),i));return this.endDate<=this.startDate&&(this.endDate=this.dateHelper.addDays(this.startDate,i*2)),(e||!this.visibleStartDate)&&(this.visibleStartDate=new Date(this.startDate)),this.visibleEndDate=this.calculateVisibleEndDate(),{startDate:this.startDate,endDate:this.endDate}}calculateVisibleEndDate(){if(!this.visibleStartDate||!this.scrollContainerEl)return this.endDate||new Date;let e=this.scrollContainerEl.clientWidth,t=Math.max(1,this.dayWidth),r=Math.ceil(e/t);return this.dateHelper.addDays(this.visibleStartDate,r)}calculateTimescaleParams(){!this.startDate||!this.endDate||(this.dayWidth<15?this.timescale="Year":this.dayWidth<35?this.timescale="Month":this.dayWidth<70?this.timescale="Week":this.timescale="Day")}prepareTasksForRender(){if(!this.startDate||!this.endDate){console.error("Cannot prepare tasks: date range not set.");return}this.calculateTimescaleParams();let e=this.tasks.map((i,s)=>{let o=s*uc+uc/2,l,c,u=!1,p=i.metadata.startDate||i.metadata.scheduledDate,m=i.metadata.dueDate;if(p){let h=new Date(p);isNaN(h.getTime())||(l=this.dateHelper.dateToX(h,this.startDate,this.dayWidth))}if(m){let h=new Date(m);isNaN(h.getTime())||(c=this.dateHelper.dateToX(this.dateHelper.addDays(h,1),this.startDate,this.dayWidth))}else i.metadata.completedDate;if(m&&!p||p&&m&&this.dateHelper.daysBetween(new Date(p),new Date(m))===0){let h=m?new Date(m):p?new Date(p):null;h?(l=this.dateHelper.dateToX(h,this.startDate,this.dayWidth),c=l,u=!0):(l=void 0,c=void 0)}else!p&&!m?(l=void 0,c=void 0):p&&!m&&l!==void 0&&(c=this.dateHelper.dateToX(this.dateHelper.addDays(new Date(p),1),this.startDate,this.dayWidth),u=!1);let f=l!==void 0&&c!==void 0&&!u?Math.max(1,c-l):void 0;return{task:i,y:o,startX:l,endX:c,width:f,isMilestone:u,level:0}});this.preparedTasks=e.filter(i=>i.startX!==void 0),this.preparedTasks;let t=5;this.totalHeight=Math.max(this.preparedTasks.length*uc,t*uc);let r=this.dateHelper.daysBetween(this.startDate,this.endDate);this.totalWidth=r*this.dayWidth}sortTasks(e){return e.sort((t,r)=>{var p,m;let i=t.metadata.startDate||t.metadata.scheduledDate,s=r.metadata.startDate||r.metadata.scheduledDate,o=t.metadata.dueDate,l=r.metadata.dueDate;if(i&&s){let f=new Date(i).getTime(),h=new Date(s).getTime();if(f!==h)return f-h}else{if(i)return-1;if(s)return 1}if(o&&l){let f=new Date(o).getTime(),h=new Date(l).getTime();if(f!==h)return f-h}else{if(o)return-1;if(l)return 1}let c=((p=t.content)==null?void 0:p.trim())||null,u=((m=r.content)==null?void 0:m.trim())||null;return!c&&!u?0:c?u?c.localeCompare(u):-1:1})}renderInternal(){var p;if(!this.svgEl||!this.startDate||!this.endDate||!this.scrollContainerEl||!this.gridBackgroundComponent||!this.taskRendererComponent||!this.timelineHeaderComponent||!this.leftIndicatorEl||!this.rightIndicatorEl){console.warn("Cannot render: Core elements, child components, or indicator containers not initialized.");return}if(!this.containerEl.isShown()){console.warn("Cannot render: Container not visible.");return}this.prepareTasksForRender(),this.svgEl.setAttribute("width",`${this.totalWidth}`),this.svgEl.setAttribute("height",`${this.totalHeight}`),this.contentWrapperEl.style.width=`${this.totalWidth}px`,this.contentWrapperEl.style.height=`${this.totalHeight}px`;let e=this.filterContainerEl.offsetHeight;this.scrollContainerEl.style.height=`calc(100% - ${mH}px - ${e}px)`,this.updateHeaderComponent();let t=this.scrollContainerEl.scrollLeft,r=this.scrollContainerEl.scrollTop,i=this.scrollContainerEl.clientWidth,s=t,o=t+i;this.leftIndicatorEl.empty(),this.rightIndicatorEl.empty();let l=[],c=300,u=GG/2;for(let m of this.preparedTasks){let f=m.startX,h=m.isMilestone?m.startX:m.startX+((p=m.width)!=null?p:0);h>s-c&&fo+k&&this.rightIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${y+45}px;`,title:m.task.content,"data-task-id":m.task.id}})}this.registerDomEvent(this.leftIndicatorEl,"click",m=>{let h=m.target.getAttribute("data-task-id");if(h){let g=this.tasks.find(k=>k.id===h);g&&this.scrollToDate(new Date(g.metadata.dueDate||g.metadata.startDate||g.metadata.scheduledDate))}}),this.registerDomEvent(this.rightIndicatorEl,"click",m=>{let h=m.target.getAttribute("data-task-id");if(h){let g=this.tasks.find(k=>k.id===h);g&&this.scrollToDate(new Date(g.metadata.startDate||g.metadata.dueDate||g.metadata.scheduledDate))}}),this.gridBackgroundComponent.updateParams({startDate:this.startDate,endDate:this.endDate,visibleStartDate:this.visibleStartDate,visibleEndDate:this.visibleEndDate,totalWidth:this.totalWidth,totalHeight:this.totalHeight,visibleTasks:l,timescale:this.timescale,dayWidth:this.dayWidth,rowHeight:uc,dateHelper:this.dateHelper,shouldDrawMajorTick:this.shouldDrawMajorTick.bind(this),shouldDrawMinorTick:this.shouldDrawMinorTick.bind(this)}),this.taskRendererComponent.updateParams({app:this.app,taskGroupEl:this.taskGroupEl,preparedTasks:l,rowHeight:uc,showTaskLabels:this.config.showTaskLabels,useMarkdownRenderer:this.config.useMarkdownRenderer,handleTaskClick:this.handleTaskClick.bind(this),handleTaskContextMenu:this.handleTaskContextMenu.bind(this),parentComponent:this})}updateHeaderComponent(){!this.timelineHeaderComponent||!this.visibleStartDate||!this.startDate||!this.endDate||(this.visibleEndDate=this.calculateVisibleEndDate(),this.timelineHeaderComponent.updateParams({startDate:this.startDate,endDate:this.endDate,visibleStartDate:this.visibleStartDate,visibleEndDate:this.visibleEndDate,totalWidth:this.totalWidth,timescale:this.timescale,dayWidth:this.dayWidth,scrollLeft:this.scrollContainerEl.scrollLeft,headerHeight:mH,dateHelper:this.dateHelper,shouldDrawMajorTick:this.shouldDrawMajorTick.bind(this),shouldDrawMinorTick:this.shouldDrawMinorTick.bind(this),formatMajorTick:this.formatMajorTick.bind(this),formatMinorTick:this.formatMinorTick.bind(this),formatDayTick:this.formatDayTick.bind(this)}))}shouldDrawMajorTick(e){switch(this.timescale){case"Year":return e.getMonth()===0&&e.getDate()===1;case"Month":return e.getDate()===1;case"Week":return e.getDate()===1;case"Day":return e.getDay()===1;default:return!1}}shouldDrawMinorTick(e){switch(this.timescale){case"Year":return e.getDate()===1;case"Month":return e.getDay()===1;case"Week":return!0;case"Day":return!1;default:return!1}}formatMajorTick(e){let t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];switch(this.timescale){case"Year":return e.getFullYear().toString();case"Month":return`${t[e.getMonth()]} ${e.getFullYear()}`;case"Week":return e.getDate()===1?`${t[e.getMonth()]} ${e.getFullYear()}`:"";case"Day":return`W${this.dateHelper.getWeekNumber(e)}`;default:return""}}formatMinorTick(e){switch(this.timescale){case"Year":return this.formatMajorTick(e).substring(0,3);case"Month":return`W${this.dateHelper.getWeekNumber(e)}`;case"Week":return e.getDate().toString();case"Day":return"";default:return""}}formatDayTick(e){let t=["S","M","T","W","T","F","S"];return this.timescale==="Day"?t[e.getDay()]:""}handleTaskClick(e){var t,r;(r=(t=this.params).onTaskSelected)==null||r.call(t,e)}handleTaskContextMenu(e,t){var r,i;(i=(r=this.params).onTaskContextMenu)==null||i.call(r,e,t)}scrollToDate(e){if(!this.startDate||!this.scrollContainerEl)return;let t=this.dateHelper.dateToX(e,this.startDate,this.dayWidth),r=this.scrollContainerEl.clientWidth,i=t-r/2;i=Math.max(0,Math.min(i,this.totalWidth-r));let s=i/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,s),this.visibleEndDate=this.calculateVisibleEndDate(),this.scrollContainerEl.scrollTo({left:i,behavior:"auto"}),this.updateHeaderComponent(),this.debouncedRender()}refresh(){if(this.calculateDateRange(!0),this.prepareTasksForRender(),this.filterComponent){let e=this.preparedTasks.map(t=>t.task);this.filterComponent.updateFilterOptions(e)}this.debouncedRender()}applyFiltersAndRender(e){if(e.length===0?this.tasks=[...this.allTasks]:this.tasks=this.allTasks.filter(t=>e.every(r=>{switch(r.category){case"status":return t.status===r.value;case"tag":return t.metadata.tags.some(s=>typeof s=="string"&&s===r.value);case"project":return t.metadata.project===r.value;case"context":return t.metadata.context===r.value;case"priority":let i=ed[r.value];return t.metadata.priority===i;case"completed":return r.value==="Yes"&&t.completed||r.value==="No"&&!t.completed;case"filePath":return t.filePath===r.value;default:return console.warn(`Unknown filter category: ${r.category}`),!0}})),this.tasks.length,this.calculateDateRange(!0),this.prepareTasksForRender(),this.filterComponent){let t=this.preparedTasks.map(r=>r.task);this.filterComponent.updateFilterOptions(t)}this.debouncedRender()}};var fH=require("obsidian");var Br=require("obsidian");q();var $y=class extends Br.Component{constructor(e,t,r,i){super();this.parentEl=e;this.app=t;this.plugin=r;this.config=i;this.taskRenderer=null;this.allTasks=[];this.filteredTasks=[];this.selectedItems={items:[],tasks:[],isMultiSelect:!1};this.isTreeView=!1;this.onTaskContextMenu=()=>{};this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:`${this.config.classNamePrefix}-container`});let e=this.containerEl.createDiv({cls:`${this.config.classNamePrefix}-content`});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode(),this.initializeTaskRenderer()}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:`${this.config.classNamePrefix}-left-column`}),this.leftHeaderEl=this.leftColumnEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-header`});let t=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-title`,text:d(this.config.leftColumnTitle)}),r=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-multi-select-btn`});if((0,Br.setIcon)(r,"list-plus"),r.setAttribute("aria-label",d("Toggle multi-select")),this.registerDomEvent(r,"click",()=>{this.toggleMultiSelect()}),Br.Platform.isPhone){let i=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-close`});new Br.ExtraButtonComponent(i).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.itemsListEl=this.leftColumnEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-list`})}createRightColumn(e){this.rightColumnEl=e.createDiv({cls:`${this.config.classNamePrefix}-right-column`}),this.rightHeaderEl=this.rightColumnEl.createDiv({cls:`${this.config.classNamePrefix}-task-header`}),Br.Platform.isPhone&&this.rightHeaderEl.createEl("div",{cls:`${this.config.classNamePrefix}-sidebar-toggle`},s=>{new Br.ExtraButtonComponent(s).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-title`}).setText(d(this.config.rightColumnDefaultTitle)),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-count`}).setText(`0 ${d("tasks")}`);let i=this.rightHeaderEl.createDiv({cls:"view-toggle-btn"});(0,Br.setIcon)(i,"list"),i.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.rightColumnEl.createDiv({cls:`${this.config.classNamePrefix}-task-list`})}initializeTaskRenderer(){this.taskRenderer=new Jr(this,this.taskListContainerEl,this.plugin,this.app,this.config.rendererContext),this.taskRenderer.onTaskSelected=e=>{this.onTaskSelected&&this.onTaskSelected(e)},this.taskRenderer.onTaskCompleted=e=>{this.onTaskCompleted&&this.onTaskCompleted(e)},this.taskRenderer.onTaskUpdate=async(e,t)=>{this.onTaskUpdate&&await this.onTaskUpdate(e,t)},this.taskRenderer.onTaskContextMenu=(e,t)=>{this.onTaskContextMenu&&this.onTaskContextMenu(e,t)}}setTasks(e){this.allTasks=e,this.buildItemsIndex(),this.renderItemsList(),this.selectedItems.items.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(d(this.config.emptyStateText)))}handleItemSelection(e,t){if(this.selectedItems.isMultiSelect||t){let r=this.selectedItems.items.indexOf(e);if(r===-1?this.selectedItems.items.push(e):this.selectedItems.items.splice(r,1),this.selectedItems.items.length===0&&!this.selectedItems.isMultiSelect){this.cleanupRenderers(),this.renderEmptyTaskList(d(this.config.emptyStateText));return}}else this.selectedItems.items=[e];this.updateSelectedTasks(),Br.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}toggleMultiSelect(){this.selectedItems.isMultiSelect=!this.selectedItems.isMultiSelect,this.selectedItems.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedItems.items.length===0&&(this.cleanupRenderers(),this.renderEmptyTaskList(d(this.config.emptyStateText))))}initializeViewMode(){var r;let e=this.config.classNamePrefix.replace("-","");this.isTreeView=Rn(this.app,this.plugin,e);let t=(r=this.rightColumnEl)==null?void 0:r.querySelector(".view-toggle-btn");t&&(0,Br.setIcon)(t,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.rightColumnEl.querySelector(".view-toggle-btn");e&&(0,Br.setIcon)(e,this.isTreeView?"git-branch":"list");let t=this.config.classNamePrefix.replace("-","");Fn(this.app,t,this.isTreeView),this.renderTaskList()}updateTaskListHeader(e,t){let r=this.rightColumnEl.querySelector(`.${this.config.classNamePrefix}-task-title`);r&&(r.textContent=e);let i=this.rightColumnEl.querySelector(`.${this.config.classNamePrefix}-task-count`);i&&(i.textContent=t)}cleanupRenderers(){this.taskRenderer&&this.taskListContainerEl.empty()}renderTaskList(){let e=d(this.config.rightColumnDefaultTitle);this.selectedItems.items.length===1?e=String(this.selectedItems.items[0]):this.selectedItems.items.length>1&&(e=`${this.selectedItems.items.length} ${d(this.config.multiSelectText)}`);let t=`${this.filteredTasks.length} ${d("tasks")}`;this.updateTaskListHeader(e,t),this.filteredTasks,this.isTreeView,this.allTasksMap=new Map(this.allTasks.map(r=>[r.id,r])),this.taskRenderer&&this.taskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,d("No tasks in the selected items"))}renderEmptyTaskList(e){this.cleanupRenderers(),this.taskListContainerEl.empty(),this.taskListContainerEl.createDiv({cls:`${this.config.classNamePrefix}-empty-state`}).setText(e)}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};q();var Vn=class extends $y{constructor(e,t,r,i,s){let o={classNamePrefix:"task-property",leftColumnTitle:i.leftColumnTitle,rightColumnDefaultTitle:i.rightColumnDefaultTitle,multiSelectText:i.multiSelectText,emptyStateText:i.emptyStateText,rendererContext:"task-property-view",itemIcon:KG(i.taskPropertyKey)};super(e,t,r,o);this.viewConfig=i;this.viewId=s;this.propertyValueMap=new Map;this.sortedPropertyValues=[];this.propertyKey=i.taskPropertyKey}buildItemsIndex(){var e,t;this.propertyValueMap.clear();for(let r of this.allTasks){let i=this.getPropertyValues(r);if(!i||i.length===0){let s=d("None");this.propertyValueMap.has(s)||this.propertyValueMap.set(s,[]),(e=this.propertyValueMap.get(s))==null||e.push(r);continue}for(let s of i){let o=String(s);this.propertyValueMap.has(o)||this.propertyValueMap.set(o,[]),(t=this.propertyValueMap.get(o))==null||t.push(r)}}this.sortedPropertyValues=Array.from(this.propertyValueMap.keys()).sort((r,i)=>this.getSortValue(r).localeCompare(this.getSortValue(i)))}getSortValue(e){return this.propertyKey==="priority"?e===d("None")?"999":e.padStart(3,"0"):["dueDate","startDate","scheduledDate"].includes(this.propertyKey)&&e===d("None")?"9999-12-31":e}getPropertyValues(e){switch(this.propertyKey){case"tags":return e.metadata.tags||[];case"project":let t=Vt(e);return t?[t]:[];case"priority":return e.metadata.priority!==void 0?[e.metadata.priority.toString()]:[];case"context":return e.metadata.context?[e.metadata.context]:[];case"status":return[e.status||""];case"dueDate":return e.metadata.dueDate?[this.formatDate(e.metadata.dueDate)]:[];case"startDate":return e.metadata.startDate?[this.formatDate(e.metadata.startDate)]:[];case"scheduledDate":return e.metadata.scheduledDate?[this.formatDate(e.metadata.scheduledDate)]:[];case"cancelledDate":return e.metadata.cancelledDate?[this.formatDate(e.metadata.cancelledDate)]:[];case"filePath":let r=e.filePath.split("/");return[r[r.length-1].replace(/\.[^/.]+$/,"")];default:return[]}}formatDate(e){return fn(e)}renderItemsList(){if(this.itemsListEl.empty(),this.sortedPropertyValues.length===0){this.itemsListEl.createDiv({cls:"task-property-empty-state"}).setText(d("No items found"));return}for(let e of this.sortedPropertyValues){let t=this.propertyValueMap.get(e)||[],r=this.itemsListEl.createDiv({cls:"task-property-list-item"});this.selectedItems.items.includes(e)&&r.addClass("selected");let i=r.createSpan({cls:"task-property-icon"});(0,fH.setIcon)(i,this.config.itemIcon);let s=r.createSpan({cls:"task-property-name",text:this.formatDisplayValue(e)}),o=r.createSpan({cls:"task-property-count",text:String(t.length)});this.registerDomEvent(r,"click",l=>{let c=l.ctrlKey||l.metaKey;this.handleItemSelection(e,c),this.renderItemsList()})}}formatDisplayValue(e){if(this.propertyKey==="priority")switch(e){case"1":return d("High Priority");case"2":return d("Medium Priority");case"3":return d("Low Priority");default:return e}if(["dueDate","startDate","scheduledDate","cancelledDate"].includes(this.propertyKey)){let t=this.formatDate(Date.now());if(e===t)return d("Today")}return e}updateSelectedTasks(){if(this.filteredTasks=[],this.selectedItems.items.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(d(this.config.emptyStateText));return}for(let e of this.selectedItems.items){let t=this.propertyValueMap.get(e)||[];for(let r of t)this.filteredTasks.some(i=>i.id===r.id)||this.filteredTasks.push(r)}this.selectedItems.tasks=this.filteredTasks,this.renderTaskList()}updateTask(e){var o,l;let t=[];for(let[c,u]of this.propertyValueMap)u.some(p=>p.id===e.id)&&t.push(c);for(let c of t){let u=this.propertyValueMap.get(c)||[];this.propertyValueMap.set(c,u.filter(p=>p.id!==e.id)),((o=this.propertyValueMap.get(c))==null?void 0:o.length)===0&&(this.propertyValueMap.delete(c),this.sortedPropertyValues=this.sortedPropertyValues.filter(p=>p!==c))}let r=this.getPropertyValues(e);for(let c of r){let u=String(c);this.propertyValueMap.has(u)||(this.propertyValueMap.set(u,[]),this.sortedPropertyValues.push(u),this.sortedPropertyValues.sort((p,m)=>this.getSortValue(p).localeCompare(this.getSortValue(m)))),(l=this.propertyValueMap.get(u))==null||l.push(e)}let i=this.filteredTasks.findIndex(c=>c.id===e.id);i>=0&&(this.filteredTasks[i]=e);let s=this.allTasks.findIndex(c=>c.id===e.id);s>=0&&(this.allTasks[s]=e),this.renderItemsList(),this.filteredTasks.length>0&&this.renderTaskList()}getViewId(){return this.viewId||""}};function KG(n){switch(n){case"tags":return"tag";case"project":return"folder";case"priority":return"alert-triangle";case"context":return"at-sign";case"status":return"check-square";case"dueDate":return"calendar";case"startDate":return"play";case"scheduledDate":return"calendar-clock";case"filePath":return"file";default:return"list"}}var Jy=require("obsidian");var vH=require("obsidian");var yH=require("obsidian");q();var Yt=require("obsidian");q();var _y=class extends Yt.Component{constructor(e,t,r,i,s,o,l){super();this.tableEl=e;this.headerEl=t;this.bodyEl=r;this.columns=i;this.config=s;this.app=o;this.plugin=l;this.resizeObserver=null;this.isResizing=!1;this.resizeStartX=0;this.resizeColumn="";this.resizeStartWidth=0;this.rowPool=[];this.activeRows=new Map;this.eventCleanupMap=new Map;this.autoCompleteCache=null;this.activeSuggests=new Map;this.CACHE_DURATION=3e4}onload(){this.renderHeader(),this.setupResizeHandlers()}onunload(){this.eventCleanupMap.forEach(e=>{e.forEach(t=>t())}),this.eventCleanupMap.clear(),this.activeSuggests.forEach(e=>{e.close()}),this.activeSuggests.clear(),this.rowPool=[],this.activeRows.clear(),this.resizeObserver&&this.resizeObserver.disconnect()}async getAutoCompleteData(){let e=Date.now();if(!this.autoCompleteCache||e-this.autoCompleteCache.lastUpdate>this.CACHE_DURATION){let t=Object.keys(this.plugin.app.metadataCache.getTags()||{}).map(s=>s.substring(1)),r=[],i=[];if(this.plugin.dataflowOrchestrator)try{let o=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks(),l=new Set,c=new Set;o.forEach(u=>{u.project&&l.add(u.project),u.context&&c.add(u.context)}),r=Array.from(l).sort(),i=Array.from(c).sort()}catch(s){console.warn("Failed to get projects/contexts from dataflow:",s)}this.autoCompleteCache={tags:t,projects:r,contexts:i,lastUpdate:e}}return this.autoCompleteCache}async setupAutoComplete(e,t){if(this.activeSuggests.has(e))return;let r=await this.getAutoCompleteData(),i;switch(t){case"tags":i=new ui(this.app,e,this.plugin),i.availableChoices=r.tags;break;case"project":i=new Dr(this.app,e,this.plugin),i.availableChoices=r.projects;break;case"context":i=new Er(this.app,e,this.plugin),i.availableChoices=r.contexts;break}this.activeSuggests.set(e,i);let s=()=>{let l=this.activeSuggests.get(e);l&&(l.close(),this.activeSuggests.delete(e))},o=new MutationObserver(l=>{l.forEach(c=>{c.removedNodes.forEach(u=>{(u===e||u instanceof Element&&u.contains(e))&&(s(),o.disconnect())})})});o.observe(document.body,{childList:!0,subtree:!0})}renderHeader(){this.headerEl.empty();let e=this.headerEl.createEl("tr","task-table-header-row");this.columns.forEach(t=>{let r=e.createEl("th","task-table-header-cell");r.dataset.columnId=t.id,r.style.width=`${t.width}px`,r.style.minWidth=`${Math.min(t.width,50)}px`;let i=r.createDiv("task-table-header-content"),s=i.createSpan("task-table-header-title");if(s.textContent=t.title,t.sortable){r.addClass("sortable");let o=i.createSpan("task-table-sort-icon");(0,Yt.setIcon)(o,"chevrons-up-down")}if(t.resizable&&this.config.resizableColumns){let o=r.createDiv("task-table-resize-handle");this.registerDomEvent(o,"mousedown",l=>{this.startResize(l,t.id,t.width)})}t.align&&(r.style.textAlign=t.align)})}renderTable(e,t,r=0,i){if(this.clearEmptyState(),e.length===0){this.clearAllRows(),this.renderEmptyState();return}this.updateVirtualScrollSpacer(r);let s=new Set(e.map(m=>m.id)),o=Array.from(this.bodyEl.querySelectorAll("tr[data-row-id]")),l=[];if(this.activeRows.forEach((m,f)=>{s.has(f)||l.push(f)}),l.length>0){let m=document.createDocumentFragment();l.forEach(f=>{let h=this.activeRows.get(f);h&&h.parentNode&&(this.activeRows.delete(f),m.appendChild(h),this.returnRowToPool(h))})}let u=this.bodyEl.querySelector(".virtual-scroll-spacer-top")?1:0,p=[];if(e.forEach((m,f)=>{let h=this.activeRows.get(m.id),g=u+f;h?(this.updateRow(h,m,t.has(m.id)),Array.from(this.bodyEl.children).indexOf(h)!==g&&p.push({element:h,index:g})):(h=this.getRowFromPool(),this.activeRows.set(m.id,h),this.updateRow(h,m,t.has(m.id)),p.push({element:h,index:g}))}),p.length>0){p.sort((f,h)=>f.index-h.index);let m=Array.from(this.bodyEl.children);p.forEach(({element:f,index:h})=>{let g=m[h];g&&g!==f?this.bodyEl.insertBefore(f,g):g||this.bodyEl.appendChild(f)})}}shouldUpdateRow(e,t,r){if(e.dataset.rowId!==t.id||e.hasClass("selected")!==r||parseInt(e.dataset.level||"0")!==t.level||e.dataset.expanded==="true"!==t.expanded||e.dataset.hasChildren==="true"!==t.hasChildren||e.querySelectorAll("td").length!==t.cells.length)return!0;let p=e.querySelectorAll("td");for(let m=0;me.removeAttribute(r)),this.rowPool.length<50?this.rowPool.push(e):e.remove()}updateRow(e,t,r){this.cleanupRowEvents(e),e.empty();let i=e.dataset;i.rowId=t.id,i.level=t.level.toString(),i.expanded=t.expanded.toString(),i.hasChildren=t.hasChildren.toString();let s=["task-table-row",...t.level>0?[`task-table-row-level-${t.level}`,"task-table-subtask"]:[],...t.hasChildren?["task-table-parent"]:[],...r?["selected"]:[],...t.className?[t.className]:[]];e.className=s.join(" ");let o=t.level>0,l=o?"0.9":"",c=document.createDocumentFragment();t.cells.forEach((u,p)=>{let m=this.columns[p];if(!m)return;let f=document.createElement("td");f.className="task-table-cell",f.dataset.columnId=u.columnId,f.dataset.rowId=t.id,f.style.cssText=`width:${m.width}px;min-width:${Math.min(m.width,50)}px;${m.align?`text-align:${m.align};`:""}`,o&&(f.classList.add("task-table-subtask-cell"),l&&(f.style.opacity=l)),m.id==="rowNumber"?this.renderTreeStructure(f,t,u,m):this.renderCellContent(f,u,m,t),u.className&&f.classList.add(u.className),c.appendChild(f)}),e.appendChild(c)}updateVirtualScrollSpacer(e){if(this.clearVirtualSpacers(),e<=0)return;let t=document.createElement("tr");t.className="virtual-scroll-spacer-top";let r=document.createElement("td");r.colSpan=this.columns.length,r.style.cssText=` height: ${e*40}px; padding: 0; margin: 0; border: none; background: transparent; border-collapse: collapse; line-height: 0; `,t.appendChild(r),this.bodyEl.insertBefore(t,this.bodyEl.firstChild)}clearVirtualSpacers(){this.bodyEl.querySelectorAll(".virtual-scroll-spacer-top, .virtual-scroll-spacer-bottom").forEach(t=>t.remove())}clearAllRows(){Array.from(this.activeRows.values()).forEach(t=>{this.returnRowToPool(t)}),this.activeRows.clear(),this.bodyEl.empty()}cleanupRowEvents(e){let t=this.eventCleanupMap.get(e);t&&(t.forEach(i=>i()),this.eventCleanupMap.delete(e)),e.querySelectorAll("input, button, [data-cleanup]").forEach(i=>{let s=this.eventCleanupMap.get(i);s&&(s.forEach(o=>o()),this.eventCleanupMap.delete(i))})}registerDomEvent(e,t,r,i){e instanceof Window?super.registerDomEvent(e,t,r,i):e instanceof Document?super.registerDomEvent(e,t,r,i):(super.registerDomEvent(e,t,r,i),this.eventCleanupMap.has(e)||this.eventCleanupMap.set(e,[]),this.eventCleanupMap.get(e).push(()=>{e.removeEventListener(t,r,i)}))}renderTreeStructure(e,t,r,i){let s=e.createDiv("task-table-tree-container");if(t.level>0){if(t.hasChildren){let l=s.createSpan("task-table-expand-btn");l.addClass("clickable-icon"),(0,Yt.setIcon)(l,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(l,"click",c=>{c.stopPropagation(),this.toggleRowExpansion(t.id)}),l.title=t.expanded?d("Collapse"):d("Expand")}}else if(t.hasChildren){let l=s.createSpan("task-table-expand-btn");l.addClass("clickable-icon"),l.addClass("task-table-top-level-expand"),(0,Yt.setIcon)(l,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(l,"click",c=>{c.stopPropagation(),this.toggleRowExpansion(t.id)}),l.title=t.expanded?d("Collapse subtasks"):d("Expand subtasks")}let o=s.createDiv("task-table-content-wrapper");this.renderCellContent(o,r,i,t)}renderCellContent(e,t,r,i){switch(e.empty(),r.type){case"status":this.renderStatusCell(e,t);break;case"priority":this.renderPriorityCell(e,t);break;case"date":this.renderDateCell(e,t);break;case"tags":this.renderTagsCell(e,t);break;case"number":this.renderNumberCell(e,t);break;default:this.renderTextCell(e,t,i)}}renderStatusCell(e,t){let r=e.createDiv("task-table-status");r.addClass("clickable-status");let i=r.createSpan("task-table-status-icon");switch(t.value){case"x":case"X":(0,Yt.setIcon)(i,"check-circle"),r.addClass("completed");break;case"/":case">":(0,Yt.setIcon)(i,"clock"),r.addClass("in-progress");break;case"-":(0,Yt.setIcon)(i,"x-circle"),r.addClass("abandoned");break;case"?":(0,Yt.setIcon)(i,"help-circle"),r.addClass("planned");break;default:(0,Yt.setIcon)(i,"circle"),r.addClass("not-started")}let o=r.createSpan("task-table-status-text");o.textContent=t.displayValue,this.registerDomEvent(r,"click",l=>{l.stopPropagation(),this.openStatusMenu(e,t)}),r.title=d("Click to change status")}openStatusMenu(e,t){let r=e.dataset.rowId;if(!r)return;let i=new Yt.Menu,s=this.plugin.settings.taskStatusMarks,o=new Map;for(let c of Object.keys(s)){let u=s[c];Array.from(o.values()).includes(u)||o.set(c,u)}for(let[c,u]of o)i.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{let f=m.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});f.dataset.task=u,u!==" "&&(f.checked=!0)}),p.titleEl.createEl("span",{cls:"status-option",text:c}),p.onClick(()=>{if(this.onCellChange){let m=u.toLowerCase()==="x";this.onCellChange(r,t.columnId,u)}})});let l=e.getBoundingClientRect();i.showAtPosition({x:l.left,y:l.bottom+5})}renderPriorityCell(e,t){let r=e.createDiv("task-table-priority");r.addClass("clickable-priority");let i=t.value;if(i){let s=r.createSpan("task-table-priority-icon"),o=r.createSpan("task-table-priority-text");i===5?((0,Yt.setIcon)(s,"triangle"),s.addClass("highest"),o.textContent=d("Highest")):i===4?((0,Yt.setIcon)(s,"alert-triangle"),s.addClass("high"),o.textContent=d("High")):i===3?((0,Yt.setIcon)(s,"minus"),s.addClass("medium"),o.textContent=d("Medium")):i===2?((0,Yt.setIcon)(s,"chevron-down"),s.addClass("low"),o.textContent=d("Low")):i===1&&((0,Yt.setIcon)(s,"chevrons-down"),s.addClass("lowest"),o.textContent=d("Lowest"))}else{let s=r.createSpan("task-table-priority-empty");s.textContent="\xA0",s.addClass("empty-priority")}this.registerDomEvent(r,"click",s=>{s.stopPropagation(),this.openPriorityMenu(e,t)}),r.title=d("Click to set priority")}openPriorityMenu(e,t){let r=e.dataset.rowId;if(!r)return;let i=new Yt.Menu;i.addItem(o=>{o.setTitle(d("No priority")).setIcon("circle").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,null)})}),i.addItem(o=>{o.setTitle(d("Lowest")).setIcon("chevrons-down").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,1)})}),i.addItem(o=>{o.setTitle(d("Low")).setIcon("chevron-down").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,2)})}),i.addItem(o=>{o.setTitle(d("Medium")).setIcon("minus").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,3)})}),i.addItem(o=>{o.setTitle(d("High")).setIcon("alert-triangle").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,4)})}),i.addItem(o=>{o.setTitle(d("Highest")).setIcon("triangle").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,5)})});let s=e.getBoundingClientRect();i.showAtPosition({x:s.left,y:s.bottom+5})}renderDateCell(e,t){let r=e.createDiv("task-table-date");if(r.addClass("clickable-date"),t.value){let i=new Date(t.value);i.setHours(0,0,0,0);let s=new Date;s.setHours(0,0,0,0);let o=Math.floor((i.getTime()-s.getTime())/(1e3*60*60*24)),l=r.createSpan("task-table-date-text");l.textContent=t.displayValue;let c=r.createSpan("task-table-date-relative");o===0?(c.textContent=d("Today"),c.addClass("today")):o===1?(c.textContent=d("Tomorrow"),c.addClass("tomorrow")):o===-1?(c.textContent=d("Yesterday"),c.addClass("yesterday")):o<0?(c.textContent=d("Overdue"),c.addClass("overdue")):o<=7&&(c.textContent=`${o}d`,c.addClass("upcoming"))}else{let i=r.createSpan("task-table-date-empty");i.textContent="\xA0",i.addClass("empty-date")}this.app&&this.plugin&&(this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.openDatePicker(e,t)}),r.title=d("Click to edit date"))}openDatePicker(e,t){if(!this.app||!this.plugin)return;let r=e.dataset.rowId,i=t.columnId;if(!r)return;let s;if(t.value){let c=new Date(t.value),u=c.getFullYear(),p=String(c.getMonth()+1).padStart(2,"0"),m=String(c.getDate()).padStart(2,"0");s=`${u}-${p}-${m}`}let o=new lo(this.app,this.plugin,s);o.onDateSelected=c=>{this.onDateChange&&this.onDateChange(r,i,c)};let l=e.getBoundingClientRect();o.showAtPosition({x:l.left,y:l.bottom+5})}renderTagsCell(e,t){let r=e.createDiv("task-table-tags"),i=t.value;if(t.editable){let s=r.createEl("input","task-table-tags-input");s.type="text";let o=(i==null?void 0:i.join(", "))||"";s.value=o,s.style.cssText="border:none;background:transparent;width:100%;padding:0;font:inherit;";let l=[...i||[]],c=!1,u=()=>{!c&&this.app&&(c=!0,this.setupAutoComplete(s,"tags"))};this.registerDomEvent(s,"blur",()=>{let p=s.value.trim(),m=p?p.split(",").map(f=>f.trim()).filter(f=>f.length>0):[];this.arraysEqual(l,m)||this.saveCellValue(e,t,m)}),this.registerDomEvent(s,"keydown",p=>{p.key==="Enter"&&(s.blur(),p.preventDefault()),p.stopPropagation()}),this.registerDomEvent(s,"focus",u),this.registerDomEvent(s,"input",u),this.registerDomEvent(s,"click",p=>{p.stopPropagation(),requestAnimationFrame(()=>s.focus())})}else i&&i.length>0?(r.textContent=i.join(", "),r.addClass("task-table-tags-display")):(r.textContent="\xA0",r.addClass("empty-tags"))}renderNumberCell(e,t){e.addClass("task-table-number"),e.textContent=t.displayValue}renderTextCell(e,t,r){var u,p,m,f;e.addClass("task-table-text");let i=t.columnId==="content",s=t.columnId==="project",o,l,c=!1;if(s&&((p=(u=r==null?void 0:r.task)==null?void 0:u.metadata)!=null&&p.tgProject)?(l=Vt(r.task)||"",o=l,c=ci(r.task)):i?(o=Ka(t.value||t.displayValue),l=o):(o=t.displayValue,l=t.value||""),t.editable&&!c){let h=e.createEl("input","task-table-text-input");h.type="text",h.value=o,h.style.cssText="border:none;background:transparent;width:100%;padding:0;font:inherit;";let g=i?o:l,k=!1,y=()=>{!k&&this.app&&(k=!0,t.columnId==="project"?this.setupAutoComplete(h,"project"):t.columnId==="context"&&this.setupAutoComplete(h,"context"))};this.registerDomEvent(h,"blur",()=>{let b=h.value.trim();g!==b&&this.saveCellValue(e,t,b)}),this.registerDomEvent(h,"keydown",b=>{b.key==="Enter"&&(h.blur(),b.preventDefault()),b.stopPropagation()}),(t.columnId==="project"||t.columnId==="context")&&(this.registerDomEvent(h,"focus",y),this.registerDomEvent(h,"input",y)),this.registerDomEvent(h,"click",b=>{b.stopPropagation(),requestAnimationFrame(()=>h.focus())})}else e.textContent=o,t.columnId==="filePath"&&(this.registerDomEvent(e,"click",h=>{h.stopPropagation();let g=this.plugin.app.vault.getFileByPath(t.value);g&&this.plugin.app.workspace.getLeaf(!0).openFile(g)}),e.title=d("Click to open file"));if(s&&((f=(m=r==null?void 0:r.task)==null?void 0:m.metadata)!=null&&f.tgProject)&&(!r.task.metadata.project||!r.task.metadata.project.trim())){let h=r.task.metadata.tgProject,g=e.createDiv({cls:"project-source-indicator table-indicator"}),k="",y="";switch(h.type){case"path":k="\u{1F4C1}",y=d("Auto-assigned from path")+`: ${h.source}`;break;case"metadata":k="\u{1F4C4}",y=d("Auto-assigned from file metadata")+`: ${h.source}`;break;case"config":k="\u2699\uFE0F",y=d("Auto-assigned from config file")+`: ${h.source}`;break;default:k="\u{1F517}",y=d("Auto-assigned")+`: ${h.source}`}g.innerHTML=`${k}`,g.title=y,c?(g.addClass("readonly-indicator"),e.addClass("readonly-cell")):g.addClass("override-indicator")}o.length>50&&(e.title=o)}renderEmptyState(){let t=this.bodyEl.createEl("tr","task-table-empty-row").createEl("td","task-table-empty-cell");t.colSpan=this.columns.length,t.textContent=d("No tasks found")}updateSelection(e){this.bodyEl.querySelectorAll("tr[data-row-id]").forEach(r=>{let i=r.dataset.rowId;i&&r.toggleClass("selected",e.has(i))})}updateSortIndicators(e,t){this.headerEl.querySelectorAll(".task-table-sort-icon").forEach(s=>{s.empty(),(0,Yt.setIcon)(s,"chevrons-up-down"),s.removeClass("asc","desc")});let i=this.headerEl.querySelector(`th[data-column-id="${e}"]`);if(i){let s=i.querySelector(".task-table-sort-icon");s&&(s.empty(),(0,Yt.setIcon)(s,t==="asc"?"chevron-up":"chevron-down"),s.addClass(t))}}setupResizeHandlers(){this.registerDomEvent(document,"mousemove",this.handleMouseMove.bind(this)),this.registerDomEvent(document,"mouseup",this.handleMouseUp.bind(this))}handleMouseMove(e){if(!this.isResizing)return;let t=e.clientX-this.resizeStartX,r=Math.max(50,this.resizeStartWidth+t);this.updateColumnWidth(this.resizeColumn,r)}startResize(e,t,r){e.preventDefault(),e.stopPropagation(),this.isResizing=!0,this.resizeColumn=t,this.resizeStartX=e.clientX,this.resizeStartWidth=r,document.body.style.cursor="col-resize",this.tableEl.addClass("resizing")}handleMouseUp(){this.isResizing&&(this.isResizing=!1,this.resizeColumn="",document.body.style.cursor="",this.tableEl.removeClass("resizing"))}updateColumnWidth(e,t){let r=this.headerEl.querySelector(`th[data-column-id="${e}"]`);r&&(r.style.width=`${t}px`,r.style.minWidth=`${Math.min(t,50)}px`),this.bodyEl.querySelectorAll(`td[data-column-id="${e}"]`).forEach(o=>{let l=o;l.style.width=`${t}px`,l.style.minWidth=`${Math.min(t,50)}px`});let s=this.columns.find(o=>o.id===e);s&&(s.width=t)}toggleRowExpansion(e){if(this.onRowExpand)this.onRowExpand(e);else{let t=new CustomEvent("rowToggle",{detail:{rowId:e}});this.tableEl.dispatchEvent(t)}}updateColumns(e){this.columns=e,this.renderHeader()}forceClearCache(){this.activeRows.clear(),this.rowPool=[],this.eventCleanupMap.clear(),this.activeSuggests.forEach(e=>{e.close()}),this.activeSuggests.clear(),this.bodyEl.empty()}async getAllValues(e){if(!this.plugin)return[];let t=[];if(this.plugin.dataflowOrchestrator)try{t=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks()}catch(i){console.warn("Failed to get tasks from dataflow:",i),t=[]}let r=new Set;return t.forEach(i=>{var s;switch(e){case"tags":(s=i.metadata.tags)==null||s.forEach(o=>{if(o&&o.trim()){let l=o.startsWith("#")?o.substring(1):o;r.add(l)}});break;case"project":i.metadata.project&&i.metadata.project.trim()&&r.add(i.metadata.project);break;case"context":i.metadata.context&&i.metadata.context.trim()&&r.add(i.metadata.context);break}}),Array.from(r).sort()}arraysEqual(e,t){if(e.length!==t.length)return!1;let r=[...e].sort(),i=[...t].sort();return r.every((s,o)=>s===i[o])}saveCellValue(e,t,r){let i=e.dataset.rowId;i&&this.onCellChange&&this.onCellChange(i,t.columnId,r)}clearEmptyState(){let e=this.bodyEl.querySelector(".task-table-empty-row");e&&e.remove()}ensureTreeStateConsistency(e,t){let r=e.querySelector(".task-table-expand-btn");if(r&&t.hasChildren){let i=t.expanded?"chevron-down":"chevron-right";r.empty(),(0,Yt.setIcon)(r,i),r.title=t.expanded?t.level>0?d("Collapse"):d("Collapse subtasks"):t.level>0?d("Expand"):d("Expand subtasks")}}};var hH=require("obsidian");q();var Uy=class extends hH.Component{constructor(e,t,r,i){super();this.app=e;this.plugin=t;this.config=r;this.callbacks=i;this.currentEditCell=null;this.currentInput=null;this.currentRowId="";this.currentColumnId="";this.originalValue=null}onload(){this.setupGlobalEventListeners()}onunload(){this.cancelEdit()}startEdit(e,t,r){this.cancelEdit(),this.currentEditCell=r,this.currentRowId=e,this.currentColumnId=t,this.originalValue=this.extractCellValue(r,t);let i=this.createInputElement(t,this.originalValue);i&&(this.currentInput=i,r.empty(),r.appendChild(i),r.addClass("editing"),i.focus(),i instanceof HTMLInputElement&&i.select(),this.setupInputEventListeners(i))}saveEdit(){if(!this.currentInput||!this.currentEditCell)return;let e=this.getInputValue(this.currentInput,this.currentColumnId);if(!this.validateValue(e,this.currentColumnId)){this.showValidationError();return}this.callbacks.onCellEdit(this.currentRowId,this.currentColumnId,e),this.finishEdit(),this.callbacks.onEditComplete()}cancelEdit(){this.currentEditCell&&(this.restoreCellContent(),this.finishEdit(),this.callbacks.onEditCancel())}createInputElement(e,t){switch(e){case"status":return this.createStatusSelect(t);case"priority":return this.createPrioritySelect(t);case"dueDate":case"startDate":case"scheduledDate":return this.createDateInput(t);case"tags":return this.createTagsInput(t);case"content":return this.createTextInput(t,!0);case"project":return this.createProjectInput(t);case"context":return this.createContextInput(t);default:return this.createTextInput(t,!1)}}createStatusSelect(e){let t=document.createElement("select");return t.className="task-table-status-select",[{value:" ",label:d("Not Started")},{value:"/",label:d("In Progress")},{value:"x",label:d("Completed")},{value:"-",label:d("Abandoned")},{value:"?",label:d("Planned")}].forEach(i=>{let s=document.createElement("option");s.value=i.value,s.textContent=i.label,s.selected=i.value===e,t.appendChild(s)}),t}createPrioritySelect(e){let t=document.createElement("select");return t.className="task-table-priority-select",[{value:"",label:d("No Priority")},{value:"1",label:d("High Priority")},{value:"2",label:d("Medium Priority")},{value:"3",label:d("Low Priority")}].forEach(i=>{let s=document.createElement("option");s.value=i.value,s.textContent=i.label,s.selected=i.value===String(e||""),t.appendChild(s)}),t}createDateInput(e){let t=createEl("input",{type:"text",cls:"task-table-date-input",placeholder:d("Click to select date"),attr:{readOnly:!0}});if(e){let r=new Date(e);t.value=r.toLocaleDateString()}return this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.openDatePicker(t,e)}),t}openDatePicker(e,t){let r=t?new Date(t).toISOString().split("T")[0]:void 0,i=new lo(this.app,this.plugin,r);i.onDateSelected=o=>{if(o){let l=new Date(o);e.value=l.toLocaleDateString(),e.dataset.timestamp=l.getTime().toString()}else e.value="",delete e.dataset.timestamp;i.close()};let s=e.getBoundingClientRect();i.showAtPosition({x:s.left,y:s.bottom+5})}createTagsInput(e){let t=document.createElement("input");return t.type="text",t.className="task-table-tags-input",t.placeholder=d("Enter tags separated by commas"),e&&Array.isArray(e)&&(t.value=e.join(", ")),new ui(this.app,t,this.plugin),t}createTextInput(e,t=!1){let r=document.createElement("input");return r.type="text",r.className="task-table-text-input",r.value=e||"",t&&(r.className+=" multiline"),r}createProjectInput(e){let t=this.createTextInput(e,!1);return t.className+=" task-table-project-input",t.placeholder=d("Enter project name"),new Dr(this.app,t,this.plugin),t}createContextInput(e){let t=this.createTextInput(e,!1);return t.className+=" task-table-context-input",t.placeholder=d("Enter context"),new Er(this.app,t,this.plugin),t}getInputValue(e,t){switch(t){case"status":return e.value;case"priority":return e.value?parseInt(e.value):void 0;case"dueDate":case"startDate":case"scheduledDate":return e instanceof HTMLInputElement&&e.dataset.timestamp?parseInt(e.dataset.timestamp):e.value?new Date(e.value).getTime():void 0;case"tags":return e.value?e.value.split(",").map(r=>r.trim()).filter(r=>r):[];default:return e.value}}extractCellValue(e,t){let r=e.textContent||"";switch(t){case"status":return{[d("Not Started")]:" ",[d("Completed")]:"x",[d("In Progress")]:"/",[d("Abandoned")]:"-",[d("Planned")]:"?"}[r]||" ";case"priority":return{[d("High")]:1,[d("Medium")]:2,[d("Low")]:3}[r]||void 0;case"tags":let o=e.querySelectorAll(".task-table-tag-chip");return Array.from(o).map(l=>l.textContent||"");default:return r}}validateValue(e,t){switch(t){case"priority":return e===void 0||typeof e=="number"&&e>=1&&e<=3;case"dueDate":case"startDate":case"scheduledDate":return e===void 0||typeof e=="number"&&!isNaN(e);case"content":return typeof e=="string"&&e.trim().length>0;default:return!0}}showValidationError(){this.currentInput&&(this.currentInput.addClass("error"),this.currentInput.title=d("Invalid value"),setTimeout(()=>{this.currentInput&&(this.currentInput.removeClass("error"),this.currentInput.title="")},3e3))}setupInputEventListeners(e){this.registerDomEvent(e,"keydown",t=>{t.key==="Enter"?(t.preventDefault(),this.saveEdit()):t.key==="Escape"&&(t.preventDefault(),this.cancelEdit())}),this.registerDomEvent(e,"blur",()=>{setTimeout(()=>{this.currentInput===e&&this.saveEdit()},100)}),this.registerDomEvent(e,"click",t=>{t.stopPropagation()})}setupGlobalEventListeners(){this.registerDomEvent(document,"click",e=>{this.currentEditCell&&!this.currentEditCell.contains(e.target)&&this.saveEdit()})}restoreCellContent(){this.currentEditCell&&(this.currentEditCell.textContent=String(this.originalValue||""),this.currentEditCell.removeClass("editing"))}finishEdit(){this.currentEditCell&&this.currentEditCell.removeClass("editing"),this.currentEditCell=null,this.currentInput=null,this.currentRowId="",this.currentColumnId="",this.originalValue=null}};var gH=require("obsidian");q();var af=class extends gH.Component{constructor(e,t){super();this.expandedNodes=new Set;this.treeNodes=new Map;this.columns=[];this.currentSortField="";this.currentSortOrder="asc";this.columns=e,this.pluginSettings=t}onload(){}onunload(){this.cleanup()}updateColumns(e){this.columns=e}buildTreeRows(e,t,r){t!==void 0&&(this.currentSortField=t),r!==void 0&&(this.currentSortOrder=r);let i=this.buildTreeStructure(e),s=[];return this.flattenTreeNodes(i,s,0),s}buildTreeStructure(e){this.treeNodes.clear();let t=new Map,r=[];return e.forEach(i=>{t.set(i.id,i)}),e.forEach(i=>{let s={task:i,children:[],level:0,expanded:this.expandedNodes.has(i.id)};this.treeNodes.set(i.id,s)}),e.forEach(i=>{let s=this.treeNodes.get(i.id);if(s)if(i.metadata.parent&&this.treeNodes.has(i.metadata.parent)){let o=this.treeNodes.get(i.metadata.parent);o&&(o.children.push(s),s.parent=o)}else r.push(s)}),this.calculateLevels(r,0),this.sortTreeNodes(r),r}calculateLevels(e,t){e.forEach(r=>{r.level=t,r.children.length>0&&this.calculateLevels(r.children,t+1)})}sortTreeNodes(e){if(e.length===0)return;let t=e.map(s=>s.task),r;if(!this.currentSortField||!this.pluginSettings){let s=[{field:"priority",order:"desc"},{field:"createdDate",order:"desc"}];r=this.pluginSettings?ea(t,s,this.pluginSettings):this.fallbackSort(t)}else{let s=[{field:this.currentSortField,order:this.currentSortOrder}];r=ea(t,s,this.pluginSettings)}let i=new Map;e.forEach(s=>{i.set(s.task.id,s)}),e.length=0,r.forEach(s=>{let o=i.get(s.id);o&&e.push(o)}),e.forEach(s=>{s.children.length>0&&this.sortTreeNodes(s.children)})}fallbackSort(e){return[...e].sort((t,r)=>{var c,u,p,m,f,h;let i=((c=r.metadata.priority)!=null?c:0)-((u=t.metadata.priority)!=null?u:0);if(i!==0)return i;let s=((p=r.metadata.createdDate)!=null?p:0)-((m=t.metadata.createdDate)!=null?m:0);if(s!==0)return s;let o=((f=t.content)==null?void 0:f.trim())||"",l=((h=r.content)==null?void 0:h.trim())||"";return o.localeCompare(l)})}flattenTreeNodes(e,t,r){e.forEach(i=>{let s={id:i.task.id,task:i.task,level:i.level,expanded:i.expanded,hasChildren:i.children.length>0,cells:this.createCellsForNode(i,t.length+1)};t.push(s),i.expanded&&i.children.length>0&&this.flattenTreeNodes(i.children,t,r+1)})}createCellsForNode(e,t){let r=e.task;return this.columns.map(i=>{var l,c,u;let s,o;switch(i.id){case"rowNumber":s=t,o=t.toString();break;case"status":s=r.status,o=this.formatStatus(r.status);break;case"content":s=r.content,o=r.content;break;case"priority":let p=r.metadata||{};s=p.priority,o=this.formatPriority(p.priority);break;case"dueDate":let m=r.metadata||{};s=m.dueDate,o=this.formatDate(m.dueDate);break;case"startDate":let f=r.metadata||{};s=f.startDate,o=this.formatDate(f.startDate);break;case"scheduledDate":let h=r.metadata||{};s=h.scheduledDate,o=this.formatDate(h.scheduledDate);break;case"createdDate":s=r.metadata.createdDate,o=this.formatDate(r.metadata.createdDate);break;case"completedDate":s=r.metadata.completedDate,o=this.formatDate(r.metadata.completedDate);break;case"tags":s=r.metadata.tags,o=((l=r.metadata.tags)==null?void 0:l.join(", "))||"";break;case"project":s=r.metadata.project,o=r.metadata.project||"";break;case"context":s=r.metadata.context,o=r.metadata.context||"";break;case"recurrence":s=r.metadata.recurrence,o=r.metadata.recurrence||"";break;case"estimatedTime":s=r.metadata.estimatedTime,o=((c=r.metadata.estimatedTime)==null?void 0:c.toString())||"";break;case"actualTime":s=r.metadata.actualTime,o=((u=r.metadata.actualTime)==null?void 0:u.toString())||"";break;case"filePath":s=r.filePath,o=this.formatFilePath(r.filePath);break;default:s="",o=""}return{columnId:i.id,value:s,displayValue:o,editable:i.id!=="rowNumber"&&i.id!=="filePath"}})}toggleNodeExpansion(e){let t=this.treeNodes.get(e);return!t||t.children.length===0?!1:(t.expanded=!t.expanded,t.expanded?this.expandedNodes.add(e):this.expandedNodes.delete(e),!0)}expandAll(){this.treeNodes.forEach((e,t)=>{e.children.length>0&&(e.expanded=!0,this.expandedNodes.add(t))})}collapseAll(){this.treeNodes.forEach((e,t)=>{e.expanded=!1,this.expandedNodes.delete(t)})}isNodeExpanded(e){return this.expandedNodes.has(e)}getDescendantIds(e){let t=this.treeNodes.get(e);if(!t)return[];let r=[];return this.collectDescendantIds(t,r),r}collectDescendantIds(e,t){e.children.forEach(r=>{t.push(r.task.id),this.collectDescendantIds(r,t)})}getParentId(e){var r;let t=this.treeNodes.get(e);return((r=t==null?void 0:t.parent)==null?void 0:r.task.id)||null}getSiblingIds(e){let t=this.treeNodes.get(e);return t?(t.parent?t.parent.children:[]).filter(i=>i.task.id!==e).map(i=>i.task.id):[]}canMoveTask(e,t){return!(e===t||t&&this.getDescendantIds(e).includes(t))}moveTask(e,t){if(!this.canMoveTask(e,t))return!1;let r=this.treeNodes.get(e);if(!r)return!1;if(r.parent){let i=r.parent.children.indexOf(r);i>-1&&r.parent.children.splice(i,1)}if(t){let i=this.treeNodes.get(t);i&&(i.children.push(r),r.parent=i)}else r.parent=void 0;return r.task.metadata.parent=t||void 0,!0}formatStatus(e){return{" ":d("Not Started"),x:d("Completed"),X:d("Completed"),"/":d("In Progress"),">":d("In Progress"),"-":d("Abandoned"),"?":d("Planned")}[e]||e}formatPriority(e){return e?{5:d("Highest"),4:d("High"),3:d("Medium"),2:d("Low"),1:d("Lowest")}[e]||e.toString():""}formatDate(e){return e?new Date(e).toLocaleDateString():""}formatFilePath(e){let t=e.split("/");return t[t.length-1].replace(/\.md$/,"")}cleanup(){this.expandedNodes.clear(),this.treeNodes.clear()}};var kH=require("obsidian"),Yy=class extends kH.Component{constructor(e,t,r){super();this.containerEl=e;this.pageSize=t;this.callbacks=r;this.rowHeight=40;this.bufferSize=10;this.isLoading=!1;this.totalRows=0;this.loadedRows=0;this.lastScrollTop=0;this.scrollDirection="down";this.scrollRAF=null;this.pendingScrollUpdate=!1;this.lastLoadTriggerTime=0;this.loadCooldown=500;this.isAtBottom=!1;this.isAtTop=!0;this.heightStabilizer=null;this.stableHeight=0;this.heightUpdateThrottle=0;this.scrollContainer=e,this.viewport={startIndex:0,endIndex:0,visibleRows:[],totalHeight:0,scrollTop:0}}onload(){this.setupScrollContainer(),this.setupEventListeners(),this.calculateViewport(),this.initializeHeightStabilizer()}onunload(){this.cleanup()}setupScrollContainer(){let e=this.scrollContainer;e.style.overflowY!=="auto"&&e.style.overflowY!=="scroll"&&(e.style.overflowY="auto"),e.style.position="relative"}setupEventListeners(){this.registerDomEvent(this.scrollContainer,"scroll",this.onScroll.bind(this)),this.registerDomEvent(window,"resize",this.handleResize.bind(this))}initializeHeightStabilizer(){this.heightStabilizer=document.createElement("div"),this.heightStabilizer.style.cssText=` position: absolute; top: 0; left: 0; width: 1px; height: ${this.totalRows*this.rowHeight}px; pointer-events: none; visibility: hidden; z-index: -1; `,this.scrollContainer.appendChild(this.heightStabilizer),this.stableHeight=this.totalRows*this.rowHeight}updateContent(e){this.totalRows=e,this.isAtBottom=!1,this.isAtTop=!0;let t=this.totalRows*this.rowHeight;Math.abs(t-this.stableHeight)>this.rowHeight&&this.updateStableHeight(t),this.calculateViewport(),this.updateVirtualHeight()}updateStableHeight(e){let t=performance.now();t-this.heightUpdateThrottle<100||(this.heightUpdateThrottle=t,this.stableHeight=e,this.heightStabilizer&&(this.heightStabilizer.style.height=`${e}px`))}onScroll(){this.pendingScrollUpdate||(this.pendingScrollUpdate=!0,this.scrollRAF&&cancelAnimationFrame(this.scrollRAF),this.scrollRAF=requestAnimationFrame(()=>{this.handleScroll(),this.pendingScrollUpdate=!1,this.scrollRAF=null}))}handleScroll(){let e=this.scrollContainer.scrollTop,t=this.scrollContainer.scrollHeight,r=this.scrollContainer.clientHeight,i=Math.abs(e-this.lastScrollTop);this.scrollDirection=e>this.lastScrollTop?"down":"up",this.lastScrollTop=e,this.viewport.scrollTop=e,(this.calculateViewport()||i>0)&&this.callbacks.onScroll(e),this.isAtTop=e<=1,this.isAtBottom=e+r>=t-10;let o=performance.now(),l=(e+r)/t;!this.isLoading&&!this.isAtBottom&&this.scrollDirection==="down"&&this.loadedRows.85&&o-this.lastLoadTriggerTime>this.loadCooldown&&(this.lastLoadTriggerTime=o,this.loadMoreData())}calculateViewport(){let e=this.viewport.scrollTop,t=this.scrollContainer.clientHeight,r;e<=this.rowHeight?r=0:r=Math.max(0,Math.floor(e/this.rowHeight)-this.bufferSize);let i=Math.ceil(t/this.rowHeight),s=Math.min(this.totalRows-1,r+i+this.bufferSize*2),o=1,l=Math.abs(this.viewport.startIndex-r),c=Math.abs(this.viewport.endIndex-s),u=l>=o||c>=o;return u&&(this.viewport.startIndex=r,this.viewport.endIndex=s,this.viewport.totalHeight=this.stableHeight),u}updateVirtualHeight(){this.viewport.totalHeight=this.stableHeight}getExpectedTotalHeight(){return this.totalRows*this.rowHeight}needsHeightAdjustment(){let e=this.getExpectedTotalHeight(),t=this.scrollContainer.scrollHeight;return Math.abs(t-e)>this.rowHeight}loadMoreData(){if(!(this.isLoading||this.isAtBottom)){if(this.loadedRows>=this.totalRows){this.isLoading=!1;return}this.isLoading=!0,queueMicrotask(()=>{this.callbacks.onLoadMore&&this.callbacks.onLoadMore(),this.loadNextBatch()})}}loadNextBatch(){let e=Math.min(this.pageSize,this.totalRows-this.loadedRows);if(e<=0){this.isLoading=!1,this.isAtBottom=!0;return}setTimeout(()=>{this.loadedRows+=e,this.isLoading=!1,this.loadedRows>=this.totalRows&&(this.isAtBottom=!0),this.calculateViewport()},100)}getViewport(){return{...this.viewport}}scrollToRow(e,t="smooth"){let r=e*this.rowHeight;this.scrollContainer.scrollTo({top:r,behavior:t})}scrollToTop(e="smooth"){this.scrollToRow(0,e)}scrollToBottom(e="smooth"){this.scrollToRow(this.totalRows-1,e)}setRowHeight(e){this.rowHeight=e,this.calculateViewport(),this.updateVirtualHeight()}setBufferSize(e){this.bufferSize=e,this.calculateViewport()}isRowVisible(e){return e>=this.viewport.startIndex&&e<=this.viewport.endIndex}getVisibleRowIndices(){let e=[];for(let t=this.viewport.startIndex;t<=this.viewport.endIndex;t++)e.push(t);return e}handleResize(){this.calculateViewport()}reset(){this.totalRows=0,this.loadedRows=0,this.isLoading=!1,this.lastScrollTop=0,this.isAtBottom=!1,this.isAtTop=!0,this.lastLoadTriggerTime=0,this.stableHeight=0,this.viewport={startIndex:0,endIndex:0,visibleRows:[],totalHeight:0,scrollTop:0},this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.heightStabilizer&&(this.heightStabilizer.style.height="0px"),this.scrollToTop("auto"),this.calculateViewport()}getScrollStats(){let e=this.viewport.scrollTop,t=this.scrollContainer.scrollHeight,r=this.scrollContainer.clientHeight,i=t>0?(e+r)/t:0;return{scrollTop:e,scrollHeight:t,clientHeight:r,scrollPercentage:i,direction:this.scrollDirection,visibleRowCount:this.viewport.endIndex-this.viewport.startIndex+1,totalRows:this.totalRows,loadedRows:this.loadedRows,isLoading:this.isLoading}}setEnabled(e){e?this.registerDomEvent(this.scrollContainer,"scroll",this.onScroll.bind(this)):this.scrollContainer.removeEventListener("scroll",this.onScroll.bind(this))}cleanup(){this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.heightStabilizer&&this.heightStabilizer.parentNode&&(this.heightStabilizer.parentNode.removeChild(this.heightStabilizer),this.heightStabilizer=null),this.scrollContainer.removeEventListener("scroll",this.onScroll.bind(this)),window.removeEventListener("resize",this.handleResize.bind(this))}};var Fl=require("obsidian");q();var qy=class extends Fl.Component{constructor(e,t={}){super();this.containerEl=e;this.taskCount=0;this.isTreeMode=!1;this.availableColumns=[];this.callbacks=t}onload(){this.render()}onunload(){this.headerEl&&this.headerEl.remove()}updateTaskCount(e){this.taskCount=e,this.updateTaskCountDisplay()}updateTreeMode(e){this.isTreeMode=e,this.updateTreeModeDisplay()}updateColumns(e){this.availableColumns=e,this.updateColumnToggles()}render(){this.headerEl=this.containerEl.createDiv("task-table-header-bar");let e=this.headerEl.createDiv("table-header-left");this.createTaskCountDisplay(e);let t=this.headerEl.createDiv("table-header-right");this.createControls(t)}createTaskCountDisplay(e){let t=e.createDiv("task-count-container"),r=t.createSpan("task-count-icon");(0,Fl.setIcon)(r,"list-checks");let i=t.createSpan("task-count-text");i.textContent=this.getTaskCountText(),i.dataset.countElement="true"}getTaskCountText(){return this.taskCount===0?d("No tasks"):this.taskCount===1?d("1 task"):`${this.taskCount} ${d("tasks")}`}updateTaskCountDisplay(){let e=this.headerEl.querySelector("[data-count-element]");e&&(e.textContent=this.getTaskCountText())}createControls(e){let t=e.createDiv("table-controls-container");this.treeModeBtn=t.createEl("button","table-control-btn tree-mode-btn");let r=this.treeModeBtn.createSpan("tree-mode-icon");this.updateTreeModeButton(),this.registerDomEvent(this.treeModeBtn,"click",()=>{this.toggleTreeMode()});let i=t.createDiv("column-dropdown");this.columnBtn=i.createEl("button","table-control-btn column-btn");let s=this.columnBtn.createSpan("column-icon");(0,Fl.setIcon)(s,"eye");let o=this.columnBtn.createSpan("column-text");o.textContent=d("Columns");let l=this.columnBtn.createSpan("dropdown-arrow");(0,Fl.setIcon)(l,"chevron-down"),this.columnBtn.title=d("Toggle column visibility");let c=i.createDiv("column-dropdown-menu");c.style.display="none",this.registerDomEvent(this.columnBtn,"click",u=>{u.stopPropagation();let p=c.style.display!=="none";c.style.display=p?"none":"block"}),this.registerDomEvent(document,"click",()=>{c.style.display="none"}),this.updateColumnDropdown(c)}updateTreeModeButton(){if(!this.treeModeBtn)return;let e=this.treeModeBtn.querySelector(".tree-mode-icon");e&&(e.empty(),(0,Fl.setIcon)(e,this.isTreeMode?"git-branch":"list"),this.treeModeBtn.title=this.isTreeMode?d("Switch to List Mode"):d("Switch to Tree Mode"),this.treeModeBtn.toggleClass("active",this.isTreeMode))}updateTreeModeDisplay(){this.updateTreeModeButton()}toggleTreeMode(){this.isTreeMode=!this.isTreeMode,this.updateTreeModeDisplay(),this.callbacks.onTreeModeToggle&&this.callbacks.onTreeModeToggle(this.isTreeMode)}updateColumnToggles(){let e=this.headerEl.querySelector(".column-dropdown-menu");e&&this.createColumnToggles(e)}createColumnToggles(e){e.empty(),this.availableColumns.forEach(t=>{let r=e.createDiv("column-toggle-item"),i=r.createEl("input","column-toggle-checkbox");i.type="checkbox",i.checked=t.visible,i.id=`column-toggle-${t.id}`;let s=r.createEl("label","column-toggle-label");s.htmlFor=i.id,s.textContent=t.title,this.registerDomEvent(i,"change",()=>{this.callbacks.onColumnToggle&&this.callbacks.onColumnToggle(t.id,i.checked)})})}updateColumnDropdown(e){this.createColumnToggles(e)}};var Gy=class extends yH.Component{constructor(e,t,r,i,s={}){super();this.app=e;this.plugin=t;this.parentEl=r;this.config=i;this.callbacks=s;this.allTasks=[];this.filteredTasks=[];this.displayedRows=[];this.columns=[];this.selectedRows=new Set;this.editingCell=null;this.isTreeView=!1;this.currentSortField="";this.currentSortOrder="asc";this.isLoading=!1;this.scrollRAF=null;this.lastScrollTime=0;this.scrollVelocity=0;this.lastViewport=null;this.renderThrottleRAF=null;this.lastRenderTime=0;this.handleScroll=()=>{this.scrollRAF&&cancelAnimationFrame(this.scrollRAF),this.scrollRAF=requestAnimationFrame(()=>{if(this.virtualScroll&&this.displayedRows.length>this.config.pageSize){let e=performance.now(),t=e-this.lastScrollTime,r=this.tableWrapper.scrollTop,i=this.virtualScroll.getViewport().scrollTop;this.scrollVelocity=(r-i)/Math.max(t,1),this.lastScrollTime=e,this.virtualScroll.handleScroll();let s=this.virtualScroll.getViewport();(!this.lastViewport||this.lastViewport.startIndex!==s.startIndex||this.lastViewport.endIndex!==s.endIndex)&&this.performRender(s,e)}this.scrollRAF=null})};this.setupCallbacks(),this.initializeConfig()}setupCallbacks(){this.onTaskCompleted=this.callbacks.onTaskCompleted,this.onTaskContextMenu=this.callbacks.onTaskContextMenu,this.onTaskUpdated=this.callbacks.onTaskUpdated}initializeConfig(){this.isTreeView=this.config.enableTreeView,this.currentSortField=this.config.defaultSortField,this.currentSortOrder=this.config.defaultSortOrder,this.initializeColumns()}initializeColumns(){let e=[{id:"rowNumber",title:"#",width:60,sortable:!1,resizable:!1,type:"number",visible:this.config.showRowNumbers},{id:"status",title:d("Status"),width:this.config.columnWidths.status||80,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"status",visible:this.config.visibleColumns.includes("status")},{id:"content",title:d("Content"),width:this.config.columnWidths.content||300,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("content")},{id:"priority",title:d("Priority"),width:this.config.columnWidths.priority||100,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"priority",visible:this.config.visibleColumns.includes("priority")},{id:"dueDate",title:d("Due Date"),width:this.config.columnWidths.dueDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("dueDate")},{id:"startDate",title:d("Start Date"),width:this.config.columnWidths.startDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("startDate")},{id:"scheduledDate",title:d("Scheduled Date"),width:this.config.columnWidths.scheduledDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("scheduledDate")},{id:"createdDate",title:d("Created Date"),width:this.config.columnWidths.createdDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("createdDate")},{id:"completedDate",title:d("Completed Date"),width:this.config.columnWidths.completedDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("completedDate")},{id:"tags",title:d("Tags"),width:this.config.columnWidths.tags||150,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"tags",visible:this.config.visibleColumns.includes("tags")},{id:"project",title:d("Project"),width:this.config.columnWidths.project||150,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("project")},{id:"context",title:d("Context"),width:this.config.columnWidths.context||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("context")},{id:"recurrence",title:d("Recurrence"),width:this.config.columnWidths.recurrence||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("recurrence")},{id:"filePath",title:d("File"),width:this.config.columnWidths.filePath||200,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("filePath")}];this.columns=e.filter(t=>t.visible)}onload(){this.createTableStructure(),this.initializeChildComponents(),this.setupEventListeners(),this.updateTableHeaderInfo()}onunload(){this.cleanup()}createTableStructure(){this.containerEl=this.parentEl.createDiv("task-table-container"),this.tableHeader=new qy(this.containerEl,{onTreeModeToggle:e=>{this.isTreeView=e,this.config.enableTreeView=e,this.refreshDisplay()},onRefresh:()=>{this.refreshData()},onColumnToggle:(e,t)=>{this.toggleColumnVisibility(e,t)}}),this.addChild(this.tableHeader),this.tableWrapper=this.containerEl.createDiv("task-table-wrapper"),this.tableEl=this.tableWrapper.createEl("table","task-table"),this.headerEl=this.tableEl.createEl("thead","task-table-header"),this.bodyEl=this.tableEl.createEl("tbody","task-table-body"),this.loadingEl=this.tableWrapper.createDiv("task-table-loading"),this.loadingEl.textContent=d("Loading..."),this.loadingEl.style.display="none"}initializeChildComponents(){this.renderer=new _y(this.tableEl,this.headerEl,this.bodyEl,this.columns,this.config,this.app,this.plugin),this.addChild(this.renderer),this.renderer.onDateChange=(e,t,r)=>{this.handleDateChange(e,t,r)},this.renderer.onRowExpand=e=>{this.handleRowExpansion(e)},this.renderer.onCellChange=(e,t,r)=>{this.handleCellChange(e,t,r)},this.config.enableInlineEditing&&(this.editor=new Uy(this.app,this.plugin,this.config,{onCellEdit:this.handleCellEdit.bind(this),onEditComplete:this.handleEditComplete.bind(this),onEditCancel:this.handleEditCancel.bind(this)}),this.addChild(this.editor)),this.config.enableTreeView&&(this.treeManager=new af(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.config.enableLazyLoading&&(this.virtualScroll=new Yy(this.tableWrapper,this.config.pageSize,{onLoadMore:this.loadMoreRows.bind(this),onScroll:this.handleScroll.bind(this)}),this.addChild(this.virtualScroll))}setupEventListeners(){this.registerDomEvent(this.tableEl,"click",this.handleTableClick.bind(this)),this.registerDomEvent(this.tableEl,"dblclick",this.handleTableDoubleClick.bind(this)),this.registerDomEvent(this.tableEl,"contextmenu",this.handleTableContextMenu.bind(this)),this.registerDomEvent(this.containerEl,"keydown",this.handleKeyDown.bind(this)),this.registerDomEvent(this.headerEl,"click",this.handleHeaderClick.bind(this))}updateTasks(e){this.allTasks=e,this.applyFiltersAndSort(),this.refreshDisplay(),this.updateTableHeaderInfo()}forceRefresh(){this.renderer&&this.renderer.forceClearCache(),this.virtualScroll&&this.virtualScroll.reset(),this.selectedRows.clear(),this.applyFiltersAndSort(),this.refreshDisplay(),this.updateSortIndicators()}applyFiltersAndSort(){if(this.filteredTasks=[...this.allTasks],this.currentSortField){let e=[{field:this.currentSortField,order:this.currentSortOrder}];this.filteredTasks=ea(this.filteredTasks,e,this.plugin.settings),this.filteredTasks,this.filteredTasks}}refreshDisplay(){if(this.isTreeView&&!this.treeManager&&(this.treeManager=new af(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.isTreeView&&this.treeManager?this.displayedRows=this.treeManager.buildTreeRows(this.filteredTasks,this.currentSortField,this.currentSortOrder):this.displayedRows=this.buildFlatRows(this.filteredTasks),this.selectedRows.clear(),this.virtualScroll&&this.displayedRows.length>this.config.pageSize){this.virtualScroll.updateContent(this.displayedRows.length);let e=this.virtualScroll.getViewport(),t=this.displayedRows.slice(e.startIndex,e.endIndex+1);this.renderer.renderTable(t,this.selectedRows,e.startIndex,this.displayedRows.length)}else this.renderer.renderTable(this.displayedRows,this.selectedRows)}buildFlatRows(e){return e.map((t,r)=>({id:t.id,task:t,level:0,expanded:!1,hasChildren:!1,cells:this.buildCellsForTask(t,r+1)}))}buildCellsForTask(e,t){return this.columns.map(r=>{var o;let i,s;switch(r.id){case"rowNumber":i=t,s=t.toString();break;case"status":i=e.status,s=this.formatStatus(e.status);break;case"content":i=e.content,s=e.content;break;case"priority":let l=e.metadata||{};i=l.priority,s=this.formatPriority(l.priority);break;case"dueDate":let c=e.metadata||{};i=c.dueDate,s=this.formatDate(c.dueDate);break;case"startDate":let u=e.metadata||{};i=u.startDate,s=this.formatDate(u.startDate);break;case"scheduledDate":let p=e.metadata||{};i=p.scheduledDate,s=this.formatDate(p.scheduledDate);break;case"createdDate":i=e.metadata.createdDate,s=this.formatDate(e.metadata.createdDate);break;case"completedDate":i=e.metadata.completedDate,s=this.formatDate(e.metadata.completedDate);break;case"tags":i=e.metadata.tags,s=((o=e.metadata.tags)==null?void 0:o.join(", "))||"";break;case"project":i=e.metadata.project,s=e.metadata.project||"";break;case"context":i=e.metadata.context,s=e.metadata.context||"";break;case"recurrence":i=e.metadata.recurrence,s=e.metadata.recurrence||"";break;case"filePath":i=e.filePath,s=this.formatFilePath(e.filePath);break;default:i="",s=""}return{columnId:r.id,value:i,displayValue:s,editable:r.id!=="rowNumber"&&this.config.enableInlineEditing}})}formatStatus(e){return{" ":d("Not Started"),x:d("Completed"),X:d("Completed"),"/":d("In Progress"),">":d("In Progress"),"-":d("Abandoned"),"?":d("Planned")}[e]||e}formatPriority(e){return e?{5:d("Highest"),4:d("High"),3:d("Medium"),2:d("Low"),1:d("Lowest")}[e]||e.toString():""}formatDate(e){return e?new Date(e).toLocaleDateString():""}formatFilePath(e){let t=e.split("/");return t[t.length-1].replace(/\.md$/,"")}handleTableClick(e){let r=e.target.closest("tr");if(!r)return;let i=r.dataset.rowId;!i||!this.allTasks.find(o=>o.id===i)||this.config.enableRowSelection&&(e.ctrlKey||e.metaKey?this.config.enableMultiSelect&&(this.selectedRows.has(i)?this.selectedRows.delete(i):this.selectedRows.add(i)):(this.selectedRows.clear(),this.selectedRows.add(i)),this.updateRowSelection())}handleTableDoubleClick(e){let r=e.target.closest("td");if(!r)return;let i=r.closest("tr");if(!i)return;let s=i.dataset.rowId,o=r.dataset.columnId;s&&o&&this.config.enableInlineEditing&&this.startCellEdit(s,o,r)}handleTableContextMenu(e){e.preventDefault();let r=e.target.closest("tr");if(!r)return;let i=r.dataset.rowId;if(!i)return;let s=this.allTasks.find(o=>o.id===i);s&&this.onTaskContextMenu&&this.onTaskContextMenu(e,s)}handleHeaderClick(e){let t=e.target;if(t.classList.contains("task-table-resize-handle"))return;let r=t.closest("th");if(!r||this.tableEl.classList.contains("resizing"))return;let i=r.dataset.columnId;if(!i)return;let s=this.columns.find(o=>o.id===i);!s||!s.sortable||(this.currentSortField===i?this.currentSortOrder==="asc"?this.currentSortOrder="desc":this.currentSortOrder==="desc"&&(this.currentSortField="",this.currentSortOrder="asc"):(this.currentSortField=i,this.currentSortOrder="asc"),this.virtualScroll&&this.virtualScroll.reset(),this.applyFiltersAndSort(),this.refreshDisplay(),this.updateSortIndicators(),`${this.currentSortField}${this.currentSortOrder}`,`${this.filteredTasks.length}`,`${this.displayedRows.length}`,setTimeout(()=>{let o=this.bodyEl.querySelectorAll("tr[data-row-id]").length,l=this.displayedRows.length;o!==l&&l>0&&(console.warn(`Table row count mismatch detected. Expected: ${l}, Actual: ${o}. Forcing refresh.`),this.forceRefresh())},100))}handleKeyDown(e){e.key==="Escape"&&this.editingCell&&this.cancelCellEdit()}performRender(e,t){this.renderThrottleRAF&&(cancelAnimationFrame(this.renderThrottleRAF),this.renderThrottleRAF=null);let r=0;Math.abs(this.scrollVelocity)>1&&(r=Math.min(8,Math.floor(Math.abs(this.scrollVelocity)/1.5)));let i=Math.max(0,e.startIndex-r);this.tableWrapper.scrollTop<=40&&(i=0);let o=Math.min(this.displayedRows.length-1,e.endIndex+r),l=this.displayedRows.slice(i,o+1);this.renderer.renderTable(l,this.selectedRows,i,this.displayedRows.length),this.lastViewport={startIndex:i,endIndex:o},this.lastRenderTime=t}startCellEdit(e,t,r){this.editingCell&&this.cancelCellEdit(),this.editingCell={rowId:e,columnId:t},this.editor.startEdit(e,t,r)}handleCellEdit(e,t,r){let i=this.allTasks.find(o=>o.id===e);if(!i)return;let s={...i};this.updateTaskProperty(s,t,r),this.onTaskUpdated&&this.onTaskUpdated(s)}handleEditComplete(){this.editingCell=null,this.refreshDisplay()}handleEditCancel(){this.editingCell=null}cancelCellEdit(){this.editingCell&&(this.editor.cancelEdit(),this.editingCell=null)}updateTaskProperty(e,t,r){switch(t){case"status":e.status=r,e.completed=r==="x"||r==="X";break;case"content":e.content=r;break;case"priority":e.metadata.priority=r?parseInt(String(r)):void 0;break;case"dueDate":e.metadata.dueDate=r?new Date(r).getTime():void 0;break;case"startDate":e.metadata.startDate=r?new Date(r).getTime():void 0;break;case"scheduledDate":e.metadata.scheduledDate=r?new Date(r).getTime():void 0;break;case"createdDate":e.metadata.createdDate=r?new Date(r).getTime():void 0;break;case"completedDate":e.metadata.completedDate=r?new Date(r).getTime():void 0;break;case"tags":Array.isArray(r)?e.metadata.tags=r:typeof r=="string"?e.metadata.tags=r?r.split(",").map(i=>i.trim()).filter(i=>i.length>0):[]:e.metadata.tags=[];break;case"project":ci(e)||(e.metadata.project=r||void 0);break;case"context":e.metadata.context=r||void 0;break;case"recurrence":e.metadata.recurrence=r||void 0;break}}updateRowSelection(){this.renderer.updateSelection(this.selectedRows)}updateSortIndicators(){this.currentSortField?this.renderer.updateSortIndicators(this.currentSortField,this.currentSortOrder):this.renderer.updateSortIndicators("","asc")}loadMoreRows(){this.virtualScroll&&this.virtualScroll.loadNextBatch()}cleanup(){this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.renderThrottleRAF&&(cancelAnimationFrame(this.renderThrottleRAF),this.renderThrottleRAF=null),this.lastViewport=null,this.selectedRows.clear(),this.displayedRows=[],this.filteredTasks=[],this.allTasks=[]}toggleTreeView(){this.isTreeView=!this.isTreeView,this.refreshDisplay()}getSelectedTasks(){return this.allTasks.filter(e=>this.selectedRows.has(e.id))}clearSelection(){this.selectedRows.clear(),this.updateRowSelection()}exportData(){return this.displayedRows.map(e=>{let t={};return e.cells.forEach(r=>{t[r.columnId]=r.value}),t})}refreshData(){this.applyFiltersAndSort(),this.refreshDisplay()}toggleColumnVisibility(e,t){if(t&&!this.config.visibleColumns.includes(e))this.config.visibleColumns.push(e);else if(!t){let r=this.config.visibleColumns.indexOf(e);r>-1&&this.config.visibleColumns.splice(r,1)}this.saveColumnConfiguration(),this.initializeColumns(),this.renderer&&this.renderer.updateColumns(this.columns),this.treeManager&&this.treeManager.updateColumns(this.columns),this.refreshDisplay(),this.updateTableHeaderInfo()}saveColumnConfiguration(){if(this.plugin&&this.plugin.settings){let e=this.plugin.settings.viewConfiguration.find(t=>t.id==="table");if(e&&e.specificConfig){let t=e.specificConfig;t.viewType==="table"&&(t.visibleColumns=[...this.config.visibleColumns],this.plugin.saveSettings())}}}updateTableHeaderInfo(){if(this.tableHeader){this.tableHeader.updateTaskCount(this.filteredTasks.length),this.tableHeader.updateTreeMode(this.isTreeView);let e=this.getAllAvailableColumns();this.tableHeader.updateColumns(e)}}getAllAvailableColumns(){return[{id:"status",title:d("Status"),visible:this.config.visibleColumns.includes("status")},{id:"content",title:d("Content"),visible:this.config.visibleColumns.includes("content")},{id:"priority",title:d("Priority"),visible:this.config.visibleColumns.includes("priority")},{id:"dueDate",title:d("Due Date"),visible:this.config.visibleColumns.includes("dueDate")},{id:"startDate",title:d("Start Date"),visible:this.config.visibleColumns.includes("startDate")},{id:"scheduledDate",title:d("Scheduled Date"),visible:this.config.visibleColumns.includes("scheduledDate")},{id:"createdDate",title:d("Created Date"),visible:this.config.visibleColumns.includes("createdDate")},{id:"completedDate",title:d("Completed Date"),visible:this.config.visibleColumns.includes("completedDate")},{id:"tags",title:d("Tags"),visible:this.config.visibleColumns.includes("tags")},{id:"project",title:d("Project"),visible:this.config.visibleColumns.includes("project")},{id:"context",title:d("Context"),visible:this.config.visibleColumns.includes("context")},{id:"recurrence",title:d("Recurrence"),visible:this.config.visibleColumns.includes("recurrence")},{id:"filePath",title:d("File"),visible:this.config.visibleColumns.includes("filePath")}]}handleDateChange(e,t,r){let i=this.allTasks.find(l=>l.id===e);if(!i)return;let s={...i};if(["dueDate","startDate","scheduledDate","createdDate","completedDate"].includes(t)){if(r){let l=new Date(r).getTime();s.metadata[t]=l}else delete s.metadata[t];this.onTaskUpdated&&this.onTaskUpdated(s),this.refreshDisplay()}}handleEditStart(e,t){this.editingCell={rowId:e,columnId:t}}handleRowExpansion(e){this.isTreeView&&this.treeManager&&this.treeManager.toggleNodeExpansion(e)&&this.refreshDisplay()}handleCellChange(e,t,r){let i=this.allTasks.findIndex(c=>c.id===e);if(i===-1)return;let s=this.allTasks[i];this.updateTaskProperty(s,t,r);let o={...s};this.onTaskUpdated&&this.onTaskUpdated(o);let l=this.filteredTasks.findIndex(c=>c.id===e);l!==-1&&(this.filteredTasks[l]=s),this.refreshDisplay()}};var Ky=class extends vH.Component{constructor(e,t,r,i,s){super();this.app=e;this.plugin=t;this.parentEl=r;this.config=i;this.callbacks=s;this.containerEl=this.parentEl.createDiv("table-view-adapter"),this.tableView=new Gy(this.app,this.plugin,this.containerEl,this.config,{onTaskSelected:this.callbacks.onTaskSelected,onTaskCompleted:this.callbacks.onTaskCompleted,onTaskContextMenu:this.callbacks.onTaskContextMenu,onTaskUpdated:this.callbacks.onTaskUpdated})}onload(){this.addChild(this.tableView),this.tableView.load()}onunload(){this.tableView.unload(),this.removeChild(this.tableView)}updateTasks(e){this.tableView.updateTasks(e)}setTasks(e,t){this.updateTasks(e)}toggleTreeView(){this.tableView.toggleTreeView()}getSelectedTasks(){return this.tableView.getSelectedTasks()}clearSelection(){this.tableView.clearSelection()}exportData(){return this.tableView.exportData()}};var vs=require("obsidian");var nf=require("obsidian");var yo=require("obsidian");q();var rf=class extends yo.Component{constructor(a,e,t,r,i={}){super(),this.app=a,this.plugin=e,this.containerEl=t,this.task=r,this.params=i,this.markdownRenderer=new Lt(this.app,this.containerEl,this.task.filePath,!0),this.addChild(this.markdownRenderer)}onload(){super.onload(),this.render()}render(){this.containerEl.empty(),this.containerEl.addClass("tg-quadrant-card"),this.containerEl.setAttribute("data-task-id",this.task.id);let a=this.getPriorityClass();a&&this.containerEl.addClass(a),this.createHeader(),this.createContent(),this.createMetadata(),this.addEventListeners()}createHeader(){let a=this.containerEl.createDiv("tg-quadrant-card-header");this.checkboxEl=a.createDiv("tg-quadrant-card-checkbox");let e=Pt(this.task.status,this.task,this.checkboxEl);this.registerDomEvent(e,"change",()=>{let i=e.checked?"x":" ";this.params.onTaskStatusUpdate&&this.params.onTaskStatusUpdate(this.task.id,i)});let r=a.createDiv("tg-quadrant-card-actions").createEl("button",{cls:"tg-quadrant-card-more-btn",attr:{"aria-label":d("More actions")}});(0,yo.setIcon)(r,"more-horizontal"),this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.showContextMenu(i)})}createContent(){this.contentEl=this.containerEl.createDiv("tg-quadrant-card-content");let a=this.contentEl.createDiv("tg-quadrant-card-title"),e=new Lt(this.app,a,this.task.filePath,!0);this.addChild(e),e.render(this.task.content,!0);let t=this.extractTags();if(t.length>0){let r=this.contentEl.createDiv("tg-quadrant-card-tags");t.forEach(i=>{let s=r.createSpan("tg-quadrant-card-tag");s.textContent=i,i==="#urgent"?s.addClass("tg-quadrant-tag--urgent"):i==="#important"&&s.addClass("tg-quadrant-tag--important")})}}createMetadata(){this.metadataEl=this.containerEl.createDiv("tg-quadrant-card-metadata");let a=this.getTaskDueDate();if(a){let e=this.metadataEl.createDiv("tg-quadrant-card-due-date"),t=e.createSpan("tg-quadrant-card-due-date-text");t.textContent=this.formatDueDate(a),this.isDueSoon(a)?e.addClass("tg-quadrant-card-due-date--urgent"):this.isOverdue(a)&&e.addClass("tg-quadrant-card-due-date--overdue")}this.metadataEl.createDiv("tg-quadrant-card-file-info",e=>{if(this.task.metadata.priority){let i;if(typeof this.task.metadata.priority=="string")switch(this.task.metadata.priority.toLowerCase()){case"lowest":i=1;break;case"low":i=2;break;case"medium":i=3;break;case"high":i=4;break;case"highest":i=5;break;default:i=parseInt(this.task.metadata.priority)||1;break}else i=this.task.metadata.priority;let s=rr(i),o=["tg-quadrant-card-priority"];s&&o.push(`priority-${s}`);let l=e.createDiv({cls:o}),c="!".repeat(i);l.textContent=c}let t=e.createSpan("tg-quadrant-card-file-name");t.textContent=this.getFileName();let r=e.createSpan("tg-quadrant-card-line");r.textContent=`L${this.task.line}`})}addEventListeners(){this.registerDomEvent(this.containerEl,"click",a=>{a.target===this.checkboxEl||this.checkboxEl.contains(a.target)||this.params.onTaskSelected&&this.params.onTaskSelected(this.task)}),this.registerDomEvent(this.containerEl,"contextmenu",a=>{a.preventDefault(),a.stopPropagation(),this.params.onTaskContextMenu?this.params.onTaskContextMenu(a,this.task):this.showContextMenu(a)}),this.registerDomEvent(this.containerEl,"dblclick",a=>{a.stopPropagation(),this.openTaskInFile()})}showContextMenu(a){var i,s;let e=new yo.Menu;e.addItem(o=>{o.setTitle(d("Open in file")).setIcon("external-link").onClick(()=>{this.openTaskInFile()})}),e.addItem(o=>{o.setTitle(d("Copy task")).setIcon("copy").onClick(()=>{navigator.clipboard.writeText(this.task.originalMarkdown)})}),e.addSeparator();let t=this.task.content.includes("#urgent")||((i=this.task.metadata.tags)==null?void 0:i.includes("#urgent")),r=this.task.content.includes("#important")||((s=this.task.metadata.tags)==null?void 0:s.includes("#important"));t?e.addItem(o=>{o.setTitle(d("Remove urgent tag")).setIcon("zap-off").onClick(()=>{this.removeTagFromTask("#urgent")})}):e.addItem(o=>{o.setTitle(d("Mark as urgent")).setIcon("zap").onClick(()=>{this.addTagToTask("#urgent")})}),r?e.addItem(o=>{o.setTitle(d("Remove important tag")).setIcon("star-off").onClick(()=>{this.removeTagFromTask("#important")})}):e.addItem(o=>{o.setTitle(d("Mark as important")).setIcon("star").onClick(()=>{this.addTagToTask("#important")})}),e.showAtMouseEvent(a)}async openTaskInFile(){let a=this.app.vault.getFileByPath(this.task.filePath);if(a){let e=this.app.workspace.getLeaf(!1);await e.openFile(a);let t=e.view;if(t&&t instanceof yo.MarkdownView&&t.editor){let r=this.task.line-1;t.editor.setCursor(r,0),t.editor.scrollIntoView({from:{line:r,ch:0},to:{line:r,ch:0}},!0)}}}async addTagToTask(a){try{let e={...this.task};e.metadata.tags||(e.metadata.tags=[]),e.metadata.tags.includes(a)||(e.metadata.tags=[...e.metadata.tags,a]),this.task=e,this.render(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(e)}catch(e){console.error(`Failed to add tag ${a} to task ${this.task.id}:`,e)}}async removeTagFromTask(a){try{let e={...this.task};e.metadata.tags=e.metadata.tags.filter(t=>t!==a),this.task=e,this.render(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(e)}catch(e){console.error(`Failed to remove tag ${a} from task ${this.task.id}:`,e)}}extractTags(){return this.task.content.match(/#[\w-]+/g)||[]}getPriorityClass(){return this.task.content.includes("\u{1F53A}")?"tg-quadrant-card--priority-highest":this.task.content.includes("\u23EB")?"tg-quadrant-card--priority-high":this.task.content.includes("\u{1F53C}")?"tg-quadrant-card--priority-medium":this.task.content.includes("\u{1F53D}")?"tg-quadrant-card--priority-low":this.task.content.includes("\u23EC")?"tg-quadrant-card--priority-lowest":""}getTaskDueDate(){let a=this.task.content.match(/📅\s*(\d{4}-\d{2}-\d{2})/);return a?new Date(a[1]):null}formatDueDate(a){let e=new Date,t=a.getTime()-e.getTime(),r=Math.ceil(t/(1e3*60*60*24));if(r<0){let i=Math.abs(r);return d("Overdue by")+" "+i+" "+d("days")}else return r===0?d("Due today"):r===1?d("Due tomorrow"):r<=7?d("Due in")+" "+r+" "+d("days"):a.toLocaleDateString()}isDueSoon(a){let e=new Date,r=(a.getTime()-e.getTime())/(1e3*60*60*24);return r>=0&&r<=3}isOverdue(a){let e=new Date;return a.getTime(){if(!this.scrollContainerEl||!this.hasMoreTasks||this.isLoadingMore)return;let e=this.scrollContainerEl,t=e.scrollTop,r=e.scrollHeight,i=e.clientHeight;t+i>=r-100&&this.loadMoreTasks()};this.app=e,this.plugin=t,this.containerEl=r,this.quadrant=i,this.params=s}onload(){super.onload(),this.render(),setTimeout(()=>{this.setupLazyLoading(),this.setupScrollLoading(),this.setupManualScrollListener(),this.checkInitialVisibility()},50),setTimeout(()=>{!this.isContentLoaded&&this.tasks.length>0&&(`${this.quadrant.id}`,this.loadContent())},500),setTimeout(()=>{!this.isContentLoaded&&this.tasks.length>0&&this.tasks.length<=this.pageSize&&(`${this.quadrant.id}`,this.loadContent())},1e3)}onunload(){this.cleanup(),this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=null),this.scrollObserver&&(this.scrollObserver.disconnect(),this.scrollObserver=null),this.scrollContainerEl&&this.scrollContainerEl.removeEventListener("scroll",this.handleScroll),super.onunload()}cleanup(){this.cardComponents.forEach(e=>{e.onunload()}),this.cardComponents=[]}render(){this.containerEl.empty(),this.containerEl.addClass("tg-quadrant-column"),this.containerEl.addClass(this.quadrant.className),this.createHeader(),this.createScrollableContent()}createHeader(){this.headerEl=this.containerEl.createDiv("tg-quadrant-header");let e=this.headerEl.createDiv("tg-quadrant-title-container"),t=e.createSpan("tg-quadrant-priority");t.textContent=this.quadrant.priorityEmoji,this.titleEl=e.createDiv("tg-quadrant-title"),this.titleEl.textContent=this.quadrant.title,this.countEl=this.headerEl.createDiv("tg-quadrant-count"),this.updateCount()}createScrollableContent(){this.scrollContainerEl=this.containerEl.createDiv("tg-quadrant-scroll-container"),this.scrollContainerEl.addEventListener("scroll",this.handleScroll,{passive:!0}),this.contentEl=this.scrollContainerEl.createDiv("tg-quadrant-column-content"),this.contentEl.setAttribute("data-quadrant-id",this.quadrant.id),this.createLoadMoreIndicator()}createLoadMoreIndicator(){this.loadMoreEl=this.scrollContainerEl.createDiv("tg-quadrant-load-more");let e=this.loadMoreEl.createDiv("tg-quadrant-load-more-spinner");(0,nf.setIcon)(e,"loader-2");let t=this.loadMoreEl.createDiv("tg-quadrant-load-more-message");t.textContent=d("Loading more tasks...")}checkInitialVisibility(){!this.isContentLoaded&&this.isElementVisible()&&(`${this.quadrant.id}`,this.loadContent())}isElementVisible(){if(!this.containerEl)return!1;let e=this.containerEl.getBoundingClientRect(),t=window.innerHeight,r=window.innerWidth,i=e.top0&&e.left0,s=e.width>50&&e.height>50;return i&&s}setupLazyLoading(){if(this.tasks.length<=this.pageSize){`${this.tasks.length}${this.quadrant.id}`,this.loadContent();return}if(this.isElementVisible()){`${this.quadrant.id}`,this.loadContent();return}this.intersectionObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&!this.isContentLoaded&&(`${this.quadrant.id}`,this.loadContent())})},{root:null,rootMargin:"100px",threshold:.01}),this.intersectionObserver.observe(this.contentEl),this.containerEl&&this.intersectionObserver.observe(this.containerEl)}setupScrollLoading(){this.scrollObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&this.hasMoreTasks&&!this.isLoadingMore&&this.isContentLoaded&&this.loadMoreTasks()})},{root:this.scrollContainerEl,rootMargin:"50px",threshold:.1}),this.observeLoadMoreElement()}observeLoadMoreElement(){this.loadMoreEl&&this.scrollObserver&&this.scrollObserver.observe(this.loadMoreEl)}async loadContent(){this.isContentLoaded||(this.isContentLoaded=!0,this.loadingEl&&(this.loadingEl.remove(),this.loadingEl=null),this.currentPage=0,this.renderedTasks=[],await this.loadMoreTasks(),this.observeLoadMoreElement())}async loadMoreTasks(){if(!(this.isLoadingMore||!(this.hasMoreTasks||this.renderedTasks.length===0&&this.tasks.length>0))){this.isLoadingMore=!0,this.showLoadMoreIndicator();try{let t=this.currentPage*this.pageSize,r=t+this.pageSize,i=this.tasks.slice(t,r);if(i.length===0){this.hasMoreTasks=!1,this.hideLoadMoreIndicator();return}this.renderedTasks.push(...i),await this.renderTaskBatch(i),this.currentPage++,r>=this.tasks.length?(this.hasMoreTasks=!1,this.hideLoadMoreIndicator()):this.showLoadMoreIndicator()}catch(t){console.error("Error loading more tasks:",t)}finally{this.isLoadingMore=!1}}}showLoadMoreIndicator(){this.loadMoreEl&&this.hasMoreTasks&&this.loadMoreEl.addClass("tg-quadrant-load-more--visible")}hideLoadMoreIndicator(){this.loadMoreEl&&this.loadMoreEl.removeClass("tg-quadrant-load-more--visible")}setTasks(e){if(`${this.quadrant.id}${e.length}`,this.areTasksEqual(this.tasks,e)){`${this.quadrant.id}`;return}this.tasks=e,this.updateCount(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=e.length>this.pageSize,e.length>0?this.isContentLoaded?this.renderTasks():e.length<=this.pageSize?(`${e.length}${this.quadrant.id}`,setTimeout(()=>{this.loadContent()},50)):setTimeout(()=>{this.isContentLoaded||(`${this.quadrant.id}`,this.loadContent())},100):this.isContentLoaded&&this.showEmptyState()}areTasksEqual(e,t){if(e.length!==t.length)return!1;if(e.length===0&&t.length===0)return!0;for(let r=0;ri.includes(s)))return!1}else if(e.metadata!==t.metadata)return!1;return!0}forceSetTasks(e){`${this.quadrant.id}${e.length}`,this.tasks=e,this.updateCount(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=e.length>this.pageSize,this.isContentLoaded?this.renderTasks():this.loadContent()}updateTask(e){let t=this.tasks.findIndex(i=>i.id===e.id);if(t===-1){console.warn(`Task ${e.id} not found in quadrant ${this.quadrant.id}`);return}if(this.areTasksContentEqual(this.tasks[t],e)){`${e.id}`;return}this.tasks[t]=e,this.updateCount();let r=this.renderedTasks.findIndex(i=>i.id===e.id);if(r!==-1){this.renderedTasks[r]=e;let i=this.cardComponents.find(s=>s.containerEl.getAttribute("data-task-id")===e.id);i&&i.updateTask(e)}`${e.id}${this.quadrant.id}`}addTask(e){if(this.tasks.some(t=>t.id===e.id)){console.warn(`Task ${e.id} already exists in quadrant ${this.quadrant.id}`);return}this.tasks.push(e),this.updateCount(),this.isContentLoaded&&this.renderedTasks.lengths.id===e);if(t===-1){console.warn(`Task ${e} not found in quadrant ${this.quadrant.id}`);return}this.tasks.splice(t,1),this.updateCount();let r=this.renderedTasks.findIndex(s=>s.id===e);r!==-1&&this.renderedTasks.splice(r,1);let i=this.cardComponents.findIndex(s=>s.containerEl.getAttribute("data-task-id")===e);if(i!==-1){let s=this.cardComponents[i];s.onunload(),s.containerEl.remove(),this.cardComponents.splice(i,1)}this.tasks.length===0&&this.isContentLoaded&&this.showEmptyState(),`${e}${this.quadrant.id}`}async renderSingleTask(e){let t=document.createElement("div");t.className="tg-quadrant-card",t.setAttribute("data-task-id",e.id);let r=new rf(this.app,this.plugin,t,e,{onTaskStatusUpdate:this.params.onTaskStatusUpdate,onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:async i=>{var s,o;(o=(s=this.params).onTaskUpdated)==null||o.call(s,i)}});this.addChild(r),this.cardComponents.push(r),this.contentEl.appendChild(t)}updateCount(){this.countEl&&(this.countEl.textContent=`${this.tasks.length} ${this.tasks.length===1?d("task"):d("tasks")}`)}async renderTasks(){this.contentEl&&(this.cleanup(),this.contentEl.empty(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=this.tasks.length>this.pageSize,await this.loadMoreTasks(),this.tasks.length===0&&this.showEmptyState())}async renderTaskBatch(e){if(!e.length)return;let t=document.createDocumentFragment(),r=5;for(let i=0;i{let l=document.createElement("div");l.className="tg-quadrant-card",l.setAttribute("data-task-id",o.id);let c=new rf(this.app,this.plugin,l,o,{onTaskStatusUpdate:this.params.onTaskStatusUpdate,onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:async u=>{this.params.onTaskStatusUpdate&&await this.params.onTaskStatusUpdate(u.id,u.status)}});this.addChild(c),this.cardComponents.push(c),t.appendChild(l)}),i+rsetTimeout(o,5));this.contentEl.appendChild(t),setTimeout(()=>{this.checkScrollPosition()},100)}checkScrollPosition(){if(!this.scrollContainerEl||!this.loadMoreEl)return;let e=this.scrollContainerEl,t=this.loadMoreEl,r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),s=i.topr.top&&i.leftr.left,o=e.scrollTop,l=e.scrollHeight,c=e.clientHeight,u=o+c>=l-100;(s||u)&&this.hasMoreTasks&&!this.isLoadingMore&&this.loadMoreTasks()}showEmptyState(){let e=this.contentEl.createDiv("tg-quadrant-empty-state"),t=e.createDiv("tg-quadrant-empty-icon");(0,nf.setIcon)(t,"inbox");let r=e.createDiv("tg-quadrant-empty-message");r.textContent=this.getEmptyStateMessage()}getEmptyStateMessage(){switch(this.quadrant.id){case"urgent-important":return d("No crisis tasks - great job!");case"not-urgent-important":return d("No planning tasks - consider adding some goals");case"urgent-not-important":return d("No interruptions - focus time!");case"not-urgent-not-important":return d("No time wasters - excellent focus!");default:return d("No tasks in this quadrant")}}setVisibility(e){e?this.containerEl.removeClass("tg-quadrant-column--hidden"):this.containerEl.addClass("tg-quadrant-column--hidden")}addDropIndicator(){this.contentEl.addClass("tg-quadrant-column-content--drop-active"),this.containerEl.addClass("tg-quadrant-column--drag-target")}removeDropIndicator(){this.contentEl.removeClass("tg-quadrant-column-content--drop-active"),this.containerEl.removeClass("tg-quadrant-column--drag-target"),this.containerEl.removeClass("tg-quadrant-column--highlighted"),setTimeout(()=>{this.contentEl.removeClass("tg-quadrant-column-content--drop-active"),this.containerEl.removeClass("tg-quadrant-column--drag-target"),this.containerEl.removeClass("tg-quadrant-column--highlighted")},10)}forceLoadContent(){`${this.quadrant.id}`,this.isContentLoaded||this.loadContent()}async loadAllTasks(){if(!this.hasMoreTasks)return;this.hasMoreTasks=!1,this.hideLoadMoreIndicator();let e=this.tasks.slice(this.renderedTasks.length);if(e.length===0)return;let t=10;for(let r=0;rsetTimeout(s,10))}}getQuadrantId(){return this.quadrant.id}getQuadrant(){return this.quadrant}getTasks(){return this.tasks}getRenderedTasks(){return this.renderedTasks}getTaskCount(){return this.tasks.length}isEmpty(){return this.tasks.length===0}isLoaded(){return this.isContentLoaded}hasMoreToLoad(){return this.hasMoreTasks}getQuadrantColor(){switch(this.quadrant.id){case"urgent-important":return"var(--text-error)";case"not-urgent-important":return"var(--color-accent)";case"urgent-not-important":return"var(--text-warning)";case"not-urgent-not-important":return"var(--text-muted)";default:return"var(--color-accent)"}}getQuadrantRecommendation(){switch(this.quadrant.id){case"urgent-important":return d("Handle immediately. These are critical tasks that need your attention now.");case"not-urgent-important":return d("Schedule and plan. These tasks are key to your long-term success.");case"urgent-not-important":return d("Delegate if possible. These tasks are urgent but don't require your specific skills.");case"not-urgent-not-important":return d("Eliminate or minimize. These tasks may be time wasters.");default:return d("Review and categorize these tasks appropriately.")}}setupManualScrollListener(){this.handleScroll=this.handleScroll.bind(this)}prepareDragOperation(){this.hasMoreTasks&&this.renderedTasks.lengthr.id===this.currentViewId);if(e&&e.specificConfig&&e.specificConfig.viewType==="quadrant")return e.specificConfig;let t=this.plugin.settings.viewConfiguration.find(r=>r.id==="quadrant");return(t==null?void 0:t.specificConfig)||{urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3}}onload(){super.onload(),this.render()}onunload(){this.cleanup(),super.onunload()}cleanup(){this.sortableInstances.forEach(e=>{e.destroy()}),this.sortableInstances=[],this.columns.forEach(e=>{e.onunload()}),this.columns=[],this.filterComponent&&(this.filterComponent.onunload(),this.filterComponent=null)}render(){this.containerEl.empty(),this.createHeader(),this.createFilterSection(),this.createQuadrantGrid(),this.refresh()}createHeader(){let e=this.containerEl.createDiv("tg-quadrant-header"),t=e.createDiv("tg-quadrant-title");t.textContent=d("Matrix");let i=e.createDiv("tg-quadrant-controls").createDiv("tg-quadrant-sort"),s=[{field:"priority",order:"desc",label:d("Priority (High to Low)")},{field:"priority",order:"asc",label:d("Priority (Low to High)")},{field:"dueDate",order:"asc",label:d("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:d("Due Date (Latest First)")},{field:"createdDate",order:"desc",label:d("Created Date (Newest First)")},{field:"createdDate",order:"asc",label:d("Created Date (Oldest First)")}],o=new vs.DropdownComponent(i);s.forEach(c=>{let u=`${c.field}-${c.order}`;o.addOption(u,c.label)});let l=`${this.sortOption.field}-${this.sortOption.order}`;o.setValue(l),o.onChange(c=>{let[u,p]=c.split("-"),m=s.find(f=>f.field===u&&f.order===p)||this.sortOption;(m.field!==this.sortOption.field||m.order!==this.sortOption.order)&&(`${this.sortOption.field}${this.sortOption.order}${m.field}${m.order}`,this.sortOption=m,this.forceRefreshAll())})}createFilterSection(){this.filterContainerEl=this.containerEl.createDiv("tg-quadrant-filter-container")}createQuadrantGrid(){this.columnContainerEl=this.containerEl.createDiv("tg-quadrant-grid"),sf.forEach(e=>{let t=this.columnContainerEl.createDiv(`tg-quadrant-column ${e.className}`),r=new Qy(this.app,this.plugin,t,e,{onTaskStatusUpdate:async(i,s)=>{this.params.onTaskStatusUpdate&&await this.params.onTaskStatusUpdate(i,s),setTimeout(()=>{this.refreshSelectively()},100)},onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:this.params.onTaskUpdated});this.addChild(r),this.columns.push(r),this.setupDragAndDrop(t,e)})}setupDragAndDrop(e,t){let r=e.querySelector(".tg-quadrant-column-content");if(!r)return;let i=!vs.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0,s=new Lr(r,{group:"quadrant-tasks",animation:150,ghostClass:"tg-quadrant-card--ghost",dragClass:"tg-quadrant-card--dragging",delay:i?150:0,touchStartThreshold:i?5:3,forceFallback:!1,fallbackOnBody:!0,scroll:!0,scrollSensitivity:i?50:30,scrollSpeed:i?15:10,bubbleScroll:!0,onEnd:o=>{this.handleSortEnd(o,t)}});this.sortableInstances.push(s)}handleTaskReorder(e,t){let i=e.item.getAttribute("data-task-id");!i||e.oldIndex===e.newIndex||!this.tasks.find(o=>o.id===i)||`${i}${e.oldIndex}${e.newIndex}${t.id}`}async handleSortEnd(e,t){e.oldIndex,e.newIndex;let r=e.item.dataset.taskId,i=e.to,s=e.from;if(r&&i&&s){let o=i.getAttribute("data-quadrant-id"),l=sf.find(p=>p.id===o),c=s.getAttribute("data-quadrant-id"),u=sf.find(p=>p.id===c);l&&u&&(o!==c?(`${r}${c}${o}`,await this.updateTaskQuadrant(r,l,u)):e.oldIndex!==e.newIndex&&(`${r}${o}`,this.handleTaskReorder(e,l)))}}async updateTaskQuadrant(e,t,r){let i=this.tasks.find(s=>s.id===e);if(i)try{let s={...i};s.metadata||(s.metadata={tags:[],children:[]});let o=[...s.metadata.tags||[]],l=[];if(r)r.urgentTag&&l.push(r.urgentTag),r.importantTag&&l.push(r.importantTag);else{let p=this.quadrantConfig.urgentTag||"#urgent",m=this.quadrantConfig.importantTag||"#important";l.push(p),l.push(m)}let c=o.filter(p=>!l.includes(p));if(t.urgentTag&&(c.includes(t.urgentTag)||c.push(t.urgentTag)),t.importantTag&&(c.includes(t.importantTag)||c.push(t.importantTag)),s.metadata.tags=c,this.quadrantConfig.usePriorityForClassification)switch(t.id){case"urgent-important":s.metadata.priority=5;break;case"not-urgent-important":s.metadata.priority=4;break;case"urgent-not-important":s.metadata.priority=3;break;case"not-urgent-not-important":s.metadata.priority=2;break}s.metadata.customFields||(s.metadata.customFields={}),s.metadata.customFields.quadrant=t.id,s.metadata.customFields.lastQuadrantUpdate=Date.now(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(s);let u=this.tasks.findIndex(p=>p.id===e);u!==-1&&(this.tasks[u]=s),this.showUpdateFeedback(i,t),setTimeout(()=>{this.refresh()},500)}catch(s){console.error("Failed to update task quadrant:",s),this.showErrorFeedback(i,s)}}showUpdateFeedback(e,t){let r=`${t.priorityEmoji} ${d("Task moved to")} ${t.title}`;new vs.Notice(r,2e3)}showErrorFeedback(e,t){console.error("Task update error:",t);let r=`\u26A0\uFE0F ${d("Failed to update task")}`;new vs.Notice(r,3e3)}categorizeTasksByQuadrant(e){let t=new Map;return sf.forEach(r=>{t.set(r.id,[])}),e.forEach(r=>{let i=this.determineTaskQuadrant(r),s=t.get(i)||[];s.push(r),t.set(i,s)}),t}determineTaskQuadrant(e){var i,s;let t=!1,r=!1;if(this.quadrantConfig.usePriorityForClassification){let o=((i=e.metadata)==null?void 0:i.priority)||0,l=this.quadrantConfig.urgentPriorityThreshold||4,c=this.quadrantConfig.importantPriorityThreshold||3;t=o>=l,r=o>=c}else{let o=e.content.toLowerCase(),l=((s=e.metadata)==null?void 0:s.tags)||[],c=(this.quadrantConfig.urgentTag||"#urgent").toLowerCase(),u=o.includes(c)||l.includes(c),p=this.isTaskUrgent(e);t=u||p;let m=(this.quadrantConfig.importantTag||"#important").toLowerCase(),f=o.includes(m)||l.includes(m),h=this.isTaskImportant(e);r=f||h}return t&&r?"urgent-important":!t&&r?"not-urgent-important":t&&!r?"urgent-not-important":"not-urgent-not-important"}isTaskUrgent(e){var o,l;let t=/[🔺⏫]/.test(e.content),r=((o=e.metadata)==null?void 0:o.priority)&&e.metadata.priority>=4,i=(this.quadrantConfig.urgentThresholdDays||3)*24*60*60*1e3,s=((l=e.metadata)==null?void 0:l.dueDate)&&e.metadata.dueDate<=Date.now()+i;return t||r||!!s}isTaskImportant(e){var s;let t=/[🔺⏫🔼]/.test(e.content),r=((s=e.metadata)==null?void 0:s.priority)&&e.metadata.priority>=3,i=/\b(goal|project|milestone|strategic)\b/i.test(e.content);return t||r||i}setTasks(e){this.allTasks=[...e],this.applyFilters()}applyFilters(){let e=[...this.allTasks];this.tasks=e,this.refreshSelectively()}refresh(){this.refreshSelectively()}refreshSelectively(){if(!this.columns.length)return;let e=this.categorizeTasksByQuadrant(this.tasks);this.columns.forEach(t=>{let r=t.getQuadrantId(),i=e.get(r)||[],s=t.getTasks();if(this.hasTasksChanged(s,i)){`${r}`;let o=this.sortTasks(i);t.setTasks(o),this.hideEmptyColumns&&t.isEmpty()?t.setVisibility(!1):t.setVisibility(!0),!t.isEmpty()&&!t.isLoaded()&&setTimeout(()=>{t.forceLoadContent()},50)}else`${r}`})}hasTasksChanged(e,t){if(e.length!==t.length)return!0;if(e.length===0&&t.length===0)return!1;let r=new Set(e.map(l=>l.id)),i=new Set(t.map(l=>l.id));if(r.size!==i.size)return!0;for(let l of r)if(!i.has(l))return!0;for(let l=0;l[l.id,l])),o=new Map(t.map(l=>[l.id,l]));for(let[l,c]of o){let u=s.get(l);if(!u||this.hasTaskContentChanged(u,c))return!0}return!1}hasTaskContentChanged(e,t){if(e.content!==t.content||e.status!==t.status)return!0;if(e.metadata&&t.metadata){if(e.metadata.priority!==t.metadata.priority||e.metadata.dueDate!==t.metadata.dueDate||e.metadata.scheduledDate!==t.metadata.scheduledDate||e.metadata.startDate!==t.metadata.startDate)return!0;let r=e.metadata.tags||[],i=t.metadata.tags||[];if(r.length!==i.length||!r.every(s=>i.includes(s)))return!0}else if(e.metadata!==t.metadata)return!0;return!1}forceRefreshAll(){if(!this.columns.length)return;let e=this.categorizeTasksByQuadrant(this.tasks);this.columns.forEach(t=>{let r=t.getQuadrantId(),i=e.get(r)||[],s=this.sortTasks(i);t.setTasks(s),this.hideEmptyColumns&&t.isEmpty()?t.setVisibility(!1):t.setVisibility(!0)}),setTimeout(()=>{this.forceLoadAllColumns()},200)}forceLoadAllColumns(){this.columns.forEach(e=>{e.isEmpty()||e.forceLoadContent()})}updateQuadrant(e,t){let r=this.columns.find(o=>o.getQuadrantId()===e);if(!r){console.warn(`Quadrant column not found: ${e}`);return}let i;t?i=t:i=this.categorizeTasksByQuadrant(this.tasks).get(e)||[];let s=this.sortTasks(i);r.setTasks(s),this.hideEmptyColumns&&r.isEmpty()?r.setVisibility(!1):r.setVisibility(!0),`${e}${s.length}`}updateQuadrants(e){e.forEach(({quadrantId:t,tasks:r})=>{this.updateQuadrant(t,r)})}sortTasks(e){let t=[...e];return`${e.length}${this.sortOption.field}${this.sortOption.order}`,t.sort((r,i)=>{var l,c,u,p,m,f,h,g;let s,o;switch(this.sortOption.field){case"priority":s=this.getTaskPriorityValue(r),o=this.getTaskPriorityValue(i);break;case"dueDate":s=((l=r.metadata)==null?void 0:l.dueDate)||0,o=((c=i.metadata)==null?void 0:c.dueDate)||0;break;case"scheduledDate":s=((u=r.metadata)==null?void 0:u.scheduledDate)||0,o=((p=i.metadata)==null?void 0:p.scheduledDate)||0;break;case"startDate":s=((m=r.metadata)==null?void 0:m.startDate)||0,o=((f=i.metadata)==null?void 0:f.startDate)||0;break;case"createdDate":s=((h=r.metadata)==null?void 0:h.createdDate)||0,o=((g=i.metadata)==null?void 0:g.createdDate)||0;break;default:return 0}return this.sortOption.order==="asc"?s>o?1:so?-1:0}),t.length>0&&t.slice(0,3).map(r=>{var i,s;return{id:r.id,content:r.content.substring(0,50),priority:this.getTaskPriorityValue(r),dueDate:(i=r.metadata)==null?void 0:i.dueDate,scheduledDate:(s=r.metadata)==null?void 0:s.scheduledDate}}),t}getTaskPriorityValue(e){var t;return(t=e.metadata)!=null&&t.priority&&typeof e.metadata.priority=="number"?e.metadata.priority:e.content.includes("\u{1F53A}")?5:e.content.includes("\u23EB")?4:e.content.includes("\u{1F53C}")?3:e.content.includes("\u{1F53D}")?2:e.content.includes("\u23EC")?1:0}getQuadrantStats(){let e=this.categorizeTasksByQuadrant(this.tasks),t={};return sf.forEach(r=>{var i;t[r.id]=((i=e.get(r.id))==null?void 0:i.length)||0}),t}};var y0=class{static createComponent(a,e,t,r,i,s){var l,c;let o=gt(r,e);switch(a){case"kanban":return new Hn(t,r,i,[],{onTaskStatusUpdate:s.onTaskStatusUpdate,onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu},e);case"calendar":return new jn(t,r,i,[],{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onEventContextMenu:s.onEventContextMenu},e);case"gantt":return new Bn(r,i,{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu},e);case"twocolumn":return((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"?new Vn(i,t,r,o.specificConfig,e):null;case"forecast":return new On(i,t,r,{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu,onTaskUpdate:s.onTaskUpdate});case"table":return((c=o.specificConfig)==null?void 0:c.viewType)==="table"?new Ky(t,r,i,o.specificConfig,{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu,onTaskUpdated:async u=>{if(r.writeAPI){let p=await r.writeAPI.updateTask({taskId:u.id,updates:u});p.success||console.error("Failed to update task:",p.error)}else console.error("WriteAPI not available")}}):null;case"quadrant":return new Xy(t,r,i,[],{onTaskStatusUpdate:s.onTaskStatusUpdate,onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu,onTaskUpdated:async u=>{if(r.writeAPI){let p=await r.writeAPI.updateTask({taskId:u.id,updates:u});p.success||console.error("Failed to update task:",p.error)}else console.error("WriteAPI not available")}},e);default:return null}}},vo=class extends Jy.Component{constructor(e,t,r,i,s){super();this.components=new Map;this.parentComponent=e,this.app=t,this.plugin=r,this.parentEl=i,this.handlers=s}getOrCreateComponent(e){var o;if(this.components.has(e))return this.components.get(e);let r=(o=gt(this.plugin,e).specificConfig)==null?void 0:o.viewType,i=null;if(r?i=r:["calendar","kanban","gantt","forecast","table","quadrant"].includes(e)&&(i=e),!i)return null;let s=y0.createComponent(i,e,this.app,this.plugin,this.parentEl,this.handlers);return s&&(s instanceof Jy.Component&&this.parentComponent.addChild(s),s.load&&s.load(),s.containerEl.hide(),this.components.set(e,s)),s}hideAllComponents(){this.components.forEach(e=>{e.containerEl.hide()})}showComponent(e){let t=this.getOrCreateComponent(e);return t&&t.containerEl.show(),t}isSpecialView(e){var i;let r=(i=gt(this.plugin,e).specificConfig)==null?void 0:i.viewType;return["calendar","kanban","gantt","forecast","table"].includes(e),!!(r||["calendar","kanban","gantt","forecast","table"].includes(e))}cleanup(){this.components.forEach(e=>{e instanceof Jy.Component&&this.parentComponent.removeChild(e),e.unload&&e.unload()}),this.components.clear()}getAllComponents(){return this.components.entries()}onunload(){this.cleanup()}};var Vr=require("obsidian");var bH=require("obsidian");Wi();function QG(n,a){let e=[],t=new Date(n),r=new Date(a);for(;t<=r;)e.push(`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`),t.setDate(t.getDate()+1);return e}var rn=class extends bH.Component{constructor(e,t,r){super();this.habit=e;this.container=t;this.plugin=r;this.heatmapDateRange=30}render(){this.container.empty()}getHabitData(){var t;return((t=this.plugin.habitManager)==null?void 0:t.habits)||[]}renderProgressBar(e,t,r){let i=e.createDiv({cls:"habit-progress-container"}),s=i.createDiv({cls:"habit-progress-bar"}),o=i.createDiv({cls:"habit-progress-text"});t=Math.max(0,t),r=Math.max(1,r);let l=r>0?Math.min(100,Math.max(0,t/r*100)):0;s.style.width=`${l}%`,o.setText(`${t}/${r}`),i.setAttribute("aria-label",`Progress: ${t} out of ${r}`),t>=r?i.toggleClass("filled",!0):i.toggleClass("filled",!1)}renderHeatmap(e,t,r,i,s){let o={sm:18,md:18,lg:30},c=e.createDiv({cls:`tg-heatmap-root heatmap-${r}`}).createDiv({cls:"heatmap-container-simple"}),u=new Date,p=new Date(u.getTime()-(o[r]-1)*24*60*60*1e3);QG(Tg(p),Tg(u)).reverse().forEach(f=>{let h=t[f],g=i(h),k=s?s(h):null,y=c.createDiv({cls:"heatmap-cell heatmap-cell-square"});y.dataset.date=f;let b=`${f}: `;h==null?b+="Missed":typeof h=="object"?y.hasAttribute("aria-label")||(b+="Recorded"):typeof h=="number"&&!k?b+=`${h} times`:typeof h=="number"&&k?b+=`${k instanceof HTMLElement?k.textContent:k}`:g?b+="Completed":b+="Missed",y.hasAttribute("aria-label")||y.setAttribute("aria-label",b),k?(y.addClass("has-custom-content"),typeof k=="string"?(y.addClass("has-text-content"),y.setText(k)):k instanceof HTMLElement&&y.appendChild(k)):g?y.addClass("filled"):y.addClass("default")})}toggleHabitCompletion(e,t){var u,p;`${e}`;let r=this.getHabitData(),i=r.findIndex(m=>m.id===e);if(i===-1){console.error("Habit not found:",e);return}let s=JSON.parse(JSON.stringify(r[i])),o=Bi(),l;s.completions=s.completions||{};let c=s.completions[o];switch(s.type){case"daily":s.completionText?l=c===1?null:1:l=!c;break;case"count":l=(typeof c=="number"?c:0)+1;break;case"scheduled":if(!t||!t.id){console.error("Missing event data for scheduled habit toggle");return}l={...typeof c=="object"&&c!==null?c:{},[t.id]:(u=t.details)!=null?u:""};break;case"mapping":if(t==null||typeof t!="number"){console.error("Invalid value for mapping habit toggle");return}if(!s.mapping[t]){console.error(`Invalid mapping value: ${t}`);return}l=t;break;default:console.error("Unhandled habit type in toggleCompletion");return}s.completions[o]=l,(p=this.plugin.habitManager)==null||p.updateHabitInObsidian(s,o)}};var of=require("obsidian");q();Wi();var lf=class extends rn{constructor(e,t,r){super(e,t,r);this.habit=e;this.container=t;this.plugin=r}onload(){super.onload(),this.render()}render(){super.render();let e=this.container.createDiv({cls:"habit-card daily-habit-card"}),t=e.createDiv({cls:"card-header"}),r=t.createDiv({cls:"card-title"}),i=r.createSpan({cls:"habit-icon"});(0,of.setIcon)(i,this.habit.icon||"dice");let s=this.habit.completionText?`${this.habit.name} (${this.habit.completionText})`:this.habit.name;r.createSpan({text:s,cls:"habit-name"}).onClickEvent(()=>{new of.Notice(`Chart for ${this.habit.name} (Not Implemented)`)});let l=t.createDiv({cls:"habit-checkbox-container"}).createEl("input",{type:"checkbox",cls:"habit-checkbox"}),c=Bi(),u=!1,p=this.habit.completions[c];this.habit.completionText?u=p===1:u=p===!0,l.checked=u,this.registerDomEvent(l,"click",f=>{f.preventDefault(),this.toggleHabitCompletion(this.habit.id),u||new of.Notice(`${d("Completed")} ${this.habit.name}! \u{1F389}`)});let m=e.createDiv({cls:"card-content-wrapper"});this.renderHeatmap(m,this.habit.completions,"lg",f=>this.habit.completionText?f===1:f===!0)}};var df=require("obsidian");q();Wi();var cf=class extends rn{constructor(e,t,r){super(e,t,r);this.habit=e;this.container=t;this.plugin=r}onload(){super.onload(),this.render()}render(){var u;super.render();let t=this.container.createDiv({cls:"habit-card count-habit-card"}).createDiv({cls:"card-content-wrapper"}),r=new df.ButtonComponent(t).setClass("habit-icon-button").setIcon(this.habit.icon||"plus-circle").onClick(()=>{this.toggleHabitCompletion(this.habit.id),this.habit.max&&s+1===this.habit.max?new df.Notice(`${d("Goal reached")} ${this.habit.name}! \u2705`):this.habit.max&&s+1>this.habit.max&&new df.Notice(`${d("Exceeded goal")} ${this.habit.name}! \u{1F4AA}`)}),i=Bi(),s=(u=this.habit.completions[i])!=null?u:0,o=t.createDiv({cls:"habit-info"},p=>{p.createEl("div",{cls:"habit-card-name",text:this.habit.name});let m=this.habit.countUnit?` ${this.habit.countUnit}`:"";p.createEl("span",{cls:"habit-active-day",text:`${d("Today")}: ${s}${m}`})}),l=t.createDiv({cls:"habit-progress-area"}),c=l.createDiv({cls:"habit-heatmap-small"});this.renderHeatmap(c,this.habit.completions,"md",p=>typeof p!="number"?!1:this.habit.max&&this.habit.max>0?p>=this.habit.max:p>0),this.habit.max&&this.habit.max>0&&this.renderProgressBar(l,s,this.habit.max)}};var pc=require("obsidian");q();Wi();function XG(n,a){if(a<=0)return"";let e=n/a*100,t=8,r=2*Math.PI*t,i=r-e/100*r;return` ${n>0?`${n}`:""} `}var uf=class extends rn{constructor(e,t,r){super(e,t,r);this.habit=e;this.container=t;this.plugin=r}onload(){super.onload(),this.render()}render(){super.render();let e=this.container.createDiv({cls:"habit-card scheduled-habit-card"}),r=e.createDiv({cls:"card-header"}).createDiv({cls:"card-title"}),i=r.createSpan({cls:"habit-icon"});(0,pc.setIcon)(i,this.habit.icon||"calendar-clock"),r.createSpan({text:this.habit.name,cls:"habit-name"}).onClickEvent(()=>{new pc.Notice(`Chart for ${this.habit.name} (Not Implemented)`)});let s=e.createDiv({cls:"card-content-wrapper"}),o=s.createDiv({cls:"habit-heatmap-medium"});this.renderHeatmap(o,this.habit.completions,"md",g=>g&&typeof g=="object"&&Object.keys(g).length>0,g=>{if(!g||typeof g!="object"||Object.keys(g).length===0)return null;let k=Object.keys(g).length,y=Array.isArray(this.habit.events)?this.habit.events.length:0,b=createDiv({cls:"pie-dot-container"});b.innerHTML=XG(k,y);let v=Object.entries(g).map(([w,x])=>x?`${w}: ${x}`:w).join(` `);return b.setAttribute("aria-label",v||"No events completed"),b});let l=s.createDiv({cls:"habit-controls"}),c=Bi(),u=typeof this.habit.completions[c]=="object"&&this.habit.completions[c]!==null?this.habit.completions[c]:{},p=Object.keys(u).length,m=Array.isArray(this.habit.events)?this.habit.events.length:0,f=m>0&&p>=m,h=new pc.DropdownComponent(l).addOption("",f?d("All Done!"):d("Select event...")).setValue("").onChange(g=>{g&&new Zy(this.plugin.app,g,k=>{this.toggleHabitCompletion(this.habit.id,{id:g,details:k})}).open(),h.setValue("")}).setDisabled(f||m===0);Array.isArray(this.habit.events)&&this.habit.events.forEach(g=>{g!=null&&g.name&&!u[g.name]&&h.addOption(g.name,g.name)}),h.selectEl.toggleClass("habit-event-dropdown",!0),this.renderProgressBar(l,p,m)}};var bs=require("obsidian");Wi();var pf=class extends rn{constructor(e,t,r){super(e,t,r);this.habit=e;this.container=t;this.plugin=r}onload(){super.onload(),this.render()}render(){var y,b;super.render();let e=this.container.createDiv({cls:"habit-card mapping-habit-card"}),r=e.createDiv({cls:"card-header"}).createDiv({cls:"card-title"}),i=r.createSpan({cls:"habit-icon"});(0,bs.setIcon)(i,this.habit.icon||"smile-plus"),r.createSpan({text:this.habit.name,cls:"habit-name"});let s=e.createDiv({cls:"card-content-wrapper"}),o=s.createDiv({cls:"habit-heatmap-medium"});this.renderHeatmap(o,this.habit.completions,"md",v=>typeof v=="number"&&v>0,v=>{var T;if(typeof v!="number"||v<=0)return null;let w=((T=this.habit.mapping)==null?void 0:T[v])||"?",x=createSpan({text:w});return this.habit.mapping&&this.habit.mapping[v]?(x.setAttribute("aria-label",`${this.habit.mapping[v]}`),x.addClass("has-tooltip")):x.setAttribute("aria-label",`Value: ${v}`),x});let l=s.createDiv({cls:"habit-controls"}),c=Bi(),u=Object.keys(this.habit.mapping||{}).map(Number).includes(3)?3:Object.keys(this.habit.mapping||{}).map(Number).sort((v,w)=>v-w)[0]||1,p=(y=this.habit.completions[c])!=null?y:u,m=new bs.ButtonComponent(l).setButtonText(((b=this.habit.mapping)==null?void 0:b[p])||"?").setClass("habit-mapping-button").onClick(()=>{var v;if(p>0&&((v=this.habit.mapping)!=null&&v[p])){this.toggleHabitCompletion(this.habit.id,p);let w=this.habit.mapping&&this.habit.mapping[p]?`Recorded ${this.habit.name} as ${this.habit.mapping[p]}`:`Recorded ${this.habit.name} as ${this.habit.mapping[p]}`;new bs.Notice(w)}else new bs.Notice("Please select a valid value using the slider first.")}),f=new bs.SliderComponent(l),h=Object.keys(this.habit.mapping||{}).map(Number).sort((v,w)=>v-w),g=h[0]||1,k=h[h.length-1]||5;f.setLimits(g,k,1).setValue(p).setDynamicTooltip().onChange(v=>{var w,x;p=v,(w=this.habit.mapping)==null||w[p],m.buttonEl.setText(((x=this.habit.mapping)==null?void 0:x[p])||"?")})}};q();var bo=class extends Vr.Component{constructor(e,t){super();this.redraw=()=>{let e=this.containerEl.scrollTop;this.containerEl.empty();let t=this.getHabitData();!t||t.length===0?this.renderEmptyState():this.renderHabitList(t),this.containerEl.scrollTop=e};this.plugin=e,this.containerEl=t.createDiv("tg-habit-component-container")}async onload(){this.plugin&&this.registerEvent(this.plugin.app.workspace.on("task-genius:habit-index-updated",()=>{this.redraw()})),this.redraw()}onunload(){this.containerEl.empty()}getHabitData(){var t;return((t=this.plugin.habitManager)==null?void 0:t.habits)||[]}renderEmptyState(){let e=this.containerEl.createDiv({cls:"habit-empty-state"});e.createEl("h2",{text:d("No Habits Yet")}),e.createEl("p",{text:d("Click the open habit button to create a new habit.")}),e.createEl("br"),new Vr.ButtonComponent(e).setButtonText("Open Habit").onClick(()=>{this.plugin.app.setting.open(),this.plugin.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("habit")})}renderHabitList(e){let t=this.containerEl.createDiv({cls:"habit-list-container"});e.forEach(i=>{let s=t.createDiv({cls:"habit-card-wrapper"});this.renderHabitCard(s,i)});let r=t.createDiv({cls:"habit-create-button-container"});new Vr.ExtraButtonComponent(r).setIcon("plus").setTooltip(d("Create new habit")).onClick(()=>{this.openCreateHabitDialog()})}openCreateHabitDialog(){Promise.resolve().then(()=>($x(),_L)).then(({HabitEditDialog:e})=>{new e(this.plugin.app,this.plugin,null,async t=>{this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]),this.plugin.settings.habit.habits.push(t),await this.plugin.saveSettings(),this.plugin.habitManager&&await this.plugin.habitManager.initializeHabits(),new Vr.Notice(d("Habit created successfully")),this.redraw()}).open()})}renderHabitCard(e,t){switch(t.completions=t.completions||{},t.type){case"daily":let r=new lf(t,e,this.plugin);this.addChild(r);break;case"count":let i=new cf(t,e,this.plugin);this.addChild(i);break;case"scheduled":let s=new uf(t,e,this.plugin);this.addChild(s);break;case"mapping":let o=new pf(t,e,this.plugin);this.addChild(o);break;default:let l=t;console.warn(`Unsupported habit type: ${l==null?void 0:l.type}`),e.createDiv({text:`Unsupported habit: ${(l==null?void 0:l.name)||"Unknown"}`})}}},Zy=class extends Vr.Modal{constructor(e,t,r){super(e);this.details="";this.eventName=t,this.onSubmit=r}onOpen(){let{contentEl:e}=this;e.addClass("habit-event-modal"),e.createEl("h2",{text:`Record Details for ${this.eventName}`}),new Vr.Setting(e).setName("Details").addText(t=>t.setPlaceholder(`Enter details for ${this.eventName}...`).onChange(r=>{this.details=r})),new Vr.Setting(e).addButton(t=>t.setButtonText("Cancel").setWarning().onClick(()=>{this.close()})).addButton(t=>t.setButtonText("Submit").setCta().onClick(()=>{if(this.close(),!this.details){new Vr.Notice(d("Please enter details"));return}this.onSubmit(this.details)}))}onClose(){let{contentEl:e}=this;e.empty()}};var $H=require("obsidian");var wH=require("obsidian");var Rl=class extends wH.Modal{constructor(e,t,r){super(e);this.leafId=t;this.filterCloseCallback=null;this.plugin=r}onOpen(){let{contentEl:e}=this;e.empty(),this.taskFilterComponent=new Qi(this.contentEl,this.app,this.leafId,this.plugin)}onClose(){let{contentEl:e}=this,t;if(this.taskFilterComponent)try{t=this.taskFilterComponent.getFilterState(),this.taskFilterComponent.onunload()}catch(r){console.error("Failed to get filter state before modal close",r)}if(e.empty(),this.filterCloseCallback)try{this.filterCloseCallback(t)}catch(r){console.error("Error in filter close callback",r)}}};var TH=require("obsidian");var Ol=class extends TH.Component{constructor(e,t,r){super();this.leafId=t;this.popoverRef=null;this.popperInstance=null;this.onClose=null;this.clickOutside=e=>{this.popoverRef&&!this.popoverRef.contains(e.target)&&(e.target,this.popoverRef,this.popoverRef.contains(e.target),this.close())};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=r,this.win=e.workspace.containerEl.win||window,this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"task-popover-content"});this.registerDomEvent(t,"click",i=>{i.stopPropagation()}),this.taskFilterComponent=new Qi(t,this.app,this.leafId,this.plugin),this.taskFilterComponent.onload(),this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"filter-menu tg-menu bm-menu"}),this.popoverRef.appendChild(t),document.body.appendChild(this.popoverRef);let r={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=El(r,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null);let e;if(this.taskFilterComponent)try{e=this.taskFilterComponent.getFilterState()}catch(t){console.error("Failed to get filter state before close",t)}if(this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.taskFilterComponent&&this.taskFilterComponent.onunload(),this.onClose)try{this.onClose(e)}catch(t){console.error("Error in onClose callback",t)}}};var kv=require("obsidian");rv();var PH=require("obsidian"),iv=class{constructor(a){this.configCache=new Map;this.lastModifiedCache=new Map;this.fileMetadataCache=new Map;this.fileMetadataTimestampCache=new Map;this.enhancedMetadataCache=new Map;this.enhancedMetadataTimestampCache=new Map;var e,t,r;this.vault=a.vault,this.metadataCache=a.metadataCache,this.configFileName=a.configFileName,this.searchRecursively=a.searchRecursively,this.metadataKey=a.metadataKey,this.pathMappings=a.pathMappings,this.metadataMappings=a.metadataMappings||[],this.defaultProjectNaming=a.defaultProjectNaming||{strategy:"filename",stripExtension:!0,enabled:!1},this.enhancedProjectEnabled=(e=a.enhancedProjectEnabled)!=null?e:!0,this.metadataConfigEnabled=(t=a.metadataConfigEnabled)!=null?t:!1,this.configFileEnabled=(r=a.configFileEnabled)!=null?r:!1,this.detectionMethods=a.detectionMethods||[]}isEnhancedProjectEnabled(){return this.enhancedProjectEnabled}setEnhancedProjectEnabled(a){this.enhancedProjectEnabled=a,a||this.clearCache()}async getProjectConfig(a){if(!this.enhancedProjectEnabled)return null;try{let e=await this.findProjectConfigFile(a);if(!e)return null;let t=e.path,r=e.stat.mtime;if(this.configCache.has(t)&&this.lastModifiedCache.get(t)===r)return this.configCache.get(t)||null;let i=await this.vault.read(e),s=this.metadataCache.getFileCache(e),o={};s!=null&&s.frontmatter&&(o={...s.frontmatter});let l=this.parseConfigContent(i);return o={...o,...l},this.configCache.set(t,o),this.lastModifiedCache.set(t,r),o}catch(e){return console.warn(`Failed to read project config for ${a}:`,e),null}}getFileMetadata(a){if(!this.enhancedProjectEnabled)return null;try{let e=this.vault.getFileByPath(a);if(!e||!("stat"in e))return null;let t=e.stat.mtime;if(this.fileMetadataTimestampCache.get(a)===t&&this.fileMetadataCache.has(a))return this.fileMetadataCache.get(a)||null;let i=this.metadataCache.getFileCache(e),s=(i==null?void 0:i.frontmatter)||{};return this.fileMetadataCache.set(a,s),this.fileMetadataTimestampCache.set(a,t),s}catch(e){return console.warn(`Failed to get file metadata for ${a}:`,e),null}}normalizeProjectPath(a){if(!a)return"";let e=a.replace(/\\/g,"/");return e=e.replace(/\/+/g,"/"),e=e.replace(/^\/|\/$/g,""),e}async determineTgProject(a){var e;if(this.enhancedProjectEnabled){for(let t of this.pathMappings)if(t.enabled&&this.matchesPathPattern(a,t.pathPattern))return{type:"path",name:this.normalizeProjectPath(t.projectName),source:t.pathPattern,readonly:!0};if(this.detectionMethods&&this.detectionMethods.length>0){let t=this.vault.getFileByPath(a);if(t&&t instanceof PH.TFile){let r=this.metadataCache.getFileCache(t),i=this.getFileMetadata(a);for(let s of this.detectionMethods)if(s.enabled)switch(s.type){case"metadata":if(i&&i[s.propertyKey])return{type:"metadata",name:String(i[s.propertyKey]),source:s.propertyKey,readonly:!0};break;case"tag":{let o=s.propertyKey.startsWith("#")?s.propertyKey:`#${s.propertyKey}`,l=o.toLowerCase(),c=((r==null?void 0:r.tags)||[]).map(g=>g.tag),u=(e=r==null?void 0:r.frontmatter)==null?void 0:e.tags,m=(Array.isArray(u)?u:u!==void 0?[u]:[]).map(g=>{let k=String(g||"");return k.startsWith("#")?k:`#${k}`});if([...c,...m].map(g=>String(g||"").toLowerCase()).some(g=>g===l))return i!=null&&i.title?{type:"metadata",name:String(i.title),source:"title (via tag)",readonly:!0}:i!=null&&i.name?{type:"metadata",name:String(i.name),source:"name (via tag)",readonly:!0}:{type:"metadata",name:(a.split("/").pop()||a).replace(/\.md$/i,""),source:`tag:${o}`,readonly:!0}}break;case"link":if(r!=null&&r.links)for(let o of r.links){let l=o.link;if(s.linkFilter){if(l.includes(s.linkFilter))return i!=null&&i.title?{type:"metadata",name:String(i.title),source:"title (via link)",readonly:!0}:i!=null&&i.name?{type:"metadata",name:String(i.name),source:"name (via link)",readonly:!0}:{type:"metadata",name:(a.split("/").pop()||a).replace(/\.md$/i,""),source:`link:${l}`,readonly:!0}}else if(s.propertyKey&&i&&i[s.propertyKey]&&String(i[s.propertyKey]).includes(`[[${l}]]`))return i!=null&&i.title?{type:"metadata",name:String(i.title),source:"title (via link)",readonly:!0}:i!=null&&i.name?{type:"metadata",name:String(i.name),source:"name (via link)",readonly:!0}:{type:"metadata",name:(a.split("/").pop()||a).replace(/\.md$/i,""),source:`link:${l}`,readonly:!0}}break}}}if(this.metadataConfigEnabled){let t=this.getFileMetadata(a);if(t&&t[this.metadataKey]){let r=t[this.metadataKey];if(typeof r=="string"&&r.trim())return{type:"metadata",name:r.trim(),source:this.metadataKey,readonly:!0}}}if(this.configFileEnabled){let t=await this.getProjectConfig(a);if(t&&t.project){let r=t.project;if(typeof r=="string"&&r.trim())return{type:"config",name:r.trim(),source:this.configFileName,readonly:!0}}}if(this.defaultProjectNaming.enabled){let t=this.generateDefaultProjectName(a);if(t)return{type:"default",name:this.normalizeProjectPath(t),source:this.defaultProjectNaming.strategy,readonly:!0}}}}async getEnhancedMetadata(a){if(!this.enhancedProjectEnabled)return{};try{let e=this.vault.getFileByPath(a);if(!e||!("stat"in e))return{};let t=e.stat.mtime,r=await this.findProjectConfigFile(a),i=r?r.stat.mtime:0,s=`${t}_${i}`;if(this.enhancedMetadataTimestampCache.get(a)===s&&this.enhancedMetadataCache.has(a))return this.enhancedMetadataCache.get(a)||{};let l=this.getFileMetadata(a)||{},u={...await this.getProjectConfig(a)||{},...l};return u=this.applyMetadataMappings(u),this.enhancedMetadataCache.set(a,u),this.enhancedMetadataTimestampCache.set(a,s),u}catch(e){return console.warn(`Failed to get enhanced metadata for ${a}:`,e),{}}}clearCache(a){if(a){let e=this.findProjectConfigFileSync(a);e&&(this.configCache.delete(e.path),this.lastModifiedCache.delete(e.path)),this.fileMetadataCache.delete(a),this.fileMetadataTimestampCache.delete(a),this.enhancedMetadataCache.delete(a),this.enhancedMetadataTimestampCache.delete(a)}else this.configCache.clear(),this.lastModifiedCache.clear(),this.fileMetadataCache.clear(),this.fileMetadataTimestampCache.clear(),this.enhancedMetadataCache.clear(),this.enhancedMetadataTimestampCache.clear()}async findProjectConfigFile(a){if(!this.enhancedProjectEnabled)return null;let e=this.vault.getFileByPath(a);if(!e)return null;let t=e.parent;for(;t;){let r=t.children.find(i=>i&&i.name===this.configFileName&&"stat"in i);if(r)return r;if(!this.searchRecursively)break;t=t.parent}return null}findProjectConfigFileSync(a){if(!this.enhancedProjectEnabled)return null;let e=this.vault.getFileByPath(a);if(!e)return null;let t=e.parent;for(;t;){let r=t.children.find(i=>i&&i.name===this.configFileName&&"stat"in i);if(r)return r;if(!this.searchRecursively)break;t=t.parent}return null}parseConfigContent(a){let e={},t=a.split(` `);for(let r of t){let i=r.trim();if(!i||i.startsWith("#")||i.startsWith("//"))continue;let s=i.indexOf(":");if(s>0){let o=i.substring(0,s).trim(),l=i.substring(s+1).trim();if(o&&l){let c=l.replace(/^["']|["']$/g,"");e[o]=c}}}return e}matchesPathPattern(a,e){let t=a.replace(/\\/g,"/"),r=e.replace(/\\/g,"/");if(e.includes("*")){let i=e.replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${i}$`,"i").test(t)}return t.includes(r)}applyMetadataMappings(a){let e={...a};for(let t of this.metadataMappings){if(!t.enabled)continue;let r=a[t.sourceKey];r!==void 0&&(e[t.targetKey]=this.convertMetadataValue(t.targetKey,r))}return e}convertMetadataValue(a,e){let t=["due","dueDate","deadline","start","startDate","started","scheduled","scheduledDate","scheduled_for","completed","completedDate","finished","created","createdDate","created_at"],r=["priority","urgency","importance"],i=t.some(o=>a.toLowerCase().includes(o.toLowerCase())),s=r.some(o=>a.toLowerCase().includes(o.toLowerCase()));if(i&&typeof e=="string"){if(/^\d{4}-\d{2}-\d{2}/.test(e)){let{parseLocalDate:o}=(Wi(),_l(EO)),l=o(e);return l!==void 0?l:e}}else if(s&&typeof e=="string"){let o={highest:5,urgent:5,critical:5,high:4,important:4,medium:3,normal:3,moderate:3,low:2,minor:2,lowest:1,trivial:1},l=parseInt(e,10);if(!isNaN(l))return l;let c=o[e.toLowerCase()];if(c!==void 0)return c}return e}applyMappingsToMetadata(a){return this.applyMetadataMappings(a)}generateDefaultProjectName(a){if(!this.enhancedProjectEnabled||!this.defaultProjectNaming.enabled)return null;switch(this.defaultProjectNaming.strategy){case"filename":{let e=a.split("/").pop()||"";return this.defaultProjectNaming.stripExtension?e.replace(/\.[^/.]+$/,""):e}case"foldername":{let t=a.replace(/\\/g,"/").split("/");if(t.length>1){let r=t.findIndex(i=>i.toLowerCase()==="projects"||i.toLowerCase()==="project");return r>=0&&rJSON.stringify(i).length).reduce((i,s)=>i+s,0),e=Array.from(this.fileMetadataCache.values()).map(i=>JSON.stringify(i).length).reduce((i,s)=>i+s,0),t=Array.from(this.enhancedMetadataCache.values()).map(i=>JSON.stringify(i).length).reduce((i,s)=>i+s,0),r=a+e+t;return{configCache:{size:this.configCache.size,keys:Array.from(this.configCache.keys())},fileMetadataCache:{size:this.fileMetadataCache.size},enhancedMetadataCache:{size:this.enhancedMetadataCache.size},totalMemoryUsage:{estimatedBytes:r}}}async clearStaleEntries(){let a=0;for(let[e,t]of this.fileMetadataTimestampCache.entries()){let r=this.vault.getFileByPath(e);(!r||!("stat"in r)||r.stat.mtime!==t)&&(this.fileMetadataCache.delete(e),this.fileMetadataTimestampCache.delete(e),this.enhancedMetadataCache.delete(e),this.enhancedMetadataTimestampCache.delete(e),a++)}return a}};var hc=class{constructor(a,e,t){this.fileCache=new Map;this.directoryCache=new Map;this.pendingUpdates=new Set;this.BATCH_DELAY=100;this.stats={totalFiles:0,cachedFiles:0,directoryCacheHits:0,configCacheHits:0,lastUpdateTime:0};this.vault=a,this.metadataCache=e,this.projectConfigManager=t}async getProjectData(a){if(!this.projectConfigManager.isEnhancedProjectEnabled())return null;let e=this.fileCache.get(a);return e&&this.isCacheValid(a,e)?e:await this.computeAndCacheProjectData(a)}async getBatchProjectData(a){let e=new Map;if(!this.projectConfigManager.isEnhancedProjectEnabled())return e;let t=[],r=[];for(let i of a){let s=this.fileCache.get(i);s&&this.isCacheValid(i,s)?(e.set(i,s),r.push(i)):t.push(i)}if(this.stats.configCacheHits+=r.length,t.length>0){let i=this.groupByDirectory(t);for(let[s,o]of i){let l=await this.getOrCreateDirectoryCache(s);for(let c of o){let u=await this.computeProjectDataWithDirectoryCache(c,l);u&&e.set(c,u)}}}return this.stats.totalFiles=a.length,this.stats.cachedFiles=r.length,this.stats.lastUpdateTime=Date.now(),e}async computeProjectDataWithDirectoryCache(a,e){var t;try{let r=await this.projectConfigManager.determineTgProject(a),i={},s=this.projectConfigManager.getFileMetadata(a)||{},l={...e.configData||{},...s};i=this.projectConfigManager.applyMappingsToMetadata(l);let c={tgProject:r,enhancedMetadata:i,timestamp:Date.now(),configSource:(t=e.configFile)==null?void 0:t.path};return this.fileCache.set(a,c),e.paths.add(a),c}catch(r){return console.warn(`Failed to compute project data for ${a}:`,r),null}}async getOrCreateDirectoryCache(a){let e=this.directoryCache.get(a);if(e)if(e.configFile){if(e.configFile.stat.mtime===e.configTimestamp)return this.stats.directoryCacheHits++,e}else return e;e={configTimestamp:0,paths:new Set};let t=await this.findConfigFileInDirectory(a);if(t){e.configFile=t,e.configTimestamp=t.stat.mtime;try{let r=await this.vault.read(t),i=this.metadataCache.getFileCache(t),s={};i!=null&&i.frontmatter&&(s={...i.frontmatter});let o=this.parseConfigContent(r);s={...s,...o},e.configData=s}catch(r){console.warn(`Failed to read config file ${t.path}:`,r)}}return this.directoryCache.set(a,e),e}async findConfigFileInDirectory(a){let e=this.vault.getFileByPath(a);if(!e||!("children"in e))return null;let t="task-genius.config.md";return e.children.find(i=>i&&i.name===t&&"stat"in i)||null}groupByDirectory(a){let e=new Map;for(let t of a){let r=this.getDirectoryPath(t),i=e.get(r)||[];i.push(t),e.set(r,i)}return e}getDirectoryPath(a){let e=a.lastIndexOf("/");return e>0?a.substring(0,e):""}isCacheValid(a,e){let t=this.vault.getAbstractFileByPath(a);if(!t||!("stat"in t)||t.stat.mtime>e.timestamp)return!1;if(e.configSource){let i=this.vault.getAbstractFileByPath(e.configSource);if(i&&"stat"in i){let s=i.stat.mtime,o=this.getDirectoryPath(a),l=this.directoryCache.get(o);if(l&&s>l.configTimestamp)return!1}}return!0}async computeAndCacheProjectData(a){let e=this.getDirectoryPath(a),t=await this.getOrCreateDirectoryCache(e);return await this.computeProjectDataWithDirectoryCache(a,t)}parseConfigContent(a){let e={},t=a.split(` `);for(let r of t){let i=r.trim();if(!i||i.startsWith("#")||i.startsWith("//"))continue;let s=i.indexOf(":");if(s>0){let o=i.substring(0,s).trim(),l=i.substring(s+1).trim();if(o&&l){let c=l.replace(/^["']|["']$/g,"");e[o]=c}}}return e}clearCache(a){if(a){this.fileCache.delete(a);let e=this.getDirectoryPath(a),t=this.directoryCache.get(e);t&&t.paths.delete(a)}else this.fileCache.clear(),this.directoryCache.clear()}clearDirectoryCache(a){let e=this.directoryCache.get(a);if(e){for(let t of e.paths)this.fileCache.delete(t);this.directoryCache.delete(a)}}getStats(){return{...this.stats}}scheduleBatchUpdate(a){for(let e of a)this.pendingUpdates.add(e);this.batchUpdateTimer&&clearTimeout(this.batchUpdateTimer),this.batchUpdateTimer=setTimeout(()=>{this.processBatchUpdates()},this.BATCH_DELAY)}async processBatchUpdates(){if(this.pendingUpdates.size===0)return;let a=Array.from(this.pendingUpdates);this.pendingUpdates.clear();for(let e of a)this.clearCache(e);await this.getBatchProjectData(a)}onEnhancedProjectSettingChange(a){a||this.clearCache()}async onFileModified(a){if(this.clearCache(a),a.endsWith(".config.md")||a.includes("task-genius")){let e=this.getDirectoryPath(a);this.clearDirectoryCache(e)}this.scheduleBatchUpdate([a])}onFileDeleted(a){if(this.clearCache(a),a.endsWith(".config.md")||a.includes("task-genius")){let e=this.getDirectoryPath(a);this.clearDirectoryCache(e)}}async onFileCreated(a){if(a.endsWith(".config.md")||a.includes("task-genius")){let e=this.getDirectoryPath(a);this.clearDirectoryCache(e)}await this.getProjectData(a)}async onFileRenamed(a,e){this.clearCache(a);let t=this.getDirectoryPath(a),r=this.getDirectoryPath(e);(a.endsWith(".config.md")||a.includes("task-genius"))&&this.clearDirectoryCache(t),(e.endsWith(".config.md")||e.includes("task-genius"))&&this.clearDirectoryCache(r),await this.getProjectData(e)}async refreshStaleEntries(){let a=[];for(let[e,t]of this.fileCache.entries())this.isCacheValid(e,t)||a.push(e);a.length>0&&(`${a.length}`,await this.getBatchProjectData(a))}async preloadRecentFiles(a){let e=a.filter(t=>!this.fileCache.has(t));e.length>0&&(`${e.length}`,await this.getBatchProjectData(e))}async setProjectData(a,e){this.fileCache.set(a,e);let t=this.getDirectoryPath(a),r=this.directoryCache.get(t);r&&r.paths.add(a)}};var nv=class{constructor(a,e,t,r){this.app=a;this.vault=e;this.metadataCache=t;var s,o,l,c;let i={vault:this.vault,metadataCache:this.metadataCache,configFileName:(r==null?void 0:r.configFileName)||"tg-project.md",searchRecursively:(s=r==null?void 0:r.searchRecursively)!=null?s:!0,metadataKey:(r==null?void 0:r.metadataKey)||"tgProject",pathMappings:(r==null?void 0:r.pathMappings)||[],metadataMappings:(r==null?void 0:r.metadataMappings)||[],defaultProjectNaming:(r==null?void 0:r.defaultProjectNaming)||{strategy:"filename",stripExtension:!0,enabled:!1},enhancedProjectEnabled:(o=r==null?void 0:r.enhancedProjectEnabled)!=null?o:!0,metadataConfigEnabled:(l=r==null?void 0:r.metadataConfigEnabled)!=null?l:!1,configFileEnabled:(c=r==null?void 0:r.configFileEnabled)!=null?c:!1,detectionMethods:(r==null?void 0:r.detectionMethods)||[]};this.projectConfigManager=new iv(i),this.projectDataCache=new hc(this.vault,this.metadataCache,this.projectConfigManager)}async get(a){let e=await this.projectDataCache.getProjectData(a);return e?{tgProject:e.tgProject,enhancedMetadata:e.enhancedMetadata,timestamp:e.timestamp,configSource:e.configSource}:{enhancedMetadata:{},timestamp:Date.now()}}async getBatch(a){let e=await this.projectDataCache.getBatchProjectData(a),t=new Map;for(let[r,i]of e)t.set(r,{tgProject:i.tgProject,enhancedMetadata:i.enhancedMetadata,timestamp:i.timestamp,configSource:i.configSource});for(let r of a)t.has(r)||t.set(r,{enhancedMetadata:{},timestamp:Date.now()});return t}clearCache(a){this.projectDataCache.clearCache(a)}updateOptions(a){this.projectConfigManager.updateOptions(a)}getConfigManager(){return this.projectConfigManager}getDataCache(){return this.projectDataCache}};var gc=class{constructor(a,e,t){this.app=a;this.vault=e;this.metadataCache=t;this.fileDateCache=new Map;this.CACHE_TTL=300*1e3;this.MAX_CACHE_SIZE=500;this.DAILY_NOTE_PATTERNS=[{pattern:/(\d{4})-W(\d{2})/,format:"YYYY-W##"},{pattern:/(\d{4})-(\d{2})-(\d{2})/,format:"YYYY-MM-DD"},{pattern:/(\d{4})\.(\d{2})\.(\d{2})/,format:"YYYY.MM.DD"},{pattern:/(\d{4})_(\d{2})_(\d{2})/,format:"YYYY_MM_DD"},{pattern:/(\d{4})(\d{2})(\d{2})/,format:"YYYYMMDD"},{pattern:/(\d{2})-(\d{2})-(\d{4})/,format:"MM-DD-YYYY"},{pattern:/(\d{2})\.(\d{2})\.(\d{4})/,format:"DD.MM.YYYY"},{pattern:/(\d{2})\/(\d{2})\/(\d{4})/,format:"MM/DD/YYYY"},{pattern:/(\d{2})\/(\d{2})\/(\d{4})/,format:"DD/MM/YYYY"},{pattern:/(\d{4})-(\d{2})(?!-\d{2})/,format:"YYYY-MM"}];this.DAILY_NOTE_FOLDER_PATTERNS=[/daily\s*notes?/i,/journal/i,/diary/i,/log/i,/\d{4}\/\d{2}/,/\d{4}-\d{2}/];this.DATE_PROPERTY_NAMES=["date","created","creation-date","created-date","creation_date","day","daily-note-date","note-date","file-date","created-at","created_at","createdAt","modified","modified-date","modified_date","updated","updated-date","publish-date","publish_date","publishDate","event-date","event_date","eventDate","due-date","due_date","dueDate","start-date","start_date","startDate","tp.date","tp.file.creation_date","tp.file.last_modified_date","file.ctime","file.mtime","file.cday","file.mday"];this.LINE_DATE_PATTERNS=[/\b(\d{4})-(\d{2})-(\d{2})\b/,/\b(\d{2})\/(\d{2})\/(\d{4})\b/,/\b(\d{2})-(\d{2})-(\d{4})\b/,/\b(today|tomorrow|yesterday)\b/i,/\b(monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i]}async resolveDateForTimeOnly(a,e,t){let r=this.extractDateFromLine(t.currentLine,t.lineNumber,t.allLines);if(r)return{resolvedDate:r,source:"line-date",confidence:"high",usedFallback:!1,context:"Found explicit date in current line"};if(t.parentTask)try{let s=await this.extractDateFromParentHierarchy(t.parentTask,t);if(s){let o=s.depth===0?"high":s.depth===1?"medium":"low";return{resolvedDate:s.date,source:"parent-task",confidence:o,usedFallback:!1,context:`Inherited from ${s.source} (depth: ${s.depth})`}}}catch(s){console.warn("[DateInheritanceService] Error in hierarchical parent date extraction:",s);let o=this.extractDateFromParentTask(t.parentTask);if(o)return{resolvedDate:o,source:"parent-task",confidence:"high",usedFallback:!1,context:"Inherited from parent task (fallback)"}}let i=await this.getFileDateInfo(t.filePath);return i.dailyNoteDate&&i.isDailyNote?{resolvedDate:i.dailyNoteDate,source:"daily-note-date",confidence:"high",usedFallback:!1,context:"Extracted from daily note title/path"}:i.metadataDate?{resolvedDate:i.metadataDate,source:"metadata-date",confidence:"medium",usedFallback:!1,context:"Found in file frontmatter/properties"}:i.dailyNoteDate?{resolvedDate:i.dailyNoteDate,source:"daily-note-date",confidence:"medium",usedFallback:!1,context:"Extracted from file path date pattern"}:{resolvedDate:i.ctime,source:"file-ctime",confidence:"low",usedFallback:!0,context:"Using file creation time as fallback"}}async getFileDateInfo(a){let e=this.fileDateCache.get(a);if(e&&this.isCacheValid(e))return e;let t=this.vault.getAbstractFileByPath(a);if(!t)return{ctime:new Date,dailyNoteDate:void 0,metadataDate:void 0,isDailyNote:!1,cachedAt:new Date,mtime:0};let r=await this.vault.adapter.stat(a),i=new Date((r==null?void 0:r.ctime)||Date.now()),s=(r==null?void 0:r.mtime)||0,o=this.extractDailyNoteDate(a),l=o!=null?o:void 0,c=o!==null,u=await this.extractMetadataDate(t),p=u!=null?u:void 0,m={ctime:i,metadataDate:p,dailyNoteDate:l,isDailyNote:c,cachedAt:new Date,mtime:s};return this.cacheFileDateInfo(a,m),m}extractDailyNoteDate(a){var s;let e=((s=a.split("/").pop())==null?void 0:s.replace(/\.md$/,""))||"",t=a,r=a.substring(0,a.lastIndexOf("/")),i=this.isDailyNoteFolder(r);for(let{pattern:o,format:l}of this.DAILY_NOTE_PATTERNS){let c=e.match(o),u="filename";if(c||(c=t.match(o),u="fullpath"),c)try{let p=this.parseDateFromPatternMatch(c,l,i);if(p&&this.isValidDailyNoteDate(p,a,u))return p}catch(p){continue}}return null}isDailyNoteFolder(a){if(!a)return!1;let e=a.toLowerCase();return this.DAILY_NOTE_FOLDER_PATTERNS.some(t=>t.test(e))}parseDateFromPatternMatch(a,e,t){let r,i,s;switch(e){case"YYYY-MM-DD":case"YYYY.MM.DD":case"YYYY_MM_DD":r=parseInt(a[1],10),i=parseInt(a[2],10),s=parseInt(a[3],10);break;case"YYYYMMDD":r=parseInt(a[1],10),i=parseInt(a[2],10),s=parseInt(a[3],10);break;case"MM-DD-YYYY":case"MM/DD/YYYY":i=parseInt(a[1],10),s=parseInt(a[2],10),r=parseInt(a[3],10);break;case"DD.MM.YYYY":case"DD/MM/YYYY":s=parseInt(a[1],10),i=parseInt(a[2],10),r=parseInt(a[3],10);break;case"YYYY-MM":r=parseInt(a[1],10),i=parseInt(a[2],10),s=1;break;case"YYYY-W##":r=parseInt(a[1],10);let o=parseInt(a[2],10);return this.getDateFromWeekNumber(r,o);default:return null}if(e==="DD/MM/YYYY"||e==="MM/DD/YYYY"){let o=t&&this.detectEuropeanDatePreference();e==="DD/MM/YYYY"&&!o&&([i,s]=[s,i])}if(r>=1900&&r<=2100&&i>=1&&i<=12&&s>=1&&s<=31){let o=new Date(r,i-1,s);if(o.getFullYear()===r&&o.getMonth()===i-1&&o.getDate()===s)return o}return null}getDateFromWeekNumber(a,e){if(e<1||e>53)return null;let t=new Date(a,0,4),r=t.getDay()||7,i=new Date(t);i.setDate(t.getDate()-r+1);let s=new Date(i);return s.setDate(i.getDate()+(e-1)*7),s}detectEuropeanDatePreference(){return!1}isValidDailyNoteDate(a,e,t){let r=new Date(1900,0,1),i=new Date(2100,11,31);return!(ai)}async extractMetadataDate(a){let e=this.metadataCache.getFileCache(a),t=e==null?void 0:e.frontmatter;if(!t)return null;for(let i of this.DATE_PROPERTY_NAMES){let s=t[i];if(s!=null){let o=this.parseMetadataDate(s,i);if(o)return o}}let r=this.extractNestedMetadataDate(t);return r||null}extractNestedMetadataDate(a){if(a.file){let e=a.file,t=["ctime","mtime","cday","mday","created","modified"];for(let r of t)if(e[r]){let i=this.parseMetadataDate(e[r],`file.${r}`);if(i)return i}}if(a.tp){let e=a.tp;if(e.date){let t=this.parseMetadataDate(e.date,"tp.date");if(t)return t}if(e.file){let t=e.file,r=["creation_date","last_modified_date"];for(let i of r)if(t[i]){let s=this.parseMetadataDate(t[i],`tp.file.${i}`);if(s)return s}}}return null}parseMetadataDate(a,e){if(!a)return null;if(a instanceof Date)return a;if(typeof a=="number")return new Date(a);if(typeof a=="string"){let t=a.trim();if(this.isRelativeDateString(t)){let i=this.parseRelativeDateString(t);if(i)return i}if(this.isNaturalLanguageDate(t)){let i=this.parseNaturalLanguageDate(t);if(i)return i}let r=[{pattern:/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/,format:"ISO_DATETIME"},{pattern:/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/,format:"ISO_DATETIME_SHORT"},{pattern:/^(\d{4})-(\d{2})-(\d{2})$/,format:"YYYY-MM-DD"},{pattern:/^(\d{2})\/(\d{2})\/(\d{4})$/,format:"MM/DD/YYYY"},{pattern:/^(\d{2})-(\d{2})-(\d{4})$/,format:"DD-MM-YYYY"},{pattern:/^(\d{4})\.(\d{2})\.(\d{2})$/,format:"YYYY.MM.DD"},{pattern:/^(\d{2})\.(\d{2})\.(\d{4})$/,format:"DD.MM.YYYY"},{pattern:/^(\d{4})\/(\d{2})\/(\d{2})$/,format:"YYYY/MM/DD"},{pattern:/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,format:"M/D/YYYY"},{pattern:/^(\d{4})(\d{2})(\d{2})$/,format:"YYYYMMDD"}];for(let{pattern:i,format:s}of r){let o=t.match(i);if(o)try{let l=this.parseDateFromFormat(o,s);if(l&&this.isValidMetadataDate(l,e))return l}catch(l){continue}}try{let i=new Date(t);if(!isNaN(i.getTime())&&this.isValidMetadataDate(i,e))return i}catch(i){}try{let i=Date.parse(t);if(!isNaN(i)){let s=new Date(i);if(this.isValidMetadataDate(s,e))return s}}catch(i){}}return null}extractDateFromLine(a,e,t){for(let r of this.LINE_DATE_PATTERNS){let i=a.match(r);if(i){let s=this.parseDateFromMatch(i,r);if(s)return s}}if(t&&e!==void 0){let i=Math.max(0,e-3),s=Math.min(t.length-1,e+3);for(let o=i;o<=s;o++){if(o===e)continue;let l=t[o];for(let c of this.LINE_DATE_PATTERNS){let u=l.match(c);if(u){let p=this.parseDateFromMatch(u,c);if(p)return p}}}}return null}parseDateFromMatch(a,e){try{let t=a[0].toLowerCase();if(t==="today")return new Date;if(t==="tomorrow"){let s=new Date;return s.setDate(s.getDate()+1),s}else if(t==="yesterday"){let s=new Date;return s.setDate(s.getDate()-1),s}let i=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].indexOf(t);if(i!==-1){let s=new Date,o=s.getDay(),l=i-o;l<=0&&(l+=7);let c=new Date(s);return c.setDate(s.getDate()+l),c}if(a.length>=4){let s,o,l;if(e.source.includes("(\\d{4})-(\\d{2})-(\\d{2})"))s=parseInt(a[1],10),o=parseInt(a[2],10),l=parseInt(a[3],10);else if(e.source.includes("(\\d{2})\\/(\\d{2})\\/(\\d{4})"))o=parseInt(a[1],10),l=parseInt(a[2],10),s=parseInt(a[3],10);else if(e.source.includes("(\\d{2})-(\\d{2})-(\\d{4})"))l=parseInt(a[1],10),o=parseInt(a[2],10),s=parseInt(a[3],10);else return null;let c=new Date(s,o-1,l);if(!isNaN(c.getTime()))return c}}catch(t){}return null}extractDateFromParentTask(a){if(a.metadata.startDate)return new Date(a.metadata.startDate);if(a.metadata.dueDate)return new Date(a.metadata.dueDate);if(a.metadata.scheduledDate)return new Date(a.metadata.scheduledDate);let e=a.metadata;if(e.enhancedDates){if(e.enhancedDates.startDateTime)return new Date(e.enhancedDates.startDateTime);if(e.enhancedDates.dueDateTime)return new Date(e.enhancedDates.dueDateTime);if(e.enhancedDates.scheduledDateTime)return new Date(e.enhancedDates.scheduledDateTime)}return a.metadata.createdDate?new Date(a.metadata.createdDate):null}async extractDateFromParentHierarchy(a,e,t=3,r=0){if(r>=t)return null;let i=this.extractDateFromParentTask(a);if(i)return{date:i,source:`parent-task-L${r}`,depth:r};if(e.allTasks&&a.metadata.parent){let s=e.allTasks.find(o=>o.id===a.metadata.parent);if(s){let o=await this.extractDateFromParentHierarchy(s,e,t,r+1);if(o)return o}}return null}isCacheValid(a){return Date.now()-a.cachedAt.getTime()=this.MAX_CACHE_SIZE){let t=this.fileDateCache.keys().next().value;t&&this.fileDateCache.delete(t)}this.fileDateCache.set(a,e)}clearCache(){this.fileDateCache.clear()}isRelativeDateString(a){return[/^today$/i,/^tomorrow$/i,/^yesterday$/i,/^now$/i,/^\+\d+[dwmy]$/i,/^-\d+[dwmy]$/i].some(t=>t.test(a))}parseRelativeDateString(a){let e=new Date;switch(a.toLowerCase()){case"today":case"now":return new Date(e.getFullYear(),e.getMonth(),e.getDate());case"tomorrow":return new Date(e.getFullYear(),e.getMonth(),e.getDate()+1);case"yesterday":return new Date(e.getFullYear(),e.getMonth(),e.getDate()-1)}let r=a.match(/^([+-])(\d+)([dwmy])$/i);if(r){let i=r[1]==="+"?1:-1,s=parseInt(r[2],10)*i,o=r[3].toLowerCase(),l=new Date(e);switch(o){case"d":l.setDate(l.getDate()+s);break;case"w":l.setDate(l.getDate()+s*7);break;case"m":l.setMonth(l.getMonth()+s);break;case"y":l.setFullYear(l.getFullYear()+s);break}return l}return null}isNaturalLanguageDate(a){return[/^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i,/^(next|last)\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i,/^(next|last)\s+(week|month|year)$/i,/^(this|next|last)\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i].some(t=>t.test(a))}parseNaturalLanguageDate(a){var s;let e=new Date,t=a.toLowerCase().trim(),r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],i=t.match(/^(?:(next|last|this)\s+)?(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i);if(i){let o=(s=i[1])==null?void 0:s.toLowerCase(),l=i[2].toLowerCase(),c=r.indexOf(l);if(c!==-1){let u=e.getDay(),p=c-u;o==="next"?p<=0&&(p+=7):o==="last"?p>=0&&(p-=7):o==="this"||p<=0&&(p+=7);let m=new Date(e);return m.setDate(e.getDate()+p),m}}if(t==="next week"){let o=new Date(e);return o.setDate(e.getDate()+7),o}else if(t==="last week"){let o=new Date(e);return o.setDate(e.getDate()-7),o}else if(t==="next month"){let o=new Date(e);return o.setMonth(e.getMonth()+1),o}else if(t==="last month"){let o=new Date(e);return o.setMonth(e.getMonth()-1),o}return null}parseDateFromFormat(a,e){let t,r,i,s=0,o=0,l=0;switch(e){case"ISO_DATETIME":t=parseInt(a[1],10),r=parseInt(a[2],10),i=parseInt(a[3],10),s=parseInt(a[4],10),o=parseInt(a[5],10),l=parseInt(a[6],10);break;case"ISO_DATETIME_SHORT":t=parseInt(a[1],10),r=parseInt(a[2],10),i=parseInt(a[3],10),s=parseInt(a[4],10),o=parseInt(a[5],10);break;case"YYYY-MM-DD":case"YYYY.MM.DD":case"YYYY/MM/DD":t=parseInt(a[1],10),r=parseInt(a[2],10),i=parseInt(a[3],10);break;case"MM/DD/YYYY":case"M/D/YYYY":r=parseInt(a[1],10),i=parseInt(a[2],10),t=parseInt(a[3],10);break;case"DD-MM-YYYY":case"DD.MM.YYYY":i=parseInt(a[1],10),r=parseInt(a[2],10),t=parseInt(a[3],10);break;case"YYYYMMDD":t=parseInt(a[1],10),r=parseInt(a[2],10),i=parseInt(a[3],10);break;default:return null}if(t>=1900&&t<=2100&&r>=1&&r<=12&&i>=1&&i<=31&&s>=0&&s<=23&&o>=0&&o<=59&&l>=0&&l<=59){let c=new Date(t,r-1,i,s,o,l);if(c.getFullYear()===t&&c.getMonth()===r-1&&c.getDate()===i)return c}return null}isValidMetadataDate(a,e){let t=new Date,r=new Date(t.getFullYear()-5,t.getMonth(),t.getDate()),i=new Date(t.getFullYear()+2,t.getMonth(),t.getDate());if(ai){if(e&&this.isArchivalProperty(e)){let s=new Date(t.getFullYear()-10,t.getMonth(),t.getDate());return a>=s&&a<=i}return!1}return!0}isArchivalProperty(a){return[/creation/i,/created/i,/original/i,/archive/i,/historical/i,/legacy/i].some(t=>t.test(a))}getCacheStats(){return{size:this.fileDateCache.size,maxSize:this.MAX_CACHE_SIZE}}};var sv=class{constructor(a,e,t){this.resolutionCache=new Map;this.CACHE_TTL=600*1e3;this.MAX_CACHE_SIZE=1e3;this.dateInheritanceService=new gc(a,e,t)}async augmentTasksWithDateInheritance(a,e,t){if(a.length===0)return a;let r=await this.prepareBatchContext(a,e,t),i=[];for(let s of a)try{let o=await this.augmentSingleTask(s,r);i.push(o)}catch(o){console.warn(`[DateInheritanceAugmentor] Failed to augment task ${s.id}:`,o),i.push(s)}return i}async prepareBatchContext(a,e,t){let r=t?t.split(/\r?\n/):[],i=new Map;for(let o of a)o.metadata.parent&&i.set(o.id,o.metadata.parent);return{filePath:e,allTasks:a,allLines:r,fileMetadataCache:new Map,parentChildMap:i}}async augmentSingleTask(a,e){let t=a.metadata;if(!t.timeComponents||!this.hasTimeOnlyExpressions(t))return a;let i=await this.resolveTimeOnlyDates(a,t,e);return i.length>0?this.updateTaskWithResolvedDates(a,i):a}hasTimeOnlyExpressions(a){if(!a.timeComponents)return!1;let{timeComponents:e}=a;return e.startTime&&!a.startDate||e.endTime&&!a.startDate&&!a.dueDate||e.dueTime&&!a.dueDate||e.scheduledTime&&!a.scheduledDate||!1}async resolveTimeOnlyDates(a,e,t){let r=[];if(!e.timeComponents)return r;let i=t.parentChildMap.get(a.id),s=i?t.allTasks.find(u=>u.id===i):void 0,l={currentLine:a.originalMarkdown||a.content,filePath:t.filePath,parentTask:s,fileMetadataCache:t.fileMetadataCache,lineNumber:a.line,allLines:t.allLines,allTasks:t.allTasks},c=e.timeComponents;if(c.startTime&&!e.startDate){let u=await this.resolveWithCache(a,c.startTime,l,"startTime");u&&r.push({type:"startDate",date:u.resolvedDate,timeComponent:c.startTime,result:u})}if(c.dueTime&&!e.dueDate){let u=await this.resolveWithCache(a,c.dueTime,l,"dueTime");u&&r.push({type:"dueDate",date:u.resolvedDate,timeComponent:c.dueTime,result:u})}if(c.scheduledTime&&!e.scheduledDate){let u=await this.resolveWithCache(a,c.scheduledTime,l,"scheduledTime");u&&r.push({type:"scheduledDate",date:u.resolvedDate,timeComponent:c.scheduledTime,result:u})}if(c.endTime&&!e.startDate&&!e.dueDate){let u=await this.resolveWithCache(a,c.endTime,l,"endTime");if(u){let p=c.startTime?"startDate":"dueDate";r.push({type:p,date:u.resolvedDate,timeComponent:c.endTime,result:u})}}return r}async resolveWithCache(a,e,t,r){let i=this.createContextHash(a,e,t,r),s=`${a.filePath}:${a.line}:${r}:${i}`,o=this.resolutionCache.get(s);if(o&&this.isCacheValid(o))return o.result;try{let l=await this.dateInheritanceService.resolveDateForTimeOnly(a,e,t);return this.cacheResolution(s,l,i),l}catch(l){return console.error(`[DateInheritanceAugmentor] Failed to resolve date for task ${a.id}:`,l),null}}createContextHash(a,e,t,r){var s;let i={currentLine:t.currentLine,filePath:t.filePath,parentTaskId:(s=t.parentTask)==null?void 0:s.id,timeComponentText:e.originalText,timeType:r,lineNumber:t.lineNumber};return JSON.stringify(i)}isCacheValid(a){return Date.now()-a.timestamp=this.MAX_CACHE_SIZE){let r=this.resolutionCache.keys().next().value;r&&this.resolutionCache.delete(r)}this.resolutionCache.set(a,{result:e,timestamp:Date.now(),contextHash:t})}updateTaskWithResolvedDates(a,e){let t={...a},r={...a.metadata};for(let{type:i,date:s,timeComponent:o,result:l}of e){let c=s.getTime();switch(i){case"startDate":r.startDate=c;break;case"dueDate":r.dueDate=c;break;case"scheduledDate":r.scheduledDate=c;break}r.enhancedDates||(r.enhancedDates={});let u=new Date(s.getFullYear(),s.getMonth(),s.getDate(),o.hour,o.minute,o.second||0);switch(i){case"startDate":if(r.enhancedDates.startDateTime=u,o.rangePartner){let p=new Date(s.getFullYear(),s.getMonth(),s.getDate(),o.rangePartner.hour,o.rangePartner.minute,o.rangePartner.second||0);r.enhancedDates.endDateTime=p}break;case"dueDate":r.enhancedDates.dueDateTime=u;break;case"scheduledDate":r.enhancedDates.scheduledDateTime=u;break}`${i}${a.id}${s.toISOString()}${l.source}${l.confidence}`}return t.metadata=r,t}clearCache(){this.resolutionCache.clear(),this.dateInheritanceService.clearCache()}getCacheStats(){return{resolutionCache:{size:this.resolutionCache.size,maxSize:this.MAX_CACHE_SIZE},dateInheritanceCache:this.dateInheritanceService.getCacheStats()}}onSettingsChange(){this.clearCache()}};var ov=class{constructor(a){this.fileFrontmatterInheritanceEnabled=!0;this.strategy={scalarPriority:["task","file","project","default"],arrayMergeStrategy:"task-first",statusCompletionSource:"task-only",recurrenceSource:"task-explicit",subtaskInheritance:{tags:!0,project:!0,priority:!0,dueDate:!1,startDate:!1,scheduledDate:!1,completed:!1,status:!1,recurrence:!1,onCompletion:!1},...a==null?void 0:a.strategy},a!=null&&a.app&&(a!=null&&a.vault)&&(a!=null&&a.metadataCache)&&(this.dateInheritanceAugmentor=new sv(a.app,a.vault,a.metadataCache))}updateSettings(a){let e=a.fileMetadataInheritance;e&&(this.fileFrontmatterInheritanceEnabled=!!(e.enabled&&e.inheritFromFrontmatter))}async merge(a){let e=a.tasks.map(t=>this.augmentTask(t,a));if(this.dateInheritanceAugmentor)try{e=await this.dateInheritanceAugmentor.augmentTasksWithDateInheritance(e,a.filePath)}catch(t){console.warn("[Augmentor] Date inheritance augmentation failed:",t)}return e}mergeCompat(a,e){var r,i;let t={filePath:a.filePath,fileMeta:a.fileMeta,projectName:(r=a.project)==null?void 0:r.name,projectMeta:(i=a.project)==null?void 0:i.data,tasks:e};return e.map(s=>this.augmentTask(s,t))}augmentTask(a,e){let t=a.metadata||{},r={...t},i=!1;if(i&&(r.priority!==void 0||a.priority!==void 0)&&(r.priority,a.priority,e.filePath),(r.priority===void 0||r.priority===null)&&a.priority!==void 0&&a.priority!==null&&(r.priority=a.priority),r.priority===null)r.priority=void 0;else if(r.priority!==void 0){let s=r.priority;r.priority=this.convertPriorityValue(r.priority),i&&(r.priority,e.filePath)}return this.applyScalarInheritance(r,e),this.applyArrayInheritance(r,e),this.applySpecialFieldRules(r,e),this.applyProjectReference(r,e),t.children&&Array.isArray(t.children)&&this.applySubtaskInheritance(a,r,e),{...a,metadata:r}}applyScalarInheritance(a,e){var r,i,s,o;let t=["priority","context","area","estimatedTime","actualTime","useAsDateType","heading"];for(let l of t)if(!(a[l]!==void 0&&a[l]!==null)){if(l==="priority"){for(let c of["file","project"]){let u;if(c==="file"?u=(r=e.fileMeta)==null?void 0:r[l]:c==="project"&&(u=(i=e.projectMeta)==null?void 0:i[l]),u!=null){a[l]=this.convertPriorityValue(u);break}}continue}for(let c of this.strategy.scalarPriority.slice(1)){let u;switch(c){case"file":if(!this.fileFrontmatterInheritanceEnabled)continue;u=(s=e.fileMeta)==null?void 0:s[l];break;case"project":u=(o=e.projectMeta)==null?void 0:o[l];break;case"default":u=this.getDefaultValue(l);break}if(u!=null){a[l]=u;break}}}}applyArrayInheritance(a,e){let t=["tags","dependsOn"];for(let r of t){let i=Array.isArray(a[r])?a[r]:[],s=e.fileMeta&&Array.isArray(e.fileMeta[r])?e.fileMeta[r]:[],o=this.fileFrontmatterInheritanceEnabled?s:[],l=e.projectMeta&&Array.isArray(e.projectMeta[r])?e.projectMeta[r]:[],c=g=>r!=="tags"?g:g.filter(k=>typeof k=="string"&&k.trim().length>0).map(k=>this.normalizeTag(k));if(r==="tags"&&!this.fileFrontmatterInheritanceEnabled){try{console.debug("[Augmentor][Tags] Inheritance disabled. Keeping only task tags.",{taskTags:c(i)})}catch(g){}a[r]=c(i);continue}let u=c(i),p=c(o),m=c(l),f;switch(this.strategy.arrayMergeStrategy){case"task-first":f=[...u,...p,...m];break;case"file-first":f=[...p,...u,...m];break;case"project-first":f=[...m,...u,...p];break;default:f=[...u,...p,...m]}let h=Array.from(new Set(f));a[r]=h}}normalizeTag(a){if(typeof a!="string")return a;let e=a.trim();return e&&(e.startsWith("#")?e:`#${e}`)}applySpecialFieldRules(a,e){var r,i;this.strategy.statusCompletionSource,this.strategy.recurrenceSource==="task-explicit"&&(a.recurrence||delete a.recurrence);let t=["dueDate","startDate","scheduledDate","createdDate"];for(let s of t)if(a[s]===void 0||a[s]===null){let o=(r=e.fileMeta)==null?void 0:r[s],l=(i=e.projectMeta)==null?void 0:i[s];o!=null?a[s]=o:l!=null&&(a[s]=l)}}applyProjectReference(a,e){!a.project&&e.projectName&&(a.project=e.projectName),e.projectMeta&&(e.projectMeta.tgProject?a.tgProject=e.projectMeta.tgProject:e.projectName&&(a.tgProject={type:e.projectMeta.type||"metadata",name:e.projectName,source:e.projectMeta.source||e.projectMeta.configSource||"unknown",readonly:e.projectMeta.readonly||!1}))}applySubtaskInheritance(a,e,t){e._subtaskInheritanceRules=this.strategy.subtaskInheritance}convertPriorityValue(a){if(a==null||a==="")return;if(typeof a=="number")return a;let e=String(a),t={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1,"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1},r=parseInt(e,10);if(!isNaN(r)&&r>=1&&r<=5)return r;let i=t[e.toLowerCase()]||t[e];if(i!==void 0)return i}getDefaultValue(a){return{tags:[],dependsOn:[],estimatedTime:void 0,actualTime:void 0,useAsDateType:"due"}[a]}updateStrategy(a){this.strategy={...this.strategy,...a}}getStrategy(){return{...this.strategy}}processFieldInheritance(a,e,t,r){if(Array.isArray(e)||Array.isArray(t)||Array.isArray(r)){let i=Array.isArray(e)?e:[],s=Array.isArray(t)?t:[],o=Array.isArray(r)?r:[],l;switch(this.strategy.arrayMergeStrategy){case"task-first":l=[...i,...s,...o];break;case"file-first":l=[...s,...i,...o];break;case"project-first":l=[...o,...i,...s];break;default:l=[...i,...s,...o]}return Array.from(new Set(l))}for(let i of this.strategy.scalarPriority){let s;switch(i){case"task":s=e;break;case"file":s=t;break;case"project":s=r;break;case"default":s=this.getDefaultValue(a);break}if(s!=null)return s}}};Mi();xg();var dv=class{constructor(a,e,t){this.metrics={taskParsingSuccess:0,taskParsingFailures:0,projectDataSuccess:0,projectDataFailures:0,averageTaskParsingTime:0,averageProjectDataTime:0,totalOperations:0,fallbackToMainThread:0};this.maxRetries=3;this.retryDelayMs=1e3;this.workerFailureCount=0;this.maxWorkerFailures=10;this.workersDisabled=!1;this.enableWorkerProcessing=!0;var r;this.taskWorkerManager=a,this.projectWorkerManager=e,this.enableWorkerProcessing=(r=t==null?void 0:t.enableWorkerProcessing)!=null?r:!0}async parseFileTasks(a,e="normal"){let t=Date.now();try{if(!this.enableWorkerProcessing||this.workersDisabled)return await this.parseFileTasksMainThread(a);let r=this.convertPriority(e),i=await this.retryOperation(()=>this.taskWorkerManager.processFile(a,r),`parseFileTasks:${a.path}`,this.maxRetries);return this.metrics.taskParsingSuccess++,this.updateAverageTime("taskParsing",Date.now()-t),i}catch(r){return console.error(`WorkerOrchestrator: Failed to parse file ${a.path}:`,r),this.metrics.taskParsingFailures++,this.handleWorkerFailure(),await this.parseFileTasksMainThread(a)}}async batchParse(a,e="normal"){let t=Date.now();try{if(!this.enableWorkerProcessing||this.workersDisabled||a.length===0)return await this.batchParseMainThread(a);let r=this.convertPriority(e),i=await this.retryOperation(()=>this.taskWorkerManager.processBatch(a,r),`batchParse:${a.length}files`,this.maxRetries);return this.metrics.taskParsingSuccess+=a.length,this.updateAverageTime("taskParsing",Date.now()-t),i}catch(r){return console.error(`WorkerOrchestrator: Failed to batch parse ${a.length} files:`,r),this.metrics.taskParsingFailures+=a.length,this.handleWorkerFailure(),await this.batchParseMainThread(a)}}async computeProjectData(a){let e=Date.now();try{if(this.workersDisabled)return await this.computeProjectDataMainThread(a);let t=await this.retryOperation(()=>this.projectWorkerManager.getProjectData(a),`computeProjectData:${a}`,this.maxRetries);return this.metrics.projectDataSuccess++,this.updateAverageTime("projectData",Date.now()-e),t}catch(t){return console.error(`WorkerOrchestrator: Failed to compute project data for ${a}:`,t),this.metrics.projectDataFailures++,this.handleWorkerFailure(),await this.computeProjectDataMainThread(a)}}async batchCompute(a){let e=Date.now();try{if(this.workersDisabled||a.length===0)return await this.batchComputeMainThread(a);let t=await this.retryOperation(()=>this.projectWorkerManager.getBatchProjectData(a),`batchCompute:${a.length}files`,this.maxRetries);return this.metrics.projectDataSuccess+=a.length,this.updateAverageTime("projectData",Date.now()-e),t}catch(t){return console.error(`WorkerOrchestrator: Failed to batch compute ${a.length} files:`,t),this.metrics.projectDataFailures+=a.length,this.handleWorkerFailure(),await this.batchComputeMainThread(a)}}async retryOperation(a,e,t){let r;for(let i=0;i<=t;i++)try{if(i>0){let s=this.retryDelayMs*Math.pow(2,i-1);await new Promise(o=>setTimeout(o,s)),`${e}${i}${t}`}return await a()}catch(s){if(r=s,console.warn(`WorkerOrchestrator: ${e} failed, attempt ${i}/${t}:`,s),i===t)break}throw r}handleWorkerFailure(){this.workerFailureCount++,this.workerFailureCount>=this.maxWorkerFailures&&(console.warn(`WorkerOrchestrator: Too many worker failures (${this.workerFailureCount}), disabling workers temporarily`),this.workersDisabled=!0,this.metrics.fallbackToMainThread++,setTimeout(()=>{this.workersDisabled=!1,this.workerFailureCount=0},3e4))}convertPriority(a){switch(a){case"high":return 0;case"normal":return 1;case"low":return 2;default:return 1}}updateAverageTime(a,e){let t=a==="taskParsing"?"averageTaskParsingTime":"averageProjectDataTime";this.metrics.totalOperations++;let r=this.metrics[t],i=Math.min(this.metrics.totalOperations,100);this.metrics[t]=(r*(i-1)+e)/i}setWorkerProcessingEnabled(a){this.enableWorkerProcessing=a,a&&this.workersDisabled&&this.workerFailureCount(Lo(),IO)),{CanvasParser:t}=await Promise.resolve().then(()=>(lv(),IH)),r=a.extension.toLowerCase(),i=[];if(r==="md"){let s=this.taskWorkerManager.vault,o=this.taskWorkerManager.metadataCache,l=await s.cachedRead(a),c=o.getFileCache(a),u=(c==null?void 0:c.frontmatter)||{},m=new e({parseMetadata:!0,parseTags:!0,parseComments:!0,parseHeadings:!0,metadataParseMode:"both",maxIndentSize:8,maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,statusMapping:{},emojiMapping:{"\u{1F4C5}":"dueDate","\u{1F6EB}":"startDate","\u23F3":"scheduledDate","\u2705":"completedDate","\u274C":"cancelledDate","\u2795":"createdDate","\u{1F501}":"recurrence","\u{1F3C1}":"onCompletion","\u26D4":"dependsOn","\u{1F194}":"id","\u{1F53A}":"priority","\u23EB":"priority","\u{1F53C}":"priority","\u{1F53D}":"priority","\u23EC":"priority"},specialTagPrefixes:{}}).parseLegacy(l,a.path,u,void 0,void 0);i.push(...m)}else r==="canvas"&&console.warn("WorkerOrchestrator: Canvas parsing requires plugin instance, returning empty");return i}async batchParseMainThread(a){this.metrics.fallbackToMainThread++;let e=new Map;for(let t of a)try{let r=await this.parseFileTasksMainThread(t);e.set(t.path,r)}catch(r){console.error(`Main thread parsing failed for ${t.path}:`,r),e.set(t.path,[])}return e}async computeProjectDataMainThread(a){return this.metrics.fallbackToMainThread++,console.warn(`WorkerOrchestrator: Main thread project data computation not implemented for ${a}`),null}async batchComputeMainThread(a){this.metrics.fallbackToMainThread++;let e=new Map;for(let t of a)try{let r=await this.computeProjectDataMainThread(t);r&&e.set(t,r)}catch(r){console.error(`Main thread project data computation failed for ${t}:`,r)}return e}getMetrics(){let a=this.metrics.taskParsingSuccess+this.metrics.taskParsingFailures,e=this.metrics.projectDataSuccess+this.metrics.projectDataFailures;return{...this.metrics,taskParsingSuccessRate:a>0?this.metrics.taskParsingSuccess/a:0,projectDataSuccessRate:e>0?this.metrics.projectDataSuccess/e:0,workersEnabled:!this.workersDisabled,workerFailureCount:this.workerFailureCount,taskWorkerStats:this.taskWorkerManager.getStats(),projectWorkerStats:this.projectWorkerManager.getMemoryStats()}}resetMetrics(){this.metrics={taskParsingSuccess:0,taskParsingFailures:0,projectDataSuccess:0,projectDataFailures:0,averageTaskParsingTime:0,averageProjectDataTime:0,totalOperations:0,fallbackToMainThread:0}}setWorkersEnabled(a){this.workersDisabled=!a,a&&(this.workerFailureCount=0)}isBatchProcessing(){return this.taskWorkerManager.isProcessingBatchTask()||this.projectWorkerManager.isWorkersEnabled()}getQueueStats(){return{taskQueueSize:this.taskWorkerManager.getPendingTaskCount(),taskBatchProgress:this.taskWorkerManager.getBatchProgress(),projectMemoryStats:this.projectWorkerManager.getMemoryStats()}}destroy(){this.taskWorkerManager.onunload(),this.projectWorkerManager.destroy()}};var kc=require("obsidian");Mi();var cv=class extends kc.Component{constructor(e,t,r){super();this.eventRefs=[];this.DEBOUNCE_DELAY=300;this.BATCH_DELAY=150;this.pendingFileChanges=new Map;this.pendingMetadataChanges=new Map;this.pendingBatch=new Set;this.debouncedBatch=null;this.IGNORED_EXTENSIONS=new Set([".tmp",".swp",".log"]);this.RELEVANT_EXTENSIONS=new Set(["md","canvas"]);this.skipNextModify=new Set;this.app=e,this.vault=t,this.metadataCache=r}onload(){this.initialize()}initialize(){this.registerEvent(ta(this.app,se.WRITE_OPERATION_START,({path:e})=>{this.skipNextModify.add(e),setTimeout(()=>this.skipNextModify.delete(e),5e3)})),this.registerEvent(ta(this.app,se.WRITE_OPERATION_COMPLETE,({path:e})=>{setTimeout(()=>{this.skipNextModify.delete(e)},100)})),this.registerEvent(this.vault.on("create",this.onFileCreate.bind(this))),this.registerEvent(this.vault.on("modify",this.onFileModify.bind(this))),this.registerEvent(this.vault.on("delete",this.onFileDelete.bind(this))),this.registerEvent(this.vault.on("rename",this.onFileRename.bind(this))),this.registerEvent(this.metadataCache.on("changed",this.onMetadataChange.bind(this))),this.registerEvent(this.metadataCache.on("resolve",this.onMetadataResolve.bind(this))),`${this.eventRefs.length}`}onFileCreate(e){this.app.workspace.layoutReady&&this.isRelevantFile(e)&&(`${e.path}`,ke(this.app,se.FILE_UPDATED,{path:e.path,reason:"create",timestamp:Date.now()}))}onFileModify(e){if(!this.isRelevantFile(e))return;if(this.skipNextModify.has(e.path)){this.skipNextModify.delete(e.path),`${e.path}`;return}let t=this.pendingFileChanges.get(e.path);t||(t=(0,kc.debounce)(()=>{this.emitFileUpdated(e.path,"modify")},this.DEBOUNCE_DELAY,!1),this.pendingFileChanges.set(e.path,t)),t()}onFileDelete(e){this.isRelevantFile(e)&&(`${e.path}`,this.pendingFileChanges.has(e.path)&&this.pendingFileChanges.delete(e.path),ke(this.app,se.FILE_UPDATED,{path:e.path,reason:"delete",timestamp:Date.now()}))}onFileRename(e,t){this.isRelevantFile(e)&&(`${t}${e.path}`,this.pendingFileChanges.has(t)&&this.pendingFileChanges.delete(t),ke(this.app,se.FILE_UPDATED,{path:t,reason:"delete",timestamp:Date.now()}),ke(this.app,se.FILE_UPDATED,{path:e.path,reason:"rename",timestamp:Date.now()}))}onMetadataChange(e){if(!this.isRelevantFile(e))return;if(this.skipNextModify.has(e.path)){`${e.path}`;return}let t=this.pendingMetadataChanges.get(e.path);t||(t=(0,kc.debounce)(()=>{this.emitFileUpdated(e.path,"frontmatter")},this.DEBOUNCE_DELAY,!1),this.pendingMetadataChanges.set(e.path,t)),t()}onMetadataResolve(e){this.isRelevantFile(e)&&this.addToBatch(e.path)}addToBatch(e){this.pendingBatch.add(e),this.debouncedBatch||(this.debouncedBatch=(0,kc.debounce)(()=>this.processBatch(),this.BATCH_DELAY,!1)),this.debouncedBatch()}processBatch(){if(this.pendingBatch.size===0)return;let e=Array.from(this.pendingBatch);this.pendingBatch.clear(),`${e.length}`,ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:e,stats:{total:e.length,changed:e.length},timestamp:Date.now(),seq:Date.now()})}emitFileUpdated(e,t){`${e}${t}`,ke(this.app,se.FILE_UPDATED,{path:e,reason:t,timestamp:Date.now()})}isRelevantFile(e){var r;if(!e||typeof e.path!="string")return!1;let t=(r=e.extension)==null?void 0:r.toLowerCase();return!(!t||this.IGNORED_EXTENSIONS.has(`.${t}`)||!this.RELEVANT_EXTENSIONS.has(t)||e.path.startsWith(".")||e.path.includes("/."))}triggerFileUpdate(e,t="modify"){this.emitFileUpdated(e,t)}triggerBatchUpdate(e){e.length!==0&&(`${e.length}`,ke(this.app,se.TASK_CACHE_UPDATED,{changedFiles:e,stats:{total:e.length,changed:e.length},timestamp:Date.now(),seq:Date.now()}))}flush(){for(let e of Array.from(this.pendingFileChanges.keys()))this.pendingFileChanges.delete(e),this.emitFileUpdated(e,"modify");for(let e of Array.from(this.pendingMetadataChanges.keys()))this.pendingMetadataChanges.delete(e),this.emitFileUpdated(e,"frontmatter");this.processBatch()}getStats(){return{pendingFileChanges:this.pendingFileChanges.size,pendingMetadataChanges:this.pendingMetadataChanges.size,pendingBatchSize:this.pendingBatch.size,hasBatchDebounce:this.debouncedBatch!==null}}destroy(){this.pendingFileChanges.clear(),this.pendingMetadataChanges.clear(),this.debouncedBatch=null,this.pendingBatch.clear(),this.unload()}};Mi();var uv=class{constructor(a,e){this.app=a;this.getIcsManager=e;this.eventRefs=[];this.isInitialized=!1;this.lastIcsUpdateSeq=0}initialize(){this.isInitialized||(this.subscribeToIcsUpdates(),this.loadAndEmitIcsEvents(),this.ensureManagerAndLoad(0),this.isInitialized=!0)}ensureManagerAndLoad(a){if(this.getIcsManager()){this.loadAndEmitIcsEvents();return}if(a>=30){console.warn("[IcsSource] ICS manager not available after retries");return}setTimeout(()=>this.ensureManagerAndLoad(a+1),1e3)}subscribeToIcsUpdates(){this.app.workspace.on("ics-cache-updated",()=>{this.loadAndEmitIcsEvents()})}async loadAndEmitIcsEvents(){let a=this.getIcsManager();if(a)try{let e=await a.getAllEventsWithSync(),t=a.convertEventsToTasks(e);`${t.length}`,this.lastIcsUpdateSeq=Ht.next(),ke(this.app,se.ICS_EVENTS_UPDATED,{events:t,timestamp:Date.now(),seq:this.lastIcsUpdateSeq,stats:{total:t.length,sources:this.getSourceStats(t)}})}catch(e){console.error("[IcsSource] Error loading ICS events:",e),ke(this.app,se.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:Ht.next(),error:e.message})}}getSourceStats(a){var t,r;let e={};for(let i of a){let s=((r=(t=i.metadata)==null?void 0:t.source)==null?void 0:r.id)||"unknown";e[s]=(e[s]||0)+1}return e}async refresh(){await this.loadAndEmitIcsEvents()}getStats(){return{initialized:this.isInitialized,lastUpdateSeq:this.lastIcsUpdateSeq}}destroy(){for(let a of this.eventRefs)this.app.vault.offref(a);this.eventRefs=[],ke(this.app,se.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:Ht.next(),destroyed:!0}),this.isInitialized=!1}};Mi();var yc={enabled:!0,taskFields:["dueDate","status","priority","assigned"],requireAllFields:!1},vc={enabled:!0,taskTags:["#task","#actionable","#todo"],matchMode:"exact"},bc={enabled:!1,templatePaths:["Templates/Task Template.md"],checkTemplateMetadata:!0},wc={enabled:!1,taskPaths:["Projects/","Tasks/"],matchMode:"prefix"},AH={contentSource:"filename",stripExtension:!0,defaultStatus:" ",defaultPriority:void 0,preferFrontmatterTitle:!0},FH={enableChildRelationships:!0,enableMetadataInheritance:!0,inheritanceFields:["project","priority","context"]},RH={enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5},OH={enabled:!0,metadataToSymbol:{completed:"x",done:"x",finished:"x",complete:"x",checked:"x",resolved:"x",closed:"x",x:"x",X:"x","in-progress":"/","in progress":"/",inprogress:"/",doing:"/",working:"/",active:"/",started:"/",ongoing:"/","/":"/",">":"/",planned:"?",todo:"?",pending:"?",scheduled:"?",queued:"?",waiting:"?",later:"?","?":"?",cancelled:"-",canceled:"-",abandoned:"-",dropped:"-",skipped:"-",deferred:"-",wontfix:"-","won't fix":"-","-":"-","not-started":" ","not started":" ",notstarted:" ",new:" ",open:" ",created:" ",unstarted:" "," ":" "},symbolToMetadata:{x:"completed",X:"completed","/":"in-progress",">":"in-progress","?":"planned","-":"cancelled"," ":"not-started"},autoDetect:!0,caseSensitive:!1},e7={enabled:!1,recognitionStrategies:{metadata:yc,tags:vc,templates:bc,paths:wc},fileTaskProperties:AH,relationships:FH,performance:RH,statusMapping:OH},pv=class{constructor(a){this.listeners=[];this.config=this.mergeWithDefaults(a||{})}getConfig(){return{...this.config}}updateConfig(a){let e=this.mergeWithDefaults(a);JSON.stringify(e)!==JSON.stringify(this.config)&&(this.config=e,this.notifyListeners())}onChange(a){return this.listeners.push(a),()=>{let e=this.listeners.indexOf(a);e>-1&&this.listeners.splice(e,1)}}isEnabled(){return this.config.enabled}getEnabledStrategies(){let a=[],{recognitionStrategies:e}=this.config;return e.metadata.enabled&&a.push("metadata"),e.tags.enabled&&a.push("tags"),e.templates.enabled&&a.push("templates"),e.paths.enabled&&a.push("paths"),a}validateConfig(a){var t,r,i,s,o,l,c,u,p;let e=[];if(a.recognitionStrategies){let m=a.recognitionStrategies;a.enabled!==!1&&(Object.values(m).some(h=>h&&h.enabled)||e.push("At least one recognition strategy must be enabled")),((r=(t=m.metadata)==null?void 0:t.taskFields)==null?void 0:r.length)===0&&e.push("Metadata strategy requires at least one task field"),((s=(i=m.tags)==null?void 0:i.taskTags)==null?void 0:s.length)===0&&e.push("Tag strategy requires at least one task tag"),((l=(o=m.templates)==null?void 0:o.templatePaths)==null?void 0:l.length)===0&&e.push("Template strategy requires at least one template path"),((u=(c=m.paths)==null?void 0:c.taskPaths)==null?void 0:u.length)===0&&e.push("Path strategy requires at least one task path")}if(a.fileTaskProperties){let m=a.fileTaskProperties;m.contentSource==="custom"&&!m.customContentField&&e.push("Custom content source requires customContentField to be specified")}if(a.performance){let m=a.performance;m.cacheTTL&&m.cacheTTL<0&&e.push("Cache TTL must be a positive number")}if((p=a.statusMapping)!=null&&p.enabled){let m=a.statusMapping;Object.keys(m.metadataToSymbol||{}).length===0&&e.push("Status mapping requires at least one metadata to symbol mapping"),Object.keys(m.symbolToMetadata||{}).length===0&&e.push("Status mapping requires at least one symbol to metadata mapping")}return e}mergeWithDefaults(a){var e,t,r,i,s;return{enabled:(e=a.enabled)!=null?e:e7.enabled,recognitionStrategies:{metadata:{...yc,...(t=a.recognitionStrategies)==null?void 0:t.metadata},tags:{...vc,...(r=a.recognitionStrategies)==null?void 0:r.tags},templates:{...bc,...(i=a.recognitionStrategies)==null?void 0:i.templates},paths:{...wc,...(s=a.recognitionStrategies)==null?void 0:s.paths}},fileTaskProperties:{...AH,...a.fileTaskProperties},relationships:{...FH,...a.relationships},performance:{...RH,...a.performance},statusMapping:{...OH,...a.statusMapping}}}notifyListeners(){this.listeners.forEach(a=>{try{a(this.config)}catch(e){console.error("FileSourceConfig: Error in change listener:",e)}})}mapMetadataToSymbol(a){let{statusMapping:e}=this.config;if(!e.enabled)return a;let t=e.caseSensitive?a:a.toLowerCase();for(let[r,i]of Object.entries(e.metadataToSymbol))if((e.caseSensitive?r:r.toLowerCase())===t)return i;return a}mapSymbolToMetadata(a){let{statusMapping:e}=this.config;return e.enabled&&e.symbolToMetadata[a]||a}isRecognizedStatus(a){let{statusMapping:e}=this.config;if(!e.enabled)return!1;let t=e.caseSensitive?a:a.toLowerCase();for(let r of Object.keys(e.metadataToSymbol))if((e.caseSensitive?r:r.toLowerCase())===t)return!0;return a in e.symbolToMetadata}syncWithTaskStatuses(a){if(!this.config.statusMapping.autoDetect)return;let e={},t={};for(let[s,o]of Object.entries(a)){let l=o.split("|").filter(c=>c);t[s]=t[s]||[];for(let c of l)if(c.length===1||c==="/>")c==="/>"?(e["/"]=s,e[">"]=s,t[s].push("/"),t[s].push(">")):(e[c]=s,t[s].push(c));else for(let u of c)e[u]=s,t[s].push(u)}let r={completed:"completed",inProgress:"in-progress",planned:"planned",abandoned:"cancelled",notStarted:"not-started"};for(let[s,o]of Object.entries(e))r[o]&&(this.config.statusMapping.symbolToMetadata[s]=r[o]);let i={completed:"x",inProgress:"/",planned:"?",abandoned:"-",notStarted:" "};for(let[s,o]of Object.entries(r)){let c=(t[s]||[])[0]||i[s];o&&c!==void 0&&(this.config.statusMapping.metadataToSymbol[o]=c)}this.notifyListeners()}static createPreset(a){switch(a){case"basic":return{enabled:!0,recognitionStrategies:{metadata:{...yc,enabled:!0},tags:{...vc,enabled:!1},templates:{...bc,enabled:!1},paths:{...wc,enabled:!1}}};case"metadata-only":return{enabled:!0,recognitionStrategies:{metadata:{...yc,enabled:!0},tags:{...vc,enabled:!1},templates:{...bc,enabled:!1},paths:{...wc,enabled:!1}}};case"tag-only":return{enabled:!0,recognitionStrategies:{metadata:{...yc,enabled:!1},tags:{...vc,enabled:!0},templates:{...bc,enabled:!1},paths:{...wc,enabled:!1}}};case"full":return{enabled:!0,recognitionStrategies:{metadata:{...yc,enabled:!0},tags:{...vc,enabled:!0},templates:{...bc,enabled:!1},paths:{...wc,enabled:!1}}};default:return{}}}};var ff=class{constructor(a,e,t){this.app=a;this.fileFilterManager=t;this.isInitialized=!1;this.lastUpdateSeq=0;this.eventRefs=[];this.fileTaskCache=new Map;this.pendingUpdates=new Map;this.DEBOUNCE_DELAY=300;this.stats={initialized:!1,trackedFileCount:0,recognitionBreakdown:{metadata:0,tag:0,template:0,path:0},lastUpdate:0,lastUpdateSeq:0};this.config=new pv(e)}initialize(){this.isInitialized||this.config.isEnabled()&&(this.config.onChange(a=>{this.handleConfigChange(a)}),this.subscribeToFileEvents(),setTimeout(()=>{this.performInitialScan()},1e3),this.isInitialized=!0,this.stats.initialized=!0,`${this.config.getEnabledStrategies().join(", ")}`)}subscribeToFileEvents(){this.eventRefs.push(ta(this.app,se.FILE_UPDATED,a=>{a!=null&&a.path&&this.handleFileUpdate(a.path,a.reason)})),this.eventRefs.push(ta(this.app,"task-genius:file-metadata-changed",a=>{a!=null&&a.path&&this.handleFileMetadataChange(a.path)})),this.eventRefs.push(ta(this.app,"task-genius:file-content-changed",a=>{a!=null&&a.path&&this.handleFileContentChange(a.path)}))}handleFileUpdate(a,e){if(!this.isInitialized||!this.config.isEnabled()||!this.isRelevantFile(a))return;let r=this.pendingUpdates.get(a);r&&clearTimeout(r);let i=setTimeout(async()=>{this.pendingUpdates.delete(a);try{await this.processFileUpdate(a,e)}catch(s){console.error(`[FileSource] Error processing file update for ${a}:`,s)}},this.DEBOUNCE_DELAY);this.pendingUpdates.set(a,i)}handleFileMetadataChange(a){this.shouldUpdateFileTask(a,"metadata")&&this.handleFileUpdate(a,"frontmatter")}handleFileContentChange(a){this.shouldUpdateFileTask(a,"content")&&this.handleFileUpdate(a,"modify")}async processFileUpdate(a,e){var s;if(e==="delete"){await this.removeFileTask(a);return}let t=await this.shouldCreateFileTask(a),r=this.fileTaskCache.get(a),i=(s=r==null?void 0:r.fileTaskExists)!=null?s:!1;t&&!i?await this.createFileTask(a):t&&i?await this.updateFileTask(a):!t&&i&&await this.removeFileTask(a)}async shouldCreateFileTask(a){if(!this.isRelevantFile(a))return!1;let e=this.app.vault.getAbstractFileByPath(a);if(!e)return!1;try{let t=await this.app.vault.cachedRead(e),r=this.app.metadataCache.getFileCache(e);return this.evaluateRecognitionStrategies(a,t,r)}catch(t){return console.error(`[FileSource] Error reading file ${a}:`,t),!1}}evaluateRecognitionStrategies(a,e,t){let r=this.config.getConfig(),{recognitionStrategies:i}=r;return!!(i.metadata.enabled&&this.matchesMetadataStrategy(a,e,t,i.metadata)||i.tags.enabled&&this.matchesTagStrategy(a,e,t,i.tags)||i.templates.enabled&&this.matchesTemplateStrategy(a,e,t,i.templates)||i.paths.enabled&&this.matchesPathStrategy(a,e,t,i.paths))}matchesMetadataStrategy(a,e,t,r){if(!(t!=null&&t.frontmatter))return!1;let{taskFields:i,requireAllFields:s}=r,o=t.frontmatter,l=i.filter(c=>o.hasOwnProperty(c)&&o[c]!==void 0);return s?l.length===i.length:l.length>0}matchesTagStrategy(a,e,t,r){if(!(t!=null&&t.tags))return!1;let{taskTags:i,matchMode:s}=r,o=t.tags.map(l=>l.tag);return i.some(l=>o.some(c=>{switch(s){case"exact":return c===l;case"prefix":return c.startsWith(l);case"contains":return c.includes(l);default:return c===l}}))}matchesTemplateStrategy(a,e,t,r){return!r.enabled||!r.templatePaths||r.templatePaths.length===0?!1:r.templatePaths.some(i=>{if(a.includes(i))return!0;if(r.checkTemplateMetadata&&(t!=null&&t.frontmatter)){let s=t.frontmatter;return s.template===i||s.templateFile===i||s.templatePath===i}return!1})}matchesPathStrategy(a,e,t,r){if(!r.enabled||!r.taskPaths||r.taskPaths.length===0)return!1;let i=a.replace(/\\/g,"/");for(let s of r.taskPaths){let o=s.replace(/\\/g,"/");switch(r.matchMode){case"prefix":if(i.startsWith(o))return`${s}${a}`,!0;break;case"regex":try{if(new RegExp(o).test(i))return`${s}${a}`,!0}catch(l){console.warn(`[FileSource] Invalid regex pattern: ${s}`,l)}break;case"glob":if(this.matchGlobPattern(i,o))return`${s}${a}`,!0;break}}return!1}matchGlobPattern(a,e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\xA7\xA7\xA7").replace(/\*/g,"[^/]*").replace(/§§§/g,".*").replace(/\?/g,"[^/]");e.endsWith("/")?t=`^${t}.*`:t=`^${t}$`;try{return new RegExp(t).test(a)}catch(r){return console.warn(`[FileSource] Failed to compile glob pattern: ${e}`,r),!1}}async createFileTask(a){let e=this.app.vault.getAbstractFileByPath(a);if(!e)return null;try{let t=await this.app.vault.cachedRead(e),r=this.app.metadataCache.getFileCache(e),i=await this.buildFileTask(a,t,r);return i?(this.updateFileTaskCache(a,i),this.updateStatistics(i.metadata.recognitionStrategy,1),this.emitFileTaskUpdate("created",i),i):null}catch(t){return console.error(`[FileSource] Error creating file task for ${a}:`,t),null}}async updateFileTask(a){return await this.createFileTask(a)}async removeFileTask(a){let e=this.fileTaskCache.get(a);if(!(e!=null&&e.fileTaskExists))return;this.fileTaskCache.delete(a),this.stats.trackedFileCount=Math.max(0,this.stats.trackedFileCount-1);let t=Ht.next();this.lastUpdateSeq=t,ke(this.app,se.FILE_TASK_REMOVED,{filePath:a,timestamp:Date.now(),seq:t}),`${a}`}async buildFileTask(a,e,t){let r=this.config.getConfig(),i=this.app.vault.getAbstractFileByPath(a);if(!i)return null;let s=this.getMatchingStrategy(a,e,t);if(!s)return null;let o=this.generateTaskContent(a,e,t),l=typeof o=="string"?o:a.split("/").pop()||a,c=this.extractTaskMetadata(a,e,t,s);return{id:`file-source:${a}`,content:l,filePath:a,line:0,completed:c.status==="x"||c.status==="X",status:c.status||r.fileTaskProperties.defaultStatus,originalMarkdown:`**${l}**`,metadata:{...c,source:"file-source",recognitionStrategy:s.name,recognitionCriteria:s.criteria,fileTimestamps:{created:i.stat.ctime,modified:i.stat.mtime},childTasks:[],tags:c.tags||[],children:[]}}}getMatchingStrategy(a,e,t){let r=this.config.getConfig();if(r.recognitionStrategies.metadata.enabled&&this.matchesMetadataStrategy(a,e,t,r.recognitionStrategies.metadata))return{name:"metadata",criteria:"frontmatter"};if(r.recognitionStrategies.tags.enabled&&this.matchesTagStrategy(a,e,t,r.recognitionStrategies.tags))return{name:"tag",criteria:"file-tags"};if(r.recognitionStrategies.paths.enabled&&this.matchesPathStrategy(a,e,t,r.recognitionStrategies.paths))return{name:"path",criteria:r.recognitionStrategies.paths.taskPaths.join(", ")};let i=r.recognitionStrategies.templates;return i.enabled&&i.templatePaths.length>0&&i.templatePaths.some(o=>{var l,c;return a.includes(o)||((l=t==null?void 0:t.frontmatter)==null?void 0:l.template)===o||((c=t==null?void 0:t.frontmatter)==null?void 0:c.templateFile)===o})?{name:"template",criteria:i.templatePaths.join(", ")}:null}generateTaskContent(a,e,t){var o,l,c,u,p;let r=this.config.getConfig().fileTaskProperties,i=a.split("/").pop()||a,s=i.replace(/\.[^/.]+$/,"");switch(r.contentSource){case"filename":return r.preferFrontmatterTitle&&((o=t==null?void 0:t.frontmatter)!=null&&o.title)?t.frontmatter.title:r.stripExtension?s:i;case"title":return((l=t==null?void 0:t.frontmatter)==null?void 0:l.title)||s;case"h1":let m=(c=t==null?void 0:t.headings)==null?void 0:c.find(f=>f.level===1);return(m==null?void 0:m.heading)||s;case"custom":if(r.customContentField&&(t!=null&&t.frontmatter)){let f=t.frontmatter[r.customContentField];return f||(r.preferFrontmatterTitle&&t.frontmatter.title?t.frontmatter.title:s)}return r.preferFrontmatterTitle&&((u=t==null?void 0:t.frontmatter)!=null&&u.title)?t.frontmatter.title:s;default:return r.preferFrontmatterTitle&&((p=t==null?void 0:t.frontmatter)!=null&&p.title)?t.frontmatter.title:r.stripExtension?s:i}}extractTaskMetadata(a,e,t,r){var p,m;let i=this.config.getConfig(),s=(t==null?void 0:t.frontmatter)||{},o=(p=s.status)!=null?p:"",c=o?(f=>{if(!f)return i.fileTaskProperties.defaultStatus;if(f.length===1)return f;let h=this.config.getConfig().statusMapping,g=h.caseSensitive?f:String(f).toLowerCase();for(let[b,v]of Object.entries(h.metadataToSymbol||{}))if((h.caseSensitive?b:b.toLowerCase())===g)return v;let k={completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-",canceled:"-","not-started":" ","not started":" "},y=String(f).toLowerCase();return k[y]!==void 0?k[y]:i.fileTaskProperties.defaultStatus})(o):i.fileTaskProperties.defaultStatus;return o&&c!==o&&`${o}${c}${a}`,{dueDate:this.parseDate(s.dueDate||s.due),startDate:this.parseDate(s.startDate||s.start),scheduledDate:this.parseDate(s.scheduledDate||s.scheduled),priority:s.priority||i.fileTaskProperties.defaultPriority,project:s.project,context:s.context,area:s.area,tags:((m=t==null?void 0:t.tags)==null?void 0:m.map(f=>f.tag))||[],status:c,children:[]}}mapSymbolToFileMetadata(a){return this.config.getConfig().statusMapping.enabled?this.config.mapSymbolToMetadata(a):a}parseDate(a){if(a){if(typeof a=="number")return a;if(typeof a=="string"){let e=Date.parse(a);return isNaN(e)?void 0:e}if(a instanceof Date)return a.getTime()}}updateFileTaskCache(a,e){let t=this.generateFrontmatterHash(a);this.fileTaskCache.set(a,{fileTaskExists:!0,frontmatterHash:t,childTaskIds:new Set(e.metadata.childTasks||[]),lastUpdated:Date.now()})}generateFrontmatterHash(a){let e=this.app.vault.getAbstractFileByPath(a);if(!e)return"";let t=this.app.metadataCache.getFileCache(e);if(!(t!=null&&t.frontmatter))return"";let r=JSON.stringify(t.frontmatter,Object.keys(t.frontmatter).sort());return this.simpleHash(r)}simpleHash(a){let e=0;for(let t=0;t0){let i=this.config.getConfig();i.recognitionStrategies.metadata.enabled&&`${i.recognitionStrategies.metadata.taskFields.join(", ")}`,i.recognitionStrategies.tags.enabled&&`${i.recognitionStrategies.tags.taskTags.join(", ")}`,i.recognitionStrategies.paths.enabled&&`${i.recognitionStrategies.paths.taskPaths.join(", ")}`}}handleConfigChange(a){if(!a.enabled&&this.isInitialized){this.destroy();return}if(a.enabled&&!this.isInitialized){this.initialize();return}}getStats(){return{...this.stats}}async getAllFileTasks(){return[]}updateConfiguration(a){this.config.updateConfig(a)}syncStatusMappingFromSettings(a){try{this.config.syncWithTaskStatuses(a)}catch(e){console.warn("[FileSource] Failed to sync status mapping from settings",e)}}updateConfig(a){this.updateConfiguration(a)}async refresh(){!this.isInitialized||!this.config.isEnabled()||(this.fileTaskCache.clear(),this.stats.trackedFileCount=0,this.stats.recognitionBreakdown={metadata:0,tag:0,template:0,path:0},await this.performInitialScan())}destroy(){if(this.isInitialized){for(let a of this.pendingUpdates.values())clearTimeout(a);this.pendingUpdates.clear();for(let a of this.eventRefs)this.app.vault.offref(a);this.eventRefs=[],this.fileTaskCache.clear(),this.stats={initialized:!1,trackedFileCount:0,recognitionBreakdown:{metadata:0,tag:0,template:0,path:0},lastUpdate:0,lastUpdateSeq:0},ke(this.app,se.FILE_TASK_REMOVED,{filePath:null,timestamp:Date.now(),seq:Ht.next(),destroyed:!0}),this.isInitialized=!1}}cleanup(){this.eventRefs.forEach(a=>{this.app.workspace&&typeof this.app.workspace.offref=="function"&&this.app.workspace.offref(a)}),this.eventRefs=[],this.pendingUpdates.forEach(a=>clearTimeout(a)),this.pendingUpdates.clear(),this.fileTaskCache.clear(),this.isInitialized=!1,this.stats.initialized=!1}};var VH=require("obsidian");var Tc=class{constructor(a,e){this.config=a,this.projectDetectionMethods=e}parseFileForTasks(a,e,t){let r=[],i=[];try{if(this.config.enableFileMetadataParsing&&(t!=null&&t.frontmatter)){let s=this.parseMetadataTasks(a,t.frontmatter,e,t);r.push(...s.tasks),i.push(...s.errors)}if(this.config.enableTagBasedTaskParsing&&(t!=null&&t.tags)){let s=this.parseTagTasks(a,t.tags,t.frontmatter,e,t);r.push(...s.tasks),i.push(...s.errors)}}catch(s){i.push(`Error parsing file ${a}: ${s.message}`)}return{tasks:r,errors:i}}parseMetadataTasks(a,e,t,r){let i=[],s=[];for(let o of this.config.metadataFieldsToParseAsTasks)if(e[o]!==void 0)try{let l=this.createTaskFromMetadata(a,o,e[o],e,t,r);l&&i.push(l)}catch(l){s.push(`Error creating task from metadata field ${o} in ${a}: ${l.message}`)}return{tasks:i,errors:s}}parseTagTasks(a,e,t,r,i){let s=[],o=[],l=e.map(c=>c.tag);for(let c of this.config.tagsToParseAsTasks){let u=c.startsWith("#")?c:`#${c}`;if(l.some(p=>p===u))try{let p=this.createTaskFromTag(a,u,t,r,i);p&&s.push(p)}catch(p){o.push(`Error creating task from tag ${u} in ${a}: ${p.message}`)}}return{tasks:s,errors:o}}createTaskFromMetadata(a,e,t,r,i,s){let o=this.getTaskContent(r,a),l=`${a}-metadata-${e}`,c=this.determineTaskStatus(e,t),u=c.toLowerCase()==="x",p=this.extractTaskMetadata(a,r,e,t,s);return{id:l,content:o,filePath:a,line:0,completed:u,status:c,originalMarkdown:`- [${c}] ${o}`,metadata:{...p,tags:this.extractTags(r),children:[],heading:[],source:"file-metadata",sourceField:e,sourceValue:t}}}createTaskFromTag(a,e,t,r,i){let s=this.getTaskContent(t,a),o=`${a}-tag-${e.replace("#","")}`,l=this.config.defaultTaskStatus,c=l.toLowerCase()==="x",u=this.extractTaskMetadata(a,t||{},"tag",e,i);return{id:o,content:s,filePath:a,line:0,completed:c,status:l,originalMarkdown:`- [${l}] ${s}`,metadata:{...u,tags:this.extractTags(t),children:[],heading:[],source:"file-tag",sourceTag:e}}}getTaskContent(a,e){return a&&a[this.config.taskContentFromMetadata]?String(a[this.config.taskContentFromMetadata]):(e.split("/").pop()||e).replace(/\.[^/.]+$/,"")}determineTaskStatus(a,e){if(a.toLowerCase().includes("complete")||a.toLowerCase().includes("done"))return e?"x":" ";if(a.toLowerCase().includes("todo")||a.toLowerCase().includes("task")){if(typeof e=="boolean")return e?"x":" ";if(typeof e=="string"&&e.length===1)return e}return a.toLowerCase().includes("due")?" ":this.config.defaultTaskStatus}extractTaskMetadata(a,e,t,r,i){let s={};e.dueDate&&(s.dueDate=this.parseDate(e.dueDate)),e.startDate&&(s.startDate=this.parseDate(e.startDate)),e.scheduledDate&&(s.scheduledDate=this.parseDate(e.scheduledDate)),e.priority&&(s.priority=this.parsePriority(e.priority));let o=this.detectProjectFromFile(a,e,i);return o?s.project=o:e.project&&(s.project=String(e.project)),e.context&&(s.context=String(e.context)),e.area&&(s.area=String(e.area)),t.toLowerCase().includes("due")&&r&&(s.dueDate=this.parseDate(r)),s}detectProjectFromFile(a,e,t){if(!(!this.projectDetectionMethods||this.projectDetectionMethods.length===0)){for(let r of this.projectDetectionMethods)if(r.enabled)switch(r.type){case"metadata":if(e[r.propertyKey])return String(e[r.propertyKey]);break;case"tag":if(t!=null&&t.tags){let i=r.propertyKey.startsWith("#")?r.propertyKey:`#${r.propertyKey}`;if(t.tags.some(o=>o.tag===i))return e.title?String(e.title):e.name?String(e.name):(a.split("/").pop()||a).replace(/\.md$/i,"")}break;case"link":if(t!=null&&t.links)for(let i of t.links){let s=i.link;if(r.linkFilter){if(s.includes(r.linkFilter))return e.title?String(e.title):e.name?String(e.name):(a.split("/").pop()||a).replace(/\.md$/i,"")}else if(r.propertyKey){if(e[r.propertyKey]&&String(e[r.propertyKey]).includes(`[[${s}]]`))return e.title?String(e.title):e.name?String(e.name):(a.split("/").pop()||a).replace(/\.md$/i,"")}else return e.title?String(e.title):e.name?String(e.name):(a.split("/").pop()||a).replace(/\.md$/i,"")}break}}}extractTags(a){if(!a)return[];let e=[];return a.tags&&(Array.isArray(a.tags)?e.push(...a.tags.map(t=>String(t))):e.push(String(a.tags))),a.tag&&(Array.isArray(a.tag)?e.push(...a.tag.map(t=>String(t))):e.push(String(a.tag))),e}parseDate(a){if(a){if(typeof a=="number")return a;if(typeof a=="string"){let e=Date.parse(a);return isNaN(e)?void 0:e}if(a instanceof Date)return a.getTime()}}parsePriority(a){if(typeof a=="number")return Math.max(1,Math.min(3,Math.round(a)));if(typeof a=="string"){let e=parseInt(a,10);if(!isNaN(e))return Math.max(1,Math.min(3,e));let t=a.toLowerCase();if(t.includes("high")||t.includes("urgent"))return 3;if(t.includes("medium")||t.includes("normal"))return 2;if(t.includes("low"))return 1}}};function hf(n){let a=new Blob([n],{type:"text/javascript"}),e=URL.createObjectURL(a),t=new Worker(e,{name:"Task Genius Indexer"});return URL.revokeObjectURL(e),t}function C0(){return hf('var Gt=Object.defineProperty,Bt=Object.defineProperties;var Kt=Object.getOwnPropertyDescriptors;var gt=Object.getOwnPropertySymbols;var Vt=Object.prototype.hasOwnProperty,Qt=Object.prototype.propertyIsEnumerable;var nt=(n,t,e)=>t in n?Gt(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,v=(n,t)=>{for(var e in t||(t={}))Vt.call(t,e)&&nt(n,e,t[e]);if(gt)for(var e of gt(t))Qt.call(t,e)&&nt(n,e,t[e]);return n},F=(n,t)=>Bt(n,Kt(t));var l=(n,t,e)=>nt(n,typeof t!="symbol"?t+"":t,e);var Jt={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ht=(n,t,e)=>{let r,a=Jt[n];return typeof a=="string"?r=a:t===1?r=a.one:r=a.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+r:r+" ago":r};function ue(n){return(t={})=>{let e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var Ut={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Zt={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},er={full:"{{date}} \'at\' {{time}}",long:"{{date}} \'at\' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},yt={date:ue({formats:Ut,defaultWidth:"full"}),time:ue({formats:Zt,defaultWidth:"full"}),dateTime:ue({formats:er,defaultWidth:"full"})};var tr={lastWeek:"\'last\' eeee \'at\' p",yesterday:"\'yesterday at\' p",today:"\'today at\' p",tomorrow:"\'tomorrow at\' p",nextWeek:"eeee \'at\' p",other:"P"},xt=(n,t,e,r)=>tr[n];function X(n){return(t,e)=>{let r=e!=null&&e.context?String(e.context):"standalone",a;if(r==="formatting"&&n.formattingValues){let i=n.defaultFormattingWidth||n.defaultWidth,o=e!=null&&e.width?String(e.width):i;a=n.formattingValues[o]||n.formattingValues[i]}else{let i=n.defaultWidth,o=e!=null&&e.width?String(e.width):n.defaultWidth;a=n.values[o]||n.values[i]}let s=n.argumentCallback?n.argumentCallback(t):t;return a[s]}}var rr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ar={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},nr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},sr={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},ir={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},or={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},cr=(n,t)=>{let e=Number(n),r=e%100;if(r>20||r<10)switch(r%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},wt={ordinalNumber:cr,era:X({values:rr,defaultWidth:"wide"}),quarter:X({values:ar,defaultWidth:"wide",argumentCallback:n=>n-1}),month:X({values:nr,defaultWidth:"wide"}),day:X({values:sr,defaultWidth:"wide"}),dayPeriod:X({values:ir,defaultWidth:"wide",formattingValues:or,defaultFormattingWidth:"wide"})};function q(n){return(t,e={})=>{let r=e.width,a=r&&n.matchPatterns[r]||n.matchPatterns[n.defaultMatchWidth],s=t.match(a);if(!s)return null;let i=s[0],o=r&&n.parsePatterns[r]||n.parsePatterns[n.defaultParseWidth],c=Array.isArray(o)?ur(o,d=>d.test(i)):dr(o,d=>d.test(i)),u;u=n.valueCallback?n.valueCallback(c):c,u=e.valueCallback?e.valueCallback(u):u;let m=t.slice(i.length);return{value:u,rest:m}}}function dr(n,t){for(let e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&t(n[e]))return e}function ur(n,t){for(let e=0;e{let r=t.match(n.matchPattern);if(!r)return null;let a=r[0],s=t.match(n.parsePattern);if(!s)return null;let i=n.valueCallback?n.valueCallback(s[0]):s[0];i=e.valueCallback?e.valueCallback(i):i;let o=t.slice(a.length);return{value:i,rest:o}}}var lr=/^(\\d+)(th|st|nd|rd)?/i,mr=/\\d+/i,fr={narrow:/^(b|a)/i,abbreviated:/^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},pr={any:[/^b/i,/^(a|c)/i]},gr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},hr={any:[/1/i,/2/i,/3/i,/4/i]},yr={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},xr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},wr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Tr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Dr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},br={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Dt={ordinalNumber:Tt({matchPattern:lr,parsePattern:mr,valueCallback:n=>parseInt(n,10)}),era:q({matchPatterns:fr,defaultMatchWidth:"wide",parsePatterns:pr,defaultParseWidth:"any"}),quarter:q({matchPatterns:gr,defaultMatchWidth:"wide",parsePatterns:hr,defaultParseWidth:"any",valueCallback:n=>n+1}),month:q({matchPatterns:yr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),day:q({matchPatterns:wr,defaultMatchWidth:"wide",parsePatterns:Tr,defaultParseWidth:"any"}),dayPeriod:q({matchPatterns:Dr,defaultMatchWidth:"any",parsePatterns:br,defaultParseWidth:"any"})};var V={code:"en-US",formatDistance:ht,formatLong:yt,formatRelative:xt,localize:wt,match:Dt,options:{weekStartsOn:0,firstWeekContainsDate:1}};var bt=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},kt=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},kr=(n,t)=>{let e=n.match(/(P+)(p+)?/)||[],r=e[1],a=e[2];if(!a)return bt(n,t);let s;switch(r){case"P":s=t.dateTime({width:"short"});break;case"PP":s=t.dateTime({width:"medium"});break;case"PPP":s=t.dateTime({width:"long"});break;case"PPPP":default:s=t.dateTime({width:"full"});break}return s.replace("{{date}}",bt(r,t)).replace("{{time}}",kt(a,t))},st={p:kt,P:kr};var Pr=/^D+$/,Mr=/^Y+$/,Cr=["D","DD","YY","YYYY"];function Pt(n){return Pr.test(n)}function Mt(n){return Mr.test(n)}function it(n,t,e){let r=vr(n,t,e);if(console.warn(r),Cr.includes(n))throw new RangeError(r)}function vr(n,t,e){let r=n[0]==="Y"?"years":"days of the month";return`Use \\`${n.toLowerCase()}\\` instead of \\`${n}\\` (in \\`${t}\\`) for formatting ${r} to the input \\`${e}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Er=Math.pow(10,8)*24*60*60*1e3,ja=-Er,le=6048e5;var Q=6e4,J=36e5,Ct=1e3;var Or=3600;var vt=Or*24,Wa=vt*7,Fr=vt*365.2425,Nr=Fr/12,_a=Nr*3,ot=Symbol.for("constructDateFrom");function k(n,t){return typeof n=="function"?n(t):n&&typeof n=="object"&&ot in n?n[ot](t):n instanceof Date?new n.constructor(t):new Date(t)}var Rr={};function A(){return Rr}function Et(){return Object.assign({},A())}function T(n,t){return k(t||n,n)}function Ot(n,t){let e=Ir(t)?new t(0):k(t,0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}function Ir(n){var t;return typeof n=="function"&&((t=n.prototype)==null?void 0:t.constructor)===n}var jr=10,me=class{constructor(){l(this,"subPriority",0)}validate(t,e){return!0}},fe=class extends me{constructor(t,e,r,a,s){super(),this.value=t,this.validateValue=e,this.setValue=r,this.priority=a,s&&(this.subPriority=s)}validate(t,e){return this.validateValue(t,this.value,e)}set(t,e,r){return this.setValue(t,e,this.value,r)}},pe=class extends me{constructor(e,r){super();l(this,"priority",jr);l(this,"subPriority",-1);this.context=e||(a=>k(r,a))}set(e,r){return r.timestampIsSet?e:k(e,Ot(e,this.context))}};var h=class{run(t,e,r,a){let s=this.parse(t,e,r,a);return s?{setter:new fe(s.value,this.validate,this.set,this.priority,this.subPriority),rest:s.rest}:null}validate(t,e,r){return!0}};var ge=class extends h{constructor(){super(...arguments);l(this,"priority",140);l(this,"incompatibleTokens",["R","u","t","T"])}parse(e,r,a){switch(r){case"G":case"GG":case"GGG":return a.era(e,{width:"abbreviated"})||a.era(e,{width:"narrow"});case"GGGGG":return a.era(e,{width:"narrow"});case"GGGG":default:return a.era(e,{width:"wide"})||a.era(e,{width:"abbreviated"})||a.era(e,{width:"narrow"})}}set(e,r,a){return r.era=a,e.setFullYear(a,0,1),e.setHours(0,0,0,0),e}};var b={month:/^(1[0-2]|0?\\d)/,date:/^(3[0-1]|[0-2]?\\d)/,dayOfYear:/^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,week:/^(5[0-3]|[0-4]?\\d)/,hour23h:/^(2[0-3]|[0-1]?\\d)/,hour24h:/^(2[0-4]|[0-1]?\\d)/,hour11h:/^(1[0-1]|0?\\d)/,hour12h:/^(1[0-2]|0?\\d)/,minute:/^[0-5]?\\d/,second:/^[0-5]?\\d/,singleDigit:/^\\d/,twoDigits:/^\\d{1,2}/,threeDigits:/^\\d{1,3}/,fourDigits:/^\\d{1,4}/,anyDigitsSigned:/^-?\\d+/,singleDigitSigned:/^-?\\d/,twoDigitsSigned:/^-?\\d{1,2}/,threeDigitsSigned:/^-?\\d{1,3}/,fourDigitsSigned:/^-?\\d{1,4}/},j={basicOptionalMinutes:/^([+-])(\\d{2})(\\d{2})?|Z/,basic:/^([+-])(\\d{2})(\\d{2})|Z/,basicOptionalSeconds:/^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,extended:/^([+-])(\\d{2}):(\\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/};function P(n,t){return n&&{value:t(n.value),rest:n.rest}}function D(n,t){let e=t.match(n);return e?{value:parseInt(e[0],10),rest:t.slice(e[0].length)}:null}function W(n,t){let e=t.match(n);if(!e)return null;if(e[0]==="Z")return{value:0,rest:t.slice(1)};let r=e[1]==="+"?1:-1,a=e[2]?parseInt(e[2],10):0,s=e[3]?parseInt(e[3],10):0,i=e[5]?parseInt(e[5],10):0;return{value:r*(a*J+s*Q+i*Ct),rest:t.slice(e[0].length)}}function he(n){return D(b.anyDigitsSigned,n)}function x(n,t){switch(n){case 1:return D(b.singleDigit,t);case 2:return D(b.twoDigits,t);case 3:return D(b.threeDigits,t);case 4:return D(b.fourDigits,t);default:return D(new RegExp("^\\\\d{1,"+n+"}"),t)}}function G(n,t){switch(n){case 1:return D(b.singleDigitSigned,t);case 2:return D(b.twoDigitsSigned,t);case 3:return D(b.threeDigitsSigned,t);case 4:return D(b.fourDigitsSigned,t);default:return D(new RegExp("^-?\\\\d{1,"+n+"}"),t)}}function B(n){switch(n){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function ye(n,t){let e=t>0,r=e?t:1-t,a;if(r<=50)a=n||100;else{let s=r+50,i=Math.trunc(s/100)*100,o=n>=s%100;a=n+i-(o?100:0)}return e?a:1-a}function xe(n){return n%400===0||n%4===0&&n%100!==0}var we=class extends h{constructor(){super(...arguments);l(this,"priority",130);l(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,r,a){let s=i=>({year:i,isTwoDigitYear:r==="yy"});switch(r){case"y":return P(x(4,e),s);case"yo":return P(a.ordinalNumber(e,{unit:"year"}),s);default:return P(x(r.length,e),s)}}validate(e,r){return r.isTwoDigitYear||r.year>0}set(e,r,a){let s=e.getFullYear();if(a.isTwoDigitYear){let o=ye(a.year,s);return e.setFullYear(o,0,1),e.setHours(0,0,0,0),e}let i=!("era"in r)||r.era===1?a.year:1-a.year;return e.setFullYear(i,0,1),e.setHours(0,0,0,0),e}};function N(n,t){var o,c,u,m,d,f,g,p;let e=A(),r=(p=(g=(m=(u=t==null?void 0:t.weekStartsOn)!=null?u:(c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.weekStartsOn)!=null?m:e.weekStartsOn)!=null?g:(f=(d=e.locale)==null?void 0:d.options)==null?void 0:f.weekStartsOn)!=null?p:0,a=T(n,t==null?void 0:t.in),s=a.getDay(),i=(s=+o?r+1:+e>=+u?r:r-1}var De=class extends h{constructor(){super(...arguments);l(this,"priority",130);l(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,r,a){let s=i=>({year:i,isTwoDigitYear:r==="YY"});switch(r){case"Y":return P(x(4,e),s);case"Yo":return P(a.ordinalNumber(e,{unit:"year"}),s);default:return P(x(r.length,e),s)}}validate(e,r){return r.isTwoDigitYear||r.year>0}set(e,r,a,s){let i=Te(e,s);if(a.isTwoDigitYear){let c=ye(a.year,i);return e.setFullYear(c,0,s.firstWeekContainsDate),e.setHours(0,0,0,0),N(e,s)}let o=!("era"in r)||r.era===1?a.year:1-a.year;return e.setFullYear(o,0,s.firstWeekContainsDate),e.setHours(0,0,0,0),N(e,s)}};function _(n,t){return N(n,F(v({},t),{weekStartsOn:1}))}var be=class extends h{constructor(){super(...arguments);l(this,"priority",130);l(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,r){return r==="R"?G(4,e):G(r.length,e)}set(e,r,a){let s=k(e,0);return s.setFullYear(a,0,4),s.setHours(0,0,0,0),_(s)}};var ke=class extends h{constructor(){super(...arguments);l(this,"priority",130);l(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,r){return r==="u"?G(4,e):G(r.length,e)}set(e,r,a){return e.setFullYear(a,0,1),e.setHours(0,0,0,0),e}};var Pe=class extends h{constructor(){super(...arguments);l(this,"priority",120);l(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,r,a){switch(r){case"Q":case"QQ":return x(r.length,e);case"Qo":return a.ordinalNumber(e,{unit:"quarter"});case"QQQ":return a.quarter(e,{width:"abbreviated",context:"formatting"})||a.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return a.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return a.quarter(e,{width:"wide",context:"formatting"})||a.quarter(e,{width:"abbreviated",context:"formatting"})||a.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,r){return r>=1&&r<=4}set(e,r,a){return e.setMonth((a-1)*3,1),e.setHours(0,0,0,0),e}};var Me=class extends h{constructor(){super(...arguments);l(this,"priority",120);l(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,r,a){switch(r){case"q":case"qq":return x(r.length,e);case"qo":return a.ordinalNumber(e,{unit:"quarter"});case"qqq":return a.quarter(e,{width:"abbreviated",context:"standalone"})||a.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return a.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return a.quarter(e,{width:"wide",context:"standalone"})||a.quarter(e,{width:"abbreviated",context:"standalone"})||a.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,r){return r>=1&&r<=4}set(e,r,a){return e.setMonth((a-1)*3,1),e.setHours(0,0,0,0),e}};var Ce=class extends h{constructor(){super(...arguments);l(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);l(this,"priority",110)}parse(e,r,a){let s=i=>i-1;switch(r){case"M":return P(D(b.month,e),s);case"MM":return P(x(2,e),s);case"Mo":return P(a.ordinalNumber(e,{unit:"month"}),s);case"MMM":return a.month(e,{width:"abbreviated",context:"formatting"})||a.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return a.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return a.month(e,{width:"wide",context:"formatting"})||a.month(e,{width:"abbreviated",context:"formatting"})||a.month(e,{width:"narrow",context:"formatting"})}}validate(e,r){return r>=0&&r<=11}set(e,r,a){return e.setMonth(a,1),e.setHours(0,0,0,0),e}};var ve=class extends h{constructor(){super(...arguments);l(this,"priority",110);l(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,r,a){let s=i=>i-1;switch(r){case"L":return P(D(b.month,e),s);case"LL":return P(x(2,e),s);case"Lo":return P(a.ordinalNumber(e,{unit:"month"}),s);case"LLL":return a.month(e,{width:"abbreviated",context:"standalone"})||a.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return a.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return a.month(e,{width:"wide",context:"standalone"})||a.month(e,{width:"abbreviated",context:"standalone"})||a.month(e,{width:"narrow",context:"standalone"})}}validate(e,r){return r>=0&&r<=11}set(e,r,a){return e.setMonth(a,1),e.setHours(0,0,0,0),e}};function Ft(n,t){var o,c,u,m,d,f,g,p;let e=A(),r=(p=(g=(m=(u=t==null?void 0:t.firstWeekContainsDate)!=null?u:(c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.firstWeekContainsDate)!=null?m:e.firstWeekContainsDate)!=null?g:(f=(d=e.locale)==null?void 0:d.options)==null?void 0:f.firstWeekContainsDate)!=null?p:1,a=Te(n,t),s=k((t==null?void 0:t.in)||n,0);return s.setFullYear(a,0,r),s.setHours(0,0,0,0),N(s,t)}function Nt(n,t){let e=T(n,t==null?void 0:t.in),r=+N(e,t)-+Ft(e,t);return Math.round(r/le)+1}function Rt(n,t,e){let r=T(n,e==null?void 0:e.in),a=Nt(r,e)-t;return r.setDate(r.getDate()-a*7),T(r,e==null?void 0:e.in)}var Ee=class extends h{constructor(){super(...arguments);l(this,"priority",100);l(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,r,a){switch(r){case"w":return D(b.week,e);case"wo":return a.ordinalNumber(e,{unit:"week"});default:return x(r.length,e)}}validate(e,r){return r>=1&&r<=53}set(e,r,a,s){return N(Rt(e,a,s),s)}};function It(n,t){let e=T(n,t==null?void 0:t.in),r=e.getFullYear(),a=k(e,0);a.setFullYear(r+1,0,4),a.setHours(0,0,0,0);let s=_(a),i=k(e,0);i.setFullYear(r,0,4),i.setHours(0,0,0,0);let o=_(i);return e.getTime()>=s.getTime()?r+1:e.getTime()>=o.getTime()?r:r-1}function jt(n,t){let e=It(n,t),r=k((t==null?void 0:t.in)||n,0);return r.setFullYear(e,0,4),r.setHours(0,0,0,0),_(r)}function Wt(n,t){let e=T(n,t==null?void 0:t.in),r=+_(e)-+jt(e);return Math.round(r/le)+1}function _t(n,t,e){let r=T(n,e==null?void 0:e.in),a=Wt(r,e)-t;return r.setDate(r.getDate()-a*7),r}var Oe=class extends h{constructor(){super(...arguments);l(this,"priority",100);l(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,r,a){switch(r){case"I":return D(b.week,e);case"Io":return a.ordinalNumber(e,{unit:"week"});default:return x(r.length,e)}}validate(e,r){return r>=1&&r<=53}set(e,r,a){return _(_t(e,a))}};var Wr=[31,28,31,30,31,30,31,31,30,31,30,31],_r=[31,29,31,30,31,30,31,31,30,31,30,31],Fe=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"subPriority",1);l(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,r,a){switch(r){case"d":return D(b.date,e);case"do":return a.ordinalNumber(e,{unit:"date"});default:return x(r.length,e)}}validate(e,r){let a=e.getFullYear(),s=xe(a),i=e.getMonth();return s?r>=1&&r<=_r[i]:r>=1&&r<=Wr[i]}set(e,r,a){return e.setDate(a),e.setHours(0,0,0,0),e}};var Ne=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"subpriority",1);l(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,r,a){switch(r){case"D":case"DD":return D(b.dayOfYear,e);case"Do":return a.ordinalNumber(e,{unit:"date"});default:return x(r.length,e)}}validate(e,r){let a=e.getFullYear();return xe(a)?r>=1&&r<=366:r>=1&&r<=365}set(e,r,a){return e.setMonth(0,a),e.setHours(0,0,0,0),e}};function Re(n,t,e){let r=T(n,e==null?void 0:e.in);return isNaN(t)?k((e==null?void 0:e.in)||n,NaN):(t&&r.setDate(r.getDate()+t),r)}function K(n,t,e){var d,f,g,p,y,M,E,O;let r=A(),a=(O=(E=(p=(g=e==null?void 0:e.weekStartsOn)!=null?g:(f=(d=e==null?void 0:e.locale)==null?void 0:d.options)==null?void 0:f.weekStartsOn)!=null?p:r.weekStartsOn)!=null?E:(M=(y=r.locale)==null?void 0:y.options)==null?void 0:M.weekStartsOn)!=null?O:0,s=T(n,e==null?void 0:e.in),i=s.getDay(),c=(t%7+7)%7,u=7-a,m=t<0||t>6?t-(i+u)%7:(c+u)%7-(i+u)%7;return Re(s,m,e)}var Ie=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,r,a){switch(r){case"E":case"EE":case"EEE":return a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return a.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"})}}validate(e,r){return r>=0&&r<=6}set(e,r,a,s){return e=K(e,a,s),e.setHours(0,0,0,0),e}};var je=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,r,a,s){let i=o=>{let c=Math.floor((o-1)/7)*7;return(o+s.weekStartsOn+6)%7+c};switch(r){case"e":case"ee":return P(x(r.length,e),i);case"eo":return P(a.ordinalNumber(e,{unit:"day"}),i);case"eee":return a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"eeeee":return a.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"})}}validate(e,r){return r>=0&&r<=6}set(e,r,a,s){return e=K(e,a,s),e.setHours(0,0,0,0),e}};var We=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,r,a,s){let i=o=>{let c=Math.floor((o-1)/7)*7;return(o+s.weekStartsOn+6)%7+c};switch(r){case"c":case"cc":return P(x(r.length,e),i);case"co":return P(a.ordinalNumber(e,{unit:"day"}),i);case"ccc":return a.day(e,{width:"abbreviated",context:"standalone"})||a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"});case"ccccc":return a.day(e,{width:"narrow",context:"standalone"});case"cccccc":return a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return a.day(e,{width:"wide",context:"standalone"})||a.day(e,{width:"abbreviated",context:"standalone"})||a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"})}}validate(e,r){return r>=0&&r<=6}set(e,r,a,s){return e=K(e,a,s),e.setHours(0,0,0,0),e}};function St(n,t){let e=T(n,t==null?void 0:t.in).getDay();return e===0?7:e}function At(n,t,e){let r=T(n,e==null?void 0:e.in),a=St(r,e),s=t-a;return Re(r,s,e)}var _e=class extends h{constructor(){super(...arguments);l(this,"priority",90);l(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,r,a){let s=i=>i===0?7:i;switch(r){case"i":case"ii":return x(r.length,e);case"io":return a.ordinalNumber(e,{unit:"day"});case"iii":return P(a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),s);case"iiiii":return P(a.day(e,{width:"narrow",context:"formatting"}),s);case"iiiiii":return P(a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),s);case"iiii":default:return P(a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),s)}}validate(e,r){return r>=1&&r<=7}set(e,r,a){return e=At(e,a),e.setHours(0,0,0,0),e}};var Se=class extends h{constructor(){super(...arguments);l(this,"priority",80);l(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,r,a){switch(r){case"a":case"aa":case"aaa":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,r,a){return e.setHours(B(a),0,0,0),e}};var Ae=class extends h{constructor(){super(...arguments);l(this,"priority",80);l(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,r,a){switch(r){case"b":case"bb":case"bbb":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,r,a){return e.setHours(B(a),0,0,0),e}};var Le=class extends h{constructor(){super(...arguments);l(this,"priority",80);l(this,"incompatibleTokens",["a","b","t","T"])}parse(e,r,a){switch(r){case"B":case"BB":case"BBB":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,r,a){return e.setHours(B(a),0,0,0),e}};var Ye=class extends h{constructor(){super(...arguments);l(this,"priority",70);l(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,r,a){switch(r){case"h":return D(b.hour12h,e);case"ho":return a.ordinalNumber(e,{unit:"hour"});default:return x(r.length,e)}}validate(e,r){return r>=1&&r<=12}set(e,r,a){let s=e.getHours()>=12;return s&&a<12?e.setHours(a+12,0,0,0):!s&&a===12?e.setHours(0,0,0,0):e.setHours(a,0,0,0),e}};var He=class extends h{constructor(){super(...arguments);l(this,"priority",70);l(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,r,a){switch(r){case"H":return D(b.hour23h,e);case"Ho":return a.ordinalNumber(e,{unit:"hour"});default:return x(r.length,e)}}validate(e,r){return r>=0&&r<=23}set(e,r,a){return e.setHours(a,0,0,0),e}};var $e=class extends h{constructor(){super(...arguments);l(this,"priority",70);l(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,r,a){switch(r){case"K":return D(b.hour11h,e);case"Ko":return a.ordinalNumber(e,{unit:"hour"});default:return x(r.length,e)}}validate(e,r){return r>=0&&r<=11}set(e,r,a){return e.getHours()>=12&&a<12?e.setHours(a+12,0,0,0):e.setHours(a,0,0,0),e}};var ze=class extends h{constructor(){super(...arguments);l(this,"priority",70);l(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,r,a){switch(r){case"k":return D(b.hour24h,e);case"ko":return a.ordinalNumber(e,{unit:"hour"});default:return x(r.length,e)}}validate(e,r){return r>=1&&r<=24}set(e,r,a){let s=a<=24?a%24:a;return e.setHours(s,0,0,0),e}};var Xe=class extends h{constructor(){super(...arguments);l(this,"priority",60);l(this,"incompatibleTokens",["t","T"])}parse(e,r,a){switch(r){case"m":return D(b.minute,e);case"mo":return a.ordinalNumber(e,{unit:"minute"});default:return x(r.length,e)}}validate(e,r){return r>=0&&r<=59}set(e,r,a){return e.setMinutes(a,0,0),e}};var qe=class extends h{constructor(){super(...arguments);l(this,"priority",50);l(this,"incompatibleTokens",["t","T"])}parse(e,r,a){switch(r){case"s":return D(b.second,e);case"so":return a.ordinalNumber(e,{unit:"second"});default:return x(r.length,e)}}validate(e,r){return r>=0&&r<=59}set(e,r,a){return e.setSeconds(a,0),e}};var Ge=class extends h{constructor(){super(...arguments);l(this,"priority",30);l(this,"incompatibleTokens",["t","T"])}parse(e,r){let a=s=>Math.trunc(s*Math.pow(10,-r.length+3));return P(x(r.length,e),a)}set(e,r,a){return e.setMilliseconds(a),e}};function Be(n){let t=T(n),e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),+n-+e}var Ke=class extends h{constructor(){super(...arguments);l(this,"priority",10);l(this,"incompatibleTokens",["t","T","x"])}parse(e,r){switch(r){case"X":return W(j.basicOptionalMinutes,e);case"XX":return W(j.basic,e);case"XXXX":return W(j.basicOptionalSeconds,e);case"XXXXX":return W(j.extendedOptionalSeconds,e);case"XXX":default:return W(j.extended,e)}}set(e,r,a){return r.timestampIsSet?e:k(e,e.getTime()-Be(e)-a)}};var Ve=class extends h{constructor(){super(...arguments);l(this,"priority",10);l(this,"incompatibleTokens",["t","T","X"])}parse(e,r){switch(r){case"x":return W(j.basicOptionalMinutes,e);case"xx":return W(j.basic,e);case"xxxx":return W(j.basicOptionalSeconds,e);case"xxxxx":return W(j.extendedOptionalSeconds,e);case"xxx":default:return W(j.extended,e)}}set(e,r,a){return r.timestampIsSet?e:k(e,e.getTime()-Be(e)-a)}};var Qe=class extends h{constructor(){super(...arguments);l(this,"priority",40);l(this,"incompatibleTokens","*")}parse(e){return he(e)}set(e,r,a){return[k(e,a*1e3),{timestampIsSet:!0}]}};var Je=class extends h{constructor(){super(...arguments);l(this,"priority",20);l(this,"incompatibleTokens","*")}parse(e){return he(e)}set(e,r,a){return[k(e,a),{timestampIsSet:!0}]}};var Lt={G:new ge,y:new we,Y:new De,R:new be,u:new ke,Q:new Pe,q:new Me,M:new Ce,L:new ve,w:new Ee,I:new Oe,d:new Fe,D:new Ne,E:new Ie,e:new je,c:new We,i:new _e,a:new Se,b:new Ae,B:new Le,h:new Ye,H:new He,K:new $e,k:new ze,m:new Xe,s:new qe,S:new Ge,X:new Ke,x:new Ve,t:new Qe,T:new Je};var Sr=/[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,Ar=/P+p+|P+|p+|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,Lr=/^\'([^]*?)\'?$/,Yr=/\'\'/g,Hr=/\\S/,$r=/[a-zA-Z]/;function Ue(n,t,e,r){var M,E,O,H,ee,te,re,ae,$,ne,L,I,z,se,ie,oe,ce,de;let a=()=>k((r==null?void 0:r.in)||e,NaN),s=Et(),i=(E=(M=r==null?void 0:r.locale)!=null?M:s.locale)!=null?E:V,o=(ne=($=(te=(ee=r==null?void 0:r.firstWeekContainsDate)!=null?ee:(H=(O=r==null?void 0:r.locale)==null?void 0:O.options)==null?void 0:H.firstWeekContainsDate)!=null?te:s.firstWeekContainsDate)!=null?$:(ae=(re=s.locale)==null?void 0:re.options)==null?void 0:ae.firstWeekContainsDate)!=null?ne:1,c=(de=(ce=(se=(z=r==null?void 0:r.weekStartsOn)!=null?z:(I=(L=r==null?void 0:r.locale)==null?void 0:L.options)==null?void 0:I.weekStartsOn)!=null?se:s.weekStartsOn)!=null?ce:(oe=(ie=s.locale)==null?void 0:ie.options)==null?void 0:oe.weekStartsOn)!=null?de:0;if(!t)return n?a():T(e,r==null?void 0:r.in);let u={firstWeekContainsDate:o,weekStartsOn:c,locale:i},m=[new pe(r==null?void 0:r.in,e)],d=t.match(Ar).map(w=>{let C=w[0];if(C in st){let S=st[C];return S(w,i.formatLong)}return w}).join("").match(Sr),f=[];for(let w of d){!(r!=null&&r.useAdditionalWeekYearTokens)&&Mt(w)&&it(w,t,n),!(r!=null&&r.useAdditionalDayOfYearTokens)&&Pt(w)&&it(w,t,n);let C=w[0],S=Lt[C];if(S){let{incompatibleTokens:mt}=S;if(Array.isArray(mt)){let ft=f.find(pt=>mt.includes(pt.token)||pt.token===C);if(ft)throw new RangeError(`The format string mustn\'t contain \\`${ft.fullToken}\\` and \\`${w}\\` at the same time`)}else if(S.incompatibleTokens==="*"&&f.length>0)throw new RangeError(`The format string mustn\'t contain \\`${w}\\` and any other token at the same time`);f.push({token:C,fullToken:w});let at=S.run(n,w,i.match,u);if(!at)return a();m.push(at.setter),n=at.rest}else{if(C.match($r))throw new RangeError("Format string contains an unescaped latin alphabet character `"+C+"`");if(w==="\'\'"?w="\'":C==="\'"&&(w=zr(w)),n.indexOf(w)===0)n=n.slice(w.length);else return a()}}if(n.length>0&&Hr.test(n))return a();let g=m.map(w=>w.priority).sort((w,C)=>C-w).filter((w,C,S)=>S.indexOf(w)===C).map(w=>m.filter(C=>C.priority===w).sort((C,S)=>S.subPriority-C.subPriority)).map(w=>w[0]),p=T(e,r==null?void 0:r.in);if(isNaN(+p))return a();let y={};for(let w of g){if(!w.validate(p,u))return a();let C=w.set(p,y,u);Array.isArray(C)?(p=C[0],Object.assign(y,C[1])):p=C}return p}function zr(n){return n.match(Lr)[1].replace(Yr,"\'")}function ct(n,t){let e=T(n,t==null?void 0:t.in);return e.setHours(0,0,0,0),e}function Yt(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function dt(n){return!(!Yt(n)&&typeof n!="number"||isNaN(+T(n)))}function Ht(n,t){var u;let e=()=>k(t==null?void 0:t.in,NaN),r=(u=t==null?void 0:t.additionalDigits)!=null?u:2,a=Br(n),s;if(a.date){let m=Kr(a.date,r);s=Vr(m.restDateString,m.year)}if(!s||isNaN(+s))return e();let i=+s,o=0,c;if(a.time&&(o=Qr(a.time),isNaN(o)))return e();if(a.timezone){if(c=Jr(a.timezone),isNaN(c))return e()}else{let m=new Date(i+o),d=T(0,t==null?void 0:t.in);return d.setFullYear(m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()),d.setHours(m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),d}return T(i+o+c,t==null?void 0:t.in)}var Ze={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},Xr=/^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/,qr=/^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/,Gr=/^([+-])(\\d{2})(?::?(\\d{2}))?$/;function Br(n){let t={},e=n.split(Ze.dateTimeDelimiter),r;if(e.length>2)return t;if(/:/.test(e[0])?r=e[0]:(t.date=e[0],r=e[1],Ze.timeZoneDelimiter.test(t.date)&&(t.date=n.split(Ze.timeZoneDelimiter)[0],r=n.substr(t.date.length,n.length))),r){let a=Ze.timezone.exec(r);a?(t.time=r.replace(a[1],""),t.timezone=a[1]):t.time=r}return t}function Kr(n,t){let e=new RegExp("^(?:(\\\\d{4}|[+-]\\\\d{"+(4+t)+"})|(\\\\d{2}|[+-]\\\\d{"+(2+t)+"})$)"),r=n.match(e);if(!r)return{year:NaN,restDateString:""};let a=r[1]?parseInt(r[1]):null,s=r[2]?parseInt(r[2]):null;return{year:s===null?a:s*100,restDateString:n.slice((r[1]||r[2]).length)}}function Vr(n,t){if(t===null)return new Date(NaN);let e=n.match(Xr);if(!e)return new Date(NaN);let r=!!e[4],a=U(e[1]),s=U(e[2])-1,i=U(e[3]),o=U(e[4]),c=U(e[5])-1;if(r)return ra(t,o,c)?Ur(t,o,c):new Date(NaN);{let u=new Date(0);return!ea(t,s,i)||!ta(t,a)?new Date(NaN):(u.setUTCFullYear(t,s,Math.max(a,i)),u)}}function U(n){return n?parseInt(n):1}function Qr(n){let t=n.match(qr);if(!t)return NaN;let e=ut(t[1]),r=ut(t[2]),a=ut(t[3]);return aa(e,r,a)?e*J+r*Q+a*1e3:NaN}function ut(n){return n&&parseFloat(n.replace(",","."))||0}function Jr(n){if(n==="Z")return 0;let t=n.match(Gr);if(!t)return 0;let e=t[1]==="+"?-1:1,r=parseInt(t[2]),a=t[3]&&parseInt(t[3])||0;return na(r,a)?e*(r*J+a*Q):NaN}function Ur(n,t,e){let r=new Date(0);r.setUTCFullYear(n,0,4);let a=r.getUTCDay()||7,s=(t-1)*7+e+1-a;return r.setUTCDate(r.getUTCDate()+s),r}var Zr=[31,null,31,30,31,30,31,31,30,31,30,31];function $t(n){return n%400===0||n%4===0&&n%100!==0}function ea(n,t,e){return t>=0&&t<=11&&e>=1&&e<=(Zr[t]||($t(n)?29:28))}function ta(n,t){return t>=1&&t<=($t(n)?366:365)}function ra(n,t,e){return t>=1&&t<=53&&e>=0&&e<=6}function aa(n,t,e){return n===24?t===0&&e===0:e>=0&&e<60&&t>=0&&t<60&&n>=0&&n<25}function na(n,t){return t>=0&&t<=59}function zt(n,t){if(!n||(n=n.trim(),n.includes("{{")||n.includes("}}")))return;let e=["yyyy-MM-dd","yyyy/MM/dd","dd-MM-yyyy","dd/MM/yyyy","MM-dd-yyyy","MM/dd/yyyy","yyyy.MM.dd","dd.MM.yyyy","yyyy\\u5E74M\\u6708d\\u65E5","MMM d, yyyy","MMM dd, yyyy","d MMM yyyy","dd MMM yyyy","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],r=t?[...t,...e]:e;for(let a of r)try{let s=Ue(n,a,new Date,{locale:V});if(dt(s))return ct(s).getTime()}catch(s){continue}try{let a=Ht(n);if(dt(a))return ct(a).getTime()}catch(a){}console.warn(`Worker: Could not parse date: ${n}`)}var lt=/^(([\\s>]*)?(-|\\d+\\.|\\*|\\+)\\s\\[([^\\[\\]]{1})\\])\\s+(.*)$/m;var et=class{constructor(t){this.protectedRanges=[];this.content=t,this.protectedRanges=[]}detectAllProtectedRanges(){return this.protectedRanges=[],this.detectObsidianLinks(),this.detectMarkdownLinks(),this.detectInlineCode(),this.detectDirectUrls(),this.detectColorCodes(),this.mergeAndSortRanges()}isPositionProtected(t){return this.protectedRanges.some(e=>t>=e.start&&t"{}|\\\\^`\\[\\]]+/g,e;for(;(e=t.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"url",content:e[0]})}detectColorCodes(){let t=/#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})(?![0-9A-Fa-f])/g,e;for(;(e=t.exec(this.content))!==null;)this.isLikelyColorCode(e.index,e[0])&&this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"color-code",content:e[0]})}detectInlineCode(){let t=/(`+)([^`]|[^`].*?[^`])\\1(?!`)/g,e;for(;(e=t.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"inline-code",content:e[0]})}isLikelyColorCode(t,e){let r=t>0?this.content[t-1]:" ",a=t+e.length,s=ar.start-a.start);let t=[],e=this.protectedRanges[0];for(let r=1;ra.start?e={start:e.start,end:Math.max(e.end,a.end),type:e.type,content:this.content.substring(e.start,Math.max(e.end,a.end))}:(t.push(e),e=a)}return t.push(e),this.protectedRanges=t,t}getDebugInfo(){return this.detectAllProtectedRanges().map(e=>`${e.type}: [${e.start}-${e.end}] "${e.content}"`).join(`\n`)}};var R=class R{constructor(t,e){this.tasks=[];this.indentStack=[];this.config=t,this.customDateFormats=t.customDateFormats,this.timeParsingService=e}extractMetadataAndTags(t){return this.extractMetadataAndTagsInternal(t)}static createWithStatusMapping(t,e,r){let a=F(v({},t),{statusMapping:e});return new R(a,r)}parse(t,e="",r,a,s){this.reset(),this.fileMetadata=r,a&&(this.projectConfigCache=a);let i=t.split(/\\r?\\n/),o=0,c=0,u=!1;for(;othis.config.maxParseIterations){console.warn("Warning: Maximum parse iterations reached, stopping to prevent infinite loop");break}let m=i[o];if(m.trim().startsWith("```")||m.trim().startsWith("~~~")){u=!u,o++;continue}if(u){o++;continue}if(this.config.parseHeadings){let f=this.extractHeading(m);if(f){let[g,p]=f;this.currentHeading=p,this.currentHeadingLevel=g,o++;continue}}let d=this.extractTaskLine(m);if(d){let[f,,g,p]=d,y=`${e}-L${o}`,[M,E]=this.findParentAndLevel(f),[O,H]=this.parseTaskContent(g),ee=H.toLowerCase()==="x",te=this.getStatusFromMapping(H),[re,ae,$]=this.extractMetadataAndTagsInternal(O),ne=M!==void 0,L=this.inheritFileMetadata(ae,ne),I=this.extractTimeComponents(O,L),z=$;if(L.tags)try{let w=JSON.parse(L.tags);Array.isArray(w)&&(z=this.mergeTags($,w))}catch(w){z=this.mergeTags($,[L.tags])}let se=s||this.determineTgProject(e),[ie,oe]=this.config.parseComments&&o+10){let w=this.tasks.find(C=>C.id===M);w&&(w.childrenIds.push(y),w.children.push(y))}this.updateIndentStack(y,E,f),this.tasks.push(de)}o++}return[...this.tasks]}parseLegacy(t,e="",r,a,s){return this.parse(t,e,r,a,s).map(o=>this.convertToLegacyTask(o))}parseTask(t,e="",r=0){let a=this.parse(t,e);return this.convertToLegacyTask(F(v({},a[0]),{line:r,id:`${e}-L${r}`}))}reset(){this.tasks=[],this.indentStack=[],this.currentHeading=void 0,this.currentHeadingLevel=void 0}extractTaskLine(t){let e=t.trim(),r=t.length-e.length;if(this.isTaskLine(e)){let a=this.extractListMarker(e);return[r,r,e,a]}return null}extractListMarker(t){for(let a of["-","*","+"])if(t.startsWith(a))return a;let e=t.split(""),r=0;for(;r0&&r0&&console.warn(`[MarkdownTaskParser] Time parsing warnings for "${t}":`,s),a.length>0&&console.warn(`[MarkdownTaskParser] Time parsing errors for "${t}":`,a);let i=F(v({},e),{tags:this.safeParseTagsField(e.tags),children:[]});return Object.keys(r).length>0&&(i.timeComponents=r,i.enhancedDates=this.combineTimestampsWithTimeComponents({startDate:e.startDate,dueDate:e.dueDate,scheduledDate:e.scheduledDate,completedDate:e.completedDate},r)),i}catch(r){return console.error(`[MarkdownTaskParser] Failed to extract time components from "${t}":`,r),F(v({},e),{tags:this.safeParseTagsField(e.tags),children:[]})}}combineTimestampsWithTimeComponents(t,e){if(!e)return;let r={},a=(s,i)=>{if(!s||!i)return;let o;if(typeof s=="string")if(/^\\d{4}-\\d{2}-\\d{2}$/.test(s)){let[u,m,d]=s.split("-").map(Number);o=new Date(u,m-1,d)}else o=new Date(s);else o=new Date(s);return isNaN(o.getTime())?void 0:new Date(o.getFullYear(),o.getMonth(),o.getDate(),i.hour,i.minute,i.second||0)};return t.startDate&&e.startTime&&(r.startDateTime=a(t.startDate,e.startTime)),t.dueDate&&e.dueTime&&(r.dueDateTime=a(t.dueDate,e.dueTime)),t.scheduledDate&&e.scheduledTime&&(r.scheduledDateTime=a(t.scheduledDate,e.scheduledTime)),t.startDate&&e.endTime&&(r.endDateTime=a(t.startDate,e.endTime)),t.dueDate&&!e.dueTime&&e.scheduledTime&&(r.dueDateTime=a(t.dueDate,e.scheduledTime)),t.scheduledDate&&!e.scheduledTime&&e.dueTime&&(r.scheduledDateTime=a(t.scheduledDate,e.dueTime)),Object.keys(r).length>0?r:void 0}extractDataviewMetadata(t){let e=t.indexOf("[");if(e===-1)return null;let r=t.indexOf("]",e);if(r===-1)return null;let a=t.substring(e+1,r);if(!a.includes("::"))return null;let s=a.split("::",2);if(s.length!==2)return null;let i=s[0].trim(),o=s[1].trim(),u={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion"}[i.toLowerCase()];if(u)i=u;else{let m=i.toLowerCase();for(let[d,f]of Object.entries(this.config.specialTagPrefixes||{}))if(d.toLowerCase()===m){i=f;break}}if(i&&o){Object.keys(this.config.specialTagPrefixes||{}).some(g=>g.toLowerCase()===s[0].trim().toLowerCase())&&console.debug("[TPB] Dataview metadata with configured prefix",{originalKey:s[0].trim(),mappedKey:i,value:o,specialTagPrefixes:Object.keys(this.config.specialTagPrefixes||{})});let d=t.substring(0,e),f=t.substring(r+1);return[i,o,d+f]}return null}extractEmojiMetadata(t){let e=null;for(let[g,p]of Object.entries(this.config.emojiMapping)){let y=t.indexOf(g);y!==-1&&(!e||yo.substring(g).startsWith(M))||p==="["){c=g;break}let y=this.findFileExtensionEnd(o,g);if(y>g){c=y;break}if(/\\s/.test(p)&&g+1g.trim()).filter(g=>g.length>0).join(","):e.key==="priority"?m=u||e.emoji:m=u||this.getDefaultEmojiValue(e.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(e.key)&&typeof m=="string"){let g=m.match(/\\d{4}-\\d{2}-\\d{2}/);g&&(m=g[0])}let d=e.pos+e.emoji.length+i+c,f=t.substring(d);return[e.key,m,r,f]}findFileExtensionEnd(t,e){let r=[".md",".canvas",".txt",".pdf"];for(let a of r)if(t.substring(e).startsWith(a)){let s=e+a.length;if(s=t.length||t[s]===" ")return s}return e}getDefaultEmojiValue(t){return{"\\u{1F53A}":"highest","\\u23EB":"high","\\u{1F53C}":"medium","\\u{1F53D}":"low","\\u23EC\\uFE0F":"lowest","\\u23EC":"lowest"}[t]||"true"}extractTag(t){let e=new et(t);e.detectAllProtectedRanges();let r=e.findNextUnprotectedHash(0);if(r===-1)return null;if(!this.isValidTagStart(t,r)){let o=e.findNextUnprotectedHash(r+1);if(o===-1)return null;let c=t.substring(o),u=this.extractTag(c);if(u){let[m,d,f]=u;return[m,t.substring(0,o)+d,f]}return null}let s=t.substring(r+1),i=0;for(let o=0;o=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||c==="/"||c==="-"||c==="_"||u>127&&c!=="\\uFF0C"&&c!=="\\u3002"&&c!=="\\uFF1B"&&c!=="\\uFF1A"&&c!=="\\uFF01"&&c!=="\\uFF1F"&&c!=="\\u300C"&&c!=="\\u300D"&&c!=="\\u300E"&&c!=="\\u300F"&&c!=="\\uFF08"&&c!=="\\uFF09"&&c!=="\\u3010"&&c!=="\\u3011"&&c!==\'"\'&&c!==\'"\'&&c!=="\'"&&c!=="\'"&&c!==" ")i=o+1;else break}if(i>0){let o="#"+s.substring(0,i),c=t.substring(0,r),u=t.substring(r+1+i);return[o,c,u]}return null}isValidTagStart(t,e){if(e===0)return!0;let r=t[e-1],a=/[\\s\\(\\[\\{<,;:!?\\-\\+\\*\\/\\\\\\|=]/,s=/[a-zA-Z0-9#@$%^&*]/;return a.test(r)?!0:s.test(r)?!1:!r.match(/[a-zA-Z0-9#@$%^&*]/)}extractContext(t){let e=t.indexOf("@");if(e===-1||!(e===0||t[e-1].match(/\\s/)||!t[e-1].match(/[a-zA-Z0-9#@$%^&*]/)))return null;let a=t.substring(e+1),s=0;for(let i=0;i=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||o==="-"||o==="_"||c>127&&o!=="\\uFF0C"&&o!=="\\u3002"&&o!=="\\uFF1B"&&o!=="\\uFF1A"&&o!=="\\uFF01"&&o!=="\\uFF1F"&&o!=="\\u300C"&&o!=="\\u300D"&&o!=="\\u300E"&&o!=="\\u300F"&&o!=="\\uFF08"&&o!=="\\uFF09"&&o!=="\\u3010"&&o!=="\\u3011"&&o!==\'"\'&&o!==\'"\'&&o!=="\'"&&o!=="\'"&&o!==" ")s=i+1;else break}if(s>0){let i=a.substring(0,s),o=t.substring(0,e),c=t.substring(e+1+s);return[i,o,c]}return null}extractTagsOnly(t){var i;let e={},r=[],a="",s=t;for(;;){let o=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode==="dataview-only"||this.config.metadataParseMode==="both")){let c=this.extractDataviewMetadata(s);if(c){let[u,m,d]=c;e[u]=m,s=d,o=!0;continue}}if(!o&&this.config.parseTags){let c=this.extractContext(s);if(c){let[u,m,d]=c,[f,g,p]=this.extractTagsOnly(m);for(let y of p)r.push(y);for(let[y,M]of Object.entries(g))e[y]=M;e.context=u,a+=f,s=d,o=!0;continue}}if(!o&&this.config.parseTags){let c=this.extractTag(s);if(c){let[u,m,d]=c,f=u.startsWith("#")?u.substring(1):u,g=f.indexOf("/");if(g!==-1){let p=f.substring(0,g),y=f.substring(g+1),M=(i=this.config.specialTagPrefixes[p])!=null?i:this.config.specialTagPrefixes[p.toLowerCase()];M&&this.config.metadataParseMode!=="none"?e[M]=y:r.push(u)}else r.push(u);a+=m,s=d,o=!0;continue}}if(!o){a+=s;break}}return[a.trim(),e,r]}findParentAndLevel(t){if(this.indentStack.length===0||t===0)return[void 0,0];for(let e=this.indentStack.length-1;e>=0;e--){let{taskId:r,indentLevel:a,actualSpaces:s}=this.indentStack[e];if(s0;){if(a++,a>this.config.maxStackOperations){console.warn("Warning: Maximum stack operations reached, clearing stack"),this.indentStack=[];break}if(this.indentStack[this.indentStack.length-1].actualSpaces>=r)this.indentStack.pop();else break}this.indentStack.length>=this.config.maxStackSize&&this.indentStack.splice(0,this.indentStack.length-this.config.maxStackSize+1),this.indentStack.push({taskId:t,indentLevel:e,actualSpaces:r})}getStatusFromMapping(t){for(let[e,r]of Object.entries(this.config.statusMapping))if(r===t)return e}extractHeading(t){let e=t.trim();if(!e.startsWith("#"))return null;let r=0;for(let a of e)if(a==="#")r++;else{if(a.match(/\\s/))break;return null}if(r>0&&r<=6){let a=e.substring(r).trim();if(a)return[r,a]}return null}extractMultilineComment(t,e,r){let a=[],s=e,i=0;for(;sr&&!this.isTaskLine(c))a.push(c),i++;else break;s++}return a.length===0?[void 0,0]:[a.join(`\n`),i]}extractLegacyPriority(t){if(!t.priority)return;let e={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1,"\\u{1F53A}":5,"\\u23EB":4,"\\u{1F53C}":3,"\\u{1F53D}":2,"\\u23EC\\uFE0F":1,"\\u23EC":1},r=parseInt(t.priority,10);return isNaN(r)?e[t.priority.toLowerCase()]||e[t.priority]:r}extractLegacyDate(t,e){let r=t[e];if(!r)return;let a=`${r}_${(this.customDateFormats||[]).join(",")}`,s=R.dateCache.get(a);if(s!==void 0)return s;let i=zt(r,this.customDateFormats);if(R.dateCache.size>=R.MAX_CACHE_SIZE){let o=R.dateCache.keys().next().value;o&&R.dateCache.delete(o)}return R.dateCache.set(a,i),i}convertToLegacyTask(t){let e=r=>{try{let a=JSON.parse(r);return Array.isArray(a)?a:[]}catch(a){return[r]}};return{id:t.id,content:t.content,filePath:t.filePath,line:t.line,completed:t.completed,status:t.rawStatus,originalMarkdown:t.originalMarkdown,children:t.children||[],metadata:{tags:t.tags||(t.metadata.tags?e(t.metadata.tags):[]),priority:t.priority||t.metadata.priority,startDate:t.startDate||t.metadata.startDate,dueDate:t.dueDate||t.metadata.dueDate,scheduledDate:t.scheduledDate||t.metadata.scheduledDate,completedDate:t.completedDate||t.metadata.completedDate,createdDate:t.createdDate||t.metadata.createdDate,cancelledDate:t.metadata.cancelledDate,recurrence:t.recurrence||t.metadata.recurrence,project:t.project||t.metadata.project,context:t.context||t.metadata.context,area:t.metadata.area,id:t.metadata.id,dependsOn:t.metadata.dependsOn?t.metadata.dependsOn.split(",").map(r=>r.trim()).filter(r=>r.length>0):void 0,onCompletion:t.metadata.onCompletion,children:t.children,heading:Array.isArray(t.heading)?t.heading:t.heading?[t.heading]:[],parent:t.parentId,tgProject:t.tgProject}}}loadProjectConfig(t){this.config.projectConfig&&(this.projectConfigCache={})}determineTgProject(t){var r,a,s;if(!((r=this.config.projectConfig)!=null&&r.enableEnhancedProject))return;let e=this.config.projectConfig;if(e.pathMappings&&e.pathMappings.length>0){for(let i of e.pathMappings)if(i.enabled&&t.includes(i.pathPattern))return{type:"path",name:i.projectName,source:i.pathPattern,readonly:!0}}if((a=e.metadataConfig)!=null&&a.enabled&&this.fileMetadata){let i=e.metadataConfig.metadataKey||"project",o=this.fileMetadata[i];if(o&&typeof o=="string")return{type:"metadata",name:o,source:i,readonly:!0}}if((s=e.configFile)!=null&&s.enabled&&this.projectConfigCache){let i=this.projectConfigCache.project;if(i&&typeof i=="string")return{type:"config",name:i,source:e.configFile.fileName,readonly:!0}}}static clearDateCache(){R.dateCache.clear()}static getDateCacheStats(){return{size:R.dateCache.size,maxSize:R.MAX_CACHE_SIZE}}parseTagsForMetadata(t){var r;let e={};for(let a of t){let s=a.startsWith("#")?a.substring(1):a,i=s.indexOf("/");if(i!==-1){let o=s.substring(0,i),c=s.substring(i+1),u=(r=this.config.specialTagPrefixes[o])!=null?r:this.config.specialTagPrefixes[o.toLowerCase()];u&&this.config.metadataParseMode!=="none"&&(e[u]=c)}}return e}normalizeTag(t){if(typeof t!="string")return t;let e=t.trim();return!e||e.startsWith("#")?e:`#${e}`}safeParseTagsField(t){if(!t)return[];if(Array.isArray(t))return t;if(typeof t=="string")try{let e=JSON.parse(t);return Array.isArray(e)?e:[t]}catch(e){return[t]}return[]}mergeTags(t,e){let r=t.map(i=>this.normalizeTag(i)),a=e.map(i=>this.normalizeTag(i)),s=[...r];for(let i of a)s.includes(i)||s.push(i);return s}inheritFileMetadata(t,e=!1){var i,o,c,u,m;let r=d=>{if(d==null||typeof d=="number")return String(d);let f=String(d),g={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1,"\\u{1F53A}":5,"\\u23EB":4,"\\u{1F53C}":3,"\\u{1F53D}":2,"\\u23EC\\uFE0F":1,"\\u23EC":1},p=parseInt(f,10);if(!isNaN(p))return String(p);let y=g[f.toLowerCase()]||g[f];return y!==void 0?String(y):f},a=v({},t);if(a.priority!==void 0&&(a.priority=r(a.priority)),!((i=this.config.fileMetadataInheritance)!=null&&i.enabled))return{};if(!((o=this.config.fileMetadataInheritance)!=null&&o.inheritFromFrontmatter)||e&&!((c=this.config.fileMetadataInheritance)!=null&&c.inheritFromFrontmatterForSubtasks))return a;let s=new Set(["id","content","status","rawStatus","completed","line","lineNumber","originalMarkdown","filePath","heading","headingLevel","parent","parentId","children","childrenIds","indentLevel","actualIndent","listMarker","tgProject","comment","metadata"]);if(this.fileMetadata){try{let d=(m=(u=this.config.projectConfig)==null?void 0:u.metadataConfig)==null?void 0:m.metadataKey;d&&this.fileMetadata[d]!==void 0&&this.fileMetadata[d]!==null&&String(this.fileMetadata[d]).trim()!==""&&(a.project===void 0||a.project===null||a.project==="")&&(a.project=String(this.fileMetadata[d]).trim())}catch(d){}for(let[d,f]of Object.entries(this.fileMetadata))if(d==="tags"&&Array.isArray(f)){let g=this.parseTagsForMetadata(f);for(let[p,y]of Object.entries(g))!s.has(p)&&(a[p]===void 0||a[p]===null||a[p]==="")&&y!==void 0&&y!==null&&(p==="priority"?a[p]=r(y):a[p]=String(y));if(!s.has("tags")&&(a.tags===void 0||a.tags===null||a.tags==="")){let p=f.map(y=>this.normalizeTag(y));a.tags=JSON.stringify(p)}}else!s.has(d)&&(a[d]===void 0||a[d]===null||a[d]==="")&&f!==void 0&&f!==null&&(d==="priority"?a[d]=r(f):a[d]=String(f))}if(this.projectConfigCache)for(let[d,f]of Object.entries(this.projectConfigCache))!s.has(d)&&(a[d]===void 0||a[d]===null||a[d]==="")&&!(this.fileMetadata&&this.fileMetadata[d]!==void 0)&&f!==void 0&&f!==null&&(d==="priority"?a[d]=r(f):a[d]=String(f));return a}};R.dateCache=new Map,R.MAX_CACHE_SIZE=1e4;var Y=R;var Z=(n,t)=>{var i,o,c,u,m,d,f,g,p,y,M,E;let e=((o=(i=t==null?void 0:t.settings)==null?void 0:i.projectTagPrefix)==null?void 0:o[n])||"project",r=((u=(c=t==null?void 0:t.settings)==null?void 0:c.contextTagPrefix)==null?void 0:u[n])||(n==="dataview"?"context":"@"),a=((d=(m=t==null?void 0:t.settings)==null?void 0:m.areaTagPrefix)==null?void 0:d[n])||"area";return{parseTags:!0,parseMetadata:!0,parseHeadings:!0,parseComments:!1,metadataParseMode:n==="dataview"?"dataview-only":"both",statusMapping:{todo:" ",done:"x",cancelled:"-",forwarded:">",scheduled:"<",important:"!",question:"?",incomplete:"/",paused:"p",pro:"P",con:"C",quote:"Q",note:"N",bookmark:"b",information:"i",savings:"S",idea:"I",location:"l",phone:"k",win:"w",key:"K"},emojiMapping:{"\\u{1F4C5}":"dueDate","\\u{1F6EB}":"startDate","\\u23F3":"scheduledDate","\\u2705":"completedDate","\\u274C":"cancelledDate","\\u2795":"createdDate","\\u{1F501}":"recurrence","\\u{1F3C1}":"onCompletion","\\u26D4":"dependsOn","\\u{1F194}":"id","\\u{1F53A}":"priority","\\u23EB":"priority","\\u{1F53C}":"priority","\\u{1F53D}":"priority","\\u23EC":"priority"},specialTagPrefixes:(()=>{let O={};return e&&(O[e]="project",O[String(e).toLowerCase()]="project"),a&&(O[a]="area",O[String(a).toLowerCase()]="area"),r&&(O[r]="context",O[String(r).toLowerCase()]="context"),O})(),maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:(g=(f=t==null?void 0:t.settings)==null?void 0:f.projectConfig)!=null&&g.enableEnhancedProject?(p=t==null?void 0:t.settings)==null?void 0:p.projectConfig:void 0,fileMetadataInheritance:(y=t==null?void 0:t.settings)==null?void 0:y.fileMetadataInheritance,customDateFormats:(M=t==null?void 0:t.settings)!=null&&M.enableCustomDateFormats?(E=t==null?void 0:t.settings)==null?void 0:E.customDateFormats:void 0}};var tt=class{constructor(t,e){this.config=t,this.projectDetectionMethods=e}parseFileForTasks(t,e,r){let a=[],s=[];try{if(this.config.enableFileMetadataParsing&&(r!=null&&r.frontmatter)){let i=this.parseMetadataTasks(t,r.frontmatter,e,r);a.push(...i.tasks),s.push(...i.errors)}if(this.config.enableTagBasedTaskParsing&&(r!=null&&r.tags)){let i=this.parseTagTasks(t,r.tags,r.frontmatter,e,r);a.push(...i.tasks),s.push(...i.errors)}}catch(i){s.push(`Error parsing file ${t}: ${i.message}`)}return{tasks:a,errors:s}}parseMetadataTasks(t,e,r,a){let s=[],i=[];for(let o of this.config.metadataFieldsToParseAsTasks)if(e[o]!==void 0)try{let c=this.createTaskFromMetadata(t,o,e[o],e,r,a);c&&s.push(c)}catch(c){i.push(`Error creating task from metadata field ${o} in ${t}: ${c.message}`)}return{tasks:s,errors:i}}parseTagTasks(t,e,r,a,s){let i=[],o=[],c=e.map(u=>u.tag);for(let u of this.config.tagsToParseAsTasks){let m=u.startsWith("#")?u:`#${u}`;if(c.some(d=>d===m))try{let d=this.createTaskFromTag(t,m,r,a,s);d&&i.push(d)}catch(d){o.push(`Error creating task from tag ${m} in ${t}: ${d.message}`)}}return{tasks:i,errors:o}}createTaskFromMetadata(t,e,r,a,s,i){let o=this.getTaskContent(a,t),c=`${t}-metadata-${e}`,u=this.determineTaskStatus(e,r),m=u.toLowerCase()==="x",d=this.extractTaskMetadata(t,a,e,r,i);return console.log("metadata",d),{id:c,content:o,filePath:t,line:0,completed:m,status:u,originalMarkdown:`- [${u}] ${o}`,metadata:F(v({},d),{tags:this.extractTags(a),children:[],heading:[],source:"file-metadata",sourceField:e,sourceValue:r})}}createTaskFromTag(t,e,r,a,s){let i=this.getTaskContent(r,t),o=`${t}-tag-${e.replace("#","")}`,c=this.config.defaultTaskStatus,u=c.toLowerCase()==="x",m=this.extractTaskMetadata(t,r||{},"tag",e,s);return{id:o,content:i,filePath:t,line:0,completed:u,status:c,originalMarkdown:`- [${c}] ${i}`,metadata:F(v({},m),{tags:this.extractTags(r),children:[],heading:[],source:"file-tag",sourceTag:e})}}getTaskContent(t,e){return t&&t[this.config.taskContentFromMetadata]?String(t[this.config.taskContentFromMetadata]):(e.split("/").pop()||e).replace(/\\.[^/.]+$/,"")}determineTaskStatus(t,e){if(t.toLowerCase().includes("complete")||t.toLowerCase().includes("done"))return e?"x":" ";if(t.toLowerCase().includes("todo")||t.toLowerCase().includes("task")){if(typeof e=="boolean")return e?"x":" ";if(typeof e=="string"&&e.length===1)return e}return t.toLowerCase().includes("due")?" ":this.config.defaultTaskStatus}extractTaskMetadata(t,e,r,a,s){let i={};e.dueDate&&(i.dueDate=this.parseDate(e.dueDate)),e.startDate&&(i.startDate=this.parseDate(e.startDate)),e.scheduledDate&&(i.scheduledDate=this.parseDate(e.scheduledDate)),e.priority&&(i.priority=this.parsePriority(e.priority));let o=this.detectProjectFromFile(t,e,s);return o?i.project=o:e.project&&(i.project=String(e.project)),e.context&&(i.context=String(e.context)),e.area&&(i.area=String(e.area)),r.toLowerCase().includes("due")&&a&&(i.dueDate=this.parseDate(a)),i}detectProjectFromFile(t,e,r){if(!(!this.projectDetectionMethods||this.projectDetectionMethods.length===0)){for(let a of this.projectDetectionMethods)if(a.enabled)switch(a.type){case"metadata":if(e[a.propertyKey])return String(e[a.propertyKey]);break;case"tag":if(r!=null&&r.tags){let s=a.propertyKey.startsWith("#")?a.propertyKey:`#${a.propertyKey}`;if(r.tags.some(o=>o.tag===s))return e.title?String(e.title):e.name?String(e.name):(t.split("/").pop()||t).replace(/\\.md$/i,"")}break;case"link":if(r!=null&&r.links)for(let s of r.links){let i=s.link;if(a.linkFilter){if(i.includes(a.linkFilter))return e.title?String(e.title):e.name?String(e.name):(t.split("/").pop()||t).replace(/\\.md$/i,"")}else if(a.propertyKey){if(e[a.propertyKey]&&String(e[a.propertyKey]).includes(`[[${i}]]`))return e.title?String(e.title):e.name?String(e.name):(t.split("/").pop()||t).replace(/\\.md$/i,"")}else return e.title?String(e.title):e.name?String(e.name):(t.split("/").pop()||t).replace(/\\.md$/i,"")}break}}}extractTags(t){if(!t)return[];let e=[];return t.tags&&(Array.isArray(t.tags)?e.push(...t.tags.map(r=>String(r))):e.push(String(t.tags))),t.tag&&(Array.isArray(t.tag)?e.push(...t.tag.map(r=>String(r))):e.push(String(t.tag))),e}parseDate(t){if(t){if(typeof t=="number")return t;if(typeof t=="string"){let e=Date.parse(t);return isNaN(e)?void 0:e}if(t instanceof Date)return t.getTime()}}parsePriority(t){if(typeof t=="number")return Math.max(1,Math.min(3,Math.round(t)));if(typeof t=="string"){let e=parseInt(t,10);if(!isNaN(e))return Math.max(1,Math.min(3,e));let r=t.toLowerCase();if(r.includes("high")||r.includes("urgent"))return 3;if(r.includes("medium")||r.includes("normal"))return 2;if(r.includes("low"))return 1}}};var ia={includeNodeIds:!1,includePositions:!1,nodeSeparator:`\n\n`,preserveLineBreaks:!0},rt=class n{constructor(t,e={}){this.markdownParser=new Y(t),this.options=v(v({},ia),e)}parseCanvasFile(t,e){let r=null,a=null;try{return r=JSON.parse(t),r?(a=this.extractCanvasContent(r,e),a?this.parseTasksFromCanvasContent(a):[]):[]}catch(s){return console.error(`Error parsing canvas file ${e}:`,s),[]}finally{r=null,a=null}}extractCanvasContent(t,e){if(!t||!t.nodes||!Array.isArray(t.nodes))return console.warn(`Canvas file ${e} has no nodes or invalid nodes structure`),{canvasData:t,textContent:"",textNodes:[],filePath:e};let r=t.nodes.filter(i=>i.type==="text"),a=[];for(let i of r){let o=i.text;this.options.includeNodeIds&&(o=`\n${o}`),this.options.includePositions&&(o=`\n${o}`),this.options.preserveLineBreaks||(o=o.replace(/\\n/g," ")),a.push(o)}let s=a.join(this.options.nodeSeparator||`\n\n`);return{canvasData:t,textContent:s,textNodes:r,filePath:e}}parseTasksFromCanvasContent(t){let{textContent:e,filePath:r,textNodes:a}=t;return this.markdownParser.parseLegacy(e,r).map(i=>this.enhanceTaskWithCanvasMetadata(i,t))}enhanceTaskWithCanvasMetadata(t,e){let r=this.findSourceNode(t,e);if(r){let a=F(v({},t.metadata),{canvasNodeId:r.id,canvasPosition:{x:r.x,y:r.y,width:r.width,height:r.height},canvasColor:r.color,sourceType:"canvas"});t.metadata=a}else t.metadata.sourceType="canvas";return t}findSourceNode(t,e){let{textNodes:r}=e;for(let a of r)if(a.text.includes(t.originalMarkdown))return a;return null}updateParserConfig(t){this.markdownParser=new Y(t)}updateOptions(t){this.options=v(v({},this.options),t)}getOptions(){return v({},this.options)}static isValidCanvasContent(t){try{let e=JSON.parse(t);return typeof e=="object"&&e!==null&&Array.isArray(e.nodes)&&Array.isArray(e.edges)}catch(e){return!1}}extractTextOnly(t){try{return JSON.parse(t).nodes.filter(a=>a.type==="text").map(a=>a.text).join(this.options.nodeSeparator||`\n\n`)}catch(e){return console.error("Error extracting text from canvas:",e),""}}static parseCanvasJSON(t){try{return JSON.parse(t)}catch(e){return console.error("Error parsing Canvas JSON:",e),null}}static findTextNode(t,e){return t.nodes.find(a=>a.type==="text"&&a.id===e)||null}static getTextNodes(t){return t.nodes.filter(e=>e.type==="text")}static async parseCanvas(t,e,r){let a=Z(t.settings.preferMetadataFormat,t),s=new n(a),i=e.path,o=r!=null?r:await t.app.vault.cachedRead(e);return s.parseCanvasFile(o,i)}};function oa(n,t,e,r){try{let a={settings:e},s=Z(e.preferMetadataFormat,a);try{console.debug("[TPB][Worker] incoming prefixes",{preferMetadataFormat:e.preferMetadataFormat,projectTagPrefix:e.projectTagPrefix,contextTagPrefix:e.contextTagPrefix,areaTagPrefix:e.areaTagPrefix}),console.debug("[TPB][Worker] specialTagPrefixes keys (before)",Object.keys(s.specialTagPrefixes||{}))}catch(c){}if(s.specialTagPrefixes){let c={};for(let u of Object.keys(s.specialTagPrefixes)){let m=String(u).toLowerCase();m!==u&&!s.specialTagPrefixes[m]&&(c[m]=s.specialTagPrefixes[u])}s.specialTagPrefixes=v(v({},s.specialTagPrefixes),c);try{console.debug("[TPB][Worker] specialTagPrefixes keys (after)",Object.keys(s.specialTagPrefixes))}catch(u){}}return e.projectConfig&&e.projectConfig.enableEnhancedProject&&(s.projectConfig=e.projectConfig),new Y(s).parseLegacy(t,n,r,void 0,void 0).filter(c=>{let u=e.ignoreHeading?e.ignoreHeading.split(",").map(d=>d.trim().replace(/^#+\\s*/,"")).filter(d=>d):[],m=e.focusHeading?e.focusHeading.split(",").map(d=>d.trim().replace(/^#+\\s*/,"")).filter(d=>d):[];if(u.length>0){if(!c.metadata.heading)return!0;if((Array.isArray(c.metadata.heading)?c.metadata.heading:[c.metadata.heading]).some(f=>u.some(g=>f.toLowerCase().includes(g.toLowerCase()))))return!1}return!(m.length>0&&(!c.metadata.heading||!(Array.isArray(c.metadata.heading)?c.metadata.heading:[c.metadata.heading]).some(f=>m.some(g=>f.toLowerCase().includes(g.toLowerCase())))))})}catch(a){return console.warn("Configurable parser failed, falling back to legacy parser:",a),ca(n,t,e.preferMetadataFormat,e.ignoreHeading,e.focusHeading)}}function ca(n,t,e,r,a){let s=t.split(`\n`),i=[];for(let o=0;o0&&console.warn(`Worker: File metadata parsing errors for ${n}:`,y.errors)}catch(p){console.error(`Worker: Error in file metadata parsing for ${n}:`,p)}let g=f.filter(p=>p.completed).length;try{if((n.startsWith(a.dailyNotePath)||("/"+n).startsWith(a.dailyNotePath))&&a.dailyNotePath&&a.useDailyNotePathAsDate)for(let p of f){let y=Xt(n,{useDailyNotePathAsDate:a.useDailyNotePathAsDate,dailyNoteFormat:a.dailyNoteFormat.replace(/Y/g,"y").replace(/D/g,"d"),dailyNotePath:a.dailyNotePath});y&&(a.useAsDateType==="due"&&!p.metadata.dueDate?p.metadata.dueDate=y:a.useAsDateType==="start"&&!p.metadata.startDate?p.metadata.startDate=y:a.useAsDateType==="scheduled"&&!p.metadata.scheduledDate&&(p.metadata.scheduledDate=y),p.metadata.useAsDateType=a.useAsDateType)}}catch(p){console.error(`Worker: Error processing file ${n}:`,p)}return{type:"parseResult",filePath:n,tasks:f,stats:{totalTasks:f.length,completedTasks:g,processingTimeMs:Math.round(performance.now()-i)}}}catch(d){throw console.error(`Worker: Error processing file ${n}:`,d),d}}function da(n,t){let e=performance.now(),r=[],a=0,s=0;for(let i of n)try{let o=qt(i.path,i.content,i.extension,i.stats,t,i.metadata);a+=o.stats.totalTasks,r.push({filePath:o.filePath,taskCount:o.stats.totalTasks})}catch(o){console.error(`Worker: Error in batch processing for file ${i.path}:`,o),s++}return{type:"batchResult",results:r,stats:{totalFiles:n.length,totalTasks:a,processingTimeMs:Math.round(performance.now()-e)}}}self.onmessage=async n=>{try{let t=n.data,e=t.settings||{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",projectConfig:void 0,fileParsingConfig:void 0};if(t.type==="parseTasks")try{let r=qt(t.filePath,t.content,t.fileExtension,t.stats,e,t.metadata);self.postMessage(r)}catch(r){self.postMessage({type:"error",error:r instanceof Error?r.message:String(r),filePath:t.filePath})}else if(t.type==="batchIndex"){let r=da(t.files,e);self.postMessage(r)}else console.error("Worker: Unknown or invalid command message:",t),self.postMessage({type:"error",error:`Unknown command type: ${t.type}`})}catch(t){console.error("Worker: General error in onmessage handler:",t),self.postMessage({type:"error",error:t instanceof Error?t.message:String(t)})}};\n')}function NH(){let n,a,t=new Promise((r,i)=>{n=r,a=i});return t.resolve=n,t.reject=a,t}var mv=Oe(BH()),a7={maxWorkers:1,cpuUtilization:.75,debug:!1,settings:{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:void 0,fileMetadataInheritance:void 0}};var fv=class extends VH.Component{constructor(e,t,r={}){super();this.workers=new Map;this.queues=[new mv.Queue,new mv.Queue,new mv.Queue];this.outstanding=new Map;this.active=!0;this.nextWorkerId=0;this.processedFiles=0;this.totalFilesToProcess=0;this.isProcessingBatch=!1;this.maxRetries=2;this.initialized=!1;this.stats={filesSkipped:0,filesProcessed:0,cacheHitRatio:0};this.options={...a7,...r},this.vault=e,this.metadataCache=t,this.initializeWorkers()}setFileParsingConfig(e,t){e.enableFileMetadataParsing||e.enableTagBasedTaskParsing?this.fileMetadataParser=new Tc(e,t):this.fileMetadataParser=void 0,this.options.settings?this.options.settings.fileParsingConfig=e:this.options.settings={preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:e,fileMetadataInheritance:void 0}}initializeWorkers(){if(this.initialized){this.log("Workers already initialized, skipping initialization");return}this.workers.size>0&&(this.log("Cleaning up existing workers before re-initialization"),this.cleanupWorkers());let e=Math.min(this.options.maxWorkers,navigator.hardwareConcurrency||2);for(let t=0;t{this.finish(e,t.data).catch(r=>{if(console.error("Error in finish handler:",r),e.active){let[i,s]=e.active;s.reject(r),e.active=void 0,this.outstanding.delete(i.path),this.schedule()}})},e.worker.onerror=t=>{if(console.error("Worker error:",t),e.active){let[r,i,s,o]=e.active;s0?this.stats.filesSkipped/e:0}getStats(){return{...this.stats}}shouldProcessFile(e){var t,r;return!this.taskIndexer||!((r=(t=this.options.settings)==null?void 0:t.fileParsingConfig)!=null&&r.enableMtimeOptimization)?!0:!this.taskIndexer.hasValidCache(e.path,e.stat.mtime)}getCachedTasksForFile(e){if(!this.taskIndexer)return null;let t=this.taskIndexer.getCache().files.get(e);if(!t)return null;let r=[],i=this.taskIndexer.getCache().tasks;for(let s of t){let o=i.get(s);o&&r.push(o)}return r.length>0?r:null}processFile(e,t=1){let r=this.outstanding.get(e.path);if(r)return r;if(!this.shouldProcessFile(e)){let s=this.getCachedTasksForFile(e.path);if(s)return this.stats.filesSkipped++,this.updateCacheHitRatio(),this.log(`Using cached tasks for ${e.path} (${s.length} tasks)`),Promise.resolve(s)}let i=NH();return this.outstanding.set(e.path,i),this.queueTaskWithPriority(e,i,t),i}queueTaskWithPriority(e,t,r,i=0){this.queues[r].enqueue({file:e,promise:t,priority:r}),i===0&&this.schedule()}async processBatch(e,t=0){if(e.length===0)return new Map;let r=[],i=new Map,s=0;for(let o of e){if(!this.shouldProcessFile(o)){let l=this.getCachedTasksForFile(o.path);if(l){i.set(o.path,l),s++;continue}}r.push(o)}if(this.log(`Batch processing: ${s} files from cache, ${r.length} files to process (cache hit ratio: ${s>0?(s/e.length*100).toFixed(1):0}%)`),r.length===0)return i;this.isProcessingBatch=!0,this.processedFiles=0,this.totalFilesToProcess=r.length,this.log(`Processing batch of ${r.length} files (${s} cached)`);try{let l=Math.min(this.options.maxWorkers*2,5),c=0,u=[],p=async()=>{if(u.length!==0&&c{let h=f.map(async y=>{try{let b=await this.processFile(y,t);return i.set(y.path,b),{file:y,tasks:b}}catch(b){return console.error(`Error processing file ${y.path}:`,b),{file:y,tasks:[]}}}),g=await Promise.all(h);this.processedFiles+=g.length;let k=Math.round(this.processedFiles/this.totalFilesToProcess*100);(k%10===0||this.processedFiles===this.totalFilesToProcess)&&this.log(`Batch progress: ${k}% (${this.processedFiles}/${this.totalFilesToProcess})`)}),p()}for(;c>0||u.length>0;)await new Promise(m=>setTimeout(m,50))}catch(o){console.error("Error during batch processing:",o)}finally{this.isProcessingBatch=!1,this.log(`Completed batch processing of ${e.length} files (${s} from cache, ${r.length} processed)`)}return i}serializeCachedMetadata(e){if(e)try{let t={},r=["frontmatter","tags","headings","sections","listItems","links","embeds","blocks"];for(let i of r)e[i]!==void 0&&(t[i]=JSON.parse(JSON.stringify(e[i])));return t}catch(t){return console.warn("Failed to serialize CachedMetadata, using fallback:",t),{frontmatter:e.frontmatter?JSON.parse(JSON.stringify(e.frontmatter)):void 0}}}async getTaskMetadata(e){let t=await this.vault.cachedRead(e),r=this.metadataCache.getFileCache(e);return{listItems:r==null?void 0:r.listItems,content:t,stats:{ctime:e.stat.ctime,mtime:e.stat.mtime,size:e.stat.size}}}schedule(){if(!this.active)return;let e;for(let o=0;o{let l={type:"parseTasks",filePath:r.path,content:o.content,fileExtension:r.extension,stats:o.stats,metadata:{listItems:o.listItems||[],fileCache:this.serializeCachedMetadata(this.metadataCache.getFileCache(r))},settings:this.options.settings||{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:void 0,fileMetadataInheritance:void 0}};t.worker.postMessage(l)}).catch(o=>{console.error(`Error reading file ${r.path}:`,o),i.reject(o),t.active=void 0,this.outstanding.delete(r.path),this.schedule()})}catch(o){console.error(`Error processing file ${r.path}:`,o),i.reject(o),t.active=void 0,this.outstanding.delete(r.path),this.schedule()}}async finish(e,t){if(!e.active)return;let[r,i,s,o]=e.active;if(t.type==="error"){let l=t;s0&&console.warn(`File metadata parsing errors for ${r.path}:`,m.errors)}catch(u){console.error(`Error in file metadata parsing for ${r.path}:`,u)}i.resolve(c),this.outstanding.delete(r.path),this.stats.filesProcessed++,this.updateCacheHitRatio()}else t.type==="batchResult"?(i.reject(new Error("Batch results should be handled by processBatch")),this.outstanding.delete(r.path)):(i.reject(new Error(`Unexpected result type: ${t.type}`)),this.outstanding.delete(r.path));if(this.workers.size>this.options.maxWorkers)this.workers.delete(e.id),this.terminate(e);else{let l=Date.now(),c=e.active?l-e.availableAt:0,u=Math.max(.1,this.options.cpuUtilization)-1,p=Math.max(0,c*u);e.active=void 0,p<=0?(e.availableAt=l,this.schedule()):(e.availableAt=l+p,setTimeout(()=>this.schedule(),p))}}availableWorker(){let e=Date.now();for(let t of this.workers.values())if(!t.active&&t.availableAt<=e)return t;if(this.workers.sizee+t.size(),0)}getBatchProgress(){return{current:this.processedFiles,total:this.totalFilesToProcess,percentage:this.totalFilesToProcess>0?Math.round(this.processedFiles/this.totalFilesToProcess*100):0}}setEnhancedProjectData(e){}updateSettings(e){this.options.settings&&Object.assign(this.options.settings,e)}isProcessingBatchTask(){return this.isProcessingBatch}log(e){this.options.debug&&`${e}`}};function D0(){return hf('var l=Object.defineProperty;var g=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;var f=(a,e,t)=>e in a?l(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,c=(a,e)=>{for(var t in e||(e={}))m.call(e,t)&&f(a,t,e[t]);if(g)for(var t of g(e))y.call(e,t)&&f(a,t,e[t]);return a};var n=null;function p(a){if(!n)throw new Error("Worker not configured");let{filePath:e,fileMetadata:t,configData:r}=a,s=h(e,t,r),i=D(c(c({},r),t));return{filePath:e,tgProject:s,enhancedMetadata:i,timestamp:Date.now()}}function P(a){if(!n)throw new Error("Worker not configured");let e=[];for(let t of a)try{let r=p({type:"computeProjectData",requestId:"",filePath:t.filePath,fileMetadata:t.fileMetadata,configData:t.configData});e.push(r)}catch(r){console.warn(`Failed to process project data for ${t.filePath}:`,r),e.push({filePath:t.filePath,tgProject:void 0,enhancedMetadata:{},timestamp:Date.now(),error:r instanceof Error?r.message:String(r)})}return e}function h(a,e,t){if(n){for(let r of n.pathMappings)if(r.enabled&&j(a,r.pathPattern))return{type:"path",name:r.projectName,source:r.pathPattern,readonly:!0};if(e&&e[n.metadataKey]){let r=e[n.metadataKey];if(typeof r=="string"&&r.trim())return{type:"metadata",name:r.trim(),source:n.metadataKey,readonly:!0}}if(t&&t.project){let r=t.project;if(typeof r=="string"&&r.trim())return{type:"config",name:r.trim(),source:"project-config",readonly:!0}}if(n.defaultProjectNaming.enabled){let r=M(a,e);if(r)return{type:"default",name:r,source:n.defaultProjectNaming.strategy,readonly:!0}}}}function j(a,e){let t=a.replace(/\\\\/g,"/"),r=e.replace(/\\\\/g,"/");if(e.includes("*")){let s=e.replace(/\\*/g,".*").replace(/\\?/g,".");return new RegExp(`^${s}$`,"i").test(t)}return t.includes(r)}function M(a,e){if(!n||!n.defaultProjectNaming.enabled)return null;switch(n.defaultProjectNaming.strategy){case"filename":{let t=a.split("/").pop()||"";return n.defaultProjectNaming.stripExtension?t.replace(/\\.[^/.]+$/,""):t}case"foldername":{let t=a.split("/");return t.length>1&&t[t.length-2]||""}case"metadata":{let t=n.defaultProjectNaming.metadataKey;if(!t)return null;if(e&&e[t]){let r=e[t];return typeof r=="string"?r.trim():String(r)}return null}default:return null}}function D(a){if(!n)return a;let e=c({},a);for(let t of n.metadataMappings){if(!t.enabled)continue;let r=a[t.sourceKey];r!==void 0&&(e[t.targetKey]=w(t.targetKey,r))}return e}function w(a,e){let t=["due","dueDate","deadline","start","startDate","started","scheduled","scheduledDate","scheduled_for","completed","completedDate","finished","created","createdDate","created_at"],r=["priority","urgency","importance"],s=t.some(o=>a.toLowerCase().includes(o.toLowerCase())),i=r.some(o=>a.toLowerCase().includes(o.toLowerCase()));if(s&&typeof e=="string"){if(/^\\d{4}-\\d{2}-\\d{2}/.test(e))try{return new Date(e).getTime()}catch(o){return e}}else if(i&&typeof e=="string"){let o={highest:5,urgent:5,critical:5,high:4,important:4,medium:3,normal:3,moderate:3,low:2,minor:2,lowest:1,trivial:1},d=parseInt(e,10);if(!isNaN(d))return d;let u=o[e.toLowerCase()];if(u!==void 0)return u}return e}self.onmessage=async a=>{try{let e=a.data;switch(e.type){case"updateConfig":n=e.config,self.postMessage({type:"configUpdated",requestId:e.requestId,success:!0});break;case"computeProjectData":let r=p(e);self.postMessage({type:"projectDataResult",requestId:e.requestId,success:!0,data:r});break;case"computeBatchProjectData":let i=P(e.files);self.postMessage({type:"batchProjectDataResult",requestId:e.requestId,success:!0,data:i});break;default:throw new Error(`Unknown message type: ${e.type}`)}}catch(e){self.postMessage({type:"error",requestId:a.data.requestId,success:!1,error:e instanceof Error?e.message:String(e)})}};\n')}var hv=class{constructor(a){this.workers=[];this.requestId=0;this.pendingRequests=new Map;this.currentWorkerIndex=0;this.initialized=!1;var e;this.vault=a.vault,this.metadataCache=a.metadataCache,this.projectConfigManager=a.projectConfigManager,this.maxWorkers=a.maxWorkers||Math.min(2,Math.max(1,Math.floor(navigator.hardwareConcurrency/4))),this.enableWorkers=(e=a.enableWorkers)!=null?e:!0,this.cache=new hc(this.vault,this.metadataCache,this.projectConfigManager),this.initializeWorkers()}initializeWorkers(){if(!this.initialized&&this.enableWorkers){this.workers.length>0&&this.cleanupWorkers();try{`${this.maxWorkers}`;for(let a=0;a{this.handleWorkerMessage(t.data)},e.onerror=t=>{console.error(`Worker ${a} error:`,t)},this.workers.push(e)}this.updateWorkerConfig(),this.initialized=!0,`${this.workers.length}`}catch(a){console.warn("ProjectDataWorkerManager: Failed to initialize workers, falling back to synchronous processing",a),this.enableWorkers=!1,this.workers=[]}}}updateWorkerConfig(){if(!this.enableWorkers||this.workers.length===0)return;let a=this.projectConfigManager.getWorkerConfig(),e={type:"updateConfig",requestId:this.generateRequestId(),config:a};for(let t of this.workers)try{t.postMessage(e)}catch(r){console.warn("Failed to update worker config:",r)}}async getProjectData(a){let e=await this.cache.getProjectData(a);return e||(this.enableWorkers&&this.workers.length>0?await this.computeProjectDataWithWorker(a):await this.computeProjectDataSync(a))}async getBatchProjectData(a){if(!this.projectConfigManager.isEnhancedProjectEnabled())return new Map;let e=await this.cache.getBatchProjectData(a),t=a.filter(r=>!e.has(r));if(t.length>0){let r;this.enableWorkers&&this.workers.length>0?r=await this.computeBatchProjectDataWithWorkers(t):r=await this.computeBatchProjectDataSync(t);for(let[i,s]of r)e.set(i,s)}return e}async computeProjectDataWithWorker(a){try{let e=await this.projectConfigManager.getFileMetadata(a),t=await this.projectConfigManager.getProjectConfigData(a),r=this.getNextWorker(),s={type:"computeProjectData",requestId:this.generateRequestId(),filePath:a,fileMetadata:e||{},configData:t||{}},o=await this.sendWorkerMessage(r,s);if(o.success&&o.data){let l={tgProject:o.data.tgProject,enhancedMetadata:o.data.enhancedMetadata,timestamp:o.data.timestamp};return await this.cache.setProjectData(a,l),l}else throw new Error(o.error||"Worker computation failed")}catch(e){return console.warn(`Failed to compute project data with worker for ${a}:`,e),await this.computeProjectDataSync(a)}}async computeBatchProjectDataWithWorkers(a){let e=new Map;if(a.length===0)return e;`${a.length}${this.workers.length}`;try{let t=await Promise.all(a.map(async o=>{let l=await this.projectConfigManager.getFileMetadata(o),c=await this.projectConfigManager.getProjectConfigData(o);return{filePath:o,fileMetadata:l||{},configData:c||{}}})),r=Math.ceil(t.length/this.workers.length),i=[];for(let o=0;o0&&i.push(this.sendBatchRequestToWorker(o,u))}let s=await Promise.all(i);for(let o of s)for(let l of o)if(l.error)console.warn(`Worker failed to process ${l.filePath}:`,l.error);else{let c={tgProject:l.tgProject,enhancedMetadata:l.enhancedMetadata,timestamp:l.timestamp};e.set(l.filePath,c),await this.cache.setProjectData(l.filePath,c)}`${e.size}${a.length}`}catch(t){return console.warn("Failed to compute batch project data with workers:",t),await this.computeBatchProjectDataSync(a)}return e}async sendBatchRequestToWorker(a,e){let t=this.workers[a],i={type:"computeBatchProjectData",requestId:this.generateRequestId(),files:e},s=await this.sendWorkerMessage(t,i);if(s.success&&s.data)return s.data;throw new Error(s.error||"Batch worker computation failed")}async sendWorkerMessage(a,e){return new Promise((t,r)=>{let i=setTimeout(()=>{this.pendingRequests.delete(e.requestId),r(new Error("Worker request timeout"))},3e4);this.pendingRequests.set(e.requestId,{resolve:s=>{clearTimeout(i),t(s)},reject:s=>{clearTimeout(i),r(s)}});try{a.postMessage(e)}catch(s){clearTimeout(i),this.pendingRequests.delete(e.requestId),r(s)}})}getNextWorker(){if(this.workers.length===0)throw new Error("No workers available");let a=this.workers[this.currentWorkerIndex];return this.currentWorkerIndex=(this.currentWorkerIndex+1)%this.workers.length,a}async computeBatchProjectDataSync(a){let e=new Map;`${a.length}`;let t=a.map(async i=>{try{let s=await this.computeProjectDataSync(i);return{filePath:i,data:s}}catch(s){return console.warn(`Failed to compute project data for ${i}:`,s),{filePath:i,data:null}}}),r=await Promise.all(t);for(let{filePath:i,data:s}of r)s&&e.set(i,s);return e}async computeProjectDataSync(a){try{let e=await this.projectConfigManager.determineTgProject(a),t=await this.projectConfigManager.getEnhancedMetadata(a),r={tgProject:e,enhancedMetadata:t,timestamp:Date.now()};return await this.cache.setProjectData(a,r),r}catch(e){return console.warn(`Failed to compute project data for ${a}:`,e),null}}handleWorkerMessage(a){let e=this.pendingRequests.get(a.requestId);e&&(this.pendingRequests.delete(a.requestId),a.success?e.resolve(a):e.reject(new Error(a.error||"Unknown worker error")))}generateRequestId(){return`req_${++this.requestId}_${Date.now()}`}clearCache(a){this.cache.clearCache(a),this.projectConfigManager.clearCache(a)}getCacheStats(){return this.cache.getStats()}onSettingsChange(){this.updateWorkerConfig(),this.cache.clearCache()}onEnhancedProjectSettingChange(a){this.cache.onEnhancedProjectSettingChange(a),a&&this.enableWorkers&&this.workers.length===0&&this.initializeWorkers()}setWorkersEnabled(a){this.enableWorkers!==a&&(this.enableWorkers=a,a?this.initializeWorkers():this.destroy())}isWorkersEnabled(){return this.enableWorkers&&this.workers.length>0}async preloadProjectData(a){a.length!==0&&await this.getBatchProjectData(a)}async onFileModified(a){await this.cache.onFileModified(a)}onFileDeleted(a){this.cache.onFileDeleted(a)}async onFileCreated(a){await this.cache.onFileCreated(a)}async onFileRenamed(a,e){await this.cache.onFileRenamed(a,e)}async refreshStaleEntries(){await this.cache.refreshStaleEntries()}async preloadRecentFiles(a){await this.cache.preloadRecentFiles(a)}getMemoryStats(){var a,e;return{fileCacheSize:((a=this.cache.fileCache)==null?void 0:a.size)||0,directoryCacheSize:((e=this.cache.directoryCache)==null?void 0:e.size)||0,pendingRequests:this.pendingRequests.size,activeWorkers:this.workers.length,workersEnabled:this.enableWorkers}}cleanupWorkers(){for(let a of this.workers)try{a.terminate()}catch(e){console.warn("Error terminating worker:",e)}this.workers=[];for(let{reject:a}of this.pendingRequests.values())a(new Error("Workers being reinitialized"));this.pendingRequests.clear()}destroy(){this.cleanupWorkers(),this.initialized=!1}};var E0=require("obsidian");var gf=class{constructor(){this.children=new Map;this.isEndOfPath=!1;this.isFolder=!1}},kf=class{constructor(){this.root=new gf}insert(a,e=!0){let t=(0,E0.normalizePath)(a).split("/").filter(i=>i.length>0),r=this.root;for(let i of t)r.children.has(i)||r.children.set(i,new gf),r=r.children.get(i);r.isEndOfPath=!0,r.isFolder=e}contains(a){let e=(0,E0.normalizePath)(a).split("/").filter(t=>t.length>0);for(let t=0;ta.enabled).length,enabled:this.config.enabled}}clearCache(){this.cache.clear()}getCacheKey(a,e,t){return`${a}:${t}:${this.normalizePath(e)}`}evaluateFile(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}evaluateFolder(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}evaluatePath(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}pathMatches(a,e){let t=this.normalizePath(a),r=e==="file"?this.fileSetFile:e==="inline"?this.fileSetInline:this.fileSet,i=e==="file"?this.folderTrieFile:e==="inline"?this.folderTrieInline:this.folderTrie,s=e==="file"?this.patternRegexesFile:e==="inline"?this.patternRegexesInline:this.patternRegexes,o=r.has(t),l=i.contains(t),c=!1;for(let p of s)if(p.test(t)){c=!0;break}return o||l||c}rebuildIndexes(){this.folderTrie.clear(),this.fileSet.clear(),this.patternRegexes=[],this.folderTrieInline.clear(),this.folderTrieFile.clear(),this.fileSetInline.clear(),this.fileSetFile.clear(),this.patternRegexesInline=[],this.patternRegexesFile=[];for(let a of this.config.rules){if(!a.enabled)continue;let e=a.scope||"both",t=r=>{switch(a.type){case"file":(r==="file"?this.fileSetFile:r==="inline"?this.fileSetInline:this.fileSet).add(this.normalizePath(a.path));break;case"folder":(r==="file"?this.folderTrieFile:r==="inline"?this.folderTrieInline:this.folderTrie).insert(a.path,!0);break;case"pattern":try{let i=this.globToRegex(a.path);(r==="file"?this.patternRegexesFile:r==="inline"?this.patternRegexesInline:this.patternRegexes).push(new RegExp(i,"i"))}catch(i){console.warn(`Invalid pattern rule: ${a.path}`,i)}break}};e==="both"?(t("both"),t("inline"),t("file")):e==="inline"?t("inline"):e==="file"&&t("file")}}globToRegex(a){return a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/\?/g,".").replace(/\[([^\]]+)\]/g,"[$1]")}normalizePath(a){return a.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}};lv();du();async function WH(n,a){let e=n.app.vault.getAbstractFileByPath(a);if(!e)return[];let t=e,r=n.app.metadataCache.getFileCache(t);if(!r)return[];let i=await n.app.vault.cachedRead(t),s=new Tc(n.settings.fileParsingConfig,void 0),{tasks:o}=s.parseFileForTasks(a,i,r);return o}Lo();var gv=class{constructor(a,e,t,r,i){this.app=a;this.vault=e;this.metadataCache=t;this.plugin=r;this.fileSource=null;this.eventRefs=[];this.processingQueue=new Map;this.DEBOUNCE_DELAY=300;this.suppressedInline=new Set;this.suppressedFileTasks=new Set;this.RESTORE_BATCH_SIZE=50;this.RESTORE_BATCH_INTERVAL_MS=100;this.lastFileFilterEnabled=!1;this.lastProcessedSeq=0;var c,u,p,m,f,h,g,k,y,b,v,w,x,T,C;this.queryAPI=new mf(a,e,t),this.repository=this.queryAPI.getRepository(),this.projectResolver=new nv(a,e,t,i),this.augmentor=new ov({app:a,vault:e,metadataCache:t});try{let S=(u=(c=this.plugin)==null?void 0:c.settings)==null?void 0:u.fileMetadataInheritance;this.augmentor.updateSettings({fileMetadataInheritance:S})}catch(S){console.warn("[DataflowOrchestrator][init] Failed to sync settings to Augmentor",S)}this.storage=this.repository.getStorage();try{let S=(p=this.plugin.settings)==null?void 0:p.fileFilter;JSON.stringify(S,null,2),S&&(this.fileFilterManager=new xc(S),this.fileFilterManager.getStats(),(f=(m=this.repository).setFileFilterManager)==null||f.call(m,this.fileFilterManager))}catch(S){console.warn("[DataflowOrchestrator] Failed early FileFilterManager init",S)}this.restoreByFilterDebounced=(0,kv.debounce)(()=>{this.restoreByFilter()},500,!1);let s=new fv(e,t,{settings:{preferMetadataFormat:this.plugin.settings.preferMetadataFormat||"tasks",useDailyNotePathAsDate:this.plugin.settings.useDailyNotePathAsDate||!1,dailyNoteFormat:this.plugin.settings.dailyNoteFormat||"yyyy-MM-dd",useAsDateType:this.plugin.settings.useAsDateType||"due",dailyNotePath:this.plugin.settings.dailyNotePath||"",ignoreHeading:this.plugin.settings.ignoreHeading||"",focusHeading:this.plugin.settings.focusHeading||"",fileParsingConfig:void 0,fileMetadataInheritance:this.plugin.settings.fileMetadataInheritance,enableCustomDateFormats:this.plugin.settings.enableCustomDateFormats,customDateFormats:this.plugin.settings.customDateFormats,projectTagPrefix:this.plugin.settings.projectTagPrefix,contextTagPrefix:this.plugin.settings.contextTagPrefix,areaTagPrefix:this.plugin.settings.areaTagPrefix}}),o=new hv({vault:e,metadataCache:t,projectConfigManager:this.projectResolver.getConfigManager()}),l=(w=(v=(k=(g=(h=this.plugin.settings)==null?void 0:h.fileSource)==null?void 0:g.performance)==null?void 0:k.enableWorkerProcessing)!=null?v:(b=(y=this.plugin.settings)==null?void 0:y.fileParsingConfig)==null?void 0:b.enableWorkerProcessing)!=null?w:!0;if(this.workerOrchestrator=new dv(s,o,{enableWorkerProcessing:l}),this.obsidianSource=new cv(a,e,t),this.icsSource=new uv(a,()=>this.plugin.getIcsManager()),this.timeParsingService=new Vd(((x=this.plugin.settings)==null?void 0:x.timeParsing)||{enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from"],due:["due","deadline","by","until"],scheduled:["scheduled","on","at"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!0,timePatterns:{singleTime:[],timeRange:[],rangeSeparators:["-","~","\uFF5E"]},timeDefaults:{preferredFormat:"24h",defaultPeriod:"AM",midnightCrossing:"next-day"}}),(C=(T=this.plugin.settings)==null?void 0:T.fileSource)!=null&&C.enabled){this.fileSource=new ff(a,this.plugin.settings.fileSource,this.fileFilterManager),this.fileFilterManager;try{this.fileSource.syncStatusMappingFromSettings(this.plugin.settings.taskStatuses)}catch(S){console.warn("[DataflowOrchestrator] Failed to sync FileSource status mapping on init",S)}}}async initialize(){var e,t,r;let a=Date.now();try{let i=(e=this.plugin.settings)==null?void 0:e.fileFilter;JSON.stringify(i,null,2),i&&(this.fileFilterManager?(this.fileFilterManager.updateConfig(i),this.fileFilterManager.getStats()):(this.fileFilterManager=new xc(i),this.fileFilterManager.getStats()),(r=(t=this.repository).setFileFilterManager)==null||r.call(t,this.fileFilterManager)),await this.queryAPI.initialize();try{let l=await this.storage.loadMeta("filter:suppressedInline");Array.isArray(l)&&(this.suppressedInline=new Set(l));let c=await this.storage.loadMeta("filter:suppressedFileTasks");Array.isArray(c)&&(this.suppressedFileTasks=new Set(c)),this.suppressedInline.size,this.suppressedFileTasks.size}catch(l){console.warn("[DataflowOrchestrator] Failed loading suppressed sets",l)}await this.queryAPI.ensureCache();let s=(await this.queryAPI.getAllTasks()).length;if(`${s}`,s===0){let l=this.vault.getMarkdownFiles(),c=this.vault.getFiles().filter(f=>f.extension==="canvas"),u=[...l,...c];`${u.length}`;let p=50;for(let f=0;f{let{events:e,seq:t}=a;`${(e==null?void 0:e.length)||0}`,e&&await this.repository.updateIcsEvents(e,t)})),this.eventRefs.push(ta(this.app,se.FILE_UPDATED,async a=>{let{path:e,reason:t}=a;if(`${e}${t}`,t==="delete")await this.repository.removeFile(e);else{let r=this.vault.getAbstractFileByPath(e);r&&await this.processFile(r)}})),this.eventRefs.push(ta(this.app,se.TASK_CACHE_UPDATED,async a=>{let{changedFiles:e,sourceSeq:t}=a;if(!(t&&t===this.lastProcessedSeq)&&t&&e&&Array.isArray(e)){`${e.length}`;for(let r of e){let i=this.vault.getAbstractFileByPath(r);i&&await this.processFile(i)}}})),this.eventRefs.push(ta(this.app,se.WRITE_OPERATION_COMPLETE,async a=>{let{path:e,taskId:t}=a;if(`${e}${t}`,!t){let r=this.vault.getAbstractFileByPath(e);r&&await this.processFileImmediate(r,!0)}})),this.eventRefs.push(ta(this.app,se.TASK_UPDATED,async a=>{let{task:e}=a;e&&(`${e.id}${e.filePath}`,await this.repository.updateSingleTask(e))})),this.eventRefs.push(ta(this.app,se.TASK_DELETED,async a=>{let{taskId:e,filePath:t,deletedTaskIds:r,mode:i}=a;if(`${e}${t}${i}${(r==null?void 0:r.length)||1}`,r&&r.length>0)for(let o of r)await this.repository.removeTaskById(o);let s=this.vault.getAbstractFileByPath(t);s&&await this.processFileImmediate(s,!0)})),this.fileSource&&(this.eventRefs.push(ta(this.app,se.FILE_TASK_UPDATED,async a=>{let{task:e}=a;`${e==null?void 0:e.filePath}`,e&&await this.repository.updateFileTask(e)})),this.eventRefs.push(ta(this.app,se.FILE_TASK_REMOVED,async a=>{let{filePath:e}=a;`${e}`,e&&await this.repository.removeFileTask(e)})))}async processFile(a){let e=a.path;this.processingQueue.has(e)&&clearTimeout(this.processingQueue.get(e));let t=setTimeout(async()=>{this.processingQueue.delete(e),await this.processFileImmediate(a,!1)},this.DEBOUNCE_DELAY);this.processingQueue.set(e,t)}async processFileImmediate(a,e=!1){var r;let t=a.path;try{let i=await this.vault.adapter.stat(t),s=i==null?void 0:i.mtime,o=await this.storage.loadRaw(t),l=await this.storage.loadAugmented(t),c=await this.vault.cachedRead(a),u,p=!1;if(!e&&o&&l&&this.storage.isRawValid(t,o,c,s)){`${t}`,u=l.data;let m=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;m||(u=[])}else{p=!0;let m,f;if(!e&&o&&this.storage.isRawValid(t,o,c,s)){`${t}`;let k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;m=k?o.data:[],f=await this.projectResolver.get(t)}else{e?`${t}`:`${t}`,f=await this.projectResolver.get(t);try{let y=this.workerOrchestrator.taskWorkerManager;y&&y.updateSettings({preferMetadataFormat:this.plugin.settings.preferMetadataFormat||"tasks",customDateFormats:this.plugin.settings.customDateFormats,fileMetadataInheritance:this.plugin.settings.fileMetadataInheritance,ignoreHeading:this.plugin.settings.ignoreHeading,focusHeading:this.plugin.settings.focusHeading,projectTagPrefix:this.plugin.settings.projectTagPrefix,contextTagPrefix:this.plugin.settings.contextTagPrefix,areaTagPrefix:this.plugin.settings.areaTagPrefix})}catch(y){console.warn("[DataflowOrchestrator] Failed to update worker settings for single-file parse:",y)}let k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;k?m=await this.workerOrchestrator.parseFileTasks(a,"high"):m=[],await this.storage.storeRaw(t,m,c,s)}await this.storage.storeProject(t,{tgProject:f.tgProject,enhancedMetadata:f.enhancedMetadata});let h=this.metadataCache.getFileCache(a),g={filePath:t,fileMeta:(h==null?void 0:h.frontmatter)||{},projectName:(r=f.tgProject)==null?void 0:r.name,projectMeta:{...f.enhancedMetadata,tgProject:f.tgProject},tasks:m};u=await this.augmentor.merge(g)}this.lastProcessedSeq=Ht.next(),await this.repository.updateFile(t,u,this.lastProcessedSeq)}catch(i){console.error(`Error processing file ${t}:`,i),ke(this.app,se.FILE_UPDATED,{path:t,reason:"error",error:i.message,timestamp:Date.now()})}}updateSettings(a){var r,i,s,o,l,c,u,p,m,f,h,g,k,y,b,v,w,x,T,C,S,E,A,N;let e=(l=(o=(i=(r=a==null?void 0:a.fileSource)==null?void 0:r.performance)==null?void 0:i.enableWorkerProcessing)!=null?o:(s=a==null?void 0:a.fileParsingConfig)==null?void 0:s.enableWorkerProcessing)!=null?l:!0;this.workerOrchestrator&&this.workerOrchestrator.setWorkerProcessingEnabled(e);try{let I=a==null?void 0:a.projectConfig;I&&this.updateProjectOptions({configFileName:((c=I==null?void 0:I.configFile)==null?void 0:c.fileName)||"project.md",searchRecursively:(p=(u=I==null?void 0:I.configFile)==null?void 0:u.searchRecursively)!=null?p:!0,metadataKey:((m=I==null?void 0:I.metadataConfig)==null?void 0:m.metadataKey)||"project",pathMappings:(I==null?void 0:I.pathMappings)||[],metadataMappings:(I==null?void 0:I.metadataMappings)||[],defaultProjectNaming:(I==null?void 0:I.defaultProjectNaming)||{strategy:"filename",stripExtension:!0,enabled:!1},enhancedProjectEnabled:(f=I==null?void 0:I.enableEnhancedProject)!=null?f:!1,metadataConfigEnabled:(g=(h=I==null?void 0:I.metadataConfig)==null?void 0:h.enabled)!=null?g:!1,configFileEnabled:(y=(k=I==null?void 0:I.configFile)==null?void 0:k.enabled)!=null?y:!1,detectionMethods:((b=I==null?void 0:I.metadataConfig)==null?void 0:b.detectionMethods)||[]})}catch(I){console.warn("[DataflowOrchestrator] Failed to update project config options on settings update",I)}a.timeParsing&&this.timeParsingService&&this.timeParsingService.updateConfig(a.timeParsing);try{console.debug("[DataflowOrchestrator][updateSettings] fileMetadataInheritance =",a.fileMetadataInheritance),this.augmentor.updateSettings({fileMetadataInheritance:a.fileMetadataInheritance})}catch(I){console.warn("[DataflowOrchestrator] Failed to sync settings to Augmentor",I)}if((v=a==null?void 0:a.fileSource)!=null&&v.enabled&&!this.fileSource){this.fileSource=new ff(this.app,a.fileSource,this.fileFilterManager),this.fileSource.initialize();try{a!=null&&a.taskStatuses&&this.fileSource.syncStatusMappingFromSettings(a.taskStatuses)}catch(I){console.warn("[DataflowOrchestrator] Failed to sync FileSource status mapping on settings create",I)}}else!((w=a==null?void 0:a.fileSource)!=null&&w.enabled)&&this.fileSource?(this.fileSource.cleanup(),this.fileSource=null):this.fileSource&&(a!=null&&a.fileSource)&&this.fileSource.updateConfig(a.fileSource);if(this.fileSource&&(a!=null&&a.taskStatuses))try{this.fileSource.syncStatusMappingFromSettings(a.taskStatuses)}catch(I){console.warn("[DataflowOrchestrator] Failed to sync FileSource status mapping on settings update",I)}try{let I=(x=this.workerOrchestrator)==null?void 0:x.taskWorkerManager;I&&I.updateSettings({preferMetadataFormat:a.preferMetadataFormat,customDateFormats:a.customDateFormats,fileMetadataInheritance:a.fileMetadataInheritance,projectConfig:a.projectConfig,ignoreHeading:a.ignoreHeading,focusHeading:a.focusHeading,projectTagPrefix:a.projectTagPrefix,contextTagPrefix:a.contextTagPrefix,areaTagPrefix:a.areaTagPrefix})}catch(I){console.warn("[DataflowOrchestrator] Failed to sync parser settings to TaskWorkerManager on settings update",I)}let t=!1;if(a!=null&&a.fileFilter&&(this.fileFilterManager?this.fileFilterManager.updateConfig(a.fileFilter):this.fileFilterManager=new xc(a.fileFilter),(C=(T=this.repository).setFileFilterManager)==null||C.call(T,this.fileFilterManager),t=!0),t){let I=!!((S=a==null?void 0:a.fileFilter)!=null&&S.enabled),R=Array.isArray((E=a==null?void 0:a.fileFilter)==null?void 0:E.rules)?a.fileFilter.rules.filter(j=>j==null?void 0:j.enabled).length:0;(A=a==null?void 0:a.fileFilter)==null||A.mode,this.lastFileFilterEnabled=I,this.pruneByFilter(),(N=this.restoreByFilterDebounced)==null||N.call(this)}}async pruneByFilter(){var a,e,t,r,i,s;if(this.fileFilterManager)try{let o=Date.now(),l=await this.repository.getIndexedFilePaths(),c=new Map,u=0;for(let h of l)this.fileFilterManager.shouldIncludePath(h,"inline")||c.set(h,[]);if(c.size>0){await this.repository.updateBatch(c,void 0,{persist:!1,forceEmit:!0});for(let h of c.keys())this.suppressedInline.add(h),u++}let p=((e=(a=this.repository).getFileTaskPaths)==null?void 0:e.call(a))||[],m=0;for(let h of p)this.fileFilterManager.shouldIncludePath(h,"file")||(await this.repository.removeFileTask(h),this.suppressedFileTasks.add(h),m++);try{await((r=(t=this.storage).saveMeta)==null?void 0:r.call(t,"filter:suppressedInline",Array.from(this.suppressedInline))),await((s=(i=this.storage).saveMeta)==null?void 0:s.call(i,"filter:suppressedFileTasks",Array.from(this.suppressedFileTasks)))}catch(h){console.warn("[DataflowOrchestrator] persist suppressed meta after prune failed",h)}let f=Date.now()-o;this.suppressedInline.size,this.suppressedFileTasks.size}catch(o){console.warn("[DataflowOrchestrator] pruneByFilter failed",o)}}async restoreByFilter(){var a,e,t,r;if(this.fileFilterManager)try{let i=Date.now(),s=Array.from(this.suppressedInline).filter(f=>this.fileFilterManager.shouldIncludePath(f,"inline")),o=Array.from(this.suppressedFileTasks).filter(f=>this.fileFilterManager.shouldIncludePath(f,"file"));if(s.length===0)try{let f=new Set(await this.repository.getIndexedFilePaths()),h=await((e=(a=this.storage).listAugmentedPaths)==null?void 0:e.call(a))||[],g=await((r=(t=this.storage).listRawPaths)==null?void 0:r.call(t))||[],k=new Set([...h,...g]);s=Array.from(k).filter(y=>!f.has(y)&&this.fileFilterManager.shouldIncludePath(y,"inline")),s.length}catch(f){console.warn("[DataflowOrchestrator] fallback candidate discovery failed",f)}let l=0,c=0,u=0,p=async f=>{var h,g;for(let k of f)try{let y=this.vault.getAbstractFileByPath(k);if(!y){this.suppressedInline.delete(k);continue}let b=await this.storage.loadAugmented(k);if(((h=b==null?void 0:b.data)==null?void 0:h.length)!==void 0){await this.repository.updateFile(k,b.data,void 0,{forceEmit:!0}),l++,this.suppressedInline.delete(k);continue}let v=await this.storage.loadRaw(k);if(v!=null&&v.data){let w=await this.projectResolver.get(k),x=this.metadataCache.getFileCache(y),T={filePath:k,fileMeta:(x==null?void 0:x.frontmatter)||{},projectName:(g=w.tgProject)==null?void 0:g.name,projectMeta:{...w.enhancedMetadata,tgProject:w.tgProject},tasks:v.data},C=await this.augmentor.merge(T);await this.repository.updateFile(k,C),c++,this.suppressedInline.delete(k);continue}await this.processFileImmediate(y,!1),u++,this.suppressedInline.delete(k)}catch(y){try{await this.storage.saveMeta("filter:suppressedInline",Array.from(this.suppressedInline)),await this.storage.saveMeta("filter:suppressedFileTasks",Array.from(this.suppressedFileTasks))}catch(b){console.warn("[DataflowOrchestrator] persist suppressed meta failed",b)}console.warn("[DataflowOrchestrator] restore inline failed",{path:k,e:y})}};for(let f=0;fsetTimeout(g,this.RESTORE_BATCH_INTERVAL_MS))}for(let f of o)try{ke(this.app,se.FILE_UPDATED,{path:f,reason:"restore",timestamp:Date.now()}),this.suppressedFileTasks.delete(f)}catch(h){console.warn("[DataflowOrchestrator] restore file-task emit failed",{path:f,e:h})}let m=Date.now()-i;s.length,o.length}catch(i){console.warn("[DataflowOrchestrator] restoreByFilter failed",i)}}getWorkerStatus(){return this.workerOrchestrator?{enabled:this.workerOrchestrator.isWorkerProcessingEnabled(),metrics:this.workerOrchestrator.getMetrics()}:{enabled:!1}}async parseFile(a,e){let t=a.extension.toLowerCase(),r=[];if(t==="md"){let i=await this.vault.cachedRead(a),s=this.metadataCache.getFileCache(a),o=(s==null?void 0:s.frontmatter)||{},l=Bs(this.plugin.settings.preferMetadataFormat||"tasks",this.plugin);console.debug("[TPB] Parser specialTagPrefixes:",l.specialTagPrefixes);let u=new No(l,this.timeParsingService).parseLegacy(i,a.path,o,void 0,e);r.push(...u);let p=await WH(this.plugin,a.path);r.push(...p)}else if(t==="canvas"){let i=await nn.parseCanvas(this.plugin,a);r.push(...i)}return r}async processBatch(a,e=!0){var s;let t=new Map,r=0;if(e&&a.length>5){`${a.length}`;try{let o=this.workerOrchestrator.taskWorkerManager;o&&o.updateSettings({preferMetadataFormat:this.plugin.settings.preferMetadataFormat||"tasks",customDateFormats:this.plugin.settings.customDateFormats,fileMetadataInheritance:this.plugin.settings.fileMetadataInheritance,projectConfig:this.plugin.settings.projectConfig,ignoreHeading:this.plugin.settings.ignoreHeading,focusHeading:this.plugin.settings.focusHeading,projectTagPrefix:this.plugin.settings.projectTagPrefix,contextTagPrefix:this.plugin.settings.contextTagPrefix,areaTagPrefix:this.plugin.settings.areaTagPrefix}),`${a.length}`;let l=await this.workerOrchestrator.batchParse(a,"normal"),c=new Map;for(let u of a)c.set(u.path,this.projectResolver.get(u.path));for(let[u,p]of l)try{let m=a.find(T=>T.path===u);if(!m)continue;if(!(this.fileFilterManager?this.fileFilterManager.shouldIncludePath(u,"inline"):!0)){t.set(u,[]);continue}let h=await this.vault.adapter.stat(u),g=h==null?void 0:h.mtime,k=await this.vault.cachedRead(m),y=this.storage.storeRaw(u,p,k,g),b=await c.get(u);await y;let v=this.metadataCache.getFileCache(m),w={filePath:u,fileMeta:(v==null?void 0:v.frontmatter)||{},projectName:(s=b==null?void 0:b.tgProject)==null?void 0:s.name,projectMeta:b?{...b.enhancedMetadata||{},tgProject:b.tgProject}:{},tasks:p},x=await this.augmentor.merge(w);t.set(u,x)}catch(m){console.error(`Error processing parsed result for ${u}:`,m)}`${l.size}`}catch(o){console.error("[DataflowOrchestrator] Worker processing failed, falling back to sequential:",o),await this.processBatchSequential(a,t,r)}}else await this.processBatchSequential(a,t,r);r>0&&`${r}`,t.size>0&&(this.lastProcessedSeq=Ht.next(),await this.repository.updateBatch(t,this.lastProcessedSeq))}async processBatchSequential(a,e,t){var i,s;let r=0;for(let o of a)try{let l=o.path,c=await this.vault.adapter.stat(o.path),u=c==null?void 0:c.mtime,p=await this.storage.loadRaw(l),m=await this.vault.cachedRead(o);if(!(this.fileFilterManager?this.fileFilterManager.shouldIncludePath(l,"inline"):!0)){e.set(l,[]),r++;continue}let h=await this.storage.loadAugmented(l);if(p&&h&&this.storage.isRawValid(l,p,m,u)){let g=h.data;e.set(l,g),r++}else if(p&&this.storage.isRawValid(l,p,m,u)){let g=p.data,k=await this.projectResolver.get(l),y=this.metadataCache.getFileCache(o),b={filePath:l,fileMeta:(y==null?void 0:y.frontmatter)||{},projectName:(i=k.tgProject)==null?void 0:i.name,projectMeta:{...k.enhancedMetadata,tgProject:k.tgProject},tasks:g},v=await this.augmentor.merge(b);e.set(l,v),r++}else{let g=await this.projectResolver.get(l),k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(l,"inline"):!0,y=k?await this.parseFile(o,g.tgProject):[];await this.storage.storeRaw(l,y,m,u);let b=this.metadataCache.getFileCache(o),v={filePath:l,fileMeta:(b==null?void 0:b.frontmatter)||{},projectName:(s=g.tgProject)==null?void 0:s.name,projectMeta:{...g.enhancedMetadata,tgProject:g.tgProject},tasks:y},w=await this.augmentor.merge(v);e.set(l,w)}}catch(l){console.error(`Error processing file ${o.path} sequentially:`,l)}return r}async removeFile(a){await this.repository.removeFile(a)}async renameFile(a,e){await this.removeFile(a);let t=this.vault.getAbstractFileByPath(e);t instanceof kv.TFile&&await this.processFile(t)}async rebuild(){await this.repository.clear();let a=this.vault.getMarkdownFiles(),e=this.vault.getFiles().filter(i=>i.extension==="canvas"),t=[...a,...e],r=50;for(let i=0;i["parser","augment","project"].includes(e))&&await this.rebuild()}updateProjectOptions(a){this.projectResolver.updateOptions(a)}getQueryAPI(){return this.queryAPI}getRepository(){return this.repository}async getStats(){let a=await this.queryAPI.getSummary(),e=await this.storage.getStats();return{indexStats:a,storageStats:e,queueSize:this.processingQueue.size,workerStats:this.workerOrchestrator.getMetrics(),sourceStats:this.obsidianSource.getStats()}}getWorkerOrchestrator(){return this.workerOrchestrator}getObsidianSource(){return this.obsidianSource}getAugmentor(){return this.augmentor}async cleanup(){for(let a of this.processingQueue.values())clearTimeout(a);this.processingQueue.clear();for(let a of this.eventRefs)this.app.workspace&&typeof this.app.workspace.offref=="function"&&this.app.workspace.offref(a);this.eventRefs=[],this.obsidianSource.destroy(),this.icsSource.destroy(),this.fileSource&&this.fileSource.destroy(),this.workerOrchestrator.destroy(),await this.repository.cleanup()}};async function zH(n,a,e,t,r){let i=Date.now(),s=new gv(n,a,e,t,r);try{await s.initialize(),`${Date.now()-i}`}catch(o){throw console.error("[createDataflow] Failed to initialize orchestrator:",o),o}return s}function yv(n){var a;return(a=n.settings.enableIndexer)!=null?a:!0}var yf="task-genius-specific-view",vv=class extends sn.ItemView{constructor(e,t){var r;super(e);this.plugin=t;this.twoColumnViewComponents=new Map;this.isDetailsVisible=!1;this.currentViewId="inbox";this.currentSelectedTaskId=null;this.currentSelectedTaskDOM=null;this.lastToggleTimestamp=0;this.currentFilterState=null;this.liveFilterState=null;this.tasks=[];this.debouncedApplyFilter=(0,sn.debounce)(()=>{this.applyCurrentFilter()},100);this.handleKanbanTaskStatusUpdate=async(e,t)=>{`${e}${t}`;let r=this.tasks.find(i=>i.id===e);if(r){let i=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),s=i?Date.now():void 0;if(r.status!==t||r.completed!==i)try{let o={...r,status:t,completed:i};o.metadata&&(o.metadata.completedDate=s),await this.updateTask(r,o),`${e}`}catch(o){console.error(`TaskSpecificView failed to update task status from Kanban callback for task ${e}:`,o)}else`${e}${t}`}else console.warn(`TaskSpecificView could not find task with ID ${e} for Kanban status update.`)};this.tasks=this.plugin.preloadedTasks||[],this.scope=new sn.Scope(this.app.scope),(r=this.scope)==null||r.register(null,"escape",i=>{i.preventDefault(),i.stopPropagation()})}getState(){return{...super.getState(),viewId:this.currentViewId,project:this.currentProject,filterState:this.liveFilterState}}async setState(e,t){if(await super.setState(e,t),e&&typeof e=="object"){let r=e;this.currentViewId=(r==null?void 0:r.viewId)||"inbox",this.currentProject=r==null?void 0:r.project,this.liveFilterState=(r==null?void 0:r.filterState)||null,this.currentFilterState=(r==null?void 0:r.filterState)||null,this.rootContainerEl?this.currentViewId&&this.switchView(this.currentViewId,this.currentProject):this.app.workspace.onLayoutReady(()=>{this.currentViewId&&this.switchView(this.currentViewId,this.currentProject)})}}getViewType(){return yf}getDisplayText(){return gt(this.plugin,this.currentViewId).name}getIcon(){return gt(this.plugin,this.currentViewId).icon}async onOpen(){var i,s,o;this.contentEl.toggleClass("task-genius-view",!0),this.contentEl.toggleClass("task-genius-specific-view",!0),this.rootContainerEl=this.contentEl.createDiv({cls:"task-genius-container no-sidebar"});let e=(0,sn.debounce)(async()=>{await this.loadTasks(!1,!1)},150);if(yv(this.plugin)&&this.plugin.dataflowOrchestrator){let{on:l,Events:c}=await Promise.resolve().then(()=>(Mi(),T0));this.registerEvent(l(this.app,c.CACHE_READY,async()=>{await this.loadTasksFast(!0)})),this.registerEvent(l(this.app,c.TASK_CACHE_UPDATED,e))}else this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",e));this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(l,c)=>{c===this.leaf.id&&(this.liveFilterState=l,this.currentFilterState=l,this.debouncedApplyFilter())})),this.initializeComponents();let r=this.leaf.getViewState().state;this.currentViewId=(r==null?void 0:r.viewId)||"inbox",this.currentProject=r==null?void 0:r.project,this.currentFilterState=(r==null?void 0:r.filterState)||null,this.switchView(this.currentViewId,this.currentProject),await this.loadTasksFast(!0),this.loadTasksWithSyncInBackground(),this.toggleDetailsVisibility(!1),this.createActionButtons(),(i=this.leaf.tabHeaderStatusContainerEl)==null||i.empty(),(s=this.leaf.tabHeaderEl)==null||s.toggleClass("task-genius-tab-header",!0),this.tabActionButton=(o=this.leaf.tabHeaderStatusContainerEl)==null?void 0:o.createEl("span",{cls:"task-genius-action-btn"},l=>{new sn.ExtraButtonComponent(l).setIcon("check-square").setTooltip(d("Capture")).onClick(()=>{new ya(this.plugin.app,this.plugin,{},!0).open()})}),this.tabActionButton&&this.register(()=>{this.tabActionButton.detach()})}initializeComponents(){this.contentComponent=new Ei(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new On(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Nn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Ln(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new fo(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new jn(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new Hn(this.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Bn(this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitsComponent=new bo(this.plugin,this.rootContainerEl),this.addChild(this.habitsComponent),this.habitsComponent.containerEl.hide(),this.detailsComponent=new hn(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new vo(this,this.app,this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.viewComponentManager),this.setupComponentEvents()}createActionButtons(){this.detailsToggleBtn=this.addAction("panel-right-dashed",d("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible),this.addAction("notebook-pen",d("Capture"),()=>{new ya(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",d("Filter"),e=>{if($H.Platform.isDesktop){let t=new Ol(this.plugin.app,this.leaf.id,this.plugin);t.onClose=r=>{},this.app.workspace.onLayoutReady(()=>{setTimeout(()=>{if(this.liveFilterState&&t.taskFilterComponent){let r=this.liveFilterState;t.taskFilterComponent.loadFilterState(r)}},100)}),t.showAtPosition({x:e.clientX,y:e.clientY})}else{let t=new Rl(this.plugin.app,this.leaf.id,this.plugin);t.filterCloseCallback=r=>{},t.open(),this.liveFilterState&&t.taskFilterComponent&&setTimeout(()=>{let r=this.liveFilterState;t.taskFilterComponent.loadFilterState(r)},100)}})}onPaneMenu(e){return this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&(e.addItem(t=>{t.setTitle(d("Reset Filter")),t.setIcon("reset"),t.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(t=>{t.setTitle(d("Settings")),t.setIcon("gear"),t.onClick(()=>{this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("view-settings")})}),e}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.rootContainerEl.toggleClass("details-visible",e),this.rootContainerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?d("Hide Details"):d("Show Details"))),e||(this.currentSelectedTaskId=null)}setupComponentEvents(){this.detailsComponent.onTaskToggleComplete=e=>this.toggleTaskCompletion(e),this.detailsComponent.onTaskEdit=e=>this.editTask(e),this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.updateTask(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)}}switchView(e,t,r=!1){var l,c;this.currentViewId=e,this.currentProject=t,this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(u=>{u.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitsComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let i=null,s=e,o=gt(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new Vn(this.rootContainerEl,this.app,this.plugin,u,e);this.addChild(p),p.onTaskSelected=m=>{this.handleTaskSelection(m)},p.onTaskCompleted=m=>{this.toggleTaskCompletion(m)},p.onTaskContextMenu=(m,f)=>{this.handleTaskContextMenu(m,f)},this.twoColumnViewComponents.set(e,p)}i=this.twoColumnViewComponents.get(e)}else{let u=(c=o.specificConfig)==null?void 0:c.viewType;if(this.viewComponentManager.isSpecialView(e))i=this.viewComponentManager.showComponent(e);else if(u==="forecast"||e==="forecast")i=this.forecastComponent;else switch(e){case"habit":i=this.habitsComponent;break;case"tags":i=this.tagsComponent;break;case"projects":i=this.projectsComponent;break;case"review":i=this.reviewComponent;break;case"inbox":case"flagged":default:i=this.contentComponent,s=e;break}}if(i){if(`${e}`,i.constructor.name,i.containerEl.show(),typeof i.setTasks=="function"){let u={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(u.advancedFilter=this.currentFilterState);let p=_t(this.tasks,e,this.plugin,u);e==="forecast"&&(p=p.filter(m=>!m.badge)),i.setTasks(p,this.tasks,r)}if(typeof i.updateTasks=="function"){let u={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(u.advancedFilter=this.currentFilterState),i.updateTasks(_t(this.tasks,e,this.plugin,u))}typeof i.setViewMode=="function"&&(`${e}${s}${t}`,i.setViewMode(s,t)),this.twoColumnViewComponents.forEach(u=>{if(u&&typeof u.setTasks=="function"&&u.getViewId()===e){let p={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(p.advancedFilter=this.currentFilterState);let m=_t(this.tasks,u.getViewId(),this.plugin,p);u.getViewId()==="forecast"&&(m=m.filter(f=>!f.badge)),u.setTasks(m)}}),e==="review"&&typeof i.refreshReviewSettings=="function"&&i.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);this.updateHeaderDisplay(),this.handleTaskSelection(null)}getActiveComponent(){var r,i;if(!this.currentViewId)return null;let e=gt(this.plugin,this.currentViewId);if(((r=e.specificConfig)==null?void 0:r.viewType)==="twocolumn")return this.twoColumnViewComponents.get(this.currentViewId);if(this.viewComponentManager.isSpecialView(this.currentViewId))return null;if(((i=e.specificConfig)==null?void 0:i.viewType)==="forecast"||this.currentViewId==="forecast")return this.forecastComponent;switch(this.currentViewId){case"habit":return this.habitsComponent;case"tags":return this.tagsComponent;case"projects":return this.projectsComponent;case"review":return this.reviewComponent;case"inbox":case"flagged":default:return this.contentComponent}}updateHeaderDisplay(){let e=gt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new sn.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(d("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let c of Object.keys(o)){let u=o[c];Array.from(l.values()).includes(u)||l.set(c,u)}for(let[c,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{Pt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:c}),p.onClick(()=>{!t.completed&&u.toLowerCase()==="x"?t.metadata.completedDate=Date.now():t.metadata.completedDate=void 0,this.updateTask(t,{...t,status:u,completed:u.toLowerCase()==="x"})})})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.editTask(t)})}),r.showAtMouseEvent(e)}handleTaskSelection(e){if(e){let t=Date.now(),r=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}r>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}async loadTasks(e=!1,t=!1){if(!this.plugin.dataflowOrchestrator)console.warn("[TaskSpecificView] Dataflow orchestrator not available, waiting for initialization..."),this.tasks=[];else try{let r=this.plugin.dataflowOrchestrator.getQueryAPI();this.tasks=await r.getAllTasks(),`${this.tasks.length}`}catch(r){console.error("[TaskSpecificView] Error loading tasks from dataflow:",r),this.tasks=[]}t||(this.currentViewId&&this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons())}async loadTasksFast(e=!1){if(!this.plugin.dataflowOrchestrator)console.warn("[TaskSpecificView] Dataflow orchestrator not available for fast load"),this.tasks=[];else try{let t=this.plugin.dataflowOrchestrator.getQueryAPI();this.tasks=await t.getAllTasks(),`${this.tasks.length}`}catch(t){console.error("[TaskSpecificView] Error loading tasks fast from dataflow:",t),this.tasks=[]}e||(this.currentViewId&&this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons())}async loadTasksWithSyncInBackground(){var e;try{let t=(e=this.plugin.dataflowOrchestrator)==null?void 0:e.getQueryAPI();if(!t){console.warn("[TaskSpecificView] QueryAPI not available");return}let r=await t.getAllTasks();(r.length!==this.tasks.length||r.length===0)&&(this.tasks=r,`${this.tasks.length}`)}catch(t){console.warn("Background task sync failed:",t)}}applyCurrentFilter(){this.liveFilterState,this.currentFilterState,this.loadTasks()}async triggerViewUpdate(){this.currentViewId?(this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons()):console.warn("TaskSpecificView: Cannot trigger update, currentViewId is not set.")}updateActionButtons(){let e=this.leaf.view.containerEl.querySelector(".view-action.task-filter-reset");e&&e.remove(),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&this.addAction("reset",d("Reset Filter"),()=>{this.resetCurrentFilter()}).addClass("task-filter-reset")}async toggleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata&&(t.metadata.completedDate=Date.now());let i=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==i&&(t.status=i)}else{t.metadata&&(t.metadata.completedDate=void 0);let i=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=i)}if(!this.plugin.writeAPI){console.error("WriteAPI not available");return}let r=await this.plugin.writeAPI.updateTask({taskId:t.id,updates:t});if(!r.success)throw new Error(r.error||"Failed to update task")}extractChangedFields(e,t){var l,c;let r={};e.content!==t.content&&(r.content=t.content),e.completed!==t.completed&&(r.completed=t.completed),e.status!==t.status&&(r.status=t.status);let i={},s=!1,o=["priority","project","tags","context","dueDate","startDate","scheduledDate","completedDate","recurrence"];for(let u of o){let p=(l=e.metadata)==null?void 0:l[u],m=(c=t.metadata)==null?void 0:c[u];if(u==="tags"){let f=p||[],h=m||[];(f.length!==h.length||!f.every((g,k)=>g===h[k]))&&(i.tags=h,s=!0)}else p!==m&&(i[u]=m,s=!0)}return s&&(r.metadata=i),r}async handleTaskUpdate(e,t){if(!this.plugin.writeAPI){console.error("WriteAPI not available");return}e.content,t.content,e.id,t.id;try{let r=this.extractChangedFields(e,t),i=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:r});if(!i.success)throw new Error(i.error||"Failed to update task");i.task&&(t=i.task),`${t.id}`;let s=this.tasks.findIndex(o=>o.id===e.id);s!==-1?(this.tasks=[...this.tasks],this.tasks[s]=t):console.warn("Updated task not found in local list, might reload."),this.switchView(this.currentViewId,this.currentProject,!0),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t))}catch(r){throw console.error("Failed to update task:",r),r}}async updateTask(e,t){if(!this.plugin.writeAPI)throw console.error("WriteAPI not available for updateTask"),new Error("WriteAPI not available");try{let r=this.extractChangedFields(e,t),i=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:r});if(!i.success)throw new Error(i.error||"Failed to update task");i.task&&(t=i.task),`${t.id}`;let s=this.tasks.findIndex(o=>o.id===e.id);return s!==-1?(this.tasks=[...this.tasks],this.tasks[s]=t):console.warn("Updated task not found in local list, might reload."),this.switchView(this.currentViewId,this.currentProject,!0),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),t}catch(r){throw console.error(`Failed to update task ${e.id}:`,r),r}}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;let i=this.app.workspace.getLeavesOfType("markdown").find(s=>s.view.file===t)||this.app.workspace.getLeaf("tab");await i.openFile(t,{active:!0,eState:{line:e.line}}),this.app.workspace.setActiveLeaf(i,{focus:!0})}async onClose(){this.twoColumnViewComponents.forEach(e=>{this.removeChild(e)}),this.twoColumnViewComponents.clear(),this.unload(),this.rootContainerEl&&(this.rootContainerEl.empty(),this.rootContainerEl.detach())}onSettingsUpdate(){this.triggerViewUpdate(),this.updateHeaderDisplay()}resetCurrentFilter(){this.liveFilterState=null,this.currentFilterState=null,this.app.saveLocalStorage(`task-genius-view-filter-${this.leaf.id}`,null),this.applyCurrentFilter(),this.updateActionButtons()}};var Cc=class extends ws.Component{constructor(e,t){super();this.currentViewId="inbox";this.isCollapsed=!1;this.onViewModeChanged=()=>{};this.onProjectSelected=()=>{};this.containerEl=e.createDiv({cls:"task-sidebar"}),this.plugin=t,this.app=t.app}onload(){this.navEl=this.containerEl.createDiv({cls:"sidebar-nav"}),this.renderSidebarItems()}renderSidebarItems(){if(this.navEl.empty(),!this.plugin.settings.viewConfiguration){console.warn("SidebarComponent: viewConfiguration not initialized in settings.");return}let e=[],t=[];this.plugin.settings.viewConfiguration.forEach(r=>{r.visible&&(r.region==="bottom"?t.push(r):e.push(r))}),e.forEach(r=>{this.createNavItem(r.id,d(r.name),r.icon)}),e.length>0&&t.length>0&&this.createNavSpacer(),t.forEach(r=>{this.createNavItem(r.id,d(r.name),r.icon)}),this.updateActiveItem()}createNavSpacer(){this.navEl.createDiv({cls:"sidebar-nav-spacer"})}createNavItem(e,t,r){let i=this.navEl.createDiv({cls:"sidebar-nav-item",attr:{"data-view-id":e}}),s=i.createSpan({cls:"nav-item-icon"});return(0,ws.setIcon)(s,r),i.createSpan({cls:"nav-item-label",text:t}),this.registerDomEvent(i,"click",()=>{this.setViewMode(e),this.onViewModeChanged&&this.onViewModeChanged(e)}),this.registerDomEvent(i,"contextmenu",o=>{var c;let l=new ws.Menu;l.addItem(u=>{u.setTitle(d("Open in new tab")).onClick(()=>{this.app.workspace.getLeaf().setViewState({type:yf,state:{viewId:e}})})}).addItem(u=>{u.setTitle(d("Open settings")).onClick(async()=>{if(e==="habit"){this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id),setTimeout(()=>{this.plugin.settingTab&&this.plugin.settingTab.openTab("habit")},100);return}let p=this.plugin.settings.viewConfiguration.find(f=>f.id===e);if(!p)return;let m=(p==null?void 0:p.filterRules)||{};new cs(this.app,this.plugin,p,m,(f,h)=>{let g=this.plugin.settings.viewConfiguration.findIndex(k=>k.id===f.id);g!==-1&&(this.plugin.settings.viewConfiguration[g]={...f,filterRules:h},this.plugin.saveSettings(),this.updateActiveItem())}).open()})}).addItem(u=>{u.setTitle(d("Copy view")).onClick(()=>{let p=this.plugin.settings.viewConfiguration.find(m=>m.id===e);p&&new cs(this.app,this.plugin,null,null,(m,f)=>{this.plugin.settings.viewConfiguration.some(h=>h.id===m.id)?new ws.Notice(d("Error: View ID already exists.")):(this.plugin.settings.viewConfiguration.push({...m,filterRules:f}),this.plugin.saveSettings(),this.renderSidebarItems(),new ws.Notice(d("View copied successfully: ")+m.name))},p).open()})}).addItem(u=>{u.setTitle(d("Hide in sidebar")).onClick(()=>{let p=this.plugin.settings.viewConfiguration.find(m=>m.id===e);p&&(p.visible=!1,this.plugin.saveSettings(),this.renderSidebarItems())})}),((c=this.plugin.settings.viewConfiguration.find(u=>u.id===e))==null?void 0:c.type)==="custom"&&l.addItem(u=>{u.setTitle(d("Delete")).setWarning(!0).onClick(()=>{this.plugin.settings.viewConfiguration=this.plugin.settings.viewConfiguration.filter(p=>p.id!==e),this.plugin.saveSettings(),this.renderSidebarItems()})}),l.showAtMouseEvent(o)}),i}setViewMode(e){this.currentViewId=e,this.updateActiveItem()}updateActiveItem(){this.navEl.querySelectorAll(".sidebar-nav-item").forEach(t=>{t.getAttribute("data-view-id")===this.currentViewId?t.addClass("is-active"):t.removeClass("is-active")})}setCollapsed(e){this.isCollapsed=e,this.containerEl.toggleClass("collapsed",e)}onunload(){this.containerEl.empty()}};q();var Nl="task-genius-view",vf=class n extends bt.ItemView{constructor(e,t){var r;super(e);this.plugin=t;this.twoColumnViewComponents=new Map;this.isSidebarCollapsed=!1;this.isDetailsVisible=!1;this.currentViewId="inbox";this.currentSelectedTaskId=null;this.currentSelectedTaskDOM=null;this.lastToggleTimestamp=0;this.tasks=[];this.currentFilterState=null;this.liveFilterState=null;this.debouncedApplyFilter=(0,bt.debounce)(()=>{this.applyCurrentFilter()},400);this.handleKanbanTaskStatusUpdate=async(e,t)=>{`${e}${t}`;let r=this.tasks.find(i=>i.id===e);if(r){let i=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),s=i?Date.now():void 0;if(r.status!==t||r.completed!==i)try{await this.updateTask(r,{...r,status:t,completed:i,metadata:{...r.metadata,completedDate:s}}),`${e}`}catch(o){console.error(`TaskView failed to update task status from Kanban callback for task ${e}:`,o)}else`${e}${t}`}else console.warn(`TaskView could not find task with ID ${e} for Kanban status update.`)};this.tasks=this.plugin.preloadedTasks||[],this.scope=new bt.Scope(this.app.scope),(r=this.scope)==null||r.register(null,"escape",i=>{i.preventDefault(),i.stopPropagation()})}getViewType(){return Nl}getDisplayText(){return gt(this.plugin,this.currentViewId).name}getIcon(){return gt(this.plugin,this.currentViewId).icon}async onOpen(){var s;this.contentEl.toggleClass("task-genius-view",!0),this.rootContainerEl=this.contentEl.createDiv({cls:"task-genius-container"});let e=(0,bt.debounce)(async()=>{await this.loadTasks(!1,!0),this.switchView(this.currentViewId,void 0,!0)},500);if(yv(this.plugin)&&this.plugin.dataflowOrchestrator){let{on:o,Events:l}=await Promise.resolve().then(()=>(Mi(),T0));this.registerEvent(o(this.app,l.CACHE_READY,async()=>{await this.loadTasksFast(!0)})),this.registerEvent(o(this.app,l.TASK_CACHE_UPDATED,e))}else this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",e));this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(o,l)=>{l&&!l.startsWith("view-config-")&&l!=="global-filter"?(this.liveFilterState=o,this.currentFilterState=o):l||(this.liveFilterState=o,this.currentFilterState=o),this.debouncedApplyFilter()})),this.registerEvent(this.app.workspace.on("task-genius:view-config-changed",o=>{var c,u;try{this.sidebarComponent&&typeof this.sidebarComponent.renderSidebarItems=="function"&&this.sidebarComponent.renderSidebarItems()}catch(p){console.warn("Failed to render sidebar items on view-config-changed:",p)}o!=null&&o.viewId&&o.viewId===this.currentViewId&&this.switchView(this.currentViewId,void 0,!0);let l=this.plugin.settings.viewConfiguration.find(p=>p.id===this.currentViewId);if(!(l!=null&&l.visible)){let p=(c=this.plugin.settings.viewConfiguration.find(m=>m.visible))==null?void 0:c.id;p&&p!==this.currentViewId&&(this.currentViewId=p,(u=this.sidebarComponent)==null||u.setViewMode(this.currentViewId),this.switchView(this.currentViewId,void 0,!0))}}));let t=this.app.loadLocalStorage("task-genius-view-filter");t&&typeof t.rootCondition=="string"&&Array.isArray(t.filterGroups)?(this.liveFilterState=t,this.currentFilterState=t):(this.liveFilterState=null,this.currentFilterState=null),this.currentFilterState,this.initializeComponents();let r=this.app.loadLocalStorage("task-genius:view-mode"),i=this.plugin.settings.viewConfiguration.find(o=>o.id===r&&o.visible)?r:((s=this.plugin.settings.viewConfiguration.find(o=>o.visible))==null?void 0:s.id)||"inbox";this.currentViewId=i,this.sidebarComponent.setViewMode(this.currentViewId),await this.loadTasksFast(!1),this.tasks.length>0?this.switchView(this.currentViewId):(await this.loadTasksWithSyncInBackground(),this.switchView(this.currentViewId)),this.currentFilterState,this.currentFilterState&&this.applyCurrentFilter(),this.toggleDetailsVisibility(!1),this.createActionButtons(),this.leaf.tabHeaderStatusContainerEl.empty(),this.leaf.tabHeaderEl.toggleClass("task-genius-tab-header",!0),this.tabActionButton=this.leaf.tabHeaderStatusContainerEl.createEl("span",{cls:"task-genius-action-btn"},o=>{new bt.ExtraButtonComponent(o).setIcon("notebook-pen").setTooltip(d("Capture")).onClick(()=>{new ya(this.plugin.app,this.plugin,{},!0).open()})}),this.register(()=>{this.tabActionButton.detach()}),this.checkAndCollapseSidebar(),this.plugin.settings.viewConfiguration.forEach(o=>{this.plugin.addCommand({id:`switch-view-${o.id}`,name:o.name,checkCallback:l=>{if(l)return!0;let c=this.plugin.app.workspace.getLeavesOfType(Nl);return c.length>0?(this.plugin.app.workspace.revealLeaf(c[0]),c[0].view.switchView(o.id)):this.plugin.activateTaskView().then(()=>{let u=this.plugin.app.workspace.getActiveViewOfType(n);u&&u.switchView(o.id)}),!0}})}),this.updateActionButtons()}onResize(){this.checkAndCollapseSidebar()}checkAndCollapseSidebar(){this.leaf.width===0||this.leaf.height===0||this.leaf.width<768&&(this.isSidebarCollapsed=!0,this.sidebarComponent.setCollapsed(!0))}initializeComponents(){this.sidebarComponent=new Cc(this.rootContainerEl,this.plugin),this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.createSidebarToggle(),this.contentComponent=new Ei(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{e.content,t.content,await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new On(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{e.content,t.content,await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Nn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Ln(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new fo(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new jn(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new Hn(this.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Bn(this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitComponent=new bo(this.plugin,this.rootContainerEl),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new hn(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new vo(this,this.app,this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this),onTaskUpdate:this.handleTaskUpdate.bind(this)}),this.addChild(this.viewComponentManager),this.setupComponentEvents()}createSidebarToggle(){var t;let e=(t=this.headerEl.find(".view-header-nav-buttons"))==null?void 0:t.createDiv({cls:"panel-toggle-container"});if(!e){console.error("Could not find .view-header-nav-buttons to add sidebar toggle.");return}this.sidebarToggleBtn=e.createDiv({cls:"panel-toggle-btn"}),new bt.ButtonComponent(this.sidebarToggleBtn).setIcon("panel-left-dashed").setTooltip(d("Toggle Sidebar")).setClass("clickable-icon").onClick(()=>{this.toggleSidebar()})}createActionButtons(){this.detailsToggleBtn=this.addAction("panel-right-dashed",d("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible),this.addAction("notebook-pen",d("Capture"),()=>{new ya(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",d("Filter"),e=>{if(bt.Platform.isDesktop){let t=new Ol(this.plugin.app,void 0,this.plugin);t.onClose=r=>{},this.app.workspace.onLayoutReady(()=>{setTimeout(()=>{if(this.liveFilterState&&t.taskFilterComponent){let r=this.liveFilterState;t.taskFilterComponent.loadFilterState(r)}},100)}),t.showAtPosition({x:e.clientX,y:e.clientY})}else{let t=new Rl(this.plugin.app,this.leaf.id,this.plugin);t.filterCloseCallback=r=>{},t.open(),this.liveFilterState&&t.taskFilterComponent&&setTimeout(()=>{let r=this.liveFilterState;t.taskFilterComponent.loadFilterState(r)},100)}}),this.updateActionButtons()}applyCurrentFilter(){this.liveFilterState,this.currentFilterState,this.triggerViewUpdate()}onPaneMenu(e){let t=this.plugin.settings.filterConfig.savedConfigs;return t&&t.length>0&&(e.addItem(r=>{r.setTitle(d("Saved Filters")),r.setIcon("filter");let i=r.setSubmenu();t.forEach(s=>{i.addItem(o=>{o.setTitle(s.name),o.setIcon("search"),s.description&&o.setSection(s.description),o.onClick(()=>{this.applySavedFilter(s)})})}),i.addSeparator(),i.addItem(s=>{s.setTitle(d("Manage Saved Filters")),s.setIcon("settings"),s.onClick(()=>{new fl(this.app,this.plugin,"load",void 0,void 0,l=>{this.applySavedFilter(l)}).open()})})}),e.addSeparator()),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&(e.addItem(r=>{r.setTitle(d("Reset Filter")),r.setIcon("reset"),r.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(r=>{r.setTitle(d("Settings")),r.setIcon("gear"),r.onClick(()=>{this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("view-settings")})}).addSeparator().addItem(r=>{r.setTitle(d("Reindex")),r.setIcon("rotate-ccw"),r.onClick(async()=>{new Ba(this.plugin,{title:d("Reindex"),message:d("Are you sure you want to force reindex all tasks?"),confirmText:d("Reindex"),cancelText:d("Cancel"),onConfirm:async i=>{if(i)try{if(this.plugin.dataflowOrchestrator)await this.plugin.dataflowOrchestrator.rebuild();else throw new Error("Dataflow orchestrator not available")}catch(s){console.error("Failed to force reindex tasks:",s),new bt.Notice(d("Failed to force reindex tasks"))}}}).open()})}),e}toggleSidebar(){this.isSidebarCollapsed=!this.isSidebarCollapsed,this.rootContainerEl.toggleClass("sidebar-collapsed",this.isSidebarCollapsed),this.sidebarComponent.setCollapsed(this.isSidebarCollapsed)}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.rootContainerEl.toggleClass("details-visible",e),this.rootContainerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?d("Hide Details"):d("Show Details"))),e||(this.currentSelectedTaskId=null)}setupComponentEvents(){this.detailsComponent.onTaskToggleComplete=e=>this.toggleTaskCompletion(e),this.detailsComponent.onTaskEdit=e=>this.editTask(e),this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.updateTask(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)},this.sidebarComponent.onProjectSelected=e=>{this.switchView("projects",e)},this.sidebarComponent.onViewModeChanged=e=>{this.switchView(e)}}switchView(e,t,r=!1){var l,c;this.currentViewId=e,this.sidebarComponent.setViewMode(e),this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(u=>{u.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let i=null,s=e,o=gt(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new Vn(this.rootContainerEl,this.app,this.plugin,u,e);this.addChild(p),p.onTaskSelected=m=>{this.handleTaskSelection(m)},p.onTaskCompleted=m=>{this.toggleTaskCompletion(m)},p.onTaskContextMenu=(m,f)=>{this.handleTaskContextMenu(m,f)},this.twoColumnViewComponents.set(e,p)}i=this.twoColumnViewComponents.get(e)}else{let u=(c=o.specificConfig)==null?void 0:c.viewType;if(this.viewComponentManager.isSpecialView(e))i=this.viewComponentManager.showComponent(e);else if(u==="forecast"||e==="forecast")i=this.forecastComponent;else switch(e){case"habit":i=this.habitComponent;break;case"tags":i=this.tagsComponent;break;case"projects":i=this.projectsComponent;break;case"review":i=this.reviewComponent;break;case"inbox":case"flagged":default:i=this.contentComponent,s=e;break}}if(i){if(`${e}`,i.constructor.name,i.containerEl.show(),typeof i.setTasks=="function"){let u={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(u.advancedFilter=this.currentFilterState),this.tasks;let p=_t(this.tasks,e,this.plugin,u);e==="forecast"&&(p=p.filter(m=>!m.badge)),p.length,i.setTasks(p,this.tasks,r)}if(typeof i.updateTasks=="function"){let u={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(u.advancedFilter=this.currentFilterState),i.updateTasks(_t(this.tasks,e,this.plugin,u))}typeof i.setViewMode=="function"&&(`${e}${s}${t}`,i.setViewMode(s,t)),this.twoColumnViewComponents.forEach(u=>{if(u&&typeof u.setTasks=="function"&&u.getViewId()===e){let p={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(p.advancedFilter=this.currentFilterState);let m=_t(this.tasks,u.getViewId(),this.plugin,p);u.getViewId()==="forecast"&&(m=m.filter(f=>!f.badge)),u.setTasks(m)}}),e==="review"&&typeof i.refreshReviewSettings=="function"&&i.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);if(this.app.saveLocalStorage("task-genius:view-mode",e),this.updateHeaderDisplay(),this.currentSelectedTaskId){let u=this.tasks.find(p=>p.id===this.currentSelectedTaskId);u?this.detailsComponent.showTaskDetails(u):this.handleTaskSelection(null)}this.leaf.tabHeaderInnerIconEl&&((0,bt.setIcon)(this.leaf.tabHeaderInnerIconEl,this.getIcon()),this.leaf.tabHeaderInnerTitleEl.setText(this.getDisplayText()),this.titleEl.setText(this.getDisplayText()))}updateHeaderDisplay(){let e=gt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new bt.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(d("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let c of Object.keys(o)){let u=o[c];Array.from(l.values()).includes(u)||l.set(c,u)}for(let[c,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{Pt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:c}),p.onClick(async()=>{let m={...t,status:u,completed:u.toLowerCase()==="x"};!t.completed&&u.toLowerCase()==="x"?m.metadata.completedDate=Date.now():t.completed&&u.toLowerCase()!=="x"&&(m.metadata.completedDate=void 0),await this.updateTask(t,m)})})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("pencil"),i.onClick(()=>{this.editTask(t)})}).addSeparator().addItem(i=>{i.setTitle(d("Delete Task")),i.setIcon("trash"),i.onClick(()=>{this.confirmAndDeleteTask(e,t)})}),r.showAtMouseEvent(e)}handleTaskSelection(e){if(e){let t=Date.now(),r=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}r>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}async loadTasks(e=!1,t=!1){if(!this.plugin.dataflowOrchestrator)console.warn("[TaskView] Dataflow orchestrator not available, waiting for initialization..."),this.tasks=[];else try{let r=this.plugin.dataflowOrchestrator.getQueryAPI();this.tasks=await r.getAllTasks(),`${this.tasks.length}`}catch(r){console.error("[TaskView] Error loading tasks from dataflow:",r),this.tasks=[]}t||await this.triggerViewUpdate()}async loadTasksFast(e=!1){if(!this.plugin.dataflowOrchestrator)console.warn("[TaskView] Dataflow orchestrator not available for fast load"),this.tasks=[];else try{let t=this.plugin.dataflowOrchestrator.getQueryAPI();this.tasks=await t.getAllTasks(),`${this.tasks.length}`}catch(t){console.error("[TaskView] Error loading tasks fast from dataflow:",t),this.tasks=[]}e||await this.triggerViewUpdate()}async loadTasksWithSyncInBackground(){var e;try{let t=(e=this.plugin.dataflowOrchestrator)==null?void 0:e.getQueryAPI();if(!t){console.warn("[TaskView] QueryAPI not available");return}let r=await t.getAllTasks();(r.length!==this.tasks.length||r.length===0)&&(this.tasks=r,`${this.tasks.length}`)}catch(t){console.warn("Background task sync failed:",t)}}async triggerViewUpdate(){var t,r;try{this.sidebarComponent&&typeof this.sidebarComponent.renderSidebarItems=="function"&&this.sidebarComponent.renderSidebarItems()}catch(i){console.warn("Failed to refresh sidebar items:",i)}let e=this.plugin.settings.viewConfiguration.find(i=>i.id===this.currentViewId);if(!(e!=null&&e.visible)){let i=(t=this.plugin.settings.viewConfiguration.find(s=>s.visible))==null?void 0:t.id;i&&i!==this.currentViewId&&(this.currentViewId=i,(r=this.sidebarComponent)==null||r.setViewMode(this.currentViewId))}this.switchView(this.currentViewId),this.updateActionButtons()}updateActionButtons(){let e=this.leaf.view.containerEl.querySelector(".view-action.task-filter-reset");e&&e.remove(),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&this.addAction("reset",d("Reset Filter"),()=>{this.resetCurrentFilter()}).addClass("task-filter-reset")}async toggleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata.completedDate=Date.now();let r=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==r&&(t.status=r)}else{t.metadata.completedDate=void 0;let r=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=r)}await this.updateTask(e,t)}extractChangedFields(e,t){var l,c;let r={};e.content!==t.content&&(r.content=t.content),e.completed!==t.completed&&(r.completed=t.completed),e.status!==t.status&&(r.status=t.status);let i={},s=!1,o=["priority","project","tags","context","dueDate","startDate","scheduledDate","completedDate","recurrence"];for(let u of o){let p=(l=e.metadata)==null?void 0:l[u],m=(c=t.metadata)==null?void 0:c[u];if(u==="tags"){let f=p||[],h=m||[];(f.length!==h.length||!f.every((g,k)=>g===h[k]))&&(i.tags=h,s=!0)}else p!==m&&(i[u]=m,s=!0)}return s&&(r.metadata=i),r}async handleTaskUpdate(e,t){if(!this.plugin.writeAPI){console.error("WriteAPI not available");return}e.content,t.content,e.id,t.id;try{let r=this.extractChangedFields(e,t),i=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:r});if(!i.success)throw new Error(i.error||"Failed to update task");i.task&&(t=i.task),`${t.id}`;let s=this.tasks.findIndex(o=>o.id===e.id);s!==-1?(this.tasks=[...this.tasks],this.tasks[s]=t):console.warn("Updated task not found in local list, might reload."),this.switchView(this.currentViewId,void 0,!0),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t))}catch(r){throw console.error("Failed to update task:",r),r}}async updateTask(e,t){if(!this.plugin.writeAPI)throw console.error("WriteAPI not available for updateTask"),new Error("WriteAPI not available");try{let r=this.extractChangedFields(e,t),i=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:r});if(!i.success)throw new Error(i.error||"Failed to update task");i.task&&(t=i.task),`${t.id}`;let s=this.tasks.findIndex(o=>o.id===e.id);return s!==-1?(this.tasks=[...this.tasks],this.tasks[s]=t):console.warn("Updated task not found in local list, might reload."),this.switchView(this.currentViewId,void 0,!0),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),t}catch(r){throw console.error(`Failed to update task ${e.id}:`,r),r}}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!(t instanceof bt.TFile))return;await this.app.workspace.getLeaf(!1).openFile(t,{eState:{line:e.line}})}async confirmAndDeleteTask(e,t){if(t.metadata&&t.metadata.children&&t.metadata.children.length>0){let i=t.metadata.children.length,s=new bt.Menu;s.addItem(o=>{o.setTitle(d("Delete task only")),o.setIcon("trash"),o.onClick(()=>{this.deleteTask(t,!1)})}),s.addItem(o=>{o.setTitle(d("Delete task and all subtasks")),o.setIcon("trash-2"),o.onClick(()=>{this.deleteTask(t,!0)})}),s.addSeparator(),s.addItem(o=>{o.setTitle(d("Cancel")),o.onClick(()=>{})}),s.showAtMouseEvent(e)}else new Ba(this.plugin,{title:d("Delete Task"),message:d("Are you sure you want to delete this task?"),confirmText:d("Delete"),cancelText:d("Cancel"),onConfirm:s=>{s&&this.deleteTask(t,!1)}}).open()}async deleteTask(e,t){var r;if(!this.plugin.writeAPI){console.error("WriteAPI not available for deleteTask"),new bt.Notice(d("Failed to delete task"));return}try{let i=await this.plugin.writeAPI.deleteTask({taskId:e.id,deleteChildren:t});if(i.success){new bt.Notice(d("Task deleted"));let s=this.tasks.findIndex(o=>o.id===e.id);if(s!==-1&&(this.tasks=[...this.tasks],this.tasks.splice(s,1),t&&((r=e.metadata)!=null&&r.children)))for(let o of e.metadata.children){let l=this.tasks.findIndex(c=>c.id===o);l!==-1&&this.tasks.splice(l,1)}this.currentSelectedTaskId===e.id&&this.handleTaskSelection(null),this.switchView(this.currentViewId,void 0,!0)}else new bt.Notice(d("Failed to delete task")+": "+(i.error||"Unknown error"))}catch(i){console.error("Error deleting task:",i),new bt.Notice(d("Failed to delete task")+": "+i.message)}}async onClose(){this.twoColumnViewComponents.forEach(e=>{this.removeChild(e)}),this.twoColumnViewComponents.clear(),this.unload(),this.rootContainerEl.empty(),this.rootContainerEl.detach()}onSettingsUpdate(){var r;typeof this.sidebarComponent.renderSidebarItems=="function"?this.sidebarComponent.renderSidebarItems():console.warn("TaskView: SidebarComponent does not have renderSidebarItems method.");let e=this.plugin.settings.viewConfiguration.find(i=>i.id===this.currentViewId),t=this.twoColumnViewComponents.get(this.currentViewId);t&&((r=e==null?void 0:e.specificConfig)==null?void 0:r.viewType)!=="twocolumn"&&(t.unload(),this.twoColumnViewComponents.delete(this.currentViewId)),this.switchView(this.currentViewId,void 0,!0),this.updateHeaderDisplay()}resetCurrentFilter(){this.liveFilterState=null,this.currentFilterState=null,this.app.saveLocalStorage("task-genius-view-filter",null),this.applyCurrentFilter(),this.updateActionButtons()}applySavedFilter(e){e.name,this.liveFilterState=JSON.parse(JSON.stringify(e.filterState)),this.currentFilterState=JSON.parse(JSON.stringify(e.filterState)),this.liveFilterState,this.app.saveLocalStorage("task-genius-view-filter",this.liveFilterState),this.applyCurrentFilter(),this.updateActionButtons(),new bt.Notice(d("Filter applied: ")+e.name)}};var Ze=require("obsidian");q();gd();var Sc="tg-timeline-sidebar-view",bv={due:4,scheduled:3,start:2,completed:1},bf=class extends Ze.ItemView{constructor(e,t){super(e);this.markdownEditor=null;this.currentDate=(0,Ze.moment)();this.events=[];this.isAutoScrolling=!1;this.isInputCollapsed=!1;this.tempEditorContent="";this.isAnimating=!1;this.collapsedHeaderEl=null;this.quickInputHeaderEl=null;this.debouncedRender=(0,Ze.debounce)(async()=>{await this.loadEvents(),this.renderTimeline()},300);this.debouncedScroll=(0,Ze.debounce)(this.handleScroll.bind(this),100);this.plugin=t}getViewType(){return Sc}getDisplayText(){return d("Timeline")}getIcon(){return"calendar-clock"}async onOpen(){this.containerEl=this.contentEl,this.containerEl.empty(),this.containerEl.addClass("timeline-sidebar-container"),this.isInputCollapsed=this.plugin.settings.timelineSidebar.quickInputCollapsed,this.createHeader(),this.createTimelineArea(),this.createQuickInputArea(),await this.loadEvents(),this.renderTimeline(),setTimeout(()=>{this.scrollToToday()},100),this.registerEvent(this.plugin.app.vault.on("modify",()=>{this.debouncedRender()})),this.registerEvent(this.plugin.app.workspace.on("task-genius:task-cache-updated",()=>{this.debouncedRender()}))}onClose(){return this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),Promise.resolve()}createHeader(){let e=this.containerEl.createDiv("timeline-header");e.createDiv("timeline-title").setText(d("Timeline"));let r=e.createDiv("timeline-controls"),i=r.createDiv("timeline-btn timeline-today-btn");(0,Ze.setIcon)(i,"calendar"),i.setAttribute("aria-label",d("Go to today")),this.registerDomEvent(i,"click",()=>{this.scrollToToday()});let s=r.createDiv("timeline-btn timeline-refresh-btn");(0,Ze.setIcon)(s,"refresh-cw"),s.setAttribute("aria-label",d("Refresh")),this.registerDomEvent(s,"click",()=>{this.loadEvents(),this.renderTimeline()});let o=r.createDiv("timeline-btn timeline-focus-btn");(0,Ze.setIcon)(o,"focus"),o.setAttribute("aria-label",d("Focus on today")),this.registerDomEvent(o,"click",()=>{this.toggleFocusMode()})}createTimelineArea(){this.timelineContainerEl=this.containerEl.createDiv("timeline-content"),this.registerDomEvent(this.timelineContainerEl,"scroll",()=>{this.debouncedScroll()})}createQuickInputArea(){var u,p;this.quickInputContainerEl=this.containerEl.createDiv("timeline-quick-input"),this.collapsedHeaderEl=this.quickInputContainerEl.createDiv("quick-input-header-collapsed"),this.createCollapsedHeader(),this.quickInputHeaderEl=this.quickInputContainerEl.createDiv("quick-input-header");let e=this.quickInputHeaderEl.createDiv("quick-input-header-left"),t=e.createDiv("quick-input-collapse-btn");(0,Ze.setIcon)(t,"chevron-down"),t.setAttribute("aria-label",d("Collapse quick input")),this.registerDomEvent(t,"click",()=>{this.toggleInputCollapse()}),e.createDiv("quick-input-title").setText(d("Quick Capture"));let i=this.quickInputHeaderEl.createDiv("quick-input-target-info");this.updateTargetInfo(i);let s=this.quickInputContainerEl.createDiv("quick-input-editor");setTimeout(()=>{var m,f;this.markdownEditor=pn(this.app,s,{placeholder:d("What do you want to do today?"),onEnter:(h,g,k)=>g?(this.handleQuickCapture(),!0):!1,onEscape:()=>{this.markdownEditor&&this.markdownEditor.set("",!1)},onChange:()=>{}}),this.isInputCollapsed||(f=(m=this.markdownEditor)==null?void 0:m.editor)==null||f.focus()},50);let o=this.quickInputContainerEl.createDiv("quick-input-actions"),l=o.createEl("button",{cls:"quick-capture-btn mod-cta",text:d("Capture")});this.registerDomEvent(l,"click",()=>{this.handleQuickCapture()});let c=o.createEl("button",{cls:"quick-modal-btn",text:d("More options")});this.registerDomEvent(c,"click",()=>{new ya(this.app,this.plugin,{},!0).open()}),this.isInputCollapsed?(this.quickInputContainerEl.addClass("is-collapsed"),(u=this.collapsedHeaderEl)==null||u.show()):(p=this.collapsedHeaderEl)==null||p.hide()}async loadEvents(){let e=[];if(this.plugin.dataflowOrchestrator)try{e=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks()}catch(o){console.error("Failed to get tasks from dataflow:",o)}this.events=[];let t=this.plugin.settings.timelineSidebar.showCompletedTasks,r=this.plugin.settings.taskStatuses.abandoned.split("|");(t?e:e.filter(o=>!o.completed&&!r.includes(o.status))).filter(o=>{var p,m,f;let l=((p=o.source)==null?void 0:p.type)==="ics",c=l?o:null,u=((f=(m=c==null?void 0:c.icsEvent)==null?void 0:m.source)==null?void 0:f.showType)==="badge";return!(l&&u)}).forEach(o=>{this.extractDatesFromTask(o).forEach(({date:c,type:u})=>{let p={id:`${o.id}-${u}`,content:o.content,time:c,type:"task",status:o.status,task:o,isToday:(0,Ze.moment)(c).isSame((0,Ze.moment)(),"day"),timeInfo:this.createTimeInfoFromTask(o,c,u)};this.events.push(p)})}),this.events.sort((o,l)=>l.time.getTime()-o.time.getTime())}deduplicateDatesByPriority(e){if(e.length<=1)return e;let t=new Map;e.forEach(i=>{let s=(0,Ze.moment)(i.date).format("YYYY-MM-DD");t.has(s)||t.set(s,[]),t.get(s).push(i)});let r=[];return t.forEach(i=>{if(i.length===1)r.push(i[0]);else{let s=i.reduce((o,l)=>{let c=bv[l.type]||0,u=bv[o.type]||0;return c>u?l:o});r.push(s)}}),r}createTimeInfoFromTask(e,t,r){let i=e.metadata,s=i==null?void 0:i.timeComponents,o=i==null?void 0:i.enhancedDates;if(!s)return{primaryTime:t,isRange:!1,displayFormat:"date-time"};let l,c;switch(r){case"start":l=s.startTime,s.endTime&&(o!=null&&o.endDateTime)&&(c=o.endDateTime);break;case"due":l=s.dueTime;break;case"scheduled":l=s.scheduledTime;break;default:l=void 0}if(l||(s.startTime?(l=s.startTime,s.endTime&&(o!=null&&o.endDateTime)&&(c=o.endDateTime)):s.dueTime?l=s.dueTime:s.scheduledTime&&(l=s.scheduledTime)),!l)return{primaryTime:t,isRange:!1,displayFormat:"date-time"};let u=new Date(t);u.setHours(l.hour,l.minute,l.second||0,0);let p=l.isRange||!!c;if(l.isRange&&!c&&l.rangePartner){let m=new Date(t);m.setHours(l.rangePartner.hour,l.rangePartner.minute,l.rangePartner.second||0,0),c=m}return{primaryTime:u,endTime:c,isRange:p,timeComponent:l,displayFormat:p?"range":"time-only"}}extractDatesFromTask(e){let t=e.metadata,r=t==null?void 0:t.timeComponents,i=t==null?void 0:t.enhancedDates;if(e.completed){if(e.metadata.dueDate)return[{date:(i==null?void 0:i.dueDateTime)||new Date(e.metadata.dueDate),type:"due"}];if(e.metadata.completedDate)return[{date:new Date(e.metadata.completedDate),type:"completed"}]}let s=[];if(e.metadata.dueDate){let l=(i==null?void 0:i.dueDateTime)||new Date(e.metadata.dueDate);s.push({date:l,type:"due"})}if(e.metadata.scheduledDate){let l=(i==null?void 0:i.scheduledDateTime)||new Date(e.metadata.scheduledDate);s.push({date:l,type:"scheduled"})}if(e.metadata.startDate){let l=(i==null?void 0:i.startDateTime)||new Date(e.metadata.startDate);s.push({date:l,type:"start"})}if(s.length>0)return[s.reduce((c,u)=>{let p=bv[u.type]||0,m=bv[c.type]||0;return p>m?u:c})];let o=[];return e.metadata.completedDate&&o.push({date:new Date(e.metadata.completedDate),type:"completed"}),this.deduplicateDatesByPriority(o)}renderTimeline(){if(this.timelineContainerEl.empty(),this.events.length===0){this.timelineContainerEl.createDiv("timeline-empty").setText(d("No events to display"));return}let e=this.groupEventsByDate();for(let[t,r]of e)this.renderDateGroup(t,r)}groupEventsByDate(){let e=new Map;return this.events.forEach(t=>{let r=(0,Ze.moment)(t.time).format("YYYY-MM-DD");e.has(r)||e.set(r,[]),e.get(r).push(t)}),e}renderDateGroup(e,t){let r=this.timelineContainerEl.createDiv("timeline-date-group"),i=(0,Ze.moment)(e),s=i.isSame((0,Ze.moment)(),"day"),o=i.isSame((0,Ze.moment)().subtract(1,"day"),"day"),l=i.isSame((0,Ze.moment)().add(1,"day"),"day");s&&r.addClass("is-today");let c=r.createDiv("timeline-date-header"),u=i.format("MMM DD, YYYY");s?u=d("Today"):o?u=d("Yesterday"):l&&(u=d("Tomorrow")),c.setText(u);let p=c.createSpan("timeline-date-relative");!s&&!o&&!l&&p.setText(i.fromNow());let m=r.createDiv("timeline-events-list"),f=this.sortEventsByTime(t);this.renderGroupedEvents(m,f)}renderEventTime(e,t){var r,i,s;if((r=t.timeInfo)!=null&&r.timeComponent){let{timeComponent:o,isRange:l,endTime:c}=t.timeInfo;if(l&&c){let u=this.formatTimeComponent(o),p=(0,Ze.moment)(c).format("HH:mm");e.setText(`${u}-${p}`),e.addClass("timeline-event-time-range");try{let m=(i=t.timeInfo)==null?void 0:i.primaryTime;if(m&&c.getTime()>m.getTime()){let f=Math.round((c.getTime()-m.getTime())/6e4),h=f>=60?`${Math.floor(f/60)}h${f%60?` ${f%60}m`:""}`:`${f}m`;e.setAttribute("data-duration",h)}}catch(m){}}else e.setText(this.formatTimeComponent(o)),e.addClass("timeline-event-time-single")}else{let o=t.content||"",l=/([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?\s*[-~~]\s*([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?/,c=o.match(l);if(c){let g=`${c[1].padStart(2,"0")}:${c[2]}${c[3]?`:${c[3]}`:""}`,k=`${c[4].padStart(2,"0")}:${c[5]}${c[6]?`:${c[6]}`:""}`;e.setText(`${g}-${k}`),e.addClass("timeline-event-time-range");return}let u=/(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)/,p=o.match(u);if(p){let g=parseInt(p[1],10),k=p[2],y=p[3],b=p[4].toUpperCase();b==="PM"&&g!==12&&(g+=12),b==="AM"&&g===12&&(g=0);let v=`${g.toString().padStart(2,"0")}:${k}${y?`:${y}`:""}`;e.setText(v),e.addClass("timeline-event-time-single");return}let m=/([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?/,f=o.match(m);if(f){let g=`${f[1].padStart(2,"0")}:${f[2]}${f[3]?`:${f[3]}`:""}`;e.setText(g),e.addClass("timeline-event-time-single");return}let h=((s=t.timeInfo)==null?void 0:s.primaryTime)||t.time;e.setText((0,Ze.moment)(h).format("HH:mm")),e.addClass("timeline-event-time-default")}}formatTimeComponent(e){let t=e.hour.toString().padStart(2,"0"),r=e.minute.toString().padStart(2,"0");if(e.second!==void 0){let i=e.second.toString().padStart(2,"0");return`${t}:${r}:${i}`}return`${t}:${r}`}sortEventsByTime(e){return e.sort((t,r)=>{var l,c;let i=((l=t.timeInfo)==null?void 0:l.primaryTime)||t.time,s=((c=r.timeInfo)==null?void 0:c.primaryTime)||r.time,o=i.getTime()-s.getTime();return o!==0?o:t.content.localeCompare(r.content)})}renderGroupedEvents(e,t){let r=[],i=[];t.forEach(s=>{this.hasSpecificTime(s)?r.push(s):i.push(s)}),r.length>0&&this.renderTimedEventsWithGrouping(e,r),i.length>0&&this.renderDateOnlyEvents(e,i)}hasSpecificTime(e){var r,i;if((r=e.timeInfo)!=null&&r.timeComponent)return!0;if(e.content){let s=/(^|[^0-9])([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?/,o=/(^|\s)(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)/;if(s.test(e.content)||o.test(e.content))return!0}let t=((i=e.timeInfo)==null?void 0:i.primaryTime)||e.time;return t.getHours()!==0||t.getMinutes()!==0||t.getSeconds()!==0}renderTimedEventsWithGrouping(e,t){let r=new Map;t.forEach(i=>{var l;let s=((l=i.timeInfo)==null?void 0:l.primaryTime)||i.time,o=this.getTimeGroupKey(s,i);r.has(o)||r.set(o,[]),r.get(o).push(i)});for(let[i,s]of r)s.length===1?this.renderEvent(e,s[0]):this.renderTimeGroup(e,i,s)}getTimeGroupKey(e,t){var r;return(r=t.timeInfo)!=null&&r.timeComponent?this.formatTimeComponent(t.timeInfo.timeComponent):(0,Ze.moment)(e).format("HH:mm")}renderTimeGroup(e,t,r){let i=e.createDiv("timeline-time-group"),s=i.createDiv("timeline-time-group-header"),o=s.createDiv("timeline-time-group-time");o.setText(t),o.addClass("timeline-event-time"),o.addClass("timeline-event-time-group"),s.createDiv("timeline-time-group-count").setText(`${r.length} events`);let c=i.createDiv("timeline-time-group-events");r.forEach(u=>{var k;let p=c.createDiv("timeline-event timeline-event-grouped");p.setAttribute("data-event-id",u.id),(k=u.task)!=null&&k.completed&&p.addClass("is-completed");let m=p.createDiv("timeline-event-content");u.task&&m.createDiv("timeline-event-checkbox").createEl("span",{cls:"status-option-checkbox"},b=>{var w;let v=Pt(((w=u.task)==null?void 0:w.status)||" ",u.task,b);this.registerDomEvent(v,"change",async x=>{x.stopPropagation(),x.preventDefault(),u.task&&await this.toggleTaskCompletion(u.task,u)})});let h=m.createDiv("timeline-event-text").createDiv("timeline-event-content-text");if(u.task){let y=new Lt(this.app,h,u.task.filePath,!0);this.addChild(y);let b=this.app.vault.getFileByPath(u.task.filePath);b instanceof Ze.TFile&&y.setFile(b),y.render(u.content,!0).catch(v=>{console.error("Failed to render markdown in timeline:",v),h.setText(u.content)})}else h.setText(u.content);let g=p.createDiv("timeline-event-actions");if(u.task){let y=g.createDiv("timeline-event-action");(0,Ze.setIcon)(y,"external-link"),y.setAttribute("aria-label",d("Go to task")),this.registerDomEvent(y,"click",()=>{this.goToTask(u.task)})}this.registerDomEvent(p,"click",y=>{let b=y.target;b.closest(".timeline-event-checkbox")||b.closest(".timeline-event-actions")||b.closest('input[type="checkbox"]')||u.task&&this.goToTask(u.task)})})}renderDateOnlyEvents(e,t){if(t.length===0)return;let r=e.createDiv("timeline-date-only-section"),i=r.createDiv("timeline-date-only-header");i.createDiv("timeline-event-time timeline-event-time-date-only").setText("All day"),i.createDiv("timeline-date-only-title").setText(`${t.length} all-day event${t.length>1?"s":""}`),t.forEach(l=>{this.renderEvent(r,l,!1)})}renderEvent(e,t,r=!0){var u;let i=e.createDiv("timeline-event");if(i.setAttribute("data-event-id",t.id),(u=t.task)!=null&&u.completed&&i.addClass("is-completed"),r){let p=i.createDiv("timeline-event-time");this.renderEventTime(p,t)}let s=i.createDiv("timeline-event-content");t.task&&s.createDiv("timeline-event-checkbox").createEl("span",{cls:"status-option-checkbox"},m=>{var h;let f=Pt(((h=t.task)==null?void 0:h.status)||" ",t.task,m);this.registerDomEvent(f,"change",async g=>{g.stopPropagation(),g.preventDefault(),t.task&&await this.toggleTaskCompletion(t.task,t)})});let l=s.createDiv("timeline-event-text").createDiv("timeline-event-content-text");if(t.task){let p=new Lt(this.app,l,t.task.filePath,!0);this.addChild(p);let m=this.app.vault.getFileByPath(t.task.filePath);m instanceof Ze.TFile&&p.setFile(m),p.render(t.content,!0).catch(f=>{console.error("Failed to render markdown in timeline:",f),l.setText(t.content)})}else l.setText(t.content);let c=i.createDiv("timeline-event-actions");if(t.task){let p=c.createDiv("timeline-event-action");(0,Ze.setIcon)(p,"external-link"),p.setAttribute("aria-label",d("Go to task")),this.registerDomEvent(p,"click",()=>{this.goToTask(t.task)})}this.registerDomEvent(i,"click",p=>{let m=p.target;m.closest(".timeline-event-checkbox")||m.closest(".timeline-event-actions")||m.closest('input[type="checkbox"]')||t.task&&this.goToTask(t.task)})}async goToTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;if(e.metadata.sourceType==="canvas"){let s=this.app.workspace.getLeaf("tab");await s.openFile(t),this.app.workspace.setActiveLeaf(s,{focus:!0});return}let i=this.app.workspace.getLeavesOfType("markdown").find(s=>s.view.file===t)||this.app.workspace.getLeaf("tab");await i.openFile(t,{active:!0,eState:{line:e.line}}),this.app.workspace.setActiveLeaf(i,{focus:!0})}async handleQuickCapture(){var t;if(!this.markdownEditor)return;let e=this.markdownEditor.value.trim();if(e)try{let r=this.plugin.settings.quickCapture;await mn(this.app,e,r),this.markdownEditor.set("",!1),await this.loadEvents(),this.renderTimeline(),this.plugin.settings.timelineSidebar.quickInputCollapseOnCapture?this.toggleInputCollapse():(t=this.markdownEditor.editor)==null||t.focus()}catch(r){console.error("Failed to capture:",r)}}scrollToToday(){let e=this.timelineContainerEl.querySelector(".timeline-date-group.is-today");e&&(this.isAutoScrolling=!0,e.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{this.isAutoScrolling=!1},1e3))}toggleFocusMode(){this.timelineContainerEl.toggleClass("focus-mode",!this.timelineContainerEl.hasClass("focus-mode"))}handleScroll(){if(this.isAutoScrolling)return;let{scrollTop:e,scrollHeight:t,clientHeight:r}=this.timelineContainerEl;e+r>=t-100&&this.loadMoreEvents()}async loadMoreEvents(){}async toggleTaskCompletion(e,t){let r={...e,completed:!e.completed};if(r.completed){r.metadata.completedDate=Date.now();let i=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];r.status!==i&&(r.status=i)}else{r.metadata.completedDate=void 0;let i=this.plugin.settings.taskStatuses.notStarted||" ";r.status.toLowerCase()==="x"&&(r.status=i)}if(!this.plugin.writeAPI){console.error("WriteAPI not available");return}try{let i=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:r});if(!i.success){console.error("Failed to toggle task completion:",i.error);return}if(t){t.task=r,t.status=r.status;let s=this.timelineContainerEl.querySelector(`[data-event-id="${t.id}"]`);s&&(r.completed?s.addClass("is-completed"):s.removeClass("is-completed"))}await this.loadEvents(),this.renderTimeline()}catch(i){console.error("Failed to toggle task completion:",i),t&&(t.task=e,t.status=e.status)}}updateTargetInfo(e){e.empty();let t=this.plugin.settings.quickCapture,r="";if(t.targetType==="daily-note"){let s=`${(0,Ze.moment)().format(t.dailyNoteSettings.format)}.md`,o=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${s}`:s;r=`${d("to")} ${o}`}else r=`${d("to")} ${t.targetFile||"Quick Capture.md"}`;t.targetHeading&&(r+=` \u2192 ${t.targetHeading}`),e.setText(r),e.setAttribute("title",r)}async triggerViewUpdate(){await this.loadEvents(),this.renderTimeline()}async refreshTimeline(){await this.loadEvents(),this.renderTimeline()}createCollapsedHeader(){if(!this.collapsedHeaderEl)return;let e=this.collapsedHeaderEl.createDiv("collapsed-expand-btn");if((0,Ze.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",d("Expand quick input")),this.registerDomEvent(e,"click",()=>{this.toggleInputCollapse()}),this.collapsedHeaderEl.createDiv("collapsed-title").setText(d("Quick Capture")),this.plugin.settings.timelineSidebar.quickInputShowQuickActions){let r=this.collapsedHeaderEl.createDiv("collapsed-quick-actions"),i=r.createDiv("collapsed-quick-capture");(0,Ze.setIcon)(i,"plus"),i.setAttribute("aria-label",d("Quick capture")),this.registerDomEvent(i,"click",()=>{this.isInputCollapsed&&(this.toggleInputCollapse(),setTimeout(()=>{var o,l;(l=(o=this.markdownEditor)==null?void 0:o.editor)==null||l.focus()},350))});let s=r.createDiv("collapsed-more-options");(0,Ze.setIcon)(s,"more-horizontal"),s.setAttribute("aria-label",d("More options")),this.registerDomEvent(s,"click",()=>{new ya(this.app,this.plugin,{},!0).open()})}}toggleInputCollapse(){this.isAnimating||(this.isAnimating=!0,this.isInputCollapsed=!this.isInputCollapsed,this.plugin.settings.timelineSidebar.quickInputCollapsed=this.isInputCollapsed,this.plugin.saveSettings(),this.isInputCollapsed?this.handleCollapseEditor():this.handleExpandEditor(),setTimeout(()=>{this.isAnimating=!1},this.plugin.settings.timelineSidebar.quickInputAnimationDuration))}handleCollapseEditor(){var t;this.markdownEditor&&(this.tempEditorContent=this.markdownEditor.value),this.quickInputContainerEl.addClass("is-collapsing"),this.quickInputContainerEl.addClass("is-collapsed"),setTimeout(()=>{var r;(r=this.collapsedHeaderEl)==null||r.show(),this.quickInputContainerEl.removeClass("is-collapsing")},50);let e=(t=this.quickInputHeaderEl)==null?void 0:t.querySelector(".quick-input-collapse-btn");e&&((0,Ze.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",d("Expand quick input")))}handleExpandEditor(){var t,r;(t=this.collapsedHeaderEl)==null||t.hide(),this.quickInputContainerEl.addClass("is-expanding"),this.quickInputContainerEl.removeClass("is-collapsed"),this.markdownEditor&&this.tempEditorContent&&(this.markdownEditor.set(this.tempEditorContent,!1),this.tempEditorContent=""),setTimeout(()=>{var i,s;this.quickInputContainerEl.removeClass("is-expanding"),(s=(i=this.markdownEditor)==null?void 0:i.editor)==null||s.focus()},50);let e=(r=this.quickInputHeaderEl)==null?void 0:r.querySelector(".quick-input-collapse-btn");e&&((0,Ze.setIcon)(e,"chevron-down"),e.setAttribute("aria-label",d("Collapse quick input")))}};function wv(){return` `}function xo(n){switch(n){case"notStarted":return` `;case"inProgress":return` `;case"planned":return` `;case"completed":return` `;case"abandoned":return` `}}var Dc=require("obsidian");var xv=require("obsidian");q();var Tv=class extends xv.Modal{constructor(a,e,t){super(a),this.reward=e,this.onChoose=t}onOpen(){let{contentEl:a}=this;if(a.empty(),this.modalEl.toggleClass("reward-modal",!0),a.addClass("reward-modal-content"),this.setTitle("\u{1F389} "+d("You've Earned a Reward!")+" \u{1F389}"),a.createEl("p",{text:d("Your reward:")+" "+this.reward.name,cls:"reward-name"}),this.reward.imageUrl){let e=a.createDiv({cls:"reward-image-container"});if(this.reward.imageUrl.startsWith("http"))e.createEl("img",{attr:{src:this.reward.imageUrl},cls:"reward-image"});else{let t=this.app.vault.getFileByPath(this.reward.imageUrl);t?e.createEl("img",{attr:{src:this.app.vault.getResourcePath(t)},cls:"reward-image"}):e.createEl("p",{text:`(${d("Image not found:")} ${this.reward.imageUrl})`,cls:"reward-image-error"})}}a.createEl("div",{cls:"reward-spacer"}),new xv.Setting(a).addButton(e=>e.setButtonText(d("Claim Reward")).setCta().onClick(()=>{this.onChoose(!0),this.close()})).addButton(e=>e.setButtonText(d("Skip")).onClick(()=>{this.onChoose(!1),this.close()}))}onClose(){let{contentEl:a}=this;a.empty()}};var Cv=class extends Dc.Component{constructor(a){super(),this.plugin=a,this.app=a.app,this.settings=a.settings.rewards,this.registerEvent(this.app.workspace.on("task-genius:task-completed",e=>{this.triggerReward(e)}))}async triggerReward(a){var r;if(!this.settings.enableRewards||!((r=this.settings.rewardItems)!=null&&r.length))return;let e=this.getEligibleRewards(a);if(!e.length)return;let t=this.drawReward(e);t&&this.showRewardModal(t)}getEligibleRewards(a){return this.settings.rewardItems.filter(e=>{if(e.inventory!==-1&&e.inventory<=0)return!1;if(e.condition&&e.condition.trim())try{if(!this.evaluateCondition(e.condition,a))return!1}catch(t){return console.error(`RewardManager: Error evaluating condition "${e.condition}" for reward "${e.name}":`,t),!1}return!0})}evaluateCondition(a,e){if(!a||!a.trim())return!0;let t=a;return xk(t,e)}drawReward(a){var s;let e=new Map(this.settings.occurrenceLevels.map(o=>[o.name,o.chance])),t=0,r=[];for(let o of a){let l=(s=e.get(o.occurrence))!=null?s:0;l>0&&(r.push({reward:o,weight:l}),t+=l)}if(t<=0)return console.warn("RewardManager: No rewards could be drawn as total weight is zero. Check occurrence levels and chances."),null;let i=Math.random()*t;for(let{reward:o,weight:l}of r){if(i0?r[r.length-1].reward:null}showRewardModal(a){if(this.settings.showRewardType==="notice"){new Dc.Notice(`\u{1F389} ${a.name}!`,0),this.acceptReward(a);return}new Tv(this.app,a,e=>{e?(this.acceptReward(a),new Dc.Notice(`\u{1F389} ${a.name}!`)):new Dc.Notice(`Skipped reward: ${a.name}`)}).open()}async acceptReward(a){if(a.inventory===-1)return;let e=this.settings.rewardItems.findIndex(t=>t.id===a.id);if(e!==-1){let t=this.plugin.settings.rewards.rewardItems[e].inventory;t>0?(this.plugin.settings.rewards.rewardItems[e].inventory--,await this.plugin.saveSettings(),`${a.name}${this.plugin.settings.rewards.rewardItems[e].inventory}`):t!==-1&&console.warn(`RewardManager: Attempted to accept reward ${a.name} with inventory ${t}`)}else console.error(`RewardManager: Could not find accepted reward with id ${a.id} in settings to update inventory.`)}updateSettings(){this.settings=this.plugin.settings.rewards}};var Ll=require("obsidian"),fa=Oe(N0());Mi();var ln=n=>n!=null&&n!=="",L0=n=>(n!=null?n:"").toString().trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-"),Sv=class extends Ll.Component{constructor(e){super();this.habits=[];this.plugin=e,this.dateInheritanceService=new gc(e.app,e.app.vault,e.app.metadataCache)}async onload(){var t;await this.initializeHabits(),((t=this.plugin.settings)==null?void 0:t.enableIndexer)?(this.registerEvent(ta(this.plugin.app,se.TASK_CACHE_UPDATED,async r=>{try{let i=(r==null?void 0:r.changedFiles)||[];if(!i.length)return;for(let s of i){if(!s||s.includes(":"))continue;let o=this.plugin.app.vault.getAbstractFileByPath(s);if(!o||!this.isDailyNote(o))continue;let l=this.plugin.app.metadataCache.getFileCache(o);l&&this.updateHabitCompletions(o,l)}}catch(i){console.warn("[HabitManager] Failed to handle TASK_CACHE_UPDATED for habits",i)}})),this.registerEvent(ta(this.plugin.app,se.FILE_UPDATED,({path:r,reason:i})=>{try{i==="delete"&&typeof r=="string"&&this.isDailyNotePath(r)&&this.handleDailyNoteDeletedByPath(r)}catch(s){console.warn("[HabitManager] Failed to handle FILE_UPDATED(delete) for habits",s)}}))):(this.registerEvent(this.plugin.app.metadataCache.on("changed",(r,i,s)=>{this.isDailyNote(r)&&this.updateHabitCompletions(r,s)})),this.registerEvent(this.plugin.app.vault.on("delete",r=>{r instanceof Ll.TFile&&this.isDailyNote(r)&&this.handleDailyNoteDeleted(r)})))}async initializeHabits(){let e=await this.getDailyNotes(),t=await this.processHabits(e);this.habits=t,this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits)}convertBaseHabitsToHabitProps(e){return e.map(t=>{switch(t.type){case"daily":{let r=t;return{id:r.id,name:r.name,description:r.description,icon:r.icon,property:ln(r.property)?r.property:L0(r.name),type:r.type,completionText:r.completionText,completions:{}}}case"count":{let r=t;return{id:r.id,name:r.name,description:r.description,icon:r.icon,property:ln(r.property)?r.property:L0(r.name),type:r.type,min:r.min,max:r.max,notice:r.notice,countUnit:r.countUnit,completions:{}}}case"scheduled":{let r=t;return{id:r.id,name:r.name,description:r.description,icon:r.icon,type:r.type,events:r.events,propertiesMap:r.propertiesMap,completions:{}}}case"mapping":{let r=t;return{id:r.id,name:r.name,description:r.description,icon:r.icon,property:ln(r.property)?r.property:L0(r.name),type:r.type,mapping:r.mapping,completions:{}}}}})}async getDailyNotes(){let e=(0,fa.getAllDailyNotes)();return Object.values(e)}isDailyNote(e){try{return(0,fa.getDateFromFile)(e,"day")!==null}catch(t){return!1}}async processHabits(e){let t=this.plugin.settings.habit.habits,r=this.convertBaseHabitsToHabitProps(t);for(let i of e){if(!this.isDailyNote(i))continue;let s=this.plugin.app.metadataCache.getFileCache(i),o=s==null?void 0:s.frontmatter;if(o){let l=(0,fa.getDateFromFile)(i,"day");if(!l)continue;let c=l.format("YYYY-MM-DD");for(let u of r)switch(u.completions||(u.completions={}),u.type){case"scheduled":let p=u,m=u.propertiesMap||{};p.completions[c]||(p.completions[c]={});for(let[k,y]of Object.entries(m))if(y&&ln(o[y])){let b=o[y];ln(b)&&(p.completions[c][k]=b)}break;case"daily":let f=u;if(u.property&&ln(o[u.property])){let k=o[u.property];f.completionText?k===f.completionText?f.completions[c]=1:f.completions[c]=k:f.completions[c]=k===!0||k==="true";break}break;case"count":let h=u;if(h.property&&ln(o[h.property])){let k=o[h.property],y=Number(k);isNaN(y)||(h.completions[c]=y)}break;case"mapping":let g=u;if(g.property&&ln(o[g.property])){let k=o[g.property],y=Number(k);!isNaN(y)&&g.mapping[y]&&(g.completions[c]=y)}break}}}return r}handleDailyNoteDeleted(e){let t=(0,fa.getDateFromFile)(e,"day");if(!t)return;let r=t.format("YYYY-MM-DD"),i=!1;this.habits=this.habits.map(s=>{let o=JSON.parse(JSON.stringify(s));return o.completions&&o.completions[r]!==void 0&&(delete o.completions[r],i=!0),o}),i&&this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits)}isDailyNotePath(e){try{return!!this.dateInheritanceService.extractDailyNoteDate(e)}catch(t){return!1}}handleDailyNoteDeletedByPath(e){try{let t=this.dateInheritanceService.extractDailyNoteDate(e);if(!t)return;let r=(0,Ll.moment)(t).format("YYYY-MM-DD"),i=!1;this.habits=this.habits.map(s=>{let o=JSON.parse(JSON.stringify(s));return o.completions&&o.completions[r]!==void 0&&(delete o.completions[r],i=!0),o}),i&&this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits)}catch(t){console.warn("[HabitManager] Failed to handle daily note deletion by path",t)}}updateHabitCompletions(e,t){if(!(t!=null&&t.frontmatter))return;let r=(0,fa.getDateFromFile)(e,"day");if(!r)return;let i=r.format("YYYY-MM-DD"),s=!1;if(this._isUpdatingFromToggle){this._isUpdatingFromToggle=!1;return}let o=this.habits.map(l=>{var u,p,m,f,h,g,k,y,b,v,w;let c=JSON.parse(JSON.stringify(l));switch(c.completions||(c.completions={}),c.type){case"scheduled":let x=c,T=c.propertiesMap||{};x.completions[i]||(x.completions[i]={});let C=!1;for(let[j,W]of Object.entries(T))if(W&&ln((u=t.frontmatter)==null?void 0:u[W])){let B=(m=(p=t.frontmatter)==null?void 0:p[W])!=null?m:"";ln(B)&&x.completions[i][j]!==B?(x.completions[i][j]=B,C=!0):!ln(B)&&((f=x.completions[i])==null?void 0:f[j])!==void 0&&(delete x.completions[i][j],C=!0)}else((h=x.completions[i])==null?void 0:h[j])!==void 0&&(delete x.completions[i][j],C=!0);C&&(s=!0);break;case"daily":let S=c,E=!1;if(S.property&&((g=t.frontmatter)==null?void 0:g[S.property])!==void 0&&((k=t.frontmatter)==null?void 0:k[S.property])!==""){E=!0;let j=t.frontmatter[S.property];if(S.completionText){let W=j===S.completionText?1:j;S.completions[i]!==W&&(S.completions[i]=W,s=!0)}else{let W=j===!0||j==="true";S.completions[i]!==W&&(S.completions[i]=W,s=!0)}break}!E&&S.completions[i]!==void 0&&(delete S.completions[i],s=!0);break;case"count":let A=c,N=!1;if(A.property&&((y=t.frontmatter)==null?void 0:y[A.property])!==void 0&&((b=t.frontmatter)==null?void 0:b[A.property])!==""){N=!0;let j=t.frontmatter[A.property],W=Number(j);!isNaN(W)&&A.completions[i]!==W&&(A.completions[i]=W,s=!0);break}!N&&A.completions[i]!==void 0&&(delete A.completions[i],s=!0);break;case"mapping":let I=c,R=!1;if(I.property&&((v=t.frontmatter)==null?void 0:v[I.property])!==void 0&&((w=t.frontmatter)==null?void 0:w[I.property])!==""){R=!0;let j=t.frontmatter[I.property],W=Number(j);!isNaN(W)&&I.mapping[W]&&I.completions[i]!==W&&(I.completions[i]=W,s=!0);break}!R&&I.completions[i]!==void 0&&(delete I.completions[i],s=!0);break}return c});s&&(this.habits=o,this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits))}async updateHabitInObsidian(e,t){let r=this.plugin.app,i=(0,Ll.moment)(t,"YYYY-MM-DD").set("hour",12);if(!i.isValid()){console.error(`Invalid date format provided: ${t}. Expected YYYY-MM-DD.`);return}let s=this.habits.findIndex(l=>l.id===e.id);s!==-1&&(this.habits[s]=JSON.parse(JSON.stringify(e)),this._isUpdatingFromToggle=!0,this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits));let o=null;try{if((0,fa.getAllDailyNotes)(),o=(0,fa.getDailyNote)(i,(0,fa.getAllDailyNotes)()),!o){if(!(0,fa.appHasDailyNotesPluginLoaded)()){console.error("Daily notes plugin is not loaded. Please enable the Daily Notes plugin in Obsidian.");return}if(!(0,fa.getDailyNoteSettings)().folder){console.error("Daily notes folder is not set. Please configure the Daily Notes plugin in Obsidian.");return}try{o=await(0,fa.createDailyNote)(i)}catch(c){console.error("Trying to use obsidian default create daily note function",c),this.plugin.app.commands.executeCommandById("daily-notes"),(0,fa.getAllDailyNotes)(),o=(0,fa.getDailyNote)(i,(0,fa.getAllDailyNotes)())}}}catch(l){console.error("Error getting or creating daily note:",l);return}if(o)try{ke(this.plugin.app,se.WRITE_OPERATION_START,{path:o.path}),await r.fileManager.processFrontMatter(o,l=>{let c=e.completions[t];switch(e.type){case"scheduled":let u=e.propertiesMap||{};for(let[h,g]of Object.entries(u))g&&(typeof c=="object"&&(c==null?void 0:c[h])!==void 0&&(c==null?void 0:c[h])!==""?l[g]=c[h]:delete l[g]);break;case"daily":let p=e;if(p.property){let h=p.property;c!=null?p.completionText&&c===1?l[h]=p.completionText:(p.completionText,l[h]=c):delete l[h]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"count":let m=e;if(m.property){let h=m.property;c!==void 0?l[h]=c:delete l[h]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"mapping":let f=e;if(f.property){let h=f.property;c!==void 0&&typeof c=="number"&&f.mapping[c]?l[h]=c:delete l[h]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break}}),ke(this.plugin.app,se.WRITE_OPERATION_COMPLETE,{path:o.path})}catch(l){console.error(`Error processing frontmatter for ${o.path}:`,l)}else console.warn(`Daily note could not be found or created for date: ${t}`)}};var rB=require("obsidian");var Dv=class extends rB.Component{constructor(e){super();this.styleElement=null;this.STYLE_ID="task-genius-icons-styles";this.BODY_CLASS="task-genius-checkbox";this.plugin=e}async onload(){this.plugin.settings.enableTaskGeniusIcons&&this.enable()}onunload(){this.disable()}enable(){try{this.addBodyClass(),this.injectStyles()}catch(e){console.error("Task Genius: Failed to enable icons:",e)}}disable(){try{this.removeBodyClass(),this.removeStyles()}catch(e){console.error("Task Genius: Failed to disable icons:",e)}}update(){this.plugin.settings.enableTaskGeniusIcons?this.enable():this.disable()}addBodyClass(){document.body.classList.add(this.BODY_CLASS)}removeBodyClass(){document.body.classList.remove(this.BODY_CLASS)}injectStyles(){this.removeStyles();let e=this.generateCSS();this.styleElement=document.createElement("style"),this.styleElement.id=this.STYLE_ID,this.styleElement.textContent=e,document.head.appendChild(this.styleElement)}removeStyles(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null);let e=document.getElementById(this.STYLE_ID);e&&e.remove()}generateCSS(){let e=this.plugin.settings,t=this.parseTaskStatuses(e),r="";for(let i of t){let s=xo(i.status),o=this.extractFillColor(s),l=this.encodeSvgForCSS(s),c=i.status==="completed";for(let u of i.chars)r+=this.generateCSSRuleForChar(u,l,o,c)}return r}parseTaskStatuses(e){let t=[],r={notStarted:"notStarted",inProgress:"inProgress",completed:"completed",abandoned:"abandoned",planned:"planned"};for(let[i,s]of Object.entries(e.taskStatuses)){let o=r[i];if(o){let l=s.split("|");t.push({status:o,chars:l})}}return t}extractFillColor(e){try{let t=e.match(/]*fill="([^"]+)"/);if(t&&t[1]&&t[1]!=="none"&&t[1]!=="currentColor")return t[1];let r=e.match(/]*stroke="([^"]+)"/);if(r&&r[1]&&r[1]!=="none"&&r[1]!=="currentColor")return r[1];let i=e.match(/fill="([^"]+)"/);return i&&i[1]&&i[1]!=="none"&&i[1]!=="currentColor"?i[1]:"var(--text-accent)"}catch(t){return console.error("Task Genius: Failed to extract fill color:",t),"var(--text-accent)"}}encodeSvgForCSS(e){try{return`data:image/svg+xml,${e.replace(/\s+/g," ").trim().replace(/"/g,"'").replace(//g,"%3E").replace(/#/g,"%23").replace(/ /g,"%20")}`}catch(t){return console.error("Task Genius: Failed to encode SVG:",t),""}}generateCSSRuleForChar(e,t,r,i=!0){let s=this.escapeCSSSelector(e);return!i||e===" "?` .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"][type=checkbox] { border: none; } .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"][type=checkbox] { --checkbox-color: ${r}; --checkbox-color-hover: ${r}; background-color: unset; border: none; } .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:after, .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:after, .${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:after { content: ""; top: -1px; inset-inline-start: -1px; position: absolute; width: var(--checkbox-size); height: var(--checkbox-size); display: block; -webkit-mask-position: 52% 52%; -webkit-mask-repeat: no-repeat; -webkit-mask-image: url("${t}"); -webkit-mask-size: 100%; background-color: ${r}; } `:` .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox], .${this.BODY_CLASS} [data-task="${s}"][type=checkbox] { border: none; } .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:checked, .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:checked, .${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:checked { --checkbox-color: ${r}; --checkbox-color-hover: ${r}; background-color: unset; border: none; } .${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:checked:after, .${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:checked:after, .${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:checked:after { -webkit-mask-image: url("${t}"); -webkit-mask-size: 100%; background-color: ${r}; } `}escapeCSSSelector(e){return e===" "?" ":e.replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g,"\\$&")}};var Ev=require("obsidian"),iB=require("@codemirror/state");var C7=(0,Ev.debounce)((n,a)=>{n.workspace.trigger("task-genius:task-completed",a)},200);function nB(n,a){return iB.EditorState.transactionFilter.of(e=>(D7(e,n,a),e))}function S7(n){let a=[],e=0;if(n.changes.iterChanges((i,s,o,l,c)=>{if(e++,i0&&a.push({type:"insert",content:c.toString(),fromA:i,toA:s,fromB:o,toB:l})}),e<=1)return!1;let t=a.filter(i=>i.type==="delete"),r=a.filter(i=>i.type==="insert");if(t.length===0||r.length===0)return!1;for(let i of t)for(let s of r){if(i.content.trim().length<10||s.content.trim().length<10)continue;let o=i.content.split(` `).filter(c=>c.trim()),l=s.content.split(` `).filter(c=>c.trim());if(o.length===l.length&&o.length>0){let c=!0;for(let u=0;u1||n.isUserEvent("input.paste"))return n;if(S7(n))return;let t=/^[\s|\t]*([-*+]|\d+\.)\s+\[[xX]\]/,r=/^[\s|\t]*([-*+]|\d+\.)\s+\[.\]/;n.changes.iterChanges((i,s,o,l,c)=>{var m;if(c.length===0)return;let u=n.newDoc.lineAt(o).number,p=n.newDoc.lineAt(l).number;for(let f=u;f<=p;f++){if(f>n.newDoc.lines)continue;let h=n.newDoc.line(f),g=h.text;if(t.test(g)){let k="",y=!1,b=!1;if(n.changes.iterChanges((v,w,x,T,C)=>{if(vaa.RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},Mf=aa.Facet.define();function uB(n){return[M7(),Mf.of({...P7,...n})]}var B0=aa.Facet.define({combine:n=>n.some(a=>a)});function M7(n){let a=[I7];return n&&n.fixed===!1&&a.push(B0.of(!0)),a}var I7=dB.ViewPlugin.fromClass(class{constructor(n){this.view=n;var a;this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters task-gutter",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(Mf).map(e=>new Mv(n,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!n.state.facet(B0),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),(a=n.contentDOM.parentElement)==null||a.appendChild(this.dom)}update(n){if(this.updateGutters(n)){let a=this.prevViewport,e=n.view.viewport,t=Math.min(a.to,e.to)-Math.max(a.from,e.from);this.syncGutters(t<(e.to-e.from)*.8)}n.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px"),this.view.state.facet(B0)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=n.view.viewport}syncGutters(n){var i,s;let a=this.dom.nextSibling;n&&this.dom.remove();let e=aa.RangeSet.iter(this.view.state.facet(Pv),this.view.viewport.from),t=[],r=this.gutters.map(o=>new W0(o,this.view.viewport,-this.view.documentPadding.top));for(let o of this.view.viewportLineBlocks)if(t.length&&(t=[]),Array.isArray(o.type)){let l=!0;for(let c of o.type)if(c.type==H0.BlockType.Text&&l){V0(e,t,c.from);for(let u of r)u.line(this.view,c,t);l=!1}else if(c.widget)for(let u of r)u.widget(this.view,c)}else if(o.type==H0.BlockType.Text){V0(e,t,o.from);for(let l of r)l.line(this.view,o,t)}else if(o.widget)for(let l of r)l.widget(this.view,o);for(let o of r)o.finish();n&&(a?(i=this.view.contentDOM.parentElement)==null||i.insertBefore(this.dom,a):(s=this.view.contentDOM.parentElement)==null||s.appendChild(this.dom))}updateGutters(n){let a=n.startState.facet(Mf),e=n.state.facet(Mf),t=n.docChanged||n.heightChanged||n.viewportChanged||!aa.RangeSet.eq(n.startState.facet(Pv),n.state.facet(Pv),n.view.viewport.from,n.view.viewport.to);if(a==e)for(let r of this.gutters)r.update(n)&&(t=!0);else{t=!0;let r=[];for(let i of e){let s=a.indexOf(i);s<0?r.push(new Mv(this.view,i)):(this.gutters[s].update(n),r.push(this.gutters[s]))}for(let i of this.gutters)i.dom.remove(),r.indexOf(i)<0&&i.destroy();for(let i of r)this.dom.appendChild(i.dom);this.gutters=r}return t}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove()}},{provide:n=>lB.EditorView.scrollMargins.of(a=>{let e=a.plugin(n);return!e||e.gutters.length==0||!e.fixed?null:a.textDirection==cB.Direction.LTR?{left:e.dom.offsetWidth*a.scaleX}:{right:e.dom.offsetWidth*a.scaleX}})});function sB(n){return Array.isArray(n)?n:[n]}function V0(n,a,e){for(;n.value&&n.from<=e;)n.from==e&&a.push(n.value),n.next()}var W0=class{constructor(a,e,t){this.gutter=a;this.height=t;this.i=0;this.cursor=aa.RangeSet.iter(a.markers,e.from)}addElement(a,e,t){let{gutter:r}=this,i=(e.top-this.height)/a.scaleY,s=e.height/a.scaleY;if(this.i==r.elements.length){let o=new Iv(a,s,i,t);r.elements.push(o),r.dom.appendChild(o.dom)}else r.elements[this.i].update(a,s,i,t);this.height=e.bottom,this.i++}line(a,e,t){let r=[];V0(this.cursor,r,e.from),t.length&&(r=r.concat(t));let i=this.gutter.config.lineMarker(a,e,r);i&&r.unshift(i);let s=this.gutter;r.length==0&&!s.config.renderEmptyElements||this.addElement(a,e,r)}widget(a,e){let t=this.gutter.config.widgetMarker(a,e.widget,e),r=t?[t]:null;for(let i of a.state.facet(E7)){let s=i(a,e.widget,e);s&&(r||(r=[])).push(s)}r&&this.addElement(a,e,r)}finish(){let a=this.gutter;for(;a.elements.length>this.i;){let e=a.elements.pop();a.dom.removeChild(e.dom),e.destroy()}}},Mv=class{constructor(a,e){this.view=a;this.config=e;this.elements=[];this.spacer=null;this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let t in e.domEventHandlers)this.dom.addEventListener(t,r=>{let i=r.target,s;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let l=i.getBoundingClientRect();s=(l.top+l.bottom)/2}else s=r.clientY;let o=a.lineBlockAtHeight(s-a.documentTop);e.domEventHandlers[t](a,o,r)&&r.preventDefault()});this.markers=sB(e.markers(a)),e.initialSpacer&&(this.spacer=new Iv(a,0,0,[e.initialSpacer(a)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(a){let e=this.markers;if(this.markers=sB(this.config.markers(a.view)),this.spacer&&this.config.updateSpacer){let r=this.config.updateSpacer(this.spacer.markers[0],a);r!=this.spacer.markers[0]&&this.spacer.update(a.view,0,0,[r])}let t=a.view.viewport;return!aa.RangeSet.eq(this.markers,e,t.from,t.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(a):!1)}destroy(){for(let a of this.elements)a.destroy()}},Iv=class{constructor(a,e,t,r){this.height=-1;this.above=0;this.markers=[];this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(a,e,t,r)}update(a,e,t,r){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=t&&(this.dom.style.marginTop=(this.above=t)?t+"px":""),A7(this.markers,r)||this.setMarkers(a,r)}setMarkers(a,e){let t="cm-gutterElement",r=this.dom.firstChild;for(let i=0,s=0;;){let o=s,l=ii(o,l,c)||s(o,l,c):s}return t}})}}),If=class extends Ii{constructor(e){super();this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function j0(n,a){return n.state.facet(Pf).formatNumber(a,n.state)}var N8e=Mf.compute([Pf],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(a){return a.state.facet(F7)},lineMarker(a,e,t){return t.some(r=>r.toDOM)?null:new If(j0(a,a.state.doc.lineAt(e.from).number))},widgetMarker:(a,e,t)=>{for(let r of a.state.facet(R7)){let i=r(a,e,t);if(i)return i}return null},lineMarkerChange:a=>a.startState.facet(Pf)!=a.state.facet(Pf),initialSpacer(a){return new If(j0(a,oB(a.state.doc.lines)))},updateSpacer(a,e){let t=j0(e.view,oB(e.view.state.doc.lines));return t==a.number?a:new If(t)},domEventHandlers:n.facet(Pf).domEventHandlers}));function oB(n){let a=9;for(;a{let a=[],e=-1;for(let t of n.selection.ranges){let r=n.doc.lineAt(t.head).from;r>e&&(e=r,a.push(O7.range(r)))}return aa.RangeSet.of(a)});var Nv=require("obsidian");var Fv=require("obsidian");var Ai=require("obsidian");q();var Mc=class extends Ai.Component{constructor(e,t,r,i=!1){super();this.activeTab="overview";this.container=e,this.app=t,this.plugin=r,this.isCompactMode=i}showTask(e){this.task=e,this.container.empty(),this.container.addClass("task-metadata-editor"),this.isCompactMode?this.createTabbedView():this.createFullView()}createTabbedView(){this.createStatusEditor();let e=this.container.createDiv({cls:"tabs-main-container"}),t=e.createEl("nav",{cls:"tabs-navigation"}),r=e.createDiv({cls:"tabs-content"}),i=[{id:"overview",label:d("Overview"),populateFn:this.populateOverviewTabContent.bind(this)},{id:"dates",label:d("Dates"),populateFn:this.populateDatesTabContent.bind(this)},{id:"details",label:d("Details"),populateFn:this.populateDetailsTabContent.bind(this)}],s={},o={};i.forEach(l=>{let c=t.createEl("button",{text:l.label,cls:"tab-button"});c.dataset.tab=l.id,s[l.id]=c;let u=r.createDiv({cls:"tab-pane"});u.id=`tab-pane-${l.id}`,o[l.id]=u,l.populateFn(u),this.registerDomEvent(c,"click",()=>{this.activeTab=l.id,this.updateActiveTab(s,o)})}),this.updateActiveTab(s,o)}updateActiveTab(e,t){for(let r in e)r===this.activeTab?(e[r].addClass("active"),t[r].addClass("active")):(e[r].removeClass("active"),t[r].removeClass("active"))}populateOverviewTabContent(e){this.createPriorityEditor(e),this.createDateEditor(e,d("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate))}populateDatesTabContent(e){this.createDateEditor(e,d("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(e,d("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(e,d("Cancelled Date"),"cancelledDate",this.getDateString(this.task.metadata.cancelledDate)),this.createRecurrenceEditor(e)}populateDetailsTabContent(e){this.createProjectEditor(e),this.createTagsEditor(e),this.createContextEditor(e),this.createOnCompletionEditor(e),this.createDependsOnEditor(e),this.createIdEditor(e)}createFullView(){this.createStatusEditor();let e=this.container.createDiv({cls:"metadata-full-container"});this.createProjectEditor(e),this.createTagsEditor(e),this.createContextEditor(e),this.createPriorityEditor(e);let t=e.createDiv({cls:"dates-container"});this.createDateEditor(t,d("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate)),this.createDateEditor(t,d("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(t,d("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(t,d("Cancelled Date"),"cancelledDate",this.getDateString(this.task.metadata.cancelledDate)),this.createRecurrenceEditor(e),this.createOnCompletionEditor(e),this.createDependsOnEditor(e),this.createIdEditor(e)}getDateString(e){return e===void 0?"":typeof e=="number"?fn(e):e}createStatusEditor(){let e=this.container.createDiv({cls:"task-status-editor"});new _s(this.plugin,e,this.task,{type:"quick-capture",onTaskUpdate:async(r,i)=>{this.notifyMetadataChange("status",i.status)},onTaskStatusSelected:r=>{this.notifyMetadataChange("status",r)}}).onload()}createPriorityEditor(e){let t=e.createDiv({cls:"field-container priority-container"});t.createDiv({cls:"field-label"}).setText(d("Priority"));let i=new Ai.DropdownComponent(t).addOption("",d("None")).addOption("1","\u23EC\uFE0F "+d("Lowest")).addOption("2","\u{1F53D} "+d("Low")).addOption("3","\u{1F53C} "+d("Medium")).addOption("4","\u23EB "+d("High")).addOption("5","\u{1F53A} "+d("Highest")).onChange(o=>{this.notifyMetadataChange("priority",parseInt(o))});i.selectEl.addClass("priority-select");let s=this.getPriorityString(this.task.metadata.priority);i.setValue(s||"")}getPriorityString(e){return e===void 0?"":String(e)}createDateEditor(e,t,r,i){let s=e.createDiv({cls:`field-container date-container ${r}-container`});s.createDiv({cls:"field-label"}).setText(t);let l=s.createEl("input",{cls:`date-input ${r}-input`,type:"date"});if(i)if(typeof i=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(i))l.value=i;else try{let u=typeof i=="number"?i:Number(i);l.value=fn(Number.isFinite(u)?u:void 0)}catch(u){console.error(`Cannot parse date: ${i}`,u)}this.registerDomEvent(l,"change",()=>{let c=l.value;if(c){let u=es(c);u!==void 0&&this.notifyMetadataChange(r,u)}else this.notifyMetadataChange(r,void 0)})}createProjectEditor(e){let t=e.createDiv({cls:"field-container project-container"});t.createDiv({cls:"field-label"}).setText(d("Project"));let i=Vt(this.task),s=ci(this.task),o=new Ai.TextComponent(t).setPlaceholder(d("Project name")).setValue(i||"").setDisabled(s).onChange(l=>{s||this.notifyMetadataChange("project",l)});if(s&&this.task.metadata.tgProject&&(!this.task.metadata.project||!this.task.metadata.project.trim())){t.addClass("project-readonly");let l=t.createDiv({cls:"project-source-indicator",text:`From ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`})}this.registerDomEvent(o.inputEl,"blur",()=>{s||this.notifyMetadataChange("project",o.inputEl.value)}),s||new Dr(this.app,o.inputEl,this.plugin)}createTagsEditor(e){let t=e.createDiv({cls:"field-container tags-container"});t.createDiv({cls:"field-label"}).setText(d("Tags"));let i=new Ai.TextComponent(t).setPlaceholder(d("e.g. #tag1, #tag2")).setValue(Array.isArray(this.task.metadata.tags)?this.task.metadata.tags.join(", "):"");this.registerDomEvent(i.inputEl,"blur",()=>{let s=i.inputEl.value.split(",").map(o=>o.trim()).filter(o=>o);this.notifyMetadataChange("tags",s)}),new ui(this.app,i.inputEl,this.plugin)}createContextEditor(e){let t=e.createDiv({cls:"field-container context-container"});t.createDiv({cls:"field-label"}).setText(d("Context"));let i=new Ai.TextComponent(t).setPlaceholder(d("e.g. @home, @work")).setValue(Array.isArray(this.task.metadata.context)?this.task.metadata.context.join(", "):"");this.registerDomEvent(i.inputEl,"blur",()=>{let s=i.inputEl.value.split(",").map(o=>o.trim()).filter(o=>o);this.notifyMetadataChange("context",s)}),new Er(this.app,i.inputEl,this.plugin)}createRecurrenceEditor(e){let t=e.createDiv({cls:"field-container recurrence-container"});t.createDiv({cls:"field-label"}).setText(d("Recurrence Rule"));let i=new Ai.TextComponent(t).setPlaceholder(d("e.g. every day, every week")).setValue(this.task.metadata.recurrence||"").onChange(s=>{this.notifyMetadataChange("recurrence",s)});this.registerDomEvent(i.inputEl,"blur",()=>{this.notifyMetadataChange("recurrence",i.inputEl.value)})}createOnCompletionEditor(e){let t=e.createDiv({cls:"field-container oncompletion-container"});t.createDiv({cls:"field-label"}).setText(d("On Completion"));try{let i=new $s(t,this.plugin,{initialValue:this.task.metadata.onCompletion||"",onChange:s=>{this.notifyMetadataChange("onCompletion",s)},onValidationChange:(s,o)=>{let l=t.querySelector(".oncompletion-validation-message");if(l&&l.remove(),o){let c=t.createDiv({cls:"oncompletion-validation-message error",text:o})}else if(s&&this.task.metadata.onCompletion){let c=t.createDiv({cls:"oncompletion-validation-message success",text:d("Configuration is valid")})}}});this.addChild(i)}catch(i){console.warn("Failed to load OnCompletionConfigurator, using fallback:",i);let s=new Ai.TextComponent(t).setPlaceholder(d("Action to execute on completion")).setValue(this.task.metadata.onCompletion||"").onChange(o=>{this.notifyMetadataChange("onCompletion",o)});this.registerDomEvent(s.inputEl,"blur",()=>{this.notifyMetadataChange("onCompletion",s.inputEl.value)})}}createDependsOnEditor(e){let t=e.createDiv({cls:"field-container dependson-container"});t.createDiv({cls:"field-label"}).setText(d("Depends On"));let i=new Ai.TextComponent(t).setPlaceholder(d("Task IDs separated by commas")).setValue(Array.isArray(this.task.metadata.dependsOn)?this.task.metadata.dependsOn.join(", "):"");this.registerDomEvent(i.inputEl,"blur",()=>{let o=i.inputEl.value.split(",").map(l=>l.trim()).filter(l=>l.length>0);this.notifyMetadataChange("dependsOn",o)})}createIdEditor(e){let t=e.createDiv({cls:"field-container id-container"});t.createDiv({cls:"field-label"}).setText(d("Task ID"));let i=new Ai.TextComponent(t).setPlaceholder(d("Unique task identifier")).setValue(this.task.metadata.id||"").onChange(s=>{this.notifyMetadataChange("id",s)});this.registerDomEvent(i.inputEl,"blur",()=>{this.notifyMetadataChange("id",i.inputEl.value)})}notifyMetadataChange(e,t){this.onMetadataChange&&this.onMetadataChange({field:e,value:t,task:this.task})}};q();var Av=class extends Fv.Modal{constructor(a,e,t,r){super(a),this.task=t,this.plugin=e,this.onTaskUpdated=r||(async()=>{}),this.modalEl.addClass("task-details-modal"),this.titleEl.setText(d("Edit Task"))}onOpen(){let{contentEl:a}=this;a.empty(),this.metadataEditor=new Mc(a,this.app,this.plugin,!1),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),new Fv.ButtonComponent(this.contentEl).setIcon("check").setTooltip(d("Save")).onClick(async()=>{await this.onTaskUpdated(this.task),this.close()}),this.metadataEditor.onMetadataChange=async e=>{let r=["status","completed","content"].includes(e.field),i={...this.task,line:this.task.line-1,id:`${this.task.filePath}-L${this.task.line-1}`};if(r?i[e.field]=e.value:i.metadata={...this.task.metadata,[e.field]:e.value},e.field==="status"&&(e.value==="x"||e.value==="X")){i.completed=!0,i.metadata={...i.metadata,completedDate:Date.now()};let{cancelledDate:s,...o}=i.metadata;i.metadata=o}else if(e.field==="status"&&e.value==="-"){i.completed=!1;let{completedDate:s,...o}=i.metadata;i.metadata={...o,cancelledDate:Date.now()}}else if(e.field==="status"){i.completed=!1;let{completedDate:s,cancelledDate:o,...l}=i.metadata;i.metadata=l}this.task=i}}onClose(){let{contentEl:a}=this;this.metadataEditor&&this.metadataEditor.onunload(),a.empty()}updateTaskField(a,e){a in this.task&&(this.task[a]=e)}};var Ov=require("obsidian");q();var Rv=class extends Ov.Component{constructor(e,t,r){super();this.popoverRef=null;this.popperInstance=null;this.debounceUpdateTask=(0,Ov.debounce)(async e=>{if(this.plugin.writeAPI){let t=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:e});t.success||console.error("Failed to update task:",t.error)}else console.error("WriteAPI not available")},200);this.clickOutside=e=>{this.popoverRef&&!this.popoverRef.contains(e.target)&&this.close()};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=t,this.task=r,this.win=e.workspace.containerEl.win||window;let i=e.workspace.containerEl.closest(".cm-scroller");i instanceof HTMLElement?this.scrollParent=i:this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"task-popover-content"});this.metadataEditor=new Mc(t,this.app,this.plugin,!0),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),this.metadataEditor.onMetadataChange=async s=>{let l=["status","completed","content"].includes(s.field),c={...this.task};if(l?c[s.field]=s.value:c.metadata={...this.task.metadata,[s.field]:s.value},s.field==="status"&&(s.value==="x"||s.value==="X")){c.completed=!0,c.metadata={...c.metadata,completedDate:Date.now()};let{cancelledDate:u,...p}=c.metadata;c.metadata=p}else if(s.field==="status"&&s.value==="-"){c.completed=!1;let{completedDate:u,...p}=c.metadata;c.metadata={...p,cancelledDate:Date.now()}}else if(s.field==="status"){c.completed=!1;let{completedDate:u,cancelledDate:p,...m}=c.metadata;c.metadata=m}this.task=c,this.debounceUpdateTask(c)},this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"task-details-popover tg-menu bm-menu"}),this.popoverRef.appendChild(t);let r=this.popoverRef.createDiv({cls:"tg-popover-titlebar",text:d("Task Details")});this.popoverRef.insertBefore(r,this.popoverRef.firstChild),document.body.appendChild(this.popoverRef);let i={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=El(i,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.metadataEditor&&this.metadataEditor.onunload()}};Lo();var Ic=require("@codemirror/language");du();var pB=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m,$0=class extends Ii{constructor(a,e,t,r,i){super(),this.text=a,this.lineNum=e,this.view=t,this.app=r,this.plugin=i}toDOM(){let a=createEl("div"),e=new Nv.ExtraButtonComponent(a).setIcon("calendar-check").onClick(()=>{let t=this.view.state.doc.line(this.lineNum).text,r=this.app.workspace.getActiveFile();if(!r||!pB.test(t))return!1;let i=this.view.state.doc.line(this.lineNum),o=(0,Ic.syntaxTree)(this.view.state).resolveInner(i.from+1).type.prop(Ic.tokenClassNodeProp);if(o){let u=o.split(" ");if(u.includes("hmd-codeblock")||u.includes("hmd-frontmatter"))return!1}let l=this.view.state.doc.line(this.lineNum).number,c=L7(this.plugin,r.path,t,l-1);return c?(N7(this.view,this.app,this.plugin,c,e.extraSettingsEl),!0):!1});return e.extraSettingsEl.toggleClass("task-gutter-marker",!0),e.extraSettingsEl}},N7=(n,a,e,t,r)=>{let i=async s=>{e.writeAPI&&await e.writeAPI.updateTask({taskId:s.id,updates:s})};if(Nv.Platform.isDesktop){let s=new Rv(a,e,t),o=r.getBoundingClientRect();s.showAtPosition({x:o.left,y:o.bottom+10})}else new Av(a,e,t,i).open()},z0=null,L7=(n,a,e,t)=>{var r,i;try{if(n.dataflowOrchestrator&&((r=n.settings.projectConfig)!=null&&r.enableEnhancedProject))try{let o=`${a}-L${t}`,c=n.dataflowOrchestrator.getQueryAPI().getTaskByIdSync(o);if(c)return c}catch(o){console.warn("Failed to get task from dataflow:",o)}z0||(z0=new zi(Bs(n.settings.preferMetadataFormat,n)));let s=z0.parseTask(e,a,t);return s&&n.dataflowOrchestrator&&((i=n.settings.projectConfig)!=null&&i.enableEnhancedProject)&&(s.id=`${a}-L${t}`),s}catch(s){return console.error("Error parsing task:",s),null}};function mB(n,a){return[uB({class:"task-gutter",lineMarker(e,t){let r=e.state.doc.lineAt(t.from).text,i=e.state.doc.lineAt(t.from).number;if(!pB.test(r))return null;let o=(0,Ic.syntaxTree)(e.state).resolveInner(t.from+1).type.prop(Ic.tokenClassNodeProp);if(o){let l=o.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return null}return new $0(r,i,e,n,a)}})]}var hB=require("@codemirror/state");function gB(n,a){return hB.EditorState.transactionFilter.of(e=>j7(e,n,a))}function j7(n,a,e){var u;if(!n.docChanged||!((u=e.settings.autoDateManager)!=null&&u.enabled))return n;let t=n.annotation(ft);if(typeof t=="string"&&t.includes("autoDateManager")||n.isUserEvent("input.paste")||n.isUserEvent("set")||H7(n))return n;let r=B7(n);if(!r)return n;let{doc:i,lineNumber:s,oldStatus:o,newStatus:l}=r,c=V7(o,l,e,i.line(s).text);return c.length===0?n:z7(n,i,s,c,e)}function H7(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r0&&a.push({type:"insert",content:l.toString(),fromA:r,toA:i,fromB:s,toB:o})});let e=a.filter(r=>r.type==="delete"),t=a.filter(r=>r.type==="insert");if(e.length===0||t.length===0)return!1;for(let r of e)for(let i of t){let s=r.content.split(` `).filter(l=>l.trim()),o=i.content.split(` `).filter(l=>l.trim());if(s.length===o.length&&s.length>0){let l=!0;for(let c=0;c{if(s.length===0)return;let o=r,l=n.newDoc.lineAt(o),c=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i,p=c.match(u);if(p){let m=p[2],f=" ",h=!1;if(n.changes.iterChanges((g,k,y,b,v)=>{if(g=l.from+g){let y=e;if(y>=0&&y=0;f--){let h=m[f],g=i.from+h.start,k=i.from+h.end;o.push({from:g,to:k,insert:""}),s=s.slice(0,h.start)+s.slice(h.end)}}return o.length>0?{changes:[n.changes,...o],selection:n.selection,annotations:[ft.of("autoDateManager.dateUpdate")]}:n}function $7(n){let a=new Date;return n.replace("YYYY",a.getFullYear().toString()).replace("MM",(a.getMonth()+1).toString().padStart(2,"0")).replace("DD",a.getDate().toString().padStart(2,"0")).replace("HH",a.getHours().toString().padStart(2,"0")).replace("mm",a.getMinutes().toString().padStart(2,"0")).replace("ss",a.getSeconds().toString().padStart(2,"0"))}function Lv(n,a){let e=a.settings.autoDateManager,t=a.settings.preferMetadataFormat==="dataview";if(!e)return"\u{1F4C5}";switch(n){case"completed":return t?"[completion::":e.completedDateMarker||"\u2705";case"start":return t?"[start::":e.startDateMarker||"\u{1F680}";case"cancelled":return t?"[cancelled::":e.cancelledDateMarker||"\u274C";default:return"\u{1F4C5}"}}function _7(n,a,e){let t=kB(n),r=n.match(/^[\s|\t]*([-*+]|\d+\.)\s\[.\]\s*/);if(!r)return t?t.index:n.length;let i=r[0].length;if(e==="cancelled"){let s=a.settings.preferMetadataFormat==="dataview",o=!1;if(s){let l=n.match(/\[start::[^\]]*\]/);l&&l.index!==void 0&&(i=l.index+l[0].length,o=!0)}else{let l=Lv("start",a),c=jv(l),u=new RegExp(`${c}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`),p=n.match(u);if(!p){let m=["\u{1F680}","\u{1F6EB}","\u25B6\uFE0F","\u23F0","\u{1F3C1}"];for(let f of m){let h=new RegExp(`${jv(f)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`);if(p=n.match(h),p){`${f}`;break}}}p&&p.index!==void 0&&(i=p.index+p[0].length,o=!0,`${p.index}${p[0].length}${i}`)}if(`${o}${i}`,!o){let l=i,c=[/#[\w-]+/g,/\[[a-zA-Z]+::[^\]]*\]/g,/[📅🚀✅❌🛫▶️⏰🏁]\s*\d{4}-\d{2}-\d{2}(?:\s+\d{2}:\d{2}(?::\d{2})?)?/g];for(let u of c){let p;for(;(p=u.exec(n))!==null;)if(p.index>=i){let m=p.index+p[0].length;m>l&&(l=m)}}i=l}i>0&&n[i-1]}else if(e==="completed")i=n.length,t&&(i=t.index,i>0&&n[i-1]===" "&&i--);else{let s=i,o=!1,l=n.slice(i).split("");for(let c=0;c0&&n[i-1]===" ";)i--}return t&&i>t.index&&(i=t.index,i>0&&n[i-1]===" "&&i--),`${e}${i}`,i}function U7(n,a){let e=kB(n);if(e){let t=e.index;return t>0&&n[t-1]===" "&&t--,t}return n.length}function jv(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kB(n){let a=/\s*(\^[a-zA-Z0-9-]+)$/,e=n.match(a);return e&&e.index!==void 0?{blockId:e[1],index:e.index,length:e[0].length,fullMatch:e[0]}:null}var yB=require("@codemirror/view");function vB(){return yB.EditorView.updateListener.of(n=>{if(!n.docChanged)return;let a=n.transactions[0];!a||!Y7(a)||a.changes.iterChanges((e,t,r,i,s)=>{if(e>=t)return;let o=a.startState.doc.sliceString(e,t),l=s.toString();if(q7(o)){let c=n.state.doc.lineAt(r),u=c.text;if(G7(u)){let p=K7(u);p!==u&&n.view.dispatch({changes:{from:c.from,to:c.to,insert:p}})}}})})}function Y7(n){if(!n.isUserEvent("input.delete")&&!n.isUserEvent("input.deleteBackward"))return!1;let a=!1;return n.changes.iterChanges((e,t)=>{e0?C.substring(0,S):C}let s=this.getPropertyValue(a,e.statusProperty)||" ",o=this.getBooleanPropertyValue(a,e.completedProperty)||!1,l=this.getDatePropertyValue(a,e.createdDateProperty),c=this.getDatePropertyValue(a,e.startDateProperty),u=this.getDatePropertyValue(a,e.scheduledDateProperty),p=this.getDatePropertyValue(a,e.dueDateProperty),m=this.getDatePropertyValue(a,e.completedDateProperty),f=this.getPropertyValue(a,e.recurrenceProperty),h=this.getArrayPropertyValue(a,e.tagsProperty)||[],g=this.getPropertyValue(a,e.projectProperty),k=this.getPropertyValue(a,e.contextProperty),y=this.getNumberPropertyValue(a,e.priorityProperty),b=this.getNumberPropertyValue(a,e.estimatedTimeProperty),v=this.getNumberPropertyValue(a,e.actualTimeProperty),w=this.extractTimeComponents(i),x=this.combineTimestampsWithTimeComponents({startDate:c,dueDate:p,scheduledDate:u,completedDate:m},w.timeComponents);return{id:r,content:i,filePath:a.file.path,completed:o,status:s,metadata:{tags:h||[],children:[],...l&&{createdDate:l},...c&&{startDate:c},...u&&{scheduledDate:u},...p&&{dueDate:p},...m&&{completedDate:m},...f&&{recurrence:f},...g&&{project:g},...k&&{context:k},...y&&{priority:y},...b&&{estimatedTime:b},...v&&{actualTime:v},...w,...x&&{enhancedDates:x}},sourceEntry:a,isFileTask:!0}}fileTaskToPropertyUpdates(a,e=jl,t=!1){var i;let r={};if(!t){let s=(i=this.fileSourceConfig)==null?void 0:i.fileTaskProperties;s!=null&&s.contentSource&&s.contentSource!=="filename"&&this.shouldUpdateContentProperty(s)&&(r[e.contentProperty]=a.content)}return r[e.statusProperty]=a.status,r[e.completedProperty]=a.completed,a.metadata.createdDate!==void 0&&e.createdDateProperty&&(r[e.createdDateProperty]=this.formatDateForProperty(a.metadata.createdDate)),a.metadata.startDate!==void 0&&e.startDateProperty&&(r[e.startDateProperty]=this.formatDateForProperty(a.metadata.startDate)),a.metadata.scheduledDate!==void 0&&e.scheduledDateProperty&&(r[e.scheduledDateProperty]=this.formatDateForProperty(a.metadata.scheduledDate)),a.metadata.dueDate!==void 0&&e.dueDateProperty&&(r[e.dueDateProperty]=this.formatDateForProperty(a.metadata.dueDate)),a.metadata.completedDate!==void 0&&e.completedDateProperty&&(r[e.completedDateProperty]=this.formatDateForProperty(a.metadata.completedDate)),a.metadata.recurrence!==void 0&&e.recurrenceProperty&&(r[e.recurrenceProperty]=a.metadata.recurrence),a.metadata.tags.length>0&&e.tagsProperty&&(r[e.tagsProperty]=a.metadata.tags),a.metadata.project!==void 0&&e.projectProperty&&(r[e.projectProperty]=a.metadata.project),a.metadata.context!==void 0&&e.contextProperty&&(r[e.contextProperty]=a.metadata.context),a.metadata.priority!==void 0&&e.priorityProperty&&(r[e.priorityProperty]=a.metadata.priority),a.metadata.estimatedTime!==void 0&&e.estimatedTimeProperty&&(r[e.estimatedTimeProperty]=a.metadata.estimatedTime),a.metadata.actualTime!==void 0&&e.actualTimeProperty&&(r[e.actualTimeProperty]=a.metadata.actualTime),r}async updateFileTask(a,e){let t={...a,...e},r=!1;if(e.content&&e.content!==a.content){await this.handleContentUpdate(a,e.content),r=!0;let s=this.extractTimeComponents(e.content);if(s.timeComponents){t.metadata={...t.metadata,timeComponents:s.timeComponents};let o=this.combineTimestampsWithTimeComponents({startDate:t.metadata.startDate,dueDate:t.metadata.dueDate,scheduledDate:t.metadata.scheduledDate,completedDate:t.metadata.completedDate},s.timeComponents);o&&(t.metadata.enhancedDates=o),a.metadata=t.metadata}}let i=this.fileTaskToPropertyUpdates(t,jl,r);`${a.content}`;for(let[s,o]of Object.entries(i))try{typeof a.sourceEntry.updateProperty=="function"?await Promise.resolve(a.sourceEntry.updateProperty(s,o)):console.error(`updateProperty method not available on source entry for key: ${s}`)}catch(l){console.error(`Failed to update property ${s}:`,l)}}shouldUpdateContentProperty(a){switch(a.contentSource){case"title":return a.preferFrontmatterTitle===!0;case"h1":return!1;case"custom":return!0;case"filename":default:return!1}}async handleContentUpdate(a,e){var r;let t=(r=this.fileSourceConfig)==null?void 0:r.fileTaskProperties;if(!t){console.warn("[FileTaskManager] No file source config available, skipping content update");return}switch(t.contentSource){case"title":t.preferFrontmatterTitle?await this.updateFrontmatterTitle(a,e):await this.updateFileName(a,e);break;case"h1":await this.updateH1Heading(a,e);break;case"custom":t.customContentField?await this.updateCustomContentField(a,e,t.customContentField):console.warn("[FileTaskManager] Custom content source specified but no customContentField configured");break;case"filename":default:await this.updateFileName(a,e);break}}async updateFrontmatterTitle(a,e){try{if(typeof a.sourceEntry.updateProperty=="function")await Promise.resolve(a.sourceEntry.updateProperty("title",e)),`${a.filePath}${e}`;else throw new Error("updateProperty method not available on source entry")}catch(t){console.error("[FileTaskManager] Failed to update frontmatter title:",t),await this.updateFileName(a,e)}}async updateH1Heading(a,e){try{let t=this.app.vault.getFileByPath(a.filePath);if(!t){console.error(`[FileTaskManager] File not found: ${a.filePath}`);return}let r=await this.app.vault.read(t),i=r.split(` `),s=-1;for(let l=0;l=0)i[s]=`# ${e}`;else{let l=0;if(r.startsWith("---")){let c=r.indexOf(` --- `,3);c>=0&&(l=r.substring(0,c+5).split(` `).length-1)}i.splice(l,0,`# ${e}`,"")}let o=i.join(` `);await this.app.vault.modify(t,o),`${a.filePath}${e}`}catch(t){console.error("[FileTaskManager] Failed to update H1 heading:",t)}}async updateCustomContentField(a,e,t){try{if(typeof a.sourceEntry.updateProperty=="function")await Promise.resolve(a.sourceEntry.updateProperty(t,e)),`${t}${a.filePath}${e}`;else throw new Error("updateProperty method not available on source entry")}catch(r){console.error(`[FileTaskManager] Failed to update custom field '${t}':`,r)}}async updateFileName(a,e){try{let t=this.app.vault.getFileByPath(a.filePath);if(t){let r=a.filePath,i=r.lastIndexOf("/"),s=i>0?r.substring(0,i):"",o=r.substring(r.lastIndexOf(".")),l=e;l.endsWith(o)&&(l=l.substring(0,l.length-o.length));let c=s?`${s}/${l}${o}`:`${l}${o}`;c!==r&&(await this.app.fileManager.renameFile(t,c),a.filePath=c,`${r}${c}`)}}catch(t){console.error("[FileTaskManager] Failed to rename file:",t)}}getFileTasksFromEntries(a,e=jl){let t=a.filter(r=>{var i,s,o,l;try{let c=(i=r==null?void 0:r.file)==null?void 0:i.extension;if((!c||typeof c!="string")&&(c=(s=r==null?void 0:r.implicit)==null?void 0:s.ext),!c||typeof c!="string"){let u=(o=r==null?void 0:r.file)==null?void 0:o.path;u&&u.includes(".")&&(c=u.split(".").pop())}if(!c||typeof c!="string"){let u=(l=r==null?void 0:r.file)==null?void 0:l.name;u&&u.includes(".")&&(c=u.split(".").pop())}return(c||"").toLowerCase()==="md"}catch(c){return!1}});return`${a.length}${t.length}`,t.map(r=>this.entryToFileTask(r,e))}filterFileTasks(a,e){return a.filter(t=>!0)}getPropertyValue(a,e){var t;if(e){try{let r=a.getValue({type:"property",name:e});if(r!=null)return String(r)}catch(r){}try{let r=a;if(r!=null&&r.properties&&r.properties[e]!==void 0)return String(r.properties[e]);if(r!=null&&r.frontmatter&&r.frontmatter[e]!==void 0)return String(r.frontmatter[e]);if((t=r==null?void 0:r.note)!=null&&t.data&&r.note.data[e]!==void 0)return String(r.note.data[e])}catch(r){}}}getBooleanPropertyValue(a,e){if(e)try{let t=a.getValue({type:"property",name:e});if(typeof t=="boolean")return t;if(typeof t=="string"){let r=t.toLowerCase();return r==="true"||r==="yes"||r==="1"}return!!t}catch(t){return}}getNumberPropertyValue(a,e){if(e)try{let t=a.getValue({type:"property",name:e}),r=Number(t);return isNaN(r)?void 0:r}catch(t){return}}getDatePropertyValue(a,e){if(e)try{let t=a.getValue({type:"property",name:e});if(t==null)return;if(typeof t=="number")return t;if(typeof t=="string"){let r=t.trim();if(!r)return;if(/^\d{4}-\d{2}-\d{2}$/.test(r)){let[s,o,l]=r.split("-").map(Number),c=new Date(s,o-1,l);return isNaN(c.getTime())?void 0:c.getTime()}let i=new Date(r);return isNaN(i.getTime())?void 0:i.getTime()}return t instanceof Date?isNaN(t.getTime())?void 0:t.getTime():void 0}catch(t){return}}getArrayPropertyValue(a,e){if(e)try{let t=a.getValue({type:"property",name:e});if(t==null)return;if(Array.isArray(t))return t.map(r=>String(r)).filter(r=>r.trim().length>0);if(typeof t=="string"){let r=t.trim();return r?r.includes(",")?r.split(",").map(i=>i.trim()).filter(i=>i.length>0):r.includes(" ")?r.split(/\s+/).map(i=>i.trim()).filter(i=>i.length>0):[r]:void 0}return}catch(t){return}}formatDateForProperty(a){let e=new Date(a),t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${i}`}extractTimeComponents(a){if(!this.timeParsingService)return{};try{let{timeComponents:e,errors:t,warnings:r}=this.timeParsingService.parseTimeComponents(a);r.length>0&&console.warn(`[FileTaskManager] Time parsing warnings for "${a}":`,r),t.length>0&&console.warn(`[FileTaskManager] Time parsing errors for "${a}":`,t);let i={};return Object.keys(e).length>0&&(i.timeComponents=e),i}catch(e){return console.error(`[FileTaskManager] Failed to extract time components from "${a}":`,e),{}}}combineTimestampsWithTimeComponents(a,e){if(!e)return;let t={},r=(i,s)=>{if(!i||!s)return;let o=new Date(i);return new Date(o.getFullYear(),o.getMonth(),o.getDate(),s.hour,s.minute,s.second||0)};return a.startDate&&e.startTime&&(t.startDateTime=r(a.startDate,e.startTime)),a.dueDate&&e.dueTime&&(t.dueDateTime=r(a.dueDate,e.dueTime)),a.scheduledDate&&e.scheduledTime&&(t.scheduledDateTime=r(a.scheduledDate,e.scheduledTime)),a.dueDate&&!e.dueTime&&e.scheduledTime&&(t.dueDateTime=r(a.dueDate,e.scheduledTime)),a.scheduledDate&&!e.scheduledTime&&e.dueTime&&(t.scheduledDateTime=r(a.scheduledDate,e.dueTime)),a.startDate&&e.endTime&&(t.endDateTime=r(a.startDate,e.endTime)),Object.keys(t).length>0?t:void 0}validatePropertyMapping(a,e=jl){if(a.length===0)return;let t={},r=new Set;a.forEach(i=>{let s=i.properties||{};Object.keys(s).forEach(o=>{r.add(o)}),Object.entries(e).forEach(([o,l])=>{l&&s[l]!==void 0&&(t[l]=(t[l]||0)+1)})}),Object.entries(e).forEach(([i,s])=>{s&&!t[s]&&console.warn(`[FileTaskManager] Property "${s}" (${i}) not found in any entries`)})}};q();var Bv=class extends Co.Component{constructor(e,t,r,i){var s;super();this.type="task-genius-view";this.data=[];this.properties=[];this.isSidebarCollapsed=!1;this.propertyMapping=jl;this.fileTasks=[];this.currentSelectedTask=null;this.twoColumnViewComponents=new Map;this.currentViewId="inbox";this.currentFilterState=null;this.isDetailsVisible=!1;this.currentSelectedTaskId=null;this.tasks=[];this.LAZY_LOADING_THRESHOLD=100;this.cachedRegularTasks=new Map;this.handleKanbanTaskStatusUpdate=async(e,t)=>{`${e}${t}`;let r=this.tasks.find(i=>i.id===e);if(r){let i=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),s=i?Date.now():void 0;if(r.status!==t||r.completed!==i)try{await this.handleTaskUpdate(r,{...r,status:t,completed:i,completedDate:s}),`${e}`}catch(o){console.error(`FileTaskView failed to update task status from Kanban callback for task ${e}:`,o)}else`${e}${t}`}else console.warn(`FileTaskView could not find task with ID ${e} for Kanban status update.`)};this.containerEl=e,this.app=t,this.plugin=r,this.fileTaskManager=new Hv(t,(s=r.settings)==null?void 0:s.fileSource),i&&(this.propertyMapping=i),this.initializeComponents()}initializeComponents(){this.containerEl.empty(),this.containerEl.addClass("file-task-view-container"),this.containerEl,this.containerEl.closest("bases-embed"),this.containerEl.closest("bases-embed")&&(this.containerEl,this.toggleSidebar()),this.containerEl.toggleClass("task-genius-view",!0);let e=this.containerEl.createDiv({cls:"task-genius-container"});this.sidebarComponent=new Cc(e,this.plugin),this.plugin,this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.contentComponent=new Ei(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new On(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskUpdate:async(t,r)=>{let i=this.fileTasks.find(s=>s.id===t.id);if(i){let s={...i,content:r.content,completed:r.completed,status:r.status,metadata:r.metadata};await this.handleTaskUpdate(i,s)}},onTaskContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Nn(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Ln(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new fo(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new jn(this.app,this.plugin,e,this.tasks,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onEventContextMenu:(t,r)=>{this.handleTaskContextMenu(t,r)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new Hn(this.app,this.plugin,e,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Bn(this.plugin,e,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitComponent=new bo(this.plugin,e),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new hn(e,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.toggleDetailsVisibility(!1),this.viewComponentManager=new vo(this,this.app,this.plugin,e,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.viewComponentManager),this.setupEventHandlers()}setupEventHandlers(){this.detailsComponent.onTaskToggleComplete=e=>{this.handleTaskCompletion(e)},this.detailsComponent.onTaskUpdate=async(e,t)=>{let r=this.fileTasks.find(c=>c.id===e.id);if(!r)return;let{line:i,originalMarkdown:s,...o}=t,l={...o,sourceEntry:r.sourceEntry,isFileTask:!0};r&&await this.handleTaskUpdate(r,l)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)},this.sidebarComponent.onViewModeChanged=e=>{this.handleViewModeChanged(e)},this.sidebarComponent.onProjectSelected=e=>{this.handleProjectSelected(e)}}updateConfig(e){this.settings=e,this.onConfigUpdated()}onConfigUpdated(){this.updateTaskViewComponents()}updateData(e,t){this.properties=e,this.data=t,this.convertEntriesToFileTasks()&&this.onDataUpdated()}onDataUpdated(){this.updateTaskViewComponents()}display(){this.containerEl.show()}onload(){}onunload(){this.cachedRegularTasks.clear(),this.unload()}onActionsMenu(){return[{name:"Refresh Tasks",icon:"refresh-cw",callback:()=>{this.convertEntriesToFileTasks(),this.updateTaskViewComponents()}},{name:"Configure Mapping",icon:"settings",callback:()=>{this.openPropertyMappingConfig()}},{name:"Clear Cache",icon:"trash-2",callback:()=>{this.clearTaskCache()}},{name:"Cache Stats",icon:"info",callback:()=>{let e=this.getCacheStats()}}]}onEditMenu(){return[{displayName:"Task View Settings",component:e=>this.createSettingsComponent(e)}]}onResize(){this.checkAndCollapseSidebar()}checkAndCollapseSidebar(){this.containerEl.clientWidth===0||this.containerEl.clientHeight===0||this.containerEl.clientWidth<768&&(this.isSidebarCollapsed=!0,this.sidebarComponent.setCollapsed(!0))}toggleSidebar(){this.isSidebarCollapsed=!this.isSidebarCollapsed,this.containerEl.toggleClass("sidebar-collapsed",this.isSidebarCollapsed),this.sidebarComponent.setCollapsed(this.isSidebarCollapsed)}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.containerEl.toggleClass("details-visible",e),this.containerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),e||(this.currentSelectedTaskId=null)}convertEntriesToFileTasks(){if(!this.data||this.data.length===0){let s=this.fileTasks.length>0;return this.fileTasks=[],s}let e=this.data.flatMap(s=>s.entries),t=e.reduce((s,o)=>{let l=o.file.extension;return s[l]=(s[l]||0)+1,s},{});Math.random()<.2&&this.fileTaskManager.validatePropertyMapping(e,this.propertyMapping);let r=this.fileTaskManager.getFileTasksFromEntries(e,this.propertyMapping),i=this.updateFileTasksIncrementally(r);return`${e.length}${r.length}${i}`,i&&(this.tasks=this.fileTasks.map(s=>this.fileTaskToRegularTask(s))),i}updateFileTasksIncrementally(e){let t=new Map(this.fileTasks.map(s=>[s.id,s])),r=new Map(e.map(s=>[s.id,s])),i=!1;for(let s of t.keys())r.has(s)||(i=!0,this.cachedRegularTasks.delete(s));if(!i)for(let[s,o]of r){let l=t.get(s);(!l||this.hasTaskChanged(l,o))&&(i=!0,this.cachedRegularTasks.delete(s))}return i&&(this.fileTasks=e),i}hasTaskChanged(e,t){let r=["content","completed","status"];for(let s of r)if(this.compareProperty(e[s],t[s])!==0)return!0;let i=["dueDate","startDate","scheduledDate","priority","tags","project","context"];for(let s of i)if(this.compareProperty(e.metadata[s],t.metadata[s])!==0)return!0;return!1}compareProperty(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return e.length-t.length;for(let r=0;rthis.LAZY_LOADING_THRESHOLD;`${this.fileTasks.length}${e}`,e?this.updateTasksLazily():this.updateTasksEagerly(),this.sidebarComponent,this.switchView(this.currentViewId)}updateTasksEagerly(){let e=this.fileTasks.map(t=>this.fileTaskToRegularTask(t));this.tasks=e,this.contentComponent&&typeof this.contentComponent.setTasks=="function"&&this.contentComponent.setTasks(e,e)}updateTasksLazily(){this.updateTaskCache();let e=this.createLazyTaskArray();this.tasks=e,this.contentComponent&&typeof this.contentComponent.setTasks=="function"&&this.contentComponent.setTasks(e,e)}updateTaskCache(){let e=new Set(this.cachedRegularTasks.keys()),t=new Set(this.fileTasks.map(r=>r.id));for(let r of e)t.has(r)||this.cachedRegularTasks.delete(r);for(let r of this.fileTasks){let i=this.cachedRegularTasks.get(r.id);(!i||this.hasTaskChangedForCache(i,r))&&this.cachedRegularTasks.set(r.id,this.fileTaskToRegularTask(r))}`${this.cachedRegularTasks.size}${this.fileTasks.length}`}createLazyTaskArray(){let e=[],t=0;for(let r=0;r{let i=this.fileTasks[r];if(!i)return;let s=this.cachedRegularTasks.get(i.id);return s||(s=this.fileTaskToRegularTask(i),this.cachedRegularTasks.set(i.id,s),t++,t%10===0&&`${t}`),s},enumerable:!0,configurable:!0});return Object.defineProperty(e,"length",{value:this.fileTasks.length,writable:!1,enumerable:!1,configurable:!1}),e.map=function(r){let i=[];for(let s=0;sr.id===e.id);t&&(this.currentSelectedTask=t,this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(this.fileTaskToRegularTask(t)),this.isDetailsVisible||this.toggleDetailsVisibility(!0))}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null,this.currentSelectedTask=null}async handleTaskCompletion(e){let t=this.fileTasks.find(r=>r.id===e.id);if(t)try{let r={completed:!t.completed,metadata:{...t.metadata,completedDate:t.completed?void 0:Date.now()}};await this.fileTaskManager.updateFileTask(t,r),this.convertEntriesToFileTasks()&&(this.detailsComponent.isCurrentlyEditing()?this.updateTasksEagerly():this.updateTaskViewComponents())}catch(r){console.error("[FileTaskView] Failed to update task completion:",r)}}async handleTaskUpdate(e,t){let r=this.fileTasks.find(i=>i.id===e.id);if(r)try{let i={content:t.content,status:t.status,completed:t.completed,metadata:{...r.metadata,dueDate:t.metadata.dueDate,startDate:t.metadata.startDate,scheduledDate:t.metadata.scheduledDate,priority:t.metadata.priority,tags:t.metadata.tags,project:t.metadata.project,context:t.metadata.context}};await this.fileTaskManager.updateFileTask(r,i),this.convertEntriesToFileTasks()&&(this.detailsComponent.isCurrentlyEditing()?this.updateTasksEagerly():this.updateTaskViewComponents())}catch(i){console.error("[FileTaskView] Failed to update task:",i)}}handleTaskContextMenu(e,t){let r=new Co.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.handleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(d("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let c of Object.keys(o)){let u=o[c];Array.from(l.values()).includes(u)||l.set(c,u)}for(let[c,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{Pt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:c}),p.onClick(()=>{!t.completed&&u.toLowerCase()==="x"?t.metadata.completedDate=Date.now():t.metadata.completedDate=void 0,this.handleTaskUpdate(t,{...t,status:u,completed:u.toLowerCase()==="x"})})})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.editTask(t)})}),r.showAtMouseEvent(e)}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;await this.app.workspace.getLeaf(!0).openFile(t)}handleViewModeChanged(e){this.switchView(e)}handleProjectSelected(e){}switchView(e,t){var o,l;this.currentViewId=e,this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(c=>{c.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let r=null,i=e,s=gt(this.plugin,e);if(((o=s.specificConfig)==null?void 0:o.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let c=s.specificConfig,u=new Vn(this.containerEl,this.app,this.plugin,c,e);this.addChild(u),u.onTaskSelected=p=>{let m=this.fileTasks.find(f=>f.id===p.id);m&&this.handleTaskSelection(this.fileTaskToRegularTask(m))},u.onTaskCompleted=p=>{let m=this.fileTasks.find(f=>f.id===p.id);m&&this.handleTaskCompletion(this.fileTaskToRegularTask(m))},u.onTaskContextMenu=(p,m)=>{let f=this.fileTasks.find(h=>h.id===m.id);f&&this.handleTaskContextMenu(p,this.fileTaskToRegularTask(f))},this.twoColumnViewComponents.set(e,u)}r=this.twoColumnViewComponents.get(e)}else{let c=(l=s.specificConfig)==null?void 0:l.viewType;if(this.viewComponentManager.isSpecialView(e))r=this.viewComponentManager.showComponent(e);else if(c==="forecast"||e==="forecast")r=this.forecastComponent;else switch(e){case"habit":r=this.habitComponent;break;case"tags":r=this.tagsComponent;break;case"projects":r=this.projectsComponent;break;case"review":r=this.reviewComponent;break;case"inbox":case"flagged":default:r=this.contentComponent,i=e;break}}if(r){if(`${e}`,r.constructor.name,r.containerEl.show(),typeof r.setTasks=="function"){let c={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(c.advancedFilter=this.currentFilterState);let u=_t(this.tasks,e,this.plugin,c);e==="forecast"&&(u=u.filter(p=>!p.badge)),r.setTasks(u,this.tasks)}if(typeof r.updateTasks=="function"){let c={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(c.advancedFilter=this.currentFilterState),r.updateTasks(_t(this.tasks,e,this.plugin,c))}typeof r.setViewMode=="function"&&(`${e}${i}${t}`,r.setViewMode(i,t)),this.twoColumnViewComponents.forEach(c=>{if(c&&typeof c.setTasks=="function"&&c.getViewId()===e){let u={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(u.advancedFilter=this.currentFilterState);let p=_t(this.tasks,c.getViewId(),this.plugin,u);c.getViewId()==="forecast"&&(p=p.filter(m=>!m.badge)),c.setTasks(p)}}),e==="review"&&typeof r.refreshReviewSettings=="function"&&r.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);this.handleTaskSelection(null)}openPropertyMappingConfig(){new _0(this.app,this.propertyMapping,t=>{this.setPropertyMapping(t)}).open()}createSettingsComponent(e){return e.createEl("div",{text:"File Task View Settings"}),e}setPropertyMapping(e){this.propertyMapping=e,this.convertEntriesToFileTasks(),this.updateTaskViewComponents()}getPropertyMapping(){return this.propertyMapping}getFileTasks(){return this.fileTasks}clearTaskCache(){this.cachedRegularTasks.clear()}getCacheStats(){return{cacheSize:this.cachedRegularTasks.size,totalTasks:this.fileTasks.length,cacheHitRatio:this.fileTasks.length>0?this.cachedRegularTasks.size/this.fileTasks.length:0}}},_0=class extends Co.Modal{constructor(a,e,t){super(a),this.mapping={...e},this.onSave=t}onOpen(){let{contentEl:a}=this;a.empty(),a.createEl("h2",{text:"Configure Property Mapping"}),a.createEl("p",{text:"Map file properties to task attributes. Use dataview standard keys like 'start', 'due', 'completion', etc."}),[["contentProperty","Content Property"],["statusProperty","Status Property"],["completedProperty","Completed Property"],["startDateProperty","Start Date Property"],["dueDateProperty","Due Date Property"],["scheduledDateProperty","Scheduled Date Property"],["completedDateProperty","Completed Date Property"],["createdDateProperty","Created Date Property"],["recurrenceProperty","Recurrence Property"],["tagsProperty","Tags Property"],["projectProperty","Project Property"],["contextProperty","Context Property"],["priorityProperty","Priority Property"]].forEach(([s,o])=>{new Co.Setting(a).setName(o).setDesc(`Property name for ${o.toLowerCase()}`).addText(l=>l.setPlaceholder("Property name").setValue(this.mapping[s]||"").onChange(c=>{c.trim()?this.mapping[s]=c.trim():delete this.mapping[s]}))});let t=a.createDiv({cls:"tg-modal-button-container modal-button-container"}),r=t.createEl("button",{text:"Save",cls:"mod-cta"});r.onclick=()=>{this.onSave(this.mapping),this.close()};let i=t.createEl("button",{text:"Cancel"});i.onclick=()=>{this.close()}}onClose(){let{contentEl:a}=this;a.empty()}};var bB=require("obsidian");var Af=require("obsidian");var Wn=class extends Af.Component{constructor(e,t,r,i){super();this.data=[];this.properties=[];this.tasks=[];this.currentTask=null;this.isDetailsVisible=!1;this.currentSelectedTaskId=null;this.lastToggleTimestamp=0;this.containerEl=e,this.app=t,this.plugin=r,this.viewMode=i,this.containerEl.empty(),this.containerEl.toggleClass(["base-task-bases-view","task-genius-view","task-genius-container","no-sidebar"],!0),this.initializeDetailsComponent()}initializeDetailsComponent(){this.detailsComponent=new hn(this.containerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.setupDetailsEvents(),this.toggleDetailsVisibility(!1)}setupDetailsEvents(){this.detailsComponent.onTaskToggleComplete=e=>{this.handleTaskCompletion(e)},this.detailsComponent.onTaskEdit=e=>{this.handleTaskEdit(e)},this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.handleTaskUpdate(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)}}handleTaskSelection(e){if(e){let t=Date.now(),r=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}r>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.containerEl.toggleClass("details-visible",e),this.containerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),e||(this.currentSelectedTaskId=null)}async handleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata&&(t.metadata.completedDate=Date.now());let r=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==r&&(t.status=r)}else{t.metadata&&(t.metadata.completedDate=void 0);let r=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=r)}try{await this.updateBasesEntry(e,t);let r=this.tasks.findIndex(i=>i.id===e.id);r!==-1&&(this.tasks[r]=t),this.currentSelectedTaskId===t.id&&this.detailsComponent.showTaskDetails(t),this.detailsComponent.isCurrentlyEditing()?this.updateUIWithLatestTaskData():this.onDataUpdated()}catch(r){console.error(`[${this.type}] Failed to update task completion:`,r),this.showUpdateError(r)}}async handleTaskEdit(e){var s;let t=this.app.vault.getFileByPath(e.filePath);if(!t||!(t instanceof Af.TFile))return;await this.app.workspace.getLeaf(!1).openFile(t);let i=(s=this.app.workspace.activeEditor)==null?void 0:s.editor;i&&(i.setCursor({line:e.line||0,ch:0}),i.focus())}async handleTaskUpdate(e,t){try{await this.updateBasesEntry(e,t);let r=this.tasks.findIndex(i=>i.id===e.id);r!==-1&&(this.tasks[r]=t),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.currentTask=t:this.detailsComponent.showTaskDetails(t)),this.detailsComponent.isCurrentlyEditing()?this.updateUIWithLatestTaskData():this.onDataUpdated()}catch(r){console.error(`[${this.type}] Failed to update task:`,r),this.showUpdateError(r)}}async updateBasesEntry(e,t){try{let r=this.findEntryByTaskId(e.id);if(!r)throw new Error(`Original entry not found for task ID: ${e.id}`);this.debugBasesApiAvailability(r),e.content!==t.content&&await this.handleContentUpdate(r,e,t);let i=this.mapTaskMetadataToBases(e,t,!0);`${this.type}`;for(let[s,o]of Object.entries(i))await this.updateBasesProperty(r,s,o);`${this.type}${t.id}`}catch(r){throw console.error(`[${this.type}] Failed to update Bases entry:`,r),r}}async updateBasesProperty(e,t,r){try{if(`${this.type}${t}`,typeof e.updateProperty=="function"){`${this.type}${t}`,await e.updateProperty(t,r),`${this.type}${t}`;return}if(typeof e.setValue=="function"){`${this.type}${t}`,await e.setValue({type:"note",name:t},r),`${this.type}${t}`;return}console.warn(`[${this.type}] No native update method available for property ${t}`),console.warn(`[${this.type}] Available entry methods:`,Object.keys(e).filter(i=>typeof e[i]=="function"))}catch(i){throw console.error(`[${this.type}] Failed to update property ${t}:`,i),i}}async handleContentUpdate(e,t,r){var c,u,p;let i=r.content,s=(u=(c=this.plugin.settings)==null?void 0:c.fileSource)==null?void 0:u.fileTaskProperties,o=(s==null?void 0:s.contentSource)||"title",l=(p=s==null?void 0:s.preferFrontmatterTitle)!=null?p:!0;`${this.type}`;try{switch(o){case"title":l?(await this.updateBasesProperty(e,"title",i),`${this.type}`):await this.tryUpdateFilenameViaBasesAPI(e,i)||await this.fallbackRenameFile(e,i);break;case"filename":await this.tryUpdateFilenameViaBasesAPI(e,i)||await this.fallbackRenameFile(e,i);break;case"h1":await this.tryUpdateH1ViaBasesAPI(e,i)||await this.fallbackUpdateH1(e,i);break;case"custom":let m=s==null?void 0:s.customContentField;m&&(await this.updateBasesProperty(e,m,i),`${this.type}${m}`);break;default:await this.updateBasesProperty(e,"title",i);break}}catch(m){console.error(`[${this.type}] Failed to update content:`,m),await this.updateBasesProperty(e,"title",i)}}async tryUpdateFilenameViaBasesAPI(e,t){try{if(typeof e.renameFile=="function")return await e.renameFile(t),`${this.type}`,!0;if(e.file&&typeof e.updateProperty=="function")return await e.updateProperty("file.name",t),`${this.type}`,!0}catch(r){`${this.type}`}return!1}async tryUpdateH1ViaBasesAPI(e,t){try{if(typeof e.updateProperty=="function")return await e.updateProperty("h1",t),`${this.type}`,!0}catch(r){`${this.type}`}return!1}async fallbackRenameFile(e,t){try{let r=e.file;if(!r||!r.path){console.error(`[${this.type}] Cannot rename: no file path found`);return}let i=t.replace(/[\\/:*?"<>|]/g,"-").replace(/\s+/g," ").trim();if(!i){console.error(`[${this.type}] Cannot rename: invalid new name`);return}let s=r.path.lastIndexOf("/"),o=s>0?r.path.substring(0,s):"",l=r.extension||"md",c=o?`${o}/${i}.${l}`:`${i}.${l}`,u=this.app.vault.getAbstractFileByPath(r.path);u&&"extension"in u&&(await this.app.fileManager.renameFile(u,c),`${this.type}${r.path}${c}`)}catch(r){console.error(`[${this.type}] Fallback rename failed:`,r)}}async fallbackUpdateH1(e,t){try{let r=e.file;if(!r||!r.path){console.error(`[${this.type}] Cannot update H1: no file path found`);return}let i=this.app.vault.getAbstractFileByPath(r.path);if(i instanceof Af.TFile){let o=(await this.app.vault.read(i)).replace(/^#\s+.*/m,`# ${t}`);await this.app.vault.modify(i,o),`${this.type}`}}catch(r){console.error(`[${this.type}] Fallback H1 update failed:`,r)}}mapTaskMetadataToBases(e,t,r=!1){let i={};!r&&e.content!==t.content&&(i.title=t.content,i.content=t.content);let s=e.metadata,o=t.metadata;if(s.project!==o.project&&(i.project=o.project),JSON.stringify(s.tags)!==JSON.stringify(o.tags)&&(i.tags=o.tags),s.context!==o.context&&(i.context=o.context),s.priority!==o.priority&&(i.priority=o.priority),s.dueDate!==o.dueDate){let l=o.dueDate?new Date(o.dueDate):void 0;i.dueDate=l,i.due=l}if(s.startDate!==o.startDate){let l=o.startDate?new Date(o.startDate):void 0;i.startDate=l,i.start=l}if(s.scheduledDate!==o.scheduledDate){let l=o.scheduledDate?new Date(o.scheduledDate):void 0;i.scheduledDate=l,i.scheduled=l}if(s.completedDate!==o.completedDate){let l=o.completedDate?new Date(o.completedDate):void 0;i.completedDate=l,i.completed=l}if(s.cancelledDate!==o.cancelledDate){let l=o.cancelledDate?new Date(o.cancelledDate):void 0;i.cancelledDate=l,i.cancelled=l}return s.onCompletion!==o.onCompletion&&(i.onCompletion=o.onCompletion),JSON.stringify(s.dependsOn)!==JSON.stringify(o.dependsOn)&&(i.dependsOn=o.dependsOn),s.id!==o.id&&(i.id=o.id),s.recurrence!==o.recurrence&&(i.recurrence=o.recurrence),e.completed!==t.completed&&(i.completed=t.completed,i.done=t.completed),e.status!==t.status&&(i.status=t.status),i}getDataArray(){return this.data&&typeof this.data=="object"&&!Array.isArray(this.data)&&this.data.data&&Array.isArray(this.data.data)?this.data.data:Array.isArray(this.data)?this.data:[]}findEntryByTaskId(e){let t=this.getDataArray();if(t.length===0)return console.error(`[${this.type}] No data available in findEntryByTaskId`),null;for(let r of t)try{if(this.generateTaskId(r)===e)return r}catch(i){continue}return console.warn(`[${this.type}] Entry not found for task ID: ${e}`),null}showUpdateError(e){let t=this.containerEl.createDiv({cls:"bases-update-error-notification"});t.createDiv({cls:"error-icon",text:"\u26A0\uFE0F"});let r=t.createDiv({cls:"error-message"});r.createDiv({cls:"error-title",text:"Failed to update task"}),r.createDiv({cls:"error-details",text:e.message||"An unknown error occurred"}),setTimeout(()=>{t.parentNode&&t.remove()},5e3),t.addEventListener("click",()=>{t.remove()})}updateConfig(e){this.settings=e,`${this.type}`,this.onConfigUpdated()}updateData(e,t){`${this.type}`;let r=(o,l=3)=>{let c=new WeakSet,u=0;return JSON.stringify(o,function(p,m){if(u>l)return"[Max Depth]";if(typeof m=="object"&&m!==null){if(c.has(m))return"[Circular Reference]";if(c.add(m),u++,p==="app"||p==="ctx"||p==="vault"||p==="parent")return"[Skipped: Large Object]"}return typeof m=="function"?"[Function]":m},2)};`${this.type}`,`${this.type}`,Array.isArray(t)&&t.length>0?(`${this.type}`,r(t[0]),`${this.type}`,r(t.slice(0,3))):t&&typeof t=="object"&&(`${this.type}`,r(t));let i=[],s=[];Array.isArray(e)&&(`${this.type}${e.length}`,e.length>0&&e[0].file?(`${this.type}`,i=e,s=Array.isArray(t)?t:[]):s=e),Array.isArray(t)?(`${this.type}${t.length}`,t.length>0&&t[0].file&&(`${this.type}`,i=t)):t&&!Array.isArray(t)&&(`${this.type}`,`${this.type}`,Object.keys(t),t.data&&Array.isArray(t.data)&&(`${this.type}`,i=t.data)),`${this.type}`,Array.isArray(i),Array.isArray(i)&&i.length,Array.isArray(i)&&i.length>0&&i[0],t&&typeof t=="object"&&!Array.isArray(t)&&t.data?(this.data=t,this.properties=e||[]):(this.properties=s,this.data=i),`${this.type}`,this.data,Array.isArray(this.data)?`${this.type}${this.data.length}`:this.data&&this.data.data&&`${this.type}${this.data.data.length}`,`${this.type}${this.properties.length}`,this.onDataUpdated()}display(){`${this.type}`,this.containerEl.show(),this.onDisplay()}getEphemeralState(){return{selectedTaskId:this.currentSelectedTaskId,detailsVisible:this.isDetailsVisible}}setEphemeralState(e){e&&(e.selectedTaskId&&(this.currentSelectedTaskId=e.selectedTaskId),e.detailsVisible!==void 0&&(this.isDetailsVisible=e.detailsVisible))}onload(){`${this.type}`,this.onViewLoad()}onunload(){`${this.type}`,this.onViewUnload(),this.unload()}onActionsMenu(){let e=[{name:"Refresh Tasks",icon:"refresh-cw",callback:()=>{this.refreshTasks()}}],t=this.getCustomActions();return[...e,...t]}onEditMenu(){return this.getEditMenuItems()}onResize(){this.onViewResize()}convertEntriesToTasks(){`${this.type}`,`${this.type}`,this.data;let e=(s,o=2)=>{let l=new WeakSet,c=0;return JSON.stringify(s,function(u,p){if(c>o)return"[Max Depth]";if(typeof p=="object"&&p!==null){if(l.has(p))return"[Circular]";if(l.add(p),c++,u==="app"||u==="ctx"||u==="vault"||u==="parent"||u==="formulaResults")return"[Skipped]"}return typeof p=="function"?"[Function]":p},2)},t=this.getDataArray();if(`${this.type}${t.length}`,!t||t.length===0)return`${this.type}`,this.tasks=[],!0;let r=[];t.length>0&&(`${this.type}`,e(t[0]));for(let s=0;s0?(`${this.type}`,r.slice(0,3),`${this.type}`,r[0].id,r[0].content,r[0].filePath,r[0].metadata):console.warn(`[${this.type}] WARNING: No tasks were created from ${this.data.length} data entries!`);let i=this.hasTasksChanged(this.tasks,r);return this.tasks=r,`${this.type}${i}${this.tasks.length}`,i}entryToTask(e){try{let t=m=>{let f=new WeakSet;return JSON.stringify(m,function(h,g){if(typeof g=="object"&&g!==null){if(f.has(g))return"[Circular]";if(f.add(g),h==="app"||h==="ctx"||h==="vault"||h==="parent"||h==="formulaResults")return"[Skipped]"}return typeof g=="function"?"[Function]":g},2)};this.tasks.length<3&&(`${this.type}`,t(e));let i=e.file,s=e.frontmatter||{};if(i&&i.extension&&(i.extension==="canvas"||i.extension==="pdf"||i.extension==="png"||i.extension==="jpg"))return`${this.type}${i.path}${i.extension}`,null;if(s["kanban-plugin"]||s["excalidraw-plugin"])return`${this.type}${i==null?void 0:i.path}`,null;if(!i)if(console.warn(`[${this.type}] Entry missing file information:`,e),e.path||e.filePath)`${this.type}`,i={path:e.path||e.filePath},e.file=i;else return console.error(`[${this.type}] No file path found, returning null`),null;`${this.type}`,i.path;let o=this.extractTaskContent(e);if(`${this.type}`,!o||o==="")return`${this.type}${i.path}`,null;let l=this.extractTaskMetadata(e);`${this.type}`;let c=this.extractTaskStatus(e);`${this.type}`;let u=this.generateTaskId(e);`${this.type}`;let p={id:u,content:o,completed:this.extractCompletionStatus(e),status:c,filePath:i.path||"",line:this.getEntryProperty(e,"line","note")||0,originalMarkdown:this.getEntryProperty(e,"originalMarkdown","note")||o,metadata:{...l,children:[]}};return`${this.type}`,p}catch(t){return console.error(`[${this.type}] Error converting entry to task:`,t,e),console.error(`[${this.type}] Error stack:`,t.stack),null}}hasTasksChanged(e,t){if(e.length!==t.length)return`${this.type}${e.length}${t.length}`,!0;let r=new Map(e.map(i=>[i.id,i]));for(let i of t){let s=r.get(i.id);if(!s)return`${this.type}${i.id}`,!0;if(s.content!==i.content)return`${this.type}${i.id}`,!0;if(s.completed!==i.completed)return`${this.type}${i.id}`,!0;if(s.status!==i.status)return`${this.type}${i.id}`,!0;let o=s.metadata,l=i.metadata;if(o.priority!==l.priority)return`${this.type}${i.id}`,!0;if(o.dueDate!==l.dueDate)return`${this.type}${i.id}`,!0;if(o.project!==l.project)return`${this.type}${i.id}`,!0;let c=o.tags||[],u=l.tags||[];if(c.length!==u.length||!c.every((p,m)=>p===u[m]))return`${this.type}${i.id}`,!0}return`${this.type}`,!1}refreshTasks(){`${this.type}`,this.onDataUpdated()}forceUpdateTasks(){`${this.type}`,this.convertEntriesToTasks(),this.onDataUpdated()}updateUIWithLatestTaskData(){`${this.type}`}extractTaskContent(e){var r,i;let t=[()=>{var s,o;return(o=(s=e.note)==null?void 0:s.data)==null?void 0:o.title},()=>{var s,o;return(o=(s=e.note)==null?void 0:s.data)==null?void 0:o.content},()=>{var s,o;return(o=(s=e.note)==null?void 0:s.data)==null?void 0:o.text},()=>{var s,o;return(o=(s=e.note)==null?void 0:s.data)==null?void 0:o.task},()=>this.getEntryProperty(e,"title","note"),()=>this.getEntryProperty(e,"content","note"),()=>this.getEntryProperty(e,"text","note"),()=>this.getEntryProperty(e,"task","note"),()=>{var s;return(s=e.file)==null?void 0:s.basename},()=>{var s;return(s=e.file)==null?void 0:s.name}];for(let s of t)try{let o=s();if(o&&typeof o=="string"&&o.trim())return o.trim()}catch(o){}return(r=e.file)!=null&&r.basename&&!((i=e.note)!=null&&i.data)?"":"Untitled Task"}extractTaskMetadata(e){return{tags:this.extractTags(e),project:this.extractProject(e),tgProject:this.getEntryProperty(e,"tgProject","note")||"",priority:this.extractPriority(e),dueDate:this.extractDate(e,"dueDate")||this.extractDate(e,"due"),scheduledDate:this.extractDate(e,"scheduledDate")||this.extractDate(e,"scheduled"),startDate:this.extractDate(e,"startDate")||this.extractDate(e,"start"),completedDate:this.extractDate(e,"completedDate")||this.extractDate(e,"completed"),createdDate:this.extractDate(e,"createdDate")||this.extractDate(e,"created")||this.extractFileCreatedDate(e),cancelledDate:this.extractDate(e,"cancelledDate")||this.extractDate(e,"cancelled"),context:this.getEntryProperty(e,"context","note")||"",recurrence:this.getEntryProperty(e,"recurrence","note")||void 0,onCompletion:this.getEntryProperty(e,"onCompletion","note")||void 0}}extractCompletionStatus(e){let t=[()=>this.getEntryProperty(e,"completed","note"),()=>this.getEntryProperty(e,"done","note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r.completed},()=>{var r;return(r=e.frontmatter)==null?void 0:r.done}];for(let r of t)try{let i=r();if(typeof i=="boolean")return i;if(typeof i=="string")return i.toLowerCase()==="true"||i==="x"}catch(i){}return!1}extractTaskStatus(e){let t=[()=>this.getEntryProperty(e,"status","note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r.status}];for(let r of t)try{let i=r();if(i&&typeof i=="string")return i}catch(i){}return this.extractCompletionStatus(e)?"x":" "}extractTags(e){let t=[()=>this.getEntryProperty(e,"tags","note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r.tags}];for(let r of t)try{let i=r();if(Array.isArray(i))return i.filter(s=>typeof s=="string");if(typeof i=="string")return i.split(",").map(s=>s.trim()).filter(s=>s)}catch(i){}return[]}extractProject(e){let t=[()=>{var r,i;return(i=(r=e.note)==null?void 0:r.data)==null?void 0:i.project},()=>{var r,i;return(i=(r=e.note)==null?void 0:r.data)==null?void 0:i.projectName},()=>{var r,i;return(i=(r=e.note)==null?void 0:r.data)==null?void 0:i.tgProject},()=>this.getEntryProperty(e,"project","note"),()=>this.getEntryProperty(e,"projectName","note"),()=>this.getEntryProperty(e,"tgProject","note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r.project},()=>{var r;return(r=e.frontmatter)==null?void 0:r.projectName},()=>this.extractProjectFromTags(e)];for(let r of t)try{let i=r();if(i&&typeof i=="string")return`${this.type}${i}`,i.trim()}catch(i){}return""}extractProjectFromTags(e){let r=this.extractTags(e).find(i=>i.startsWith("#project/")||i.startsWith("project/")||i.startsWith("#proj/")||i.startsWith("proj/"));return r?r.replace(/^#?(project|proj)\//,""):""}extractPriority(e){let t=[()=>this.getEntryProperty(e,"priority","note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r.priority}];for(let r of t)try{let i=r();if(typeof i=="number")return Math.max(0,Math.min(10,i));if(typeof i=="string"){let s=parseInt(i);if(!isNaN(s))return Math.max(0,Math.min(10,s))}}catch(i){}return 0}extractDate(e,t){let r=[()=>this.getEntryProperty(e,t,"note"),()=>{var i;return(i=e.frontmatter)==null?void 0:i[t]}];for(let i of r)try{let s=i();if(typeof s=="number")return s;if(typeof s=="string"){let o=Date.parse(s);if(!isNaN(o))return o}if(s instanceof Date)return s.getTime()}catch(s){}}extractFileCreatedDate(e){var t;try{let r=e.file;if((t=r==null?void 0:r.stat)!=null&&t.ctime)return r.stat.ctime}catch(r){}}generateTaskId(e){try{let t=e.file;if(t!=null&&t.path)return t.path}catch(t){}return`task-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}getEntryProperty(e,t,r="note"){var s;let i=["title","content","text","completed","status"].includes(t);i&&`${this.type}${t}${r}`;try{if(typeof e.getValue=="function"){let o=e.getValue({type:r,name:t});return i&&o!==void 0&&`${this.type}`,o}}catch(o){}try{if(r==="note"){if((s=e.note)!=null&&s.data&&e.note.data[t]!==void 0)return i&&(`${this.type}`,e.note.data[t]),e.note.data[t];if(e.frontmatter&&e.frontmatter[t]!==void 0)return i&&(`${this.type}`,e.frontmatter[t]),e.frontmatter[t];if(e[t]!==void 0)return i&&(`${this.type}`,e[t]),e[t]}if(r==="file"&&e.file){let o=e.file[t];return o!==void 0&&i&&`${this.type}`,o}}catch(o){}i&&`${this.type}${t}`}createErrorContainer(e){let t=this.containerEl.createDiv({cls:"bases-view-error"});return t.createDiv({cls:"bases-view-error-icon",text:"\u26A0\uFE0F"}),t.createDiv({cls:"bases-view-error-message",text:e}),t}createLoadingContainer(){let e=this.containerEl.createDiv({cls:"bases-view-loading"});return e.createDiv({cls:"bases-view-loading-spinner"}),e.createDiv({cls:"bases-view-loading-text",text:"Loading tasks..."}),e}createEmptyContainer(e="No tasks found"){let t=this.containerEl.createDiv({cls:"bases-view-empty"});return t.createDiv({cls:"bases-view-empty-icon",text:"\u{1F4CB}"}),t.createDiv({cls:"bases-view-empty-message",text:e}),t}debugBasesApiAvailability(e){`${this.type}`;let t=Object.keys(e).filter(i=>typeof e[i]=="function");`${this.type}`;let r=["updateProperty","setValue","getValue"];for(let i of r){let s=typeof e[i]=="function";`${this.type}${i}`}`${this.type}`,Object.keys(e),e.file&&(`${this.type}`,e.file),e.frontmatter&&(`${this.type}`,e.frontmatter)}};q();var Vv=class extends Wn{constructor(e,t,r){super(e,t,r,"inbox");this.type="inbox-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new Ei(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateInboxTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateInboxTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.contentComponent.load(),this.isLoaded=!0,this.updateInboxTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:d("Quick Capture"),icon:"plus",callback:()=>{this.openQuickCapture()}},{name:d("Filter"),icon:"filter",callback:()=>{this.openFilterOptions()}}]}getEditMenuItems(){return[{displayName:"View Settings",component:e=>this.createViewSettingsComponent(e)}]}updateInboxTasks(){if(this.isLoaded,!!this.isLoaded){this.data,this.tasks;try{let e=_t(this.tasks,"inbox",this.plugin);`${e.length}${this.tasks.length}`,this.contentComponent.setTasks(e,this.tasks),this.contentComponent.setViewMode("inbox"),`${e.length}`}catch(e){console.error("[InboxBasesView] Error updating inbox tasks:",e),this.showErrorState("Failed to update inbox tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[InboxBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let r=new bB.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.handleTaskEdit(t)})}),r.showAtMouseEvent(e)}openQuickCapture(){try{let{QuickCaptureModal:e}=require("../components/QuickCaptureModal");new e(this.app,this.plugin,{},!0).open()}catch(e){console.error("[InboxBasesView] Error opening quick capture:",e)}}openFilterOptions(){}createViewSettingsComponent(e){let t=e.createDiv({cls:"inbox-view-settings"});t.createEl("h3",{text:"Inbox View Settings"});let r=t.createDiv({cls:"settings-options"});r.createEl("label",{text:"Show completed tasks"});let i=r.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No inbox tasks found");e.addClass("inbox-empty-state");let t=e.createDiv({cls:"inbox-empty-help"});t.createEl("p",{text:"Tasks without projects will appear here."}),t.createEl("button",{cls:"inbox-capture-btn",text:"Create Task"}).addEventListener("click",()=>{this.openQuickCapture()})}hideEmptyState(){let e=this.containerEl.querySelector(".inbox-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var wB=require("obsidian");q();var Wv=class extends Wn{constructor(e,t,r){super(e,t,r,"flagged");this.type="flagged-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new Ei(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateFlaggedTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateFlaggedTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.contentComponent.load(),this.isLoaded=!0,this.updateFlaggedTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:d("Set Priority"),icon:"flag",callback:()=>{this.openPrioritySelector()}},{name:d("Clear Flags"),icon:"flag-off",callback:()=>{this.clearAllFlags()}},{name:d("Filter by Priority"),icon:"filter",callback:()=>{this.openPriorityFilter()}}]}getEditMenuItems(){return[{displayName:"Priority Settings",component:e=>this.createPrioritySettingsComponent(e)}]}updateFlaggedTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=_t(this.tasks,"flagged",this.plugin);`${e.length}${this.tasks.length}`,e.sort((t,r)=>{let i=t.metadata.priority||0;return(r.metadata.priority||0)-i}),this.contentComponent.setTasks(e,this.tasks),this.contentComponent.setViewMode("flagged"),`${e.length}`}catch(e){console.error("[FlaggedBasesView] Error updating flagged tasks:",e),this.showErrorState("Failed to update flagged tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[FlaggedBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let r=new wB.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.handleTaskEdit(t)})}),r.showAtMouseEvent(e)}openPrioritySelector(){}clearAllFlags(){}openPriorityFilter(){}createPrioritySettingsComponent(e){let t=e.createDiv({cls:"flagged-view-settings"});t.createEl("h3",{text:"Priority Settings"});let r=t.createDiv({cls:"settings-options"}),i=r.createDiv({cls:"setting-item"});i.createEl("label",{text:"Minimum priority for flagged view:"});let s=i.createEl("input",{type:"number",value:"3"});s.min="0",s.max="10";let o=r.createDiv({cls:"setting-item"});o.createEl("label",{text:"Show completed flagged tasks"});let l=o.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No flagged tasks found");e.addClass("flagged-empty-state");let t=e.createDiv({cls:"flagged-empty-help"});t.createEl("p",{text:"Tasks with high priority (3+) or flagged tags will appear here."});let r=t.createEl("div",{cls:"flagged-help-text"});r.createEl("p",{text:"To flag a task:"});let i=r.createEl("ul");i.createEl("li",{text:"Set priority to 3 or higher"}),i.createEl("li",{text:"Add #flagged tag to the task"})}hideEmptyState(){let e=this.containerEl.querySelector(".flagged-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var TB=require("obsidian");q();var zv=class extends Wn{constructor(e,t,r){super(e,t,r,"projects");this.type="projects-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.projectsComponent=new Ln(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateProjectTasks())}onDataUpdated(){this.isLoaded,this.data,this.data;try{this.convertEntriesToTasks()}catch(e){console.error("[ProjectBasesView] Error converting entries to tasks:",e),this.tasks=[]}this.updateProjectTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.projectsComponent.load(),this.isLoaded=!0,this.updateProjectTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:d("New Project"),icon:"folder-plus",callback:()=>{this.createNewProject()}},{name:d("Archive Completed"),icon:"archive",callback:()=>{this.archiveCompletedProjects()}},{name:d("Project Statistics"),icon:"bar-chart",callback:()=>{this.showProjectStatistics()}}]}getEditMenuItems(){return[{displayName:"Project Settings",component:e=>this.createProjectSettingsComponent(e)}]}updateProjectTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=_t(this.tasks,"projects",this.plugin);`${e.length}${this.tasks.length}`,this.projectsComponent.setTasks(e),`${e.length}`}catch(e){console.error("[ProjectBasesView] Error updating project tasks:",e),this.showErrorState("Failed to update project tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[ProjectBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let r=new TB.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.handleTaskEdit(t)})}),r.showAtMouseEvent(e)}createNewProject(){}archiveCompletedProjects(){}showProjectStatistics(){}createProjectSettingsComponent(e){let t=e.createDiv({cls:"projects-view-settings"});t.createEl("h3",{text:"Project Settings"});let r=t.createDiv({cls:"settings-options"}),i=r.createDiv({cls:"setting-item"});i.createEl("label",{text:"Show project hierarchy"});let s=i.createEl("input",{type:"checkbox"});s.checked=!0;let o=r.createDiv({cls:"setting-item"});o.createEl("label",{text:"Group tasks by project"});let l=o.createEl("input",{type:"checkbox"});l.checked=!0;let c=r.createDiv({cls:"setting-item"});c.createEl("label",{text:"Show completed projects"});let u=c.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No project tasks found");e.addClass("projects-empty-state");let t=e.createDiv({cls:"projects-empty-help"});t.createEl("p",{text:"Tasks with project assignments will appear here."});let r=t.createEl("div",{cls:"projects-help-text"});r.createEl("p",{text:"To assign a task to a project:"});let i=r.createEl("ul");i.createEl("li",{text:"Add #project/projectname tag to the task"}),i.createEl("li",{text:"Use project:: property in frontmatter"}),t.createEl("button",{cls:"projects-create-btn",text:"Create Project"}).addEventListener("click",()=>{this.createNewProject()})}hideEmptyState(){let e=this.containerEl.querySelector(".projects-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var xB=require("obsidian");q();var $v=class extends Wn{constructor(e,t,r){super(e,t,r,"tags");this.type="tags-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.tagsComponent=new Nn(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateTagTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateTagTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.tagsComponent.load(),this.isLoaded=!0,this.updateTagTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:d("Manage Tags"),icon:"tags",callback:()=>{this.openTagManager()}}]}getEditMenuItems(){return[]}updateTagTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=_t(this.tasks,"tags",this.plugin);`${e.length}${this.tasks.length}`,this.tagsComponent.setTasks(e),`${e.length}`}catch(e){console.error("[TagsBasesView] Error updating tag tasks:",e),this.showErrorState("Failed to update tag tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[TagsBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let r=new xB.Menu;r.addItem(i=>{i.setTitle(d("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(i=>{i.setTitle(d("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(d("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.handleTaskEdit(t)})}),r.showAtMouseEvent(e)}openTagManager(){}showEmptyState(){this.hideEmptyState(),this.createEmptyContainer("No tagged tasks found").addClass("tags-empty-state")}hideEmptyState(){let e=this.containerEl.querySelector(".tags-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var SB=require("obsidian"),_v=class extends CB.Component{constructor(e,t){super();this.basesPlugin=null;this.registeredViews=new Set;this.app=e,this.plugin=t}getBasesPlugin(){var e;try{let t=(e=this.app.internalPlugins)==null?void 0:e.plugins;return t&&t.bases?(this.basesPlugin=t.bases.instance,this.basesPlugin):(console.warn("[ViewManager] Bases plugin not found"),null)}catch(t){return console.error("[ViewManager] Error getting Bases plugin:",t),null}}isNewBasesApiSupported(){try{let e=typeof this.plugin.registerBasesView=="function",t=this.plugin.versionManager,r=t?t.isNewBasesApiSupported():!1;return`${e}${r}`,e||r}catch(e){return console.error("[ViewManager] Error checking new Bases API support:",e),!1}}async initialize(){let e=this.getBasesPlugin();if(!e)return console.error("[ViewManager] Cannot initialize without Bases plugin"),!1;try{return await this.registerAllViews(),!0}catch(t){return console.error("[ViewManager] Initialization failed:",t),!1}}async registerAllViews(){await this.registerFileTaskView(),await this.registerInboxView(),await this.registerFlaggedView(),await this.registerProjectsView(),await this.registerTagsView()}resolveContainerEl(e,t){let r=[e,t];for(let i of r)if(i){if(i instanceof HTMLElement)return i;if(typeof i=="object"){if(i.containerEl instanceof HTMLElement)return i.containerEl;if(i.viewContainerEl instanceof HTMLElement)return i.viewContainerEl;if(typeof i.createDiv=="function")return i}}return console.warn("[ViewManager] resolveContainerEl: Could not resolve container element from",e,t),document.createElement("div")}async registerFileTaskView(){let e="task-genius-view";if(this.registeredViews.has(e)){`${e}`;return}try{let t=this,r=function(i){let s=t.resolveContainerEl(i,arguments[1]);return`${e}`,arguments[1],new Bv(s,t.app,t.plugin)};await this.registerView(e,r,"Task Genius View","task-genius")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerInboxView(){let e="inbox-bases-view";if(this.registeredViews.has(e)){`${e}`;return}try{let t=this,r=function(i){let s=t.resolveContainerEl(i,arguments[1]);return`${e}`,arguments[1],new Vv(s,t.app,t.plugin)};await this.registerView(e,r,"Inbox Tasks","inbox")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerFlaggedView(){let e="flagged-bases-view";if(this.registeredViews.has(e)){`${e}`;return}try{let t=this,r=function(i){let s=t.resolveContainerEl(i,arguments[1]);return`${e}`,arguments[1],new Wv(s,t.app,t.plugin)};await this.registerView(e,r,"Flagged Tasks","flag")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerProjectsView(){let e="projects-bases-view";if(this.registeredViews.has(e)){`${e}`;return}try{let t=this,r=function(i){let s=t.resolveContainerEl(i,arguments[1]);return`${e}`,arguments[1],new zv(s,t.app,t.plugin)};await this.registerView(e,r,"Project Tasks","folders")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerTagsView(){let e="tags-bases-view";if(this.registeredViews.has(e)){`${e}`;return}try{let t=this,r=function(i){let s=t.resolveContainerEl(i,arguments[1]);return`${e}`,arguments[1],new $v(s,t.app,t.plugin)};await this.registerView(e,r,"Tagged Tasks","tag")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerView(e,t,r,i){if(this.isNewBasesApiSupported()){if(`${e}`,!this.basesPlugin)throw new Error("Bases plugin not available for legacy registration");let s={name:r,icon:i,factory:t};try{this.plugin.registerBasesView(e,s)}catch(o){console.warn("[ViewManager] Config registration failed, trying factory-only registration:",o),this.basesPlugin.registerView(e,t)}this.registeredViews.add(e),`${e}`}else if((0,SB.requireApiVersion)("1.9.0"))if(`${e}`,this.plugin.registerBasesView(e,t))this.registeredViews.add(e),`${e}`;else throw new Error("New API registration returned false")}unregisterView(e){try{if(!this.registeredViews.has(e)){`${e}`;return}this.isNewBasesApiSupported()?`${e}`:this.basesPlugin&&(this.basesPlugin.deregisterView(e),`${e}`),this.registeredViews.delete(e),`${e}`}catch(t){console.error(`[ViewManager] Failed to unregister view ${e}:`,t)}}unregisterAllViews(){let e=Array.from(this.registeredViews);for(let t of e)this.unregisterView(t)}getRegisteredViews(){return Array.from(this.registeredViews)}isViewRegistered(e){return this.registeredViews.has(e)}getAvailableViewTypes(){if(!this.basesPlugin)return[];try{return this.basesPlugin.getViewTypes()}catch(e){return console.error("[ViewManager] Error getting view types:",e),[]}}createViewInstance(e,t){if(!this.basesPlugin)return console.error("[ViewManager] Bases plugin not available"),null;try{let r=this.basesPlugin.getViewFactory(e);return r?r(t):(console.error(`[ViewManager] No factory found for view: ${e}`),null)}catch(r){return console.error(`[ViewManager] Error creating view instance ${e}:`,r),null}}getStatus(){let e=this.isNewBasesApiSupported();return{basesPluginAvailable:!!this.basesPlugin,registeredViewsCount:this.registeredViews.size,registeredViews:this.getRegisteredViews(),availableViewTypes:this.getAvailableViewTypes(),usingNewApi:e,apiVersion:e?"1.9.3+":"legacy"}}onload(){this.initialize()}onunload(){this.unregisterAllViews(),super.onunload()}};var qv=require("obsidian");var Na=class Na{static parse(a,e){let t=this.createCacheKey(a,e.id),r=this.parseCache.get(t);if(r)return{events:r.events.map(s=>({...s,source:e})),errors:[...r.errors],metadata:{...r.metadata}};let i={events:[],errors:[],metadata:{}};try{let s=this.unfoldLines(a.split(/\r?\n/)),o=null,l=!1,c=0;for(let u of s){c++;let p=u.trim();if(!(!p||p.startsWith("#")))try{let[m,f]=this.parseLine(p);switch(m){case"BEGIN":f==="VCALENDAR"?l=!0:f==="VEVENT"&&l&&(o={source:e});break;case"END":if(f==="VEVENT"&&o){let h=this.finalizeEvent(o);h&&i.events.push(h),o=null}else f==="VCALENDAR"&&(l=!1);break;case"VERSION":l&&!o&&(i.metadata.version=f);break;case"PRODID":l&&!o&&(i.metadata.prodid=f);break;case"CALSCALE":break;case"X-WR-CALNAME":l&&!o&&(i.metadata.calendarName=f);break;case"X-WR-CALDESC":l&&!o&&(i.metadata.description=f);break;case"X-WR-TIMEZONE":l&&!o&&(i.metadata.timezone=f);break;default:o&&this.parseEventProperty(o,m,f,p);break}}catch(m){i.errors.push({line:c,message:`Error parsing line: ${m.message}`,context:p})}}}catch(s){i.errors.push({message:`Fatal parsing error: ${s.message}`})}return this.cacheResult(t,i),i}static createCacheKey(a,e){let t=0;for(let r=0;r=this.MAX_CACHE_SIZE){let t=Array.from(this.parseCache.entries()),r=Math.floor(this.MAX_CACHE_SIZE/2);this.parseCache.clear();for(let i=t.length-r;i({...t})),errors:[...e.errors],metadata:{...e.metadata}})}static unfoldLines(a){let e=[],t=[],r=!1;for(let i=0;i=15?this.parseIntFromString(r,13,2):0;s?l=new Date(Date.UTC(c,u,p,m,f,h)):l=new Date(c,u,p,m,f,h)}return{date:l,allDay:t}}static parseIntFromString(a,e,t){let r=0,i=e+t;for(let s=e;s=0&&o<=9&&(r=r*10+o)}return r}static parseOrganizer(a,e){let t={};a.charCodeAt(0)===77&&a.startsWith("MAILTO:")&&(t.email=a.slice(7));let r=e.match(this.CN_REGEX);return r&&(t.name=this.unescapeText(r[1])),t}static parseAttendee(a,e){let t={};a.charCodeAt(0)===77&&a.startsWith("MAILTO:")&&(t.email=a.slice(7));let r=e.match(this.CN_REGEX);r&&(t.name=this.unescapeText(r[1]));let i=e.match(this.ROLE_REGEX);i&&(t.role=i[1]);let s=e.match(this.PARTSTAT_REGEX);return s&&(t.status=s[1]),t}static unescapeText(a){return a.indexOf("\\")===-1?a:a.replace(/\\n/g,` `).replace(/\\,/g,",").replace(/\\;/g,";").replace(/\\\\/g,"\\")}static clearCache(){this.parseCache.clear()}static getCacheStats(){return{size:this.parseCache.size,maxSize:this.MAX_CACHE_SIZE}}static finalizeEvent(a){var t;return!a.uid||!a.summary||!a.dtstart?null:{uid:a.uid,summary:a.summary,dtstart:a.dtstart,allDay:(t=a.allDay)!=null?t:!1,source:a.source,description:a.description,dtend:a.dtend,location:a.location,categories:a.categories,status:a.status,rrule:a.rrule,exdate:a.exdate,created:a.created,lastModified:a.lastModified,priority:a.priority,transp:a.transp,organizer:a.organizer,attendees:a.attendees,customProperties:a.customProperties}}};Na.CN_REGEX=/CN=([^;:]+)/,Na.ROLE_REGEX=/ROLE=([^;:]+)/,Na.PARTSTAT_REGEX=/PARTSTAT=([^;:]+)/,Na.parseCache=new Map,Na.MAX_CACHE_SIZE=50,Na.PROPERTY_HANDLERS=new Map([["UID",(a,e)=>{a.uid=e}],["SUMMARY",(a,e)=>{a.summary=Na.unescapeText(e)}],["DESCRIPTION",(a,e)=>{a.description=Na.unescapeText(e)}],["LOCATION",(a,e)=>{a.location=Na.unescapeText(e)}],["STATUS",(a,e)=>{a.status=e.toUpperCase()}],["PRIORITY",(a,e)=>{let t=parseInt(e,10);isNaN(t)||(a.priority=t)}],["TRANSP",(a,e)=>{a.transp=e.toUpperCase()}],["RRULE",(a,e)=>{a.rrule=e}],["DTSTART",(a,e,t)=>{let r=Na.parseDateTime(e,t);a.dtstart=r.date,r.allDay!==void 0&&(a.allDay=r.allDay)}],["DTEND",(a,e,t)=>{a.dtend=Na.parseDateTime(e,t).date}],["CREATED",(a,e,t)=>{a.created=Na.parseDateTime(e,t).date}],["LAST-MODIFIED",(a,e,t)=>{a.lastModified=Na.parseDateTime(e,t).date}],["CATEGORIES",(a,e)=>{a.categories=e.split(",").map(t=>t.trim())}],["EXDATE",(a,e,t)=>{a.exdate||(a.exdate=[]);let r=e.split(",");for(let i of r){let s=Na.parseDateTime(i.trim(),t).date;a.exdate.push(s)}}],["ORGANIZER",(a,e,t)=>{a.organizer=Na.parseOrganizer(e,t)}],["ATTENDEE",(a,e,t)=>{a.attendees||(a.attendees=[]),a.attendees.push(Na.parseAttendee(e,t))}]]);var Uv=Na;var Ff=class{static applyStatusMapping(a,e,t){if(!(e!=null&&e.enabled))return this.mapIcsStatusToTaskStatus(a.status,t);if(e.propertyRules){let i=this.applyPropertyRules(a,e.propertyRules,t);if(i)return i}let r=this.applyTimingRules(a,e.timingRules,t);return r||(e.overrideIcsStatus?this.convertTaskStatusToString(e.timingRules.futureEvents,t):this.mapIcsStatusToTaskStatus(a.status,t))}static applyPropertyRules(a,e,t){if(e.holidayMapping&&"isHoliday"in a){if(a.isHoliday)return this.convertTaskStatusToString(e.holidayMapping.holidayStatus,t);if(e.holidayMapping.nonHolidayStatus)return this.convertTaskStatusToString(e.holidayMapping.nonHolidayStatus,t)}if(e.categoryMapping&&a.categories)for(let r of a.categories){let i=e.categoryMapping[r.toLowerCase()];if(i)return this.convertTaskStatusToString(i,t)}if(e.summaryMapping)for(let r of e.summaryMapping)try{if(new RegExp(r.pattern,"i").test(a.summary))return this.convertTaskStatusToString(r.status,t)}catch(i){console.warn(`Invalid regex pattern: ${r.pattern}`,i)}return null}static applyTimingRules(a,e,t){let r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(a.dtstart),o=a.dtend?new Date(a.dtend):s,l=new Date(s.getFullYear(),s.getMonth(),s.getDate()),c=new Date(o.getFullYear(),o.getMonth(),o.getDate());return c=i?this.convertTaskStatusToString(e.currentEvents,t):this.convertTaskStatusToString(e.futureEvents,t)}static convertTaskStatusToString(a,e){let t=e.taskStatusMarks,i={" ":"Not Started",x:"Completed","-":"Abandoned",">":"In Progress","<":"Planned","!":"Important","?":"Planned","/":"In Progress","+":"Completed","*":"Important",'"':"Not Started",l:"Not Started",b:"Not Started",i:"Not Started",S:"Not Started",I:"Not Started",p:"Not Started",c:"Not Started",f:"Important",k:"Important",w:"Completed",u:"In Progress",d:"Abandoned"}[a];return t[i]||a}static mapIcsStatusToTaskStatus(a,e){let t=e.taskStatusMarks;switch(a==null?void 0:a.toUpperCase()){case"COMPLETED":return t.Completed||"x";case"CANCELLED":return t.Abandoned||"-";case"TENTATIVE":return t.Planned||"?";case"CONFIRMED":default:return t["Not Started"]||" "}}static getDefaultConfig(){return{enabled:!1,timingRules:{pastEvents:"x",currentEvents:"/",futureEvents:" "},propertyRules:{categoryMapping:{holiday:"-",vacation:"-",\u5047\u671F:"-",\u8282\u65E5:"-"},holidayMapping:{holidayStatus:"-",nonHolidayStatus:void 0}},overrideIcsStatus:!0}}static getAvailableStatuses(){return[{value:" ",label:"Incomplete",description:"Task is not yet completed"},{value:"x",label:"Complete",description:"Task is completed"},{value:"-",label:"Cancelled",description:"Task is cancelled or abandoned"},{value:">",label:"Forwarded",description:"Task is forwarded or rescheduled"},{value:"<",label:"Scheduled",description:"Task is scheduled"},{value:"!",label:"Important",description:"Task is marked as important"},{value:"?",label:"Question",description:"Task is tentative or questionable"},{value:"/",label:"In Progress",description:"Task is currently in progress"}]}static getStatusLabel(a){let e=this.getAvailableStatuses().find(t=>t.value===a);return e?e.label:"Unknown"}static validateConfig(a){let e=[];if(!a.timingRules)e.push("Timing rules are required");else{let t=this.getAvailableStatuses().map(r=>r.value);t.includes(a.timingRules.pastEvents)||e.push(`Invalid status for past events: ${a.timingRules.pastEvents}`),t.includes(a.timingRules.currentEvents)||e.push(`Invalid status for current events: ${a.timingRules.currentEvents}`),t.includes(a.timingRules.futureEvents)||e.push(`Invalid status for future events: ${a.timingRules.futureEvents}`)}if(a.propertyRules){let t=this.getAvailableStatuses().map(r=>r.value);if(a.propertyRules.categoryMapping)for(let[r,i]of Object.entries(a.propertyRules.categoryMapping))t.includes(i)||e.push(`Invalid status for category '${r}': ${i}`);if(a.propertyRules.summaryMapping)for(let r of a.propertyRules.summaryMapping){t.includes(r.status)||e.push(`Invalid status for pattern '${r.pattern}': ${r.status}`);try{new RegExp(r.pattern)}catch(i){e.push(`Invalid regex pattern: ${r.pattern}`)}}a.propertyRules.holidayMapping&&(t.includes(a.propertyRules.holidayMapping.holidayStatus)||e.push(`Invalid holiday status: ${a.propertyRules.holidayMapping.holidayStatus}`),a.propertyRules.holidayMapping.nonHolidayStatus&&!t.includes(a.propertyRules.holidayMapping.nonHolidayStatus)&&e.push(`Invalid non-holiday status: ${a.propertyRules.holidayMapping.nonHolidayStatus}`))}return{valid:e.length===0,errors:e}}};var Yv=class extends qv.Component{constructor(e,t,r,i){super();this.cache=new Map;this.syncStatuses=new Map;this.refreshIntervals=new Map;this.lastSyncTime=0;this.SYNC_DEBOUNCE_MS=3e4;this.syncPromise=null;this.config=e,this.pluginSettings=t,this.plugin=r,this.timeParsingService=i}async initialize(){for(let e of this.config.sources)this.syncStatuses.set(e.id,{sourceId:e.id,status:e.enabled?"idle":"disabled"});this.config.enableBackgroundRefresh&&this.startBackgroundRefresh()}updateConfig(e){this.config=e;let t=new Set(this.config.sources.map(r=>r.id));for(let[r]of this.syncStatuses)t.has(r)||(this.syncStatuses.delete(r),this.clearRefreshInterval(r));for(let r of this.config.sources)this.syncStatuses.has(r.id)||this.syncStatuses.set(r.id,{sourceId:r.id,status:r.enabled?"idle":"disabled"});this.config.enableBackgroundRefresh?this.startBackgroundRefresh():this.stopBackgroundRefresh()}setOnEventsUpdated(e){this.onEventsUpdated=e}getConfig(){return this.config}getAllEvents(){let e=[];this.cache.size,this.config.sources;for(let[t,r]of this.cache){let i=this.config.sources.find(s=>s.id===t);if(r.events.length,i!=null&&i.enabled){let s=this.applyFilters(r.events,i);s.length,e.push(...s)}else i==null||i.enabled}return e.length,e}getAllEventsWithHolidayDetection(){var t;let e=[];this.cache.size,this.config.sources;for(let[r,i]of this.cache){let s=this.config.sources.find(o=>o.id===r);if(s==null||s.enabled,i.events.length,s!=null&&s.enabled){let o=this.applyFilters(i.events,s);o.length;let l;(t=s.holidayConfig)!=null&&t.enabled?l=$d.processEventsWithHolidayDetection(o,s.holidayConfig):l=o.map(c=>({...c,isHoliday:!1,showInForecast:!0})),l.length,e.push(...l)}}return e.length,e}async getAllEventsWithSync(){let e=Date.now();return this.syncPromise?(await this.syncPromise,this.getAllEvents()):(e-this.lastSyncTime>this.SYNC_DEBOUNCE_MS&&(this.syncPromise=this.syncAllSources().finally(()=>{this.syncPromise=null}),await this.syncPromise,this.lastSyncTime=e),this.getAllEvents())}getAllEventsNonBlocking(e=!0){let t=this.getAllEvents();return e&&this.triggerBackgroundSyncIfNeeded(),t}triggerBackgroundSyncIfNeeded(){let e=Date.now();this.config.sources.some(r=>{if(!r.enabled)return!1;let i=this.cache.get(r.id);return i?e>i.expiresAt:!0})&&e-this.lastSyncTime>this.SYNC_DEBOUNCE_MS&&this.syncAllSources().catch(r=>{console.warn("Background ICS sync failed:",r)})}getEventsFromSource(e){let t=this.cache.get(e),r=this.config.sources.find(i=>i.id===e);return!t||!(r!=null&&r.enabled)?[]:this.applyFilters(t.events,r)}convertEventsToTasks(e){return e.map(t=>this.convertEventToTask(t))}convertEventsWithHolidayToTasks(e){return e.filter(t=>t.showInForecast).map(t=>this.convertEventWithHolidayToTask(t))}convertEventToTask(e){var o;let t=this.applyTextReplacements(e),r=Ff.applyStatusMapping(e,e.source.statusMapping,this.pluginSettings),i=this.extractTimeComponentsFromIcsEvent(e,{...e,...t});return{id:`ics-${e.source.id}-${e.uid}`,content:t.summary,filePath:`ics://${e.source.name}`,line:0,completed:r==="x"||r===this.pluginSettings.taskStatusMarks.Completed,status:r,originalMarkdown:`- [${r}] ${t.summary}`,metadata:{tags:e.categories||[],children:[],priority:this.mapIcsPriorityToTaskPriority(e.priority),startDate:e.dtstart.getTime(),dueDate:(o=e.dtend)==null?void 0:o.getTime(),scheduledDate:e.dtstart.getTime(),project:e.source.name,context:t.location,heading:[],...i},icsEvent:{...e,summary:t.summary,description:t.description,location:t.location},readonly:!0,badge:e.source.showType==="badge",source:{type:"ics",name:e.source.name,id:e.source.id}}}convertEventWithHolidayToTask(e){var l;let t=this.applyTextReplacements(e),r=t.summary;e.holidayGroup&&e.holidayGroup.displayStrategy==="summary"&&(r=e.holidayGroup.title);let i=Ff.applyStatusMapping(e,e.source.statusMapping,this.pluginSettings),s=this.extractTimeComponentsFromIcsEvent(e,{...e,...t});return{id:`ics-${e.source.id}-${e.uid}`,content:r,filePath:`ics://${e.source.name}`,line:0,completed:i==="x"||i===this.pluginSettings.taskStatusMarks.Completed,status:i,originalMarkdown:`- [${i}] ${r}`,metadata:{tags:e.categories||[],children:[],priority:this.mapIcsPriorityToTaskPriority(e.priority),startDate:e.dtstart.getTime(),dueDate:(l=e.dtend)==null?void 0:l.getTime(),scheduledDate:e.dtstart.getTime(),project:e.source.name,context:t.location,heading:[],...s},icsEvent:{...e,summary:t.summary,description:t.description,location:t.location},readonly:!0,badge:e.source.showType==="badge",source:{type:"ics",name:e.source.name,id:e.source.id}}}extractTimeComponentsFromIcsEvent(e,t){if(!this.timeParsingService)return{};try{let r={};if(e.dtstart&&!e.allDay){let u=this.createTimeComponentFromDate(e.dtstart);u&&(r.startTime=u,r.scheduledTime=u)}if(e.dtend&&!e.allDay){let u=this.createTimeComponentFromDate(e.dtend);u&&(r.endTime=u,r.dueTime=u,r.startTime&&(r.startTime.isRange=!0,r.startTime.rangePartner=u,u.isRange=!0,u.rangePartner=r.startTime))}let i={},s=[t.summary,t.description,t.location].filter(Boolean).join(" ");if(s.trim()){let{timeComponents:u}=this.timeParsingService.parseTimeComponents(s);i=u}let o={...i,...r},l=this.createEnhancedDateTimesFromIcs(e,o),c={};return Object.keys(o).length>0&&(c.timeComponents=o),l&&Object.keys(l).length>0&&(c.enhancedDates=l),c}catch(r){return console.error(`[IcsManager] Failed to extract time components from ICS event ${e.uid}:`,r),{}}}createTimeComponentFromDate(e){if(!e||isNaN(e.getTime()))return null;let t=e.getHours().toString().padStart(2,"0"),r=e.getMinutes().toString().padStart(2,"0"),i=e.getSeconds(),s=`${t}:${r}`;return i>0&&(s+=`:${i.toString().padStart(2,"0")}`),{hour:e.getHours(),minute:e.getMinutes(),second:i>0?i:void 0,originalText:s,isRange:!1}}createEnhancedDateTimesFromIcs(e,t){let r={};if(e.dtstart&&(r.startDateTime=new Date(e.dtstart),r.scheduledDateTime=new Date(e.dtstart)),e.dtend&&(r.endDateTime=new Date(e.dtend),r.dueDateTime=new Date(e.dtend)),e.allDay&&t){let i=new Date(e.dtstart);if(t.startTime){let s=new Date(i);s.setHours(t.startTime.hour,t.startTime.minute,t.startTime.second||0),r.startDateTime=s,r.scheduledDateTime=s}if(t.endTime){let s=new Date(i);s.setHours(t.endTime.hour,t.endTime.minute,t.endTime.second||0),t.startTime&&t.endTime.hour0?r:void 0}mapIcsStatusToTaskStatus(e){switch(e==null?void 0:e.toUpperCase()){case"COMPLETED":return"x";case"CANCELLED":return"-";case"TENTATIVE":return"?";case"CONFIRMED":default:return" "}}mapIcsPriorityToTaskPriority(e){if(e!==void 0){if(e>=1&&e<=4)return 1;if(e===5)return 3;if(e>=6&&e<=9)return 5}}async syncSource(e){var r;let t=this.config.sources.find(i=>i.id===e);if(!t)throw new Error(`Source not found: ${e}`);this.updateSyncStatus(e,{status:"syncing"});try{let i=await this.fetchIcsData(t);if(i.success&&i.data){let s={sourceId:e,events:i.data.events,timestamp:i.timestamp,expiresAt:i.timestamp+this.config.maxCacheAge*60*60*1e3};this.cache.set(e,s),this.updateSyncStatus(e,{status:"idle",lastSync:i.timestamp,eventCount:i.data.events.length}),(r=this.onEventsUpdated)==null||r.call(this,e,i.data.events)}else{let s=this.categorizeError(i.error);console.warn(`ICS sync failed for source ${e} (${s}):`,i.error),this.updateSyncStatus(e,{status:"error",error:`${s}: ${i.error||"Unknown error"}`})}return i}catch(i){let s=i instanceof Error?i.message:"Unknown error",o=this.categorizeError(s);return console.warn(`ICS sync exception for source ${e} (${o}):`,i),this.updateSyncStatus(e,{status:"error",error:`${o}: ${s}`}),{success:!1,error:s,timestamp:Date.now()}}}async syncAllSources(){let e=new Map,t=this.config.sources.filter(r=>r.enabled).map(async r=>{let i=await this.syncSource(r.id);return e.set(r.id,i),i});return await Promise.allSettled(t),e}getSyncStatus(e){return this.syncStatuses.get(e)}getAllSyncStatuses(){return new Map(this.syncStatuses)}clearSourceCache(e){this.cache.delete(e)}clearAllCache(){this.cache.clear()}async fetchIcsData(e){var t;try{let r=qi.convertWebcalUrl(e.url);if(!r.success)return{success:!1,error:`URL validation failed: ${r.error}`,timestamp:Date.now()};let s={url:r.convertedUrl,method:"GET",headers:{"User-Agent":"Obsidian Task Progress Bar Plugin",...(t=e.auth)==null?void 0:t.headers}};if(e.auth)switch(e.auth.type){case"basic":if(e.auth.username&&e.auth.password){let m=btoa(`${e.auth.username}:${e.auth.password}`);s.headers.Authorization=`Basic ${m}`}break;case"bearer":e.auth.token&&(s.headers.Authorization=`Bearer ${e.auth.token}`);break}let o=this.cache.get(e.id);o!=null&&o.etag&&(s.headers["If-None-Match"]=o.etag),o!=null&&o.lastModified&&(s.headers["If-Modified-Since"]=o.lastModified);let l=this.config.networkTimeout*1e3,c=new Promise((m,f)=>{setTimeout(()=>{f(new Error(`Request timeout after ${this.config.networkTimeout} seconds`))},l)}),u=await Promise.race([(0,qv.requestUrl)(s),c]);if(u.status===304&&o)return{success:!0,data:{events:o.events,errors:[],metadata:{}},timestamp:Date.now()};if(u.status!==200)return{success:!1,error:`HTTP ${u.status}: ${u.text||"Unknown error"}`,statusCode:u.status,timestamp:Date.now()};let p=Uv.parse(u.text,e);return o&&(o.etag=u.headers.etag,o.lastModified=u.headers["last-modified"]),{success:!0,data:p,timestamp:Date.now()}}catch(r){return{success:!1,error:r instanceof Error?r.message:"Unknown error",timestamp:Date.now()}}}applyFilters(e,t){let r=[...e];if(e.length,t.showAllDayEvents,t.showTimedEvents,t.filters,!t.showAllDayEvents){let i=r.length;r=r.filter(s=>!s.allDay),`${i}${r.length}`}if(!t.showTimedEvents){let i=r.length;r=r.filter(s=>s.allDay),`${i}${r.length}`}if(t.filters&&(r=r.filter(i=>{var s,o,l,c,u,p,m,f;if(t.filters.include){let h=t.filters.include,g=!0;if((s=h.summary)!=null&&s.length&&(g=g&&h.summary.some(k=>this.matchesPattern(i.summary,k))),(o=h.description)!=null&&o.length&&i.description&&(g=g&&h.description.some(k=>this.matchesPattern(i.description,k))),(l=h.location)!=null&&l.length&&i.location&&(g=g&&h.location.some(k=>this.matchesPattern(i.location,k))),(c=h.categories)!=null&&c.length&&i.categories&&(g=g&&h.categories.some(k=>i.categories.includes(k))),!g)return!1}if(t.filters.exclude){let h=t.filters.exclude;if((u=h.summary)!=null&&u.length&&h.summary.some(g=>this.matchesPattern(i.summary,g))||(p=h.description)!=null&&p.length&&i.description&&h.description.some(g=>this.matchesPattern(i.description,g))||(m=h.location)!=null&&m.length&&i.location&&h.location.some(g=>this.matchesPattern(i.location,g))||(f=h.categories)!=null&&f.length&&i.categories&&h.categories.some(g=>i.categories.includes(g)))return!1}return!0})),r.length>this.config.maxEventsPerSource){let i=r.length;r=r.sort((s,o)=>o.dtstart.getTime()-s.dtstart.getTime()).slice(0,this.config.maxEventsPerSource),`${i}${r.length}${this.config.maxEventsPerSource}`}return r.length,r}matchesPattern(e,t){try{return new RegExp(t,"i").test(e)}catch(r){return e.toLowerCase().includes(t.toLowerCase())}}applyTextReplacements(e){let r=e.source.textReplacements;if(!r||r.length===0)return{summary:e.summary,description:e.description,location:e.location};let i=e.summary,s=e.description,o=e.location;for(let l of r)if(l.enabled)try{let c=new RegExp(l.pattern,l.flags||"g");switch(l.target){case"summary":i=i.replace(c,l.replacement);break;case"description":s&&(s=s.replace(c,l.replacement));break;case"location":o&&(o=o.replace(c,l.replacement));break;case"all":i=i.replace(c,l.replacement),s&&(s=s.replace(c,l.replacement)),o&&(o=o.replace(c,l.replacement));break}}catch(c){console.warn(`Invalid regex pattern in text replacement rule "${l.name}": ${l.pattern}`,c)}return{summary:i,description:s,location:o}}updateSyncStatus(e,t){let r=this.syncStatuses.get(e)||{sourceId:e,status:"idle"};this.syncStatuses.set(e,{...r,...t})}categorizeError(e){if(!e)return"unknown";let t=e.toLowerCase();return t.includes("timeout")||t.includes("request timeout")?"timeout":t.includes("connection")||t.includes("network")||t.includes("err_connection")?"network":t.includes("404")||t.includes("not found")?"not-found":t.includes("403")||t.includes("unauthorized")||t.includes("401")?"auth":t.includes("500")||t.includes("502")||t.includes("503")?"server":t.includes("parse")||t.includes("invalid")?"parse":"unknown"}startBackgroundRefresh(){this.stopBackgroundRefresh();for(let e of this.config.sources)if(e.enabled){let t=e.refreshInterval||this.config.globalRefreshInterval,r=setInterval(()=>{this.syncSource(e.id).catch(i=>{console.error(`Background sync failed for source ${e.id}:`,i)})},t*60*1e3);this.refreshIntervals.set(e.id,r)}}stopBackgroundRefresh(){for(let[e,t]of this.refreshIntervals)clearInterval(t);this.refreshIntervals.clear()}clearRefreshInterval(e){let t=this.refreshIntervals.get(e);t&&(clearInterval(t),this.refreshIntervals.delete(e))}onunload(){this.stopBackgroundRefresh(),super.onunload()}};var Ts=require("obsidian");q();var Gv=class{constructor(a){this.plugin=a}register(){this.plugin.registerObsidianProtocolHandler("task-genius",async e=>{await this.handleUri(e)});let a=["settings","create-task","open-view"];for(let e of a)this.plugin.registerObsidianProtocolHandler(`task-genius/${e}`,async t=>{await this.handleUri({...t,action:e})})}async handleUri(a){let{action:e}=a,t=e||"settings";switch(t){case"settings":await this.handleSettingsUri(a);break;case"create-task":await this.handleCreateTaskUri(a);break;case"open-view":await this.handleOpenViewUri(a);break;default:new Ts.Notice(d("Unknown URI action: ")+t)}}async handleSettingsUri(a){let{tab:e,section:t,search:r}=a,i=this.plugin.app.setting;i.open(),i.openTabById(this.plugin.manifest.id),await new Promise(s=>setTimeout(s,100)),e&&this.navigateToSettingsTab(e,t,r),a.action&&await this.handleSettingsAction(a.action,e)}navigateToSettingsTab(a,e,t){if(this.plugin.settingTab&&this.plugin.settingTab.navigateToTab){this.plugin.settingTab.navigateToTab(a,e,t);return}if(!{general:"general",index:"index","view-settings":"view-settings","file-filter":"file-filter","progress-bar":"progress-bar","task-status":"task-status","task-handler":"task-handler",workflow:"workflow",reward:"reward",habit:"habit","mcp-integration":"mcp-integration",ics:"ics","time-parsing":"time-parsing","beta-test":"beta-test",about:"about"}[a]){new Ts.Notice(d("Unknown settings tab: ")+a);return}let s=this.plugin.app.setting.activeTab;if(!s)return;s.containerEl.querySelectorAll(".settings-tab").forEach(l=>{var u;let c=(u=l.textContent)==null?void 0:u.toLowerCase();c&&c.includes(a.replace("-"," "))&&(l.click(),e&&setTimeout(()=>{this.scrollToSection(e)},200),t&&setTimeout(()=>{this.performSettingsSearch(t)},300))})}scrollToSection(a){var r;let e=this.plugin.app.setting.activeTab;if(!e)return;if(e.containerEl.querySelectorAll("h3, h4").forEach(i=>{var o;let s=(o=i.textContent)==null?void 0:o.toLowerCase();s&&s.includes(a.replace("-"," "))&&i.scrollIntoView({behavior:"smooth",block:"start"})}),a==="cursor"){let i=e.containerEl.querySelector(".mcp-client-section");if(i){let s=i.querySelector(".mcp-client-header");s&&((r=s.textContent)!=null&&r.includes("Cursor"))&&(s.click(),i.scrollIntoView({behavior:"smooth",block:"start"}))}}}performSettingsSearch(a){let e=this.plugin.app.setting.activeTab;if(!e)return;let t=e.containerEl.querySelector("input[type='search'], input.search-input");t&&(t.value=a,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus())}async handleSettingsAction(a,e){await new Promise(r=>setTimeout(r,500));let t=this.plugin.app.setting.activeTab;if(t)switch(a){case"enable":if(e==="mcp-integration"){let r=t.containerEl.querySelector(".setting-item:has(.setting-item-name:contains('Enable MCP Server')) .checkbox-container input");r&&!r.checked&&r.click()}break;case"test":if(e==="mcp-integration"){let r=Array.from(t.containerEl.querySelectorAll("button")).find(i=>i.textContent===d("Test"));r&&r.click()}break;case"regenerate-token":if(e==="mcp-integration"){let r=Array.from(t.containerEl.querySelectorAll("button")).find(i=>i.textContent===d("Regenerate"));r&&r.click()}break}}async handleCreateTaskUri(a){var u;let{content:e,project:t,context:r,tags:i,priority:s,dueDate:o,startDate:l}=a;if(!e){new Ts.Notice(d("Task content is required"));return}let c=i?i.split(",").map(p=>p.trim()):[];try{if(!this.plugin.writeAPI){new Ts.Notice(d("Task system not initialized"));return}let p=((u=this.plugin.app.workspace.getActiveFile())==null?void 0:u.path)||`Daily/${new Date().toISOString().split("T")[0]}.md`;await this.plugin.writeAPI.createTask({content:decodeURIComponent(e),project:t?decodeURIComponent(t):void 0,context:r?decodeURIComponent(r):void 0,tags:c,priority:s?parseInt(s):void 0,dueDate:o||void 0,startDate:l||void 0,filePath:p}),new Ts.Notice(d("Task created successfully"))}catch(p){console.error("Failed to create task from URI:",p),new Ts.Notice(d("Failed to create task"))}}async handleOpenViewUri(a){let{type:e}=a;if(!e){new Ts.Notice(d("View type is required"));return}let r={inbox:"task-progress-bar-view",forecast:"task-progress-bar-view",project:"task-progress-bar-view",tag:"task-progress-bar-view",review:"task-progress-bar-view",calendar:"task-progress-bar-view",gantt:"task-progress-bar-view",kanban:"task-progress-bar-view",matrix:"task-progress-bar-view",table:"task-progress-bar-view"}[e];if(!r){new Ts.Notice(d("Unknown view type: ")+e);return}let i=this.plugin.app.workspace.getLeaf(!0);await i.setViewState({type:r,state:{viewType:e}}),this.plugin.app.workspace.revealLeaf(i)}static generateSettingsUri(a,e,t,r){let i=new URLSearchParams;a&&i.set("tab",a),e&&i.set("section",e),t&&i.set("action",t),r&&i.set("search",r);let s=i.toString();return`obsidian://task-genius/settings${s?"?"+s:""}`}static generateCreateTaskUri(a,e){let t=new URLSearchParams;return t.set("content",encodeURIComponent(a)),e!=null&&e.project&&t.set("project",encodeURIComponent(e.project)),e!=null&&e.context&&t.set("context",encodeURIComponent(e.context)),e!=null&&e.tags&&t.set("tags",e.tags.join(",")),e!=null&&e.priority&&t.set("priority",e.priority.toString()),e!=null&&e.dueDate&&t.set("dueDate",e.dueDate),e!=null&&e.startDate&&t.set("startDate",e.startDate),`obsidian://task-genius/create-task?${t.toString()}`}static generateOpenViewUri(a){return`obsidian://task-genius/open-view?type=${a}`}};var Qv=require("obsidian");b0();var Kv=class extends Qv.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.VERSION_STORAGE_KEY="plugin-version";this.persister=new fc(this.app.appId),this.currentVersion=this.getCurrentVersionFromManifest()}getCurrentVersionFromManifest(){var e;return(e=this.plugin.manifest)!=null&&e.version?this.plugin.manifest.version:(console.warn("Could not determine plugin version from manifest, using fallback"),"unknown")}async getPreviousVersion(){try{let e=await this.persister.loadFile(this.VERSION_STORAGE_KEY);return(e==null?void 0:e.data)||null}catch(e){return console.error("Error loading previous version:",e),null}}async storeCurrentVersion(){try{await this.persister.storeFile(this.VERSION_STORAGE_KEY,this.currentVersion)}catch(e){console.error("Error storing current version:",e)}}compareVersions(e,t){if(e===t||e==="unknown"||t==="unknown")return 0;let r=e.split(".").map(o=>parseInt(o,10)||0),i=t.split(".").map(o=>parseInt(o,10)||0),s=Math.max(r.length,i.length);for(;r.lengthi[o])return 1}return 0}async checkVersionChange(){try{let e=await this.getPreviousVersion(),t=e===null,r=!1,i=!1,s=!1,o;if(!t&&e)if(!this.isValidVersionString(e))console.warn(`Corrupted version data detected: ${e}, forcing rebuild`),s=!0,o=`Corrupted version data detected (${e}) - rebuilding index`;else{let c=this.compareVersions(this.currentVersion,e);r=c>0,i=c<0}return t?(s=!0,o="First installation - building initial index"):r?(s=!0,o=`Plugin upgraded from ${e} to ${this.currentVersion} - rebuilding index for compatibility`):i&&(s=!0,o=`Plugin downgraded from ${e} to ${this.currentVersion} - rebuilding index for compatibility`),{versionInfo:{current:this.currentVersion,previous:e,isFirstInstall:t,isUpgrade:r,isDowngrade:i},requiresRebuild:s,rebuildReason:o}}catch(e){return console.error("Error checking version change:",e),{versionInfo:{current:this.currentVersion,previous:null,isFirstInstall:!0,isUpgrade:!1,isDowngrade:!1},requiresRebuild:!0,rebuildReason:`Error checking version (${e.message}) - rebuilding index for safety`}}}async markVersionProcessed(){await this.storeCurrentVersion()}getCurrentVersion(){return this.currentVersion}async forceVersionMismatch(){try{await this.persister.storeFile(this.VERSION_STORAGE_KEY,"0.0.0")}catch(e){console.error("Error forcing version mismatch:",e)}}async clearVersionInfo(){try{await this.persister.removeFile(this.VERSION_STORAGE_KEY)}catch(e){console.error("Error clearing version info:",e)}}isValidVersionString(e){return!e||typeof e!="string"?!1:e==="unknown"?!0:/^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9\-\.]+))?$/.test(e)}async recoverFromCorruptedVersion(){try{await this.clearVersionInfo(),await this.storeCurrentVersion(),`${this.currentVersion}`}catch(e){throw console.error("Error during version recovery:",e),new Error(`Failed to recover from corrupted version: ${e.message}`)}}async handleEmergencyRebuild(e){return console.warn(`Emergency rebuild triggered: ${e}`),{versionInfo:{current:this.currentVersion,previous:null,isFirstInstall:!1,isUpgrade:!1,isDowngrade:!1},requiresRebuild:!0,rebuildReason:`Emergency rebuild: ${e}`}}async validateVersionStorage(){try{let e="test-version",t=await this.getPreviousVersion();await this.persister.storeFile(this.VERSION_STORAGE_KEY,e);let r=await this.getPreviousVersion();return t?await this.persister.storeFile(this.VERSION_STORAGE_KEY,t):await this.clearVersionInfo(),r===e}catch(e){return console.error("Version storage validation failed:",e),!1}}async getDiagnosticInfo(){let e=await this.getPreviousVersion(),t=await this.validateVersionStorage(),r=e?this.isValidVersionString(e):!0,i=!1;try{await this.persister.storeFile(`${this.VERSION_STORAGE_KEY}-test`,"test"),await this.persister.removeFile(`${this.VERSION_STORAGE_KEY}-test`),i=!0}catch(s){console.error("Write test failed:",s)}return{currentVersion:this.currentVersion,previousVersion:e,storageValid:t,versionValid:r,canWrite:i}}isObsidianVersionSupported(e){try{return(0,Qv.requireApiVersion)(e)}catch(t){return console.error("Error checking Obsidian version support:",t),!1}}isNewBasesApiSupported(){try{let e=this.isObsidianVersionSupported("1.9.10"),t=typeof this.plugin.registerBasesView=="function";return e&&t}catch(e){return console.error("Error checking new Bases API support:",e),!1}}};var DB=require("obsidian"),Xv=class{constructor(){this.notice=null;this.startTime=0;this.processedFiles=0;this.totalFiles=0;this.tasksFound=0}startRebuild(a,e){this.startTime=Date.now(),this.processedFiles=0,this.totalFiles=a,this.tasksFound=0;let t=e?` (${e})`:"";this.notice=new DB.Notice(`Task Genius: Starting rebuild${t}...`,0)}updateStep(a,e){if(!this.notice)return;let t=`Task Genius: ${a}`;if(this.totalFiles>0){let r=Math.round(this.processedFiles/this.totalFiles*100);t+=` (${this.processedFiles}/${this.totalFiles} - ${r}%)`}if(this.tasksFound>0&&(t+=` - ${this.tasksFound} tasks found`),e){let r=e.split("/").pop()||e;t+=` - ${r}`}this.notice.setMessage(t)}incrementProcessedFiles(a=0){if(this.processedFiles++,this.tasksFound+=a,!this.notice)return;let e=this.totalFiles>0?Math.round(this.processedFiles/this.totalFiles*100):0,t=`Task Genius: Processing files (${this.processedFiles}/${this.totalFiles} - ${e}%) - ${this.tasksFound} tasks found`;this.notice.setMessage(t)}completeRebuild(a){if(!this.notice)return;let e=Date.now()-this.startTime,t=e>1e3?`${Math.round(e/1e3)}s`:`${e}ms`,i=`Task Genius: Rebuild complete! Found ${a!=null?a:this.tasksFound} tasks in ${t}`;this.notice.setMessage(i),setTimeout(()=>{this.notice&&(this.notice.hide(),this.notice=null)},3e3)}failRebuild(a){if(!this.notice)return;let e=`Task Genius: Rebuild failed - ${a}`;this.notice.setMessage(e),setTimeout(()=>{this.notice&&(this.notice.hide(),this.notice=null)},5e3)}cleanup(){this.notice&&(this.notice.hide(),this.notice=null)}};var La=require("obsidian");var Jv=class{constructor(a){this.plugin=a}getElectron(){try{let a=window.electron||globalThis.electron;if(a)return a;let e=window.require||globalThis.require;return e?e("electron"):null}catch(a){return null}}isIcsBadge(a){var e,t,r,i,s,o;try{let c=((i=(t=(e=a==null?void 0:a.metadata)==null?void 0:e.source)==null?void 0:t.type)!=null?i:(r=a==null?void 0:a.source)==null?void 0:r.type)==="ics",u=(a==null?void 0:a.badge)===!0||((o=(s=a==null?void 0:a.icsEvent)==null?void 0:s.source)==null?void 0:o.showType)==="badge";return!!(c&&u)}catch(l){return!1}}async buildDueTasks(a=5){var o;let e=this.plugin.dataflowOrchestrator,t=(o=e==null?void 0:e.getQueryAPI)==null?void 0:o.call(e);if(!t)return[];let r=await t.getAllTasks(),i=new Date;i.setHours(23,59,59,999);let s=r.filter(l=>{var c;return l.completed||!((c=l.metadata)!=null&&c.dueDate)||this.isIcsBadge(l)?!1:l.metadata.dueDate<=i.getTime()});return s.sort((l,c)=>{var u,p;return(((u=l.metadata)==null?void 0:u.dueDate)||0)-(((p=c.metadata)==null?void 0:p.dueDate)||0)}),s.slice(0,a)}async applyToTray(a,e){var l;let t=this.getElectron(),r=(t==null?void 0:t.Menu)||((l=t==null?void 0:t.remote)==null?void 0:l.Menu);if(!r||!a)return;let i=await this.buildDueTasks(7),s=[];s.push({label:`Vault: ${this.plugin.app.vault.getName()}`,enabled:!1}),s.push({label:"Open Vault",click:()=>e.openVault()}),s.push({label:"Open Task Genius",click:()=>e.openTaskView()}),s.push({type:"separator"}),s.push({label:"Quick Capture...",accelerator:"CmdOrCtrl+Shift+Q",click:()=>e.quickCapture()}),s.push({type:"separator"});for(let c of i){let u=c.content.length>50?c.content.slice(0,50)+"\u2026":c.content;s.push({label:u,submenu:[{label:"Open",click:()=>e.openTask(c)},{label:"Complete",click:()=>e.completeTask(c.id)},{type:"separator"},{label:"Snooze 1d",click:()=>e.postponeTask(c,1440*6e4)},{label:"Snooze 2d",click:()=>e.postponeTask(c,2880*6e4)},{label:"Snooze 3d",click:()=>e.postponeTask(c,4320*6e4)},{label:"Snooze 1w",click:()=>e.postponeTask(c,10080*6e4)},{label:"Custom date\u2026",click:()=>e.pickCustomDate(c)},{type:"separator"},{label:"Priority",submenu:[{label:"Highest",click:()=>e.setPriority(c,5)},{label:"High",click:()=>e.setPriority(c,4)},{label:"Medium",click:()=>e.setPriority(c,3)},{label:"Low",click:()=>e.setPriority(c,2)},{label:"Lowest",click:()=>e.setPriority(c,1)}]}]})}i.length===0&&s.push({label:"No tasks due today",enabled:!1}),s.push({type:"separator"}),s.push({label:"Refresh",click:()=>{}});let o=r.buildFromTemplate(s);try{a.setContextMenu(o)}catch(c){}}};q();var Zv=require("obsidian");q();var U0=require("obsidian"),eb=class{constructor(a){this.captureWindow=null;this.ipcRenderer=null;this.ipcMain=null;this.BrowserWindow=null;this.captureResolve=null;this.captureReject=null;this.isClosingNormally=!1;this.plugin=a,this.app=a.app,this.initializeElectron()}getElectron(){try{let a=window.electron||globalThis.electron;if(a)return a;let e=window.require||globalThis.require;return e?e("electron"):null}catch(a){return null}}initializeElectron(){var e,t;let a=this.getElectron();return a?(this.BrowserWindow=((e=a.remote)==null?void 0:e.BrowserWindow)||a.BrowserWindow,this.ipcRenderer=a.ipcRenderer,this.ipcMain=((t=a.remote)==null?void 0:t.ipcMain)||a.ipcMain,!!(this.BrowserWindow&&this.ipcRenderer)):!1}async openCaptureWindow(){return this.BrowserWindow?this.captureWindow&&!this.captureWindow.isDestroyed()?(this.captureWindow.show(),this.captureWindow.focus(),null):new Promise((a,e)=>{this.captureResolve=a,this.captureReject=e;try{this.captureWindow=new this.BrowserWindow({width:600,height:400,useContentSize:!0,minWidth:400,minHeight:250,modal:!1,show:!1,frame:!0,autoHideMenuBar:!0,alwaysOnTop:!0,resizable:!0,minimizable:!1,maximizable:!1,fullscreenable:!1,skipTaskbar:!0,title:"Quick Capture - Task Genius",backgroundColor:this.getBackgroundColor(),webPreferences:{nodeIntegration:!0,contextIsolation:!1,webSecurity:!1}});let t=this.generateCaptureHTML();this.captureWindow.loadURL(`data:text/html;charset=utf-8,${encodeURIComponent(t)}`),this.setupIPCHandlers(),this.captureWindow.once("ready-to-show",()=>{var r,i;process.platform==="darwin"&&((r=this.captureWindow)!=null&&r.showInactive)?this.captureWindow.showInactive():(i=this.captureWindow)==null||i.show(),setTimeout(()=>{var s;(s=this.captureWindow)==null||s.focus()},100),this.captureWindow.webContents.executeJavaScript(` window.postMessage({ type: 'init', settings: ${JSON.stringify(this.getQuickCaptureSettings())} }, '*'); `)}),this.captureWindow.webContents.once("did-finish-load",async()=>{var r;try{let i=await((r=this.captureWindow)==null?void 0:r.webContents.executeJavaScript("({w:document.documentElement.scrollWidth,h:document.documentElement.scrollHeight})"));i&&this.captureWindow&&!this.captureWindow.isDestroyed()&&this.captureWindow.setContentSize(Math.max(500,Math.min(800,i.w)),Math.max(320,Math.min(600,i.h)),!0)}catch(i){}}),this.captureWindow.on("closed",()=>{this.captureWindow=null,this.cleanupIPCHandlers(),this.isClosingNormally||this.captureResolve&&this.captureResolve(null),this.captureResolve=null,this.captureReject=null,this.isClosingNormally=!1})}catch(t){console.error("Failed to create capture window:",t),new Zv.Notice(d("Failed to open quick capture window")),e(t)}}):(new Zv.Notice(d("Electron not available for quick capture")),null)}setupIPCHandlers(){var t;if(!this.captureWindow)return;let a=this.getElectron(),e=(a==null?void 0:a.ipcMain)||((t=a==null?void 0:a.remote)==null?void 0:t.ipcMain);if(e)try{e.removeHandler("quick-capture-save"),e.removeHandler("quick-capture-cancel"),e.removeHandler("quick-capture-request-data"),e.handle("quick-capture-save",async(r,i)=>{await this.handleSaveTask(i)}),e.handle("quick-capture-cancel",async()=>{this.closeCaptureWindow()}),e.handle("quick-capture-request-data",async(r,i)=>await this.getDataForWindow(i)),this._ipcHandlers={ipcMain:e,registered:!0}}catch(r){console.warn("[ElectronQuickCapture] Failed to set up ipcMain handlers:",r)}this.captureWindow.webContents.on("ipc-message",async(r,i,...s)=>{var o,l;if(i==="quick-capture-save")await this.handleSaveTask(s[0]);else if(i==="quick-capture-cancel")this.closeCaptureWindow();else if(i==="quick-capture-request-data"){let c=await this.getDataForWindow(s[0]);(l=(o=this.captureWindow)==null?void 0:o.webContents)==null||l.executeJavaScript(` window.receiveSuggestions('${s[0]}', ${JSON.stringify(c)}); `)}}),e&&(e.on("quick-capture-save",async(r,i)=>{await this.handleSaveTask(i)}),e.on("quick-capture-cancel",()=>{this.closeCaptureWindow()}),e.on("quick-capture-request-data",async(r,i)=>{let s=await this.getDataForWindow(i);r.reply("quick-capture-data-response",i,s)}),this._ipcHandlers={ipcMain:e,registered:!0})}injectWindowHandlers(){if(!this.captureWindow)return;let a=` window.handleQuickCaptureSave = async (data) => { return ${JSON.stringify({handler:"save"})}; }; `,e=` window.handleQuickCaptureCancel = () => { window.close(); }; `;this.captureWindow.webContents.executeJavaScript(a),this.captureWindow.webContents.executeJavaScript(e),this.captureWindow.webContents.on("ipc-message",async(t,r,...i)=>{r==="quick-capture-save"?await this.handleSaveTask(i[0]):r==="quick-capture-cancel"&&this.closeCaptureWindow()})}cleanupIPCHandlers(){if(!this._ipcHandlers)return;let{ipcMain:a}=this._ipcHandlers;if(a)try{a.removeHandler("quick-capture-save"),a.removeHandler("quick-capture-cancel"),a.removeHandler("quick-capture-request-data"),a.removeAllListeners("quick-capture-save"),a.removeAllListeners("quick-capture-cancel"),a.removeAllListeners("quick-capture-request-data")}catch(e){}delete this._ipcHandlers}async handleSaveTask(a){var e,t,r,i;try{let{content:s,project:o,context:l,dueDate:c,priority:u,tags:p}=a;if(!(s!=null&&s.trim())){(t=(e=this.captureWindow)==null?void 0:e.webContents)==null||t.executeJavaScript(` showError('Task content cannot be empty'); `);return}let m={content:s.trim()};if(o&&(m.project=o),l&&(m.context=l),u&&(m.priority=u),p&&p.length>0&&(m.tags=p),c){let h=this.parseDueDate(c);h&&(m.dueDate=h)}let f=await this.createTask(m);if(f.success)new Zv.Notice(d("Task captured successfully")),this.isClosingNormally=!0,this.captureResolve&&(this.captureResolve(f.task),this.captureResolve=null,this.captureReject=null),this.closeCaptureWindow();else throw new Error(f.error||"Failed to create task")}catch(s){console.error("Failed to save task:",s);let o=s.message||"Failed to save task";(i=(r=this.captureWindow)==null?void 0:r.webContents)==null||i.executeJavaScript(` showError('${o.replace(/'/g,"\\'")}'); `)}}async createTask(a){if(!this.plugin.writeAPI)return console.error("[ElectronQuickCapture] WriteAPI not available"),{success:!1,error:"Write API not available"};let e=this.plugin.settings.quickCapture,t=(e==null?void 0:e.targetType)||"daily-note";try{let r;return t==="daily-note"?r=await this.plugin.writeAPI.createTaskInDailyNote(a):t==="fixed"&&(e!=null&&e.targetFile)?(e.targetFile,a.filePath=e.targetFile,r=await this.plugin.writeAPI.createTask(a)):r=await this.plugin.writeAPI.createTaskInDailyNote(a),r}catch(r){return console.error("[ElectronQuickCapture] Error creating task:",r),{success:!1,error:r.message||"Failed to create task"}}}parseDueDate(a){if(a)try{let e=[{pattern:/^today$/i,offset:0},{pattern:/^tomorrow$/i,offset:1},{pattern:/^next week$/i,offset:7},{pattern:/^in (\d+) days?$/i,offsetMatch:1}];for(let r of e){let i=a.match(r.pattern);if(i){let s=r.offsetMatch?parseInt(i[r.offsetMatch]):r.offset;return(0,U0.moment)().add(s,"days").format("YYYY-MM-DD")}}let t=(0,U0.moment)(a);if(t.isValid())return t.format("YYYY-MM-DD")}catch(e){}}async getDataForWindow(a){switch(a){case"projects":return await this.getProjects();case"contexts":return await this.getContexts();case"tags":return await this.getTags();default:return[]}}async getProjects(){var a,e,t;try{let r=(e=(a=this.plugin.dataflowOrchestrator)==null?void 0:a.getQueryAPI)==null?void 0:e.call(a);if(!r)return[];let i=await r.getAllTasks(),s=new Set;for(let o of i)(t=o.metadata)!=null&&t.project&&s.add(o.metadata.project);return Array.from(s).sort()}catch(r){return[]}}async getContexts(){var a,e,t;try{let r=(e=(a=this.plugin.dataflowOrchestrator)==null?void 0:a.getQueryAPI)==null?void 0:e.call(a);if(!r)return[];let i=await r.getAllTasks(),s=new Set;for(let o of i)(t=o.metadata)!=null&&t.context&&s.add(o.metadata.context);return Array.from(s).sort()}catch(r){return[]}}async getTags(){var a,e,t;try{let r=(e=(a=this.plugin.dataflowOrchestrator)==null?void 0:a.getQueryAPI)==null?void 0:e.call(a);if(!r)return[];let i=await r.getAllTasks(),s=new Set;for(let o of i)(t=o.metadata)!=null&&t.tags&&Array.isArray(o.metadata.tags)&&o.metadata.tags.forEach(l=>s.add(l));return Array.from(s).sort()}catch(r){return[]}}closeCaptureWindow(){this.captureWindow&&!this.captureWindow.isDestroyed()&&(this.isClosingNormally||(this.isClosingNormally=!0),this.captureWindow.close()),this.captureWindow=null}getBackgroundColor(){try{return this.isDarkTheme()?"#202020":"#ffffff"}catch(a){return"#ffffff"}}isDarkTheme(){var a;try{let e=this.getElectron(),t=(e==null?void 0:e.nativeTheme)||((a=e==null?void 0:e.remote)==null?void 0:a.nativeTheme);return t&&typeof t.shouldUseDarkColors=="boolean"?t.shouldUseDarkColors:window.matchMedia("(prefers-color-scheme: dark)").matches}catch(e){return!1}}getQuickCaptureSettings(){return{targetType:(this.plugin.settings.quickCapture||{}).targetType||"daily-note",showProject:!0,showContext:!0,showDueDate:!0,showPriority:!0,showTags:!0}}generateCaptureHTML(){let a=this.isDarkTheme();return` Quick Capture - Task Genius
Quick Capture