1536 lines
3.4 MiB
1536 lines
3.4 MiB
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||
if you want to view the source, please visit the github repository of this plugin
|
||
*/
|
||
|
||
var _H=Object.create;var Zd=Object.defineProperty;var qH=Object.getOwnPropertyDescriptor;var YH=Object.getOwnPropertyNames;var GH=Object.getPrototypeOf,KH=Object.prototype.hasOwnProperty;var QH=(n,a,e)=>a in n?Zd(n,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[a]=e;var D=(n,a)=>()=>(n&&(a=n(n=0)),a);var ke=(n,a)=>()=>(a||n((a={exports:{}}).exports,a),a.exports),wt=(n,a)=>{for(var e in a)Zd(n,e,{get:a[e],enumerable:!0})},t0=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of YH(a))!KH.call(n,r)&&r!==e&&Zd(n,r,{get:()=>a[r],enumerable:!(t=qH(a,r))||t.enumerable});return n};var Fe=(n,a,e)=>(e=n!=null?_H(GH(n)):{},t0(a||!n||!n.__esModule?Zd(e,"default",{value:n,enumerable:!0}):e,n)),dl=n=>t0(Zd({},"__esModule",{value:!0}),n);var z=(n,a,e)=>QH(n,typeof a!="symbol"?a+"":a,e);var Cy=ke((N8,a0)=>{"use strict";var XH={mode:"lazy"};a0.exports=XH});var Qm=ke((L8,r0)=>{"use strict";var JH=RegExp.prototype.exec;r0.exports=JH});var s0=ke((j8,i0)=>{"use strict";i0.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 o0=ke((H8,n0)=>{"use strict";n0.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 d0=ke((B8,l0)=>{"use strict";l0.exports={RegExp:function(a){var e=a.node;e.flags.includes("x")&&(e.flags=e.flags.replace("x",""))}}});var u0=ke((V8,c0)=>{"use strict";c0.exports={dotAll:s0(),namedCapturingGroups:o0(),xFlag:d0()}});var Sy=ke((W8,p0)=>{"use strict";function Er(n){return n?ZH[n.type](n):""}var ZH={RegExp:function(a){return"/"+Er(a.body)+"/"+a.flags},Alternative:function(a){return(a.expressions||[]).map(Er).join("")},Disjunction:function(a){return Er(a.left)+"|"+Er(a.right)},Group:function(a){var e=Er(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=Er(a.assertion);return a.negative?"(?!"+e+")":"(?="+e+")"}case"Lookbehind":{var t=Er(a.assertion);return a.negative?"(?<!"+t+")":"(?<="+t+")"}default:throw new TypeError("Unknown Assertion kind: "+a.kind)}},CharacterClass:function(a){var e=a.expressions.map(Er).join("");return a.negative?"[^"+e+"]":"["+e+"]"},ClassRange:function(a){return Er(a.from)+"-"+Er(a.to)},Repetition:function(a){return""+Er(a.expression)+Er(a.quantifier)},Quantifier:function(a){var e=void 0,t=a.greedy?"":"?";switch(a.kind){case"+":case"?":case"*":e=a.kind;break;case"Range":a.from===a.to?e="{"+a.from+"}":a.to?e="{"+a.from+","+a.to+"}":e="{"+a.from+",}";break;default:throw new TypeError("Unknown Quantifier kind: "+a.kind)}return""+e+t},Char:function(a){var e=a.value;switch(a.kind){case"simple":return a.escaped?"\\"+e:e;case"hex":case"unicode":case"oct":case"decimal":case"control":case"meta":return e;default:throw new TypeError("Unknown Char kind: "+a.kind)}},UnicodeProperty:function(a){var e=a.negative?"P":"p",t=void 0;return!a.shorthand&&!a.binary?t=a.name+"=":t="","\\"+e+"{"+t+a.value+"}"}};p0.exports={generate:Er}});var g0=ke((z8,h0)=>{"use strict";var Dy={General_Category:"gc",Script:"sc",Script_Extensions:"scx"},ec=ef(Dy),Zm={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"},sn=ef(Zm),Ey={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"},Xm=ef(Ey),Py={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"},Jm=ef(Py);function ef(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<t.length;r++)a[t[r]]=e;else a[t]=e}return a}function eB(n){return Dy.hasOwnProperty(n)||ec.hasOwnProperty(n)||Zm.hasOwnProperty(n)||sn.hasOwnProperty(n)}function tB(n,a){return rB(n)?m0(a):iB(n)?f0(a):!1}function aB(n){return ec.hasOwnProperty(n)||sn.hasOwnProperty(n)}function rB(n){return n==="General_Category"||n=="gc"}function iB(n){return n==="Script"||n==="Script_Extensions"||n==="sc"||n==="scx"}function m0(n){return Ey.hasOwnProperty(n)||Xm.hasOwnProperty(n)}function f0(n){return Py.hasOwnProperty(n)||Jm.hasOwnProperty(n)}function sB(n){return Zm.hasOwnProperty(n)||sn.hasOwnProperty(n)}function nB(n){return ec.hasOwnProperty(n)?ec[n]:sn.hasOwnProperty(n)?sn[n]:null}function oB(n){return Xm.hasOwnProperty(n)?Xm[n]:Jm.hasOwnProperty(n)?Jm[n]:sn.hasOwnProperty(n)?sn[n]:null}h0.exports={isAlias:aB,isValidName:eB,isValidValue:tB,isGeneralCategoryValue:m0,isScriptCategoryValue:f0,isBinaryPropertyName:sB,getCanonicalName:nB,getCanonicalValue:oB,NON_BINARY_PROP_NAMES_TO_ALIASES:Dy,NON_BINARY_ALIASES_TO_PROP_NAMES:ec,BINARY_PROP_NAMES_TO_ALIASES:Zm,BINARY_ALIASES_TO_PROP_NAMES:sn,GENERAL_CATEGORY_VALUE_TO_ALIASES:Ey,GENERAL_CATEGORY_VALUE_ALIASES_TO_VALUES:Xm,SCRIPT_VALUE_TO_ALIASES:Py,SCRIPT_VALUE_ALIASES_TO_VALUE:Jm}});var M0=ke(($8,P0)=>{"use strict";var lB=(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 T0(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}var zi=void 0,x0=void 0,Zt={},ie=void 0,J=void 0;function ue(n,a){return Zt.options.captureLocations?!n||!a?n||a:{startOffset:n.startOffset,endOffset:a.endOffset,startLine:n.startLine,endLine:a.endLine,startColumn:n.startColumn,endColumn:a.endColumn}:null}var C0="$",dB=[[-1,1,function(n,a){J=ue(a,a),ie=n}],[0,4,function(n,a,e,t,r,i,s,o){J=ue(r,o),ie=Mt({type:"RegExp",body:a,flags:fB(t)},tf(r,o||s))}],[1,1,function(n,a){J=ue(a,a),ie=n}],[1,0,function(){J=null,ie=""}],[2,1,function(n,a){J=ue(a,a),ie=n}],[2,2,function(n,a,e,t){J=ue(e,t),ie=n+a}],[3,1,function(n,a){J=ue(a,a),ie=n}],[4,1,function(n,a){J=ue(a,a),ie=n}],[4,3,function(n,a,e,t,r,i){J=ue(t,i);var s=null;r&&(s=tf(t||r,i||r)),ie=Mt({type:"Disjunction",left:n,right:e},s)}],[5,1,function(n,a){if(J=ue(a,a),n.length===0){ie=null;return}n.length===1?ie=Mt(n[0],J):ie=Mt({type:"Alternative",expressions:n},J)}],[6,0,function(){J=null,ie=[]}],[6,2,function(n,a,e,t){J=ue(e,t),ie=n.concat(a)}],[7,1,function(n,a){J=ue(a,a),ie=Mt(Object.assign({type:"Assertion"},n),J)}],[7,2,function(n,a,e,t){J=ue(e,t),ie=n,a&&(ie=Mt({type:"Repetition",expression:n,quantifier:a},J))}],[8,1,function(n,a){J=ue(a,a),ie={kind:"^"}}],[8,1,function(n,a){J=ue(a,a),ie={kind:"$"}}],[8,1,function(n,a){J=ue(a,a),ie={kind:"\\b"}}],[8,1,function(n,a){J=ue(a,a),ie={kind:"\\B"}}],[8,3,function(n,a,e,t,r,i){J=ue(t,i),ie={kind:"Lookahead",assertion:a}}],[8,3,function(n,a,e,t,r,i){J=ue(t,i),ie={kind:"Lookahead",negative:!0,assertion:a}}],[8,3,function(n,a,e,t,r,i){J=ue(t,i),ie={kind:"Lookbehind",assertion:a}}],[8,3,function(n,a,e,t,r,i){J=ue(t,i),ie={kind:"Lookbehind",negative:!0,assertion:a}}],[9,1,function(n,a){J=ue(a,a),ie=n}],[9,1,function(n,a){J=ue(a,a),ie=n}],[9,1,function(n,a){J=ue(a,a),ie=n}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"simple",J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n.slice(1),"simple",J),ie.escaped=!0}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"unicode",J),ie.isSurrogatePair=!0}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"unicode",J)}],[10,1,function(n,a){J=ue(a,a),ie=pB(n,J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"control",J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"hex",J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"oct",J)}],[10,1,function(n,a){J=ue(a,a),ie=hB(n,J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"meta",J)}],[10,1,function(n,a){J=ue(a,a),ie=Xa(n,"meta",J)}],[10,1,function(n,a){J=ue(a,a),ie=bB(n,a)}],[11,1,function(n,a){J=ue(a,a),ie=n}],[11,0],[12,1,function(n,a){J=ue(a,a),ie=n}],[12,2,function(n,a,e,t){J=ue(e,t),n.greedy=!1,ie=n}],[13,1,function(n,a){J=ue(a,a),ie=Mt({type:"Quantifier",kind:n,greedy:!0},J)}],[13,1,function(n,a){J=ue(a,a),ie=Mt({type:"Quantifier",kind:n,greedy:!0},J)}],[13,1,function(n,a){J=ue(a,a),ie=Mt({type:"Quantifier",kind:n,greedy:!0},J)}],[13,1,function(n,a){J=ue(a,a);var e=Iy(n);ie=Mt({type:"Quantifier",kind:"Range",from:e[0],to:e[0],greedy:!0},J)}],[13,1,function(n,a){J=ue(a,a),ie=Mt({type:"Quantifier",kind:"Range",from:Iy(n)[0],greedy:!0},J)}],[13,1,function(n,a){J=ue(a,a);var e=Iy(n);ie=Mt({type:"Quantifier",kind:"Range",from:e[0],to:e[1],greedy:!0},J)}],[14,1,function(n,a){J=ue(a,a),ie=n}],[14,1,function(n,a){J=ue(a,a),ie=n}],[15,3,function(n,a,e,t,r,i){J=ue(t,i);var s=String(n),o=D0(s);if(!Zt.options.allowGroupNameDuplicates&&tc.hasOwnProperty(o))throw new SyntaxError('Duplicate of the named group "'+o+'".');tc[o]=n.groupNumber,ie=Mt({type:"Group",capturing:!0,name:o,nameRaw:s,number:n.groupNumber,expression:a},J)}],[15,3,function(n,a,e,t,r,i){J=ue(t,i),ie=Mt({type:"Group",capturing:!0,number:n.groupNumber,expression:a},J)}],[16,3,function(n,a,e,t,r,i){J=ue(t,i),ie=Mt({type:"Group",capturing:!1,expression:a},J)}],[17,3,function(n,a,e,t,r,i){J=ue(t,i),ie=Mt({type:"CharacterClass",negative:!0,expressions:a},J)}],[17,3,function(n,a,e,t,r,i){J=ue(t,i),ie=Mt({type:"CharacterClass",expressions:a},J)}],[18,0,function(){J=null,ie=[]}],[18,1,function(n,a){J=ue(a,a),ie=n}],[19,1,function(n,a){J=ue(a,a),ie=[n]}],[19,2,function(n,a,e,t){J=ue(e,t),ie=[n].concat(a)}],[19,4,function(n,a,e,t,r,i,s,o){J=ue(r,o),y0(n,e),ie=[Mt({type:"ClassRange",from:n,to:e},tf(r,s))],t&&(ie=ie.concat(t))}],[20,1,function(n,a){J=ue(a,a),ie=n}],[20,2,function(n,a,e,t){J=ue(e,t),ie=[n].concat(a)}],[20,4,function(n,a,e,t,r,i,s,o){J=ue(r,o),y0(n,e),ie=[Mt({type:"ClassRange",from:n,to:e},tf(r,s))],t&&(ie=ie.concat(t))}],[21,1,function(n,a){J=ue(a,a),ie=Xa(n,"simple",J)}],[21,1,function(n,a){J=ue(a,a),ie=n}],[22,1,function(n,a){J=ue(a,a),ie=n}],[22,1,function(n,a){J=ue(a,a),ie=Xa(n,"meta",J)}]],k0={SLASH:"23",CHAR:"24",BAR:"25",BOS:"26",EOS:"27",ESC_b:"28",ESC_B:"29",POS_LA_ASSERT:"30",R_PAREN:"31",NEG_LA_ASSERT:"32",POS_LB_ASSERT:"33",NEG_LB_ASSERT:"34",ESC_CHAR:"35",U_CODE_SURROGATE:"36",U_CODE:"37",U_PROP_VALUE_EXP:"38",CTRL_CH:"39",HEX_CODE:"40",OCT_CODE:"41",DEC_CODE:"42",META_CHAR:"43",ANY:"44",NAMED_GROUP_REF:"45",Q_MARK:"46",STAR:"47",PLUS:"48",RANGE_EXACT:"49",RANGE_OPEN:"50",RANGE_CLOSED:"51",NAMED_CAPTURE_GROUP:"52",L_PAREN:"53",NON_CAPTURE_GROUP:"54",NEG_CLASS:"55",R_BRACKET:"56",L_BRACKET:"57",DASH:"58",$:"59"},My=[{0:1,23:"s2"},{59:"acc"},{3:3,4:4,5:5,6:6,23:"r10",24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{23:"s7"},{23:"r6",25:"s12"},{23:"r7",25:"r7",31:"r7"},{7:14,8:15,9:16,10:25,14:27,15:42,16:43,17:26,23:"r9",24:"s28",25:"r9",26:"s17",27:"s18",28:"s19",29:"s20",30:"s21",31:"r9",32:"s22",33:"s23",34:"s24",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",52:"s44",53:"s45",54:"s46",55:"s40",57:"s41"},{1:8,2:9,24:"s10",59:"r3"},{59:"r1"},{24:"s11",59:"r2"},{24:"r4",59:"r4"},{24:"r5",59:"r5"},{5:13,6:6,23:"r10",24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{23:"r8",25:"r8",31:"r8"},{23:"r11",24:"r11",25:"r11",26:"r11",27:"r11",28:"r11",29:"r11",30:"r11",31:"r11",32:"r11",33:"r11",34:"r11",35:"r11",36:"r11",37:"r11",38:"r11",39:"r11",40:"r11",41:"r11",42:"r11",43:"r11",44:"r11",45:"r11",52:"r11",53:"r11",54:"r11",55:"r11",57:"r11"},{23:"r12",24:"r12",25:"r12",26:"r12",27:"r12",28:"r12",29:"r12",30:"r12",31:"r12",32:"r12",33:"r12",34:"r12",35:"r12",36:"r12",37:"r12",38:"r12",39:"r12",40:"r12",41:"r12",42:"r12",43:"r12",44:"r12",45:"r12",52:"r12",53:"r12",54:"r12",55:"r12",57:"r12"},{11:47,12:48,13:49,23:"r38",24:"r38",25:"r38",26:"r38",27:"r38",28:"r38",29:"r38",30:"r38",31:"r38",32:"r38",33:"r38",34:"r38",35:"r38",36:"r38",37:"r38",38:"r38",39:"r38",40:"r38",41:"r38",42:"r38",43:"r38",44:"r38",45:"r38",46:"s52",47:"s50",48:"s51",49:"s53",50:"s54",51:"s55",52:"r38",53:"r38",54:"r38",55:"r38",57:"r38"},{23:"r14",24:"r14",25:"r14",26:"r14",27:"r14",28:"r14",29:"r14",30:"r14",31:"r14",32:"r14",33:"r14",34:"r14",35:"r14",36:"r14",37:"r14",38:"r14",39:"r14",40:"r14",41:"r14",42:"r14",43:"r14",44:"r14",45:"r14",52:"r14",53:"r14",54:"r14",55:"r14",57:"r14"},{23:"r15",24:"r15",25:"r15",26:"r15",27:"r15",28:"r15",29:"r15",30:"r15",31:"r15",32:"r15",33:"r15",34:"r15",35:"r15",36:"r15",37:"r15",38:"r15",39:"r15",40:"r15",41:"r15",42:"r15",43:"r15",44:"r15",45:"r15",52:"r15",53:"r15",54:"r15",55:"r15",57:"r15"},{23:"r16",24:"r16",25:"r16",26:"r16",27:"r16",28:"r16",29:"r16",30:"r16",31:"r16",32:"r16",33:"r16",34:"r16",35:"r16",36:"r16",37:"r16",38:"r16",39:"r16",40:"r16",41:"r16",42:"r16",43:"r16",44:"r16",45:"r16",52:"r16",53:"r16",54:"r16",55:"r16",57:"r16"},{23:"r17",24:"r17",25:"r17",26:"r17",27:"r17",28:"r17",29:"r17",30:"r17",31:"r17",32:"r17",33:"r17",34:"r17",35:"r17",36:"r17",37:"r17",38:"r17",39:"r17",40:"r17",41:"r17",42:"r17",43:"r17",44:"r17",45:"r17",52:"r17",53:"r17",54:"r17",55:"r17",57:"r17"},{4:57,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{4:59,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{4:61,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{4:63,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{23:"r22",24:"r22",25:"r22",26:"r22",27:"r22",28:"r22",29:"r22",30:"r22",31:"r22",32:"r22",33:"r22",34:"r22",35:"r22",36:"r22",37:"r22",38:"r22",39:"r22",40:"r22",41:"r22",42:"r22",43:"r22",44:"r22",45:"r22",46:"r22",47:"r22",48:"r22",49:"r22",50:"r22",51:"r22",52:"r22",53:"r22",54:"r22",55:"r22",57:"r22"},{23:"r23",24:"r23",25:"r23",26:"r23",27:"r23",28:"r23",29:"r23",30:"r23",31:"r23",32:"r23",33:"r23",34:"r23",35:"r23",36:"r23",37:"r23",38:"r23",39:"r23",40:"r23",41:"r23",42:"r23",43:"r23",44:"r23",45:"r23",46:"r23",47:"r23",48:"r23",49:"r23",50:"r23",51:"r23",52:"r23",53:"r23",54:"r23",55:"r23",57:"r23"},{23:"r24",24:"r24",25:"r24",26:"r24",27:"r24",28:"r24",29:"r24",30:"r24",31:"r24",32:"r24",33:"r24",34:"r24",35:"r24",36:"r24",37:"r24",38:"r24",39:"r24",40:"r24",41:"r24",42:"r24",43:"r24",44:"r24",45:"r24",46:"r24",47:"r24",48:"r24",49:"r24",50:"r24",51:"r24",52:"r24",53:"r24",54:"r24",55:"r24",57:"r24"},{23:"r25",24:"r25",25:"r25",26:"r25",27:"r25",28:"r25",29:"r25",30:"r25",31:"r25",32:"r25",33:"r25",34:"r25",35:"r25",36:"r25",37:"r25",38:"r25",39:"r25",40:"r25",41:"r25",42:"r25",43:"r25",44:"r25",45:"r25",46:"r25",47:"r25",48:"r25",49:"r25",50:"r25",51:"r25",52:"r25",53:"r25",54:"r25",55:"r25",56:"r25",57:"r25",58:"r25"},{23:"r26",24:"r26",25:"r26",26:"r26",27:"r26",28:"r26",29:"r26",30:"r26",31:"r26",32:"r26",33:"r26",34:"r26",35:"r26",36:"r26",37:"r26",38:"r26",39:"r26",40:"r26",41:"r26",42:"r26",43:"r26",44:"r26",45:"r26",46:"r26",47:"r26",48:"r26",49:"r26",50:"r26",51:"r26",52:"r26",53:"r26",54:"r26",55:"r26",56:"r26",57:"r26",58:"r26"},{23:"r27",24:"r27",25:"r27",26:"r27",27:"r27",28:"r27",29:"r27",30:"r27",31:"r27",32:"r27",33:"r27",34:"r27",35:"r27",36:"r27",37:"r27",38:"r27",39:"r27",40:"r27",41:"r27",42:"r27",43:"r27",44:"r27",45:"r27",46:"r27",47:"r27",48:"r27",49:"r27",50:"r27",51:"r27",52:"r27",53:"r27",54:"r27",55:"r27",56:"r27",57:"r27",58:"r27"},{23:"r28",24:"r28",25:"r28",26:"r28",27:"r28",28:"r28",29:"r28",30:"r28",31:"r28",32:"r28",33:"r28",34:"r28",35:"r28",36:"r28",37:"r28",38:"r28",39:"r28",40:"r28",41:"r28",42:"r28",43:"r28",44:"r28",45:"r28",46:"r28",47:"r28",48:"r28",49:"r28",50:"r28",51:"r28",52:"r28",53:"r28",54:"r28",55:"r28",56:"r28",57:"r28",58:"r28"},{23:"r29",24:"r29",25:"r29",26:"r29",27:"r29",28:"r29",29:"r29",30:"r29",31:"r29",32:"r29",33:"r29",34:"r29",35:"r29",36:"r29",37:"r29",38:"r29",39:"r29",40:"r29",41:"r29",42:"r29",43:"r29",44:"r29",45:"r29",46:"r29",47:"r29",48:"r29",49:"r29",50:"r29",51:"r29",52:"r29",53:"r29",54:"r29",55:"r29",56:"r29",57:"r29",58:"r29"},{23:"r30",24:"r30",25:"r30",26:"r30",27:"r30",28:"r30",29:"r30",30:"r30",31:"r30",32:"r30",33:"r30",34:"r30",35:"r30",36:"r30",37:"r30",38:"r30",39:"r30",40:"r30",41:"r30",42:"r30",43:"r30",44:"r30",45:"r30",46:"r30",47:"r30",48:"r30",49:"r30",50:"r30",51:"r30",52:"r30",53:"r30",54:"r30",55:"r30",56:"r30",57:"r30",58:"r30"},{23:"r31",24:"r31",25:"r31",26:"r31",27:"r31",28:"r31",29:"r31",30:"r31",31:"r31",32:"r31",33:"r31",34:"r31",35:"r31",36:"r31",37:"r31",38:"r31",39:"r31",40:"r31",41:"r31",42:"r31",43:"r31",44:"r31",45:"r31",46:"r31",47:"r31",48:"r31",49:"r31",50:"r31",51:"r31",52:"r31",53:"r31",54:"r31",55:"r31",56:"r31",57:"r31",58:"r31"},{23:"r32",24:"r32",25:"r32",26:"r32",27:"r32",28:"r32",29:"r32",30:"r32",31:"r32",32:"r32",33:"r32",34:"r32",35:"r32",36:"r32",37:"r32",38:"r32",39:"r32",40:"r32",41:"r32",42:"r32",43:"r32",44:"r32",45:"r32",46:"r32",47:"r32",48:"r32",49:"r32",50:"r32",51:"r32",52:"r32",53:"r32",54:"r32",55:"r32",56:"r32",57:"r32",58:"r32"},{23:"r33",24:"r33",25:"r33",26:"r33",27:"r33",28:"r33",29:"r33",30:"r33",31:"r33",32:"r33",33:"r33",34:"r33",35:"r33",36:"r33",37:"r33",38:"r33",39:"r33",40:"r33",41:"r33",42:"r33",43:"r33",44:"r33",45:"r33",46:"r33",47:"r33",48:"r33",49:"r33",50:"r33",51:"r33",52:"r33",53:"r33",54:"r33",55:"r33",56:"r33",57:"r33",58:"r33"},{23:"r34",24:"r34",25:"r34",26:"r34",27:"r34",28:"r34",29:"r34",30:"r34",31:"r34",32:"r34",33:"r34",34:"r34",35:"r34",36:"r34",37:"r34",38:"r34",39:"r34",40:"r34",41:"r34",42:"r34",43:"r34",44:"r34",45:"r34",46:"r34",47:"r34",48:"r34",49:"r34",50:"r34",51:"r34",52:"r34",53:"r34",54:"r34",55:"r34",56:"r34",57:"r34",58:"r34"},{23:"r35",24:"r35",25:"r35",26:"r35",27:"r35",28:"r35",29:"r35",30:"r35",31:"r35",32:"r35",33:"r35",34:"r35",35:"r35",36:"r35",37:"r35",38:"r35",39:"r35",40:"r35",41:"r35",42:"r35",43:"r35",44:"r35",45:"r35",46:"r35",47:"r35",48:"r35",49:"r35",50:"r35",51:"r35",52:"r35",53:"r35",54:"r35",55:"r35",56:"r35",57:"r35",58:"r35"},{23:"r36",24:"r36",25:"r36",26:"r36",27:"r36",28:"r36",29:"r36",30:"r36",31:"r36",32:"r36",33:"r36",34:"r36",35:"r36",36:"r36",37:"r36",38:"r36",39:"r36",40:"r36",41:"r36",42:"r36",43:"r36",44:"r36",45:"r36",46:"r36",47:"r36",48:"r36",49:"r36",50:"r36",51:"r36",52:"r36",53:"r36",54:"r36",55:"r36",56:"r36",57:"r36",58:"r36"},{10:70,18:65,19:66,21:67,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r54",58:"s68"},{10:70,18:83,19:66,21:67,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r54",58:"s68"},{23:"r47",24:"r47",25:"r47",26:"r47",27:"r47",28:"r47",29:"r47",30:"r47",31:"r47",32:"r47",33:"r47",34:"r47",35:"r47",36:"r47",37:"r47",38:"r47",39:"r47",40:"r47",41:"r47",42:"r47",43:"r47",44:"r47",45:"r47",46:"r47",47:"r47",48:"r47",49:"r47",50:"r47",51:"r47",52:"r47",53:"r47",54:"r47",55:"r47",57:"r47"},{23:"r48",24:"r48",25:"r48",26:"r48",27:"r48",28:"r48",29:"r48",30:"r48",31:"r48",32:"r48",33:"r48",34:"r48",35:"r48",36:"r48",37:"r48",38:"r48",39:"r48",40:"r48",41:"r48",42:"r48",43:"r48",44:"r48",45:"r48",46:"r48",47:"r48",48:"r48",49:"r48",50:"r48",51:"r48",52:"r48",53:"r48",54:"r48",55:"r48",57:"r48"},{4:85,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{4:87,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{4:89,5:5,6:6,24:"r10",25:"r10",26:"r10",27:"r10",28:"r10",29:"r10",30:"r10",31:"r10",32:"r10",33:"r10",34:"r10",35:"r10",36:"r10",37:"r10",38:"r10",39:"r10",40:"r10",41:"r10",42:"r10",43:"r10",44:"r10",45:"r10",52:"r10",53:"r10",54:"r10",55:"r10",57:"r10"},{23:"r13",24:"r13",25:"r13",26:"r13",27:"r13",28:"r13",29:"r13",30:"r13",31:"r13",32:"r13",33:"r13",34:"r13",35:"r13",36:"r13",37:"r13",38:"r13",39:"r13",40:"r13",41:"r13",42:"r13",43:"r13",44:"r13",45:"r13",52:"r13",53:"r13",54:"r13",55:"r13",57:"r13"},{23:"r37",24:"r37",25:"r37",26:"r37",27:"r37",28:"r37",29:"r37",30:"r37",31:"r37",32:"r37",33:"r37",34:"r37",35:"r37",36:"r37",37:"r37",38:"r37",39:"r37",40:"r37",41:"r37",42:"r37",43:"r37",44:"r37",45:"r37",52:"r37",53:"r37",54:"r37",55:"r37",57:"r37"},{23:"r39",24:"r39",25:"r39",26:"r39",27:"r39",28:"r39",29:"r39",30:"r39",31:"r39",32:"r39",33:"r39",34:"r39",35:"r39",36:"r39",37:"r39",38:"r39",39:"r39",40:"r39",41:"r39",42:"r39",43:"r39",44:"r39",45:"r39",46:"s56",52:"r39",53:"r39",54:"r39",55:"r39",57:"r39"},{23:"r41",24:"r41",25:"r41",26:"r41",27:"r41",28:"r41",29:"r41",30:"r41",31:"r41",32:"r41",33:"r41",34:"r41",35:"r41",36:"r41",37:"r41",38:"r41",39:"r41",40:"r41",41:"r41",42:"r41",43:"r41",44:"r41",45:"r41",46:"r41",52:"r41",53:"r41",54:"r41",55:"r41",57:"r41"},{23:"r42",24:"r42",25:"r42",26:"r42",27:"r42",28:"r42",29:"r42",30:"r42",31:"r42",32:"r42",33:"r42",34:"r42",35:"r42",36:"r42",37:"r42",38:"r42",39:"r42",40:"r42",41:"r42",42:"r42",43:"r42",44:"r42",45:"r42",46:"r42",52:"r42",53:"r42",54:"r42",55:"r42",57:"r42"},{23:"r43",24:"r43",25:"r43",26:"r43",27:"r43",28:"r43",29:"r43",30:"r43",31:"r43",32:"r43",33:"r43",34:"r43",35:"r43",36:"r43",37:"r43",38:"r43",39:"r43",40:"r43",41:"r43",42:"r43",43:"r43",44:"r43",45:"r43",46:"r43",52:"r43",53:"r43",54:"r43",55:"r43",57:"r43"},{23:"r44",24:"r44",25:"r44",26:"r44",27:"r44",28:"r44",29:"r44",30:"r44",31:"r44",32:"r44",33:"r44",34:"r44",35:"r44",36:"r44",37:"r44",38:"r44",39:"r44",40:"r44",41:"r44",42:"r44",43:"r44",44:"r44",45:"r44",46:"r44",52:"r44",53:"r44",54:"r44",55:"r44",57:"r44"},{23:"r45",24:"r45",25:"r45",26:"r45",27:"r45",28:"r45",29:"r45",30:"r45",31:"r45",32:"r45",33:"r45",34:"r45",35:"r45",36:"r45",37:"r45",38:"r45",39:"r45",40:"r45",41:"r45",42:"r45",43:"r45",44:"r45",45:"r45",46:"r45",52:"r45",53:"r45",54:"r45",55:"r45",57:"r45"},{23:"r46",24:"r46",25:"r46",26:"r46",27:"r46",28:"r46",29:"r46",30:"r46",31:"r46",32:"r46",33:"r46",34:"r46",35:"r46",36:"r46",37:"r46",38:"r46",39:"r46",40:"r46",41:"r46",42:"r46",43:"r46",44:"r46",45:"r46",46:"r46",52:"r46",53:"r46",54:"r46",55:"r46",57:"r46"},{23:"r40",24:"r40",25:"r40",26:"r40",27:"r40",28:"r40",29:"r40",30:"r40",31:"r40",32:"r40",33:"r40",34:"r40",35:"r40",36:"r40",37:"r40",38:"r40",39:"r40",40:"r40",41:"r40",42:"r40",43:"r40",44:"r40",45:"r40",52:"r40",53:"r40",54:"r40",55:"r40",57:"r40"},{25:"s12",31:"s58"},{23:"r18",24:"r18",25:"r18",26:"r18",27:"r18",28:"r18",29:"r18",30:"r18",31:"r18",32:"r18",33:"r18",34:"r18",35:"r18",36:"r18",37:"r18",38:"r18",39:"r18",40:"r18",41:"r18",42:"r18",43:"r18",44:"r18",45:"r18",52:"r18",53:"r18",54:"r18",55:"r18",57:"r18"},{25:"s12",31:"s60"},{23:"r19",24:"r19",25:"r19",26:"r19",27:"r19",28:"r19",29:"r19",30:"r19",31:"r19",32:"r19",33:"r19",34:"r19",35:"r19",36:"r19",37:"r19",38:"r19",39:"r19",40:"r19",41:"r19",42:"r19",43:"r19",44:"r19",45:"r19",52:"r19",53:"r19",54:"r19",55:"r19",57:"r19"},{25:"s12",31:"s62"},{23:"r20",24:"r20",25:"r20",26:"r20",27:"r20",28:"r20",29:"r20",30:"r20",31:"r20",32:"r20",33:"r20",34:"r20",35:"r20",36:"r20",37:"r20",38:"r20",39:"r20",40:"r20",41:"r20",42:"r20",43:"r20",44:"r20",45:"r20",52:"r20",53:"r20",54:"r20",55:"r20",57:"r20"},{25:"s12",31:"s64"},{23:"r21",24:"r21",25:"r21",26:"r21",27:"r21",28:"r21",29:"r21",30:"r21",31:"r21",32:"r21",33:"r21",34:"r21",35:"r21",36:"r21",37:"r21",38:"r21",39:"r21",40:"r21",41:"r21",42:"r21",43:"r21",44:"r21",45:"r21",52:"r21",53:"r21",54:"r21",55:"r21",57:"r21"},{56:"s72"},{56:"r55"},{10:70,20:73,21:75,22:76,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r56",58:"s74"},{24:"r62",28:"r62",35:"r62",36:"r62",37:"r62",38:"r62",39:"r62",40:"r62",41:"r62",42:"r62",43:"r62",44:"r62",45:"r62",56:"r62",58:"r62"},{24:"r63",28:"r63",35:"r63",36:"r63",37:"r63",38:"r63",39:"r63",40:"r63",41:"r63",42:"r63",43:"r63",44:"r63",45:"r63",56:"r63",58:"r63"},{24:"r64",28:"r64",35:"r64",36:"r64",37:"r64",38:"r64",39:"r64",40:"r64",41:"r64",42:"r64",43:"r64",44:"r64",45:"r64",56:"r64",58:"r64"},{24:"r65",28:"r65",35:"r65",36:"r65",37:"r65",38:"r65",39:"r65",40:"r65",41:"r65",42:"r65",43:"r65",44:"r65",45:"r65",56:"r65",58:"r65"},{23:"r52",24:"r52",25:"r52",26:"r52",27:"r52",28:"r52",29:"r52",30:"r52",31:"r52",32:"r52",33:"r52",34:"r52",35:"r52",36:"r52",37:"r52",38:"r52",39:"r52",40:"r52",41:"r52",42:"r52",43:"r52",44:"r52",45:"r52",46:"r52",47:"r52",48:"r52",49:"r52",50:"r52",51:"r52",52:"r52",53:"r52",54:"r52",55:"r52",57:"r52"},{56:"r57"},{10:70,21:77,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r62",58:"s68"},{56:"r59"},{10:70,20:79,21:75,22:76,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r63",58:"s80"},{10:70,18:78,19:66,21:67,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r54",58:"s68"},{56:"r58"},{56:"r60"},{10:70,21:81,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r62",58:"s68"},{10:70,18:82,19:66,21:67,22:69,24:"s28",28:"s71",35:"s29",36:"s30",37:"s31",38:"s32",39:"s33",40:"s34",41:"s35",42:"s36",43:"s37",44:"s38",45:"s39",56:"r54",58:"s68"},{56:"r61"},{56:"s84"},{23:"r53",24:"r53",25:"r53",26:"r53",27:"r53",28:"r53",29:"r53",30:"r53",31:"r53",32:"r53",33:"r53",34:"r53",35:"r53",36:"r53",37:"r53",38:"r53",39:"r53",40:"r53",41:"r53",42:"r53",43:"r53",44:"r53",45:"r53",46:"r53",47:"r53",48:"r53",49:"r53",50:"r53",51:"r53",52:"r53",53:"r53",54:"r53",55:"r53",57:"r53"},{25:"s12",31:"s86"},{23:"r49",24:"r49",25:"r49",26:"r49",27:"r49",28:"r49",29:"r49",30:"r49",31:"r49",32:"r49",33:"r49",34:"r49",35:"r49",36:"r49",37:"r49",38:"r49",39:"r49",40:"r49",41:"r49",42:"r49",43:"r49",44:"r49",45:"r49",46:"r49",47:"r49",48:"r49",49:"r49",50:"r49",51:"r49",52:"r49",53:"r49",54:"r49",55:"r49",57:"r49"},{25:"s12",31:"s88"},{23:"r50",24:"r50",25:"r50",26:"r50",27:"r50",28:"r50",29:"r50",30:"r50",31:"r50",32:"r50",33:"r50",34:"r50",35:"r50",36:"r50",37:"r50",38:"r50",39:"r50",40:"r50",41:"r50",42:"r50",43:"r50",44:"r50",45:"r50",46:"r50",47:"r50",48:"r50",49:"r50",50:"r50",51:"r50",52:"r50",53:"r50",54:"r50",55:"r50",57:"r50"},{25:"s12",31:"s90"},{23:"r51",24:"r51",25:"r51",26:"r51",27:"r51",28:"r51",29:"r51",30:"r51",31:"r51",32:"r51",33:"r51",34:"r51",35:"r51",36:"r51",37:"r51",38:"r51",39:"r51",40:"r51",41:"r51",42:"r51",43:"r51",44:"r51",45:"r51",46:"r51",47:"r51",48:"r51",49:"r51",50:"r51",51:"r51",52:"r51",53:"r51",54:"r51",55:"r51",57:"r51"}],Qa=[],Pr=void 0,cB=[[/^#[^\n]+/,function(){}],[/^\s+/,function(){}],[/^-/,function(){return"DASH"}],[/^\//,function(){return"CHAR"}],[/^#/,function(){return"CHAR"}],[/^\|/,function(){return"CHAR"}],[/^\./,function(){return"CHAR"}],[/^\{/,function(){return"CHAR"}],[/^\{\d+\}/,function(){return"RANGE_EXACT"}],[/^\{\d+,\}/,function(){return"RANGE_OPEN"}],[/^\{\d+,\d+\}/,function(){return"RANGE_CLOSED"}],[/^\\k<(([\u0041-\u005a\u0061-\u007a\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5-\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4-\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08-\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67-\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\}))(([\u0030-\u0039\u0041-\u005a\u005f\u0061-\u007a\u00aa\u00b5\u00b7\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cfa\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udca0-\udca9\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00-\ude03\ude05-\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd27\udd30-\udd39\udf00-\udf1c\udf27\udf30-\udf50\udfe0-\udff6]|\ud804[\udc00-\udc46\udc66-\udc6f\udc7f-\udcba\udcd0-\udce8\udcf0-\udcf9\udd00-\udd34\udd36-\udd3f\udd44-\udd46\udd50-\udd73\udd76\udd80-\uddc4\uddc9-\uddcc\uddd0-\uddda\udddc\ude00-\ude11\ude13-\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udeea\udef0-\udef9\udf00-\udf03\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3b-\udf44\udf47-\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc00-\udc4a\udc50-\udc59\udc5e-\udc5f\udc80-\udcc5\udcc7\udcd0-\udcd9\udd80-\uddb5\uddb8-\uddc0\uddd8-\udddd\ude00-\ude40\ude44\ude50-\ude59\ude80-\udeb8\udec0-\udec9\udf00-\udf1a\udf1d-\udf2b\udf30-\udf39]|\ud806[\udc00-\udc3a\udca0-\udce9\udcff\udda0-\udda7\uddaa-\uddd7\uddda-\udde1\udde3-\udde4\ude00-\ude3e\ude47\ude50-\ude99\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc40\udc50-\udc59\udc72-\udc8f\udc92-\udca7\udca9-\udcb6\udd00-\udd06\udd08-\udd09\udd0b-\udd36\udd3a\udd3c-\udd3d\udd3f-\udd47\udd50-\udd59\udd60-\udd65\udd67-\udd68\udd6a-\udd8e\udd90-\udd91\udd93-\udd98\udda0-\udda9\udee0-\udef6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude60-\ude69\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf50-\udf59\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d-\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb\udfce-\udfff]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23-\udc24\udc26-\udc2a\udd00-\udd2c\udd30-\udd3d\udd40-\udd49\udd4e\udec0-\udef9]|\ud83a[\udc00-\udcc4\udcd0-\udcd6\udd00-\udd4b\udd50-\udd59]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\})|[\u200c\u200d])*>/,function(){var n=zi.slice(3,-1);return b0(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"&&zi==="\\-")return"ESC_CHAR";if(n==="u"||n==="xu"||n==="u_class")throw new SyntaxError("invalid Unicode escape "+zi);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"NEG_LB_ASSERT"}],[/^\(\?:/,function(){return"NON_CAPTURE_GROUP"}],[/^\(\?<(([\u0041-\u005a\u0061-\u007a\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5-\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4-\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08-\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67-\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\}))(([\u0030-\u0039\u0041-\u005a\u005f\u0061-\u007a\u00aa\u00b5\u00b7\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cfa\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udca0-\udca9\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00-\ude03\ude05-\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd27\udd30-\udd39\udf00-\udf1c\udf27\udf30-\udf50\udfe0-\udff6]|\ud804[\udc00-\udc46\udc66-\udc6f\udc7f-\udcba\udcd0-\udce8\udcf0-\udcf9\udd00-\udd34\udd36-\udd3f\udd44-\udd46\udd50-\udd73\udd76\udd80-\uddc4\uddc9-\uddcc\uddd0-\uddda\udddc\ude00-\ude11\ude13-\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udeea\udef0-\udef9\udf00-\udf03\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3b-\udf44\udf47-\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc00-\udc4a\udc50-\udc59\udc5e-\udc5f\udc80-\udcc5\udcc7\udcd0-\udcd9\udd80-\uddb5\uddb8-\uddc0\uddd8-\udddd\ude00-\ude40\ude44\ude50-\ude59\ude80-\udeb8\udec0-\udec9\udf00-\udf1a\udf1d-\udf2b\udf30-\udf39]|\ud806[\udc00-\udc3a\udca0-\udce9\udcff\udda0-\udda7\uddaa-\uddd7\uddda-\udde1\udde3-\udde4\ude00-\ude3e\ude47\ude50-\ude99\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc40\udc50-\udc59\udc72-\udc8f\udc92-\udca7\udca9-\udcb6\udd00-\udd06\udd08-\udd09\udd0b-\udd36\udd3a\udd3c-\udd3d\udd3f-\udd47\udd50-\udd59\udd60-\udd65\udd67-\udd68\udd6a-\udd8e\udd90-\udd91\udd93-\udd98\udda0-\udda9\udee0-\udef6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude60-\ude69\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf50-\udf59\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d-\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb\udfce-\udfff]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23-\udc24\udc26-\udc2a\udd00-\udd2c\udd30-\udd3d\udd40-\udd49\udd4e\udec0-\udef9]|\ud83a[\udc00-\udcc4\udcd0-\udcd6\udd00-\udd4b\udd50-\udd59]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\})|[\u200c\u200d])*>/,function(){return zi=zi.slice(3,-1),b0(zi,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"}]],uB={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]},v0={type:C0,value:""};Pr={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(v0);for(var a=this._string.slice(this._cursor),e=uB[this.getCurrentState()],t=0;t<e.length;t++){var r=e[t],i=cB[r],s=this._match(a,i[0]);if(a===""&&s===""&&this._cursor++,s!==null){zi=s,x0=zi.length;var o=i[1].call(this);if(!o)return this.getNextToken();if(Array.isArray(o)){var l=o.slice(1);if(o=o[0],l.length>0){var c;(c=this._tokensQueue).unshift.apply(c,T0(l))}}return this.onToken(this._toToken(o,zi))}}if(this.isEOF())return this._cursor++,v0;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}};Zt.lexer=Pr;Zt.tokenizer=Pr;Zt.options={captureLocations:!0};var Qn={setOptions:function(a){return Zt.options=a,this},getOptions:function(){return Zt.options},parse:function(a,e){if(!Pr)throw new Error("Tokenizer instance wasn't specified.");Pr.initString(a);var t=Zt.options;e&&(Zt.options=Object.assign({},Zt.options,e)),Qn.onParseBegin(a,Pr,Zt.options),Qa.length=0,Qa.push(0);var r=Pr.getNextToken(),i=null;do{r||(Zt.options=t,E0());var s=Qa[Qa.length-1],o=k0[r.type];My[s].hasOwnProperty(o)||(Zt.options=t,w0(r));var l=My[s][o];if(l[0]==="s"){var c=null;Zt.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),Qa.push({symbol:k0[i.type],semanticValue:i.value,loc:c},Number(l.slice(1))),r=Pr.getNextToken()}else if(l[0]==="r"){var u=l.slice(1),p=dB[u],m=typeof p[2]=="function",f=m?[]:null,h=m&&Zt.options.captureLocations?[]:null;if(p[1]!==0)for(var k=p[1];k-- >0;){Qa.pop();var g=Qa.pop();m&&(f.unshift(g.semanticValue),h&&h.unshift(g.loc))}var v={symbol:p[0]};if(m){zi=i?i.value:null,x0=i?i.value.length:null;var b=h!==null?f.concat(h):f;p[2].apply(p,T0(b)),v.semanticValue=ie,h&&(v.loc=J)}var y=Qa[Qa.length-1],w=p[0];Qa.push(v,My[y][w])}else if(l==="acc"){Qa.pop();var x=Qa.pop();return(Qa.length!==1||Qa[0]!==0||Pr.hasMoreTokens())&&(Zt.options=t,w0(r)),x.hasOwnProperty("semanticValue")?(Zt.options=t,Qn.onParseEnd(x.semanticValue),x.semanticValue):(Qn.onParseEnd(),Zt.options=t,!0)}}while(Pr.hasMoreTokens()||Qa.length>1)},setTokenizer:function(a){return Pr=a,Qn},getTokenizer:function(){return Pr},onParseBegin:function(a,e,t){},onParseEnd:function(a){},onShift:function(a){return a}},Ay=0,tc={},S0="";Qn.onParseBegin=function(n,a){S0=n,Ay=0,tc={};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"))};Qn.onShift=function(n){return(n.type==="L_PAREN"||n.type==="NAMED_CAPTURE_GROUP")&&(n.value=new String(n.value),n.value.groupNumber=++Ay),n};function Iy(n){var a=n.match(/\d+/g).map(Number);if(Number.isFinite(a[1])&&a[1]<a[0])throw new SyntaxError("Numbers out of order in "+n+" quantifier");return a}function y0(n,a){if(n.kind==="control"||a.kind==="control"||!isNaN(n.codePoint)&&!isNaN(a.codePoint)&&n.codePoint>a.codePoint)throw new SyntaxError("Range "+n.value+"-"+a.value+" out of order in character class")}var cl=g0();function pB(n,a){var e=n[1]==="P",t=n.indexOf("="),r=n.slice(3,t!==-1?t:-1),i=void 0,s=t===-1&&cl.isGeneralCategoryValue(r),o=t===-1&&cl.isBinaryPropertyName(r);if(s)i=r,r="General_Category";else if(o)i=r;else{if(!cl.isValidName(r))throw new SyntaxError("Invalid unicode property name: "+r+".");if(i=n.slice(t+1,-1),!cl.isValidValue(r,i))throw new SyntaxError("Invalid "+r+" unicode property value: "+i+".")}return Mt({type:"UnicodeProperty",name:r,value:i,negative:e,shorthand:s,binary:o,canonicalName:cl.getCanonicalName(r)||r,canonicalValue:cl.getCanonicalValue(i)||i},a)}function Xa(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=lB(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 Mt({type:"Char",value:n,kind:a,symbol:t,codePoint:r},e)}var mB="gimsuxy";function fB(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)||!mB.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 hB(n,a){var e=Number(n.slice(1));return e>0&&e<=Ay?Mt({type:"Backreference",kind:"number",number:e,reference:e},a):Xa(n,"decimal",a)}var gB=/^\\u[0-9a-fA-F]{4}/,kB=/^\\u\{[0-9a-fA-F]{1,}\}/,vB=/\\u\{[0-9a-fA-F]{1,}\}/;function b0(n,a){var e=vB.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 yB=/\\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 D0(n){return n.replace(new RegExp(yB,"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 bB(n,a){var e=n.slice(3,-1),t=D0(e);if(tc.hasOwnProperty(t))return Mt({type:"Backreference",kind:"name",number:tc[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=[Xa(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(gB))||(p=n.match(kB))?(r&&(c={startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:r+=p[0].length,endColumn:o+=p[0].length}),u.push(Xa(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(Xa(p[0],"simple",c)),n=n.slice(1))}return u}function Mt(n,a){return Zt.options.captureLocations&&(n.loc={source:S0.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 tf(n,a){return Zt.options.captureLocations?{startOffset:n.startOffset,endOffset:a.endOffset,startLine:n.startLine,endLine:a.endLine,startColumn:n.startColumn,endColumn:a.endColumn}:null}function w0(n){n.type===C0&&E0(),Pr.throwUnexpectedToken(n.value,n.startLine,n.startColumn)}function E0(){wB("Unexpected end of input.")}function wB(n){throw new SyntaxError(n)}P0.exports=Qn});var rc=ke((U8,I0)=>{"use strict";var ac=M0(),TB=ac.parse.bind(ac);ac.parse=function(n,a){return TB(""+n,a)};ac.setOptions({captureLocations:!1});I0.exports=ac});var rf=ke((_8,F0)=>{"use strict";var xB=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function CB(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var af="expressions",A0="expression",Ry=(function(){function n(a){var e=arguments.length>1&&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;CB(this,n),this.node=a,this.parentPath=e,this.parent=e?e.node:null,this.property=t,this.index=r}return xB(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=af),this._enforceProp(r),this.node[r][t]=e,i=n.getForNode(e,this,r,t)):(r||(r=A0),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=af),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]:af;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;i<e[t].length;i++){var s=n.getForNode(e[t][i],r,t,i);s.index=i}}},{key:"isRemoved",value:function(){return this.node===null}},{key:"replace",value:function(e){return n.registry.delete(this.node),this.node=e,this.parent?(this.index!==null?this.parent[this.property][this.index]=e:this.parent[this.property]=e,n.getForNode(e,this.parentPath,this.property,this.index)):null}},{key:"update",value:function(e){Object.assign(this.node,e)}},{key:"getParent",value:function(){return this.parentPath}},{key:"getChild",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.node.expressions?n.getForNode(this.node.expressions[e],this,af,e):this.node.expression&&e==0?n.getForNode(this.node.expression,this,A0):null}},{key:"hasEqualSource",value:function(e){return JSON.stringify(this.node,Fy)===JSON.stringify(e.node,Fy)}},{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:Fy,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})();Ry.initRegistry();Ry.traversingIndexStack=[];function Fy(n,a){if(n!=="loc")return a}F0.exports=Ry});var Oy=ke((q8,R0)=>{"use strict";var ul=rf();function SB(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(ul.traversingIndexStack.push(f);f<m.length;)i(m[f],s,p,f),f=ul.updateTraversingIndex(1);ul.traversingIndexStack.pop()}else i(m,s,p)}}t&&t(s,o,l,c)}}i(n,null)}R0.exports={traverse:function(a,e){var t=arguments.length>2&&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)}),ul.initRegistry(),e.forEach(function(i){typeof i.init=="function"&&i.init(a)});function r(i,s,o,l){var c=ul.getForNode(s),u=ul.getForNode(i,c,o,l);return u}SB(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](),k;!(p=(k=h.next()).done);p=!0){var g=k.value;if(typeof g["*"]=="function")if(u){if(!u.isRemoved()){var v=g["*"](u);if(v===!1)return!1}}else g["*"](s,o,l,c);var b=void 0;if(typeof g[s.type]=="function"?b=g[s.type]:typeof g[s.type]=="object"&&typeof g[s.type].pre=="function"&&(b=g[s.type].pre),b)if(u){if(!u.isRemoved()){var y=b.call(g,u);if(y===!1)return!1}}else b.call(g,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](),k;!(p=(k=h.next()).done);p=!0){var g=k.value,v=void 0;if(typeof g[s.type]=="object"&&typeof g[s.type].post=="function"&&(v=g[s.type].post),v)if(u){if(!u.isRemoved()){var b=v.call(g,u);if(b===!1)return!1}}else v.call(g,s,o,l,c)}}catch(y){m=!0,f=y}finally{try{!p&&h.return&&h.return()}finally{if(m)throw f}}}},skipProperty:function(s){return s==="loc"}})}}});var sf=ke((Y8,L0)=>{"use strict";var DB=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function EB(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var O0=Sy(),PB=rc(),MB=Oy(),N0=(function(){function n(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;EB(this,n),this._ast=a,this._source=null,this._string=null,this._regexp=null,this._extra=e}return DB(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=O0.generate(this._ast.body)),this._source}},{key:"getFlags",value:function(){return this._ast.flags}},{key:"toString",value:function(){return this._string||(this._string=O0.generate(this._ast)),this._string}}]),n})();L0.exports={TransformResult:N0,transform:function(a,e){var t=a;return a instanceof RegExp&&(a=""+a),typeof a=="string"&&(t=PB.parse(a,{captureLocations:!0})),MB.traverse(t,e),new N0(t)}}});var H0=ke((G8,j0)=>{"use strict";var nf=u0(),IB=sf();j0.exports={transform:function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=e.length>0?e:Object.keys(nf),r=void 0,i={};return t.forEach(function(s){if(!nf.hasOwnProperty(s))throw new Error("Unknown compat-transform: "+s+". Available transforms are: "+Object.keys(nf).join(", "));var o=nf[s];r=IB.transform(a,o),a=r.getAST(),typeof o.getExtra=="function"&&(i[s]=o.getExtra())}),r.setExtra(i),r}}});var V0=ke((K8,B0)=>{"use strict";B0.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 z0=ke((Q8,W0)=>{"use strict";W0.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 Q0=ke((X8,K0)=>{"use strict";var $0="A".codePointAt(0),U0="Z".codePointAt(0),_0="a".codePointAt(0),q0="z".codePointAt(0),Y0="0".codePointAt(0),G0="9".codePointAt(0);K0.exports={Char:function(a){var e=a.node,t=a.parent;if(!(isNaN(e.codePoint)||e.kind==="simple")&&!(t.type==="ClassRange"&&!AB(t))&&FB(e.codePoint)){var r=String.fromCodePoint(e.codePoint),i={type:"Char",kind:"simple",value:r,symbol:r,codePoint:e.codePoint};RB(r,t.type)&&(i.escaped=!0),a.replace(i)}}};function AB(n){var a=n.from,e=n.to;return a.codePoint>=Y0&&a.codePoint<=G0&&e.codePoint>=Y0&&e.codePoint<=G0||a.codePoint>=$0&&a.codePoint<=U0&&e.codePoint>=$0&&e.codePoint<=U0||a.codePoint>=_0&&a.codePoint<=q0&&e.codePoint>=_0&&e.codePoint<=q0}function FB(n){return n>=32&&n<=126}function RB(n,a){return a==="ClassRange"||a==="CharacterClass"?/[\]\\^-]/.test(n):/[*[()+?^$./\\|{}]/.test(n)}});var eS=ke((J8,Z0)=>{"use strict";var X0="A".codePointAt(0),J0="Z".codePointAt(0);Z0.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)&&!OB(t))return;this._AZClassRanges.add(t)}var r=e.symbol.toLowerCase();r!==e.symbol&&(e.value=NB(r,e),e.symbol=r,e.codePoint=r.codePointAt(0))}}};function OB(n){var a=n.from,e=n.to;return a.codePoint>=X0&&a.codePoint<=J0&&e.codePoint>=X0&&e.codePoint<=J0}function NB(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=LB(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 LB(n){var a=Math.floor((n-65536)/1024)+55296,e=(n-65536)%1024+56320;return{lead:a.toString(16),trail:e.toString(16)}}});var aS=ke((Z8,tS)=>{"use strict";tS.exports={CharacterClass:function(a){for(var e=a.node,t={},r=0;r<e.expressions.length;r++){var i=a.getChild(r),s=i.jsonEncode();t.hasOwnProperty(s)&&(i.remove(),r--),t[s]=!0}}}});var of=ke((eG,iS)=>{"use strict";function jB(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}function rS(n){if(n.type!=="Disjunction")throw new TypeError('Expected "Disjunction" node, got "'+n.type+'"');var a=[];return n.left&&n.left.type==="Disjunction"?a.push.apply(a,jB(rS(n.left)).concat([n.right])):a.push(n.left,n.right),a}function HB(n){return n.reduce(function(a,e){return{type:"Disjunction",left:a,right:e}})}function BB(n){n.kind==="*"?n.kind="+":n.kind==="+"?(n.kind="Range",n.from=2,delete n.to):n.kind==="?"?(n.kind="Range",n.from=1,n.to=2):n.kind==="Range"&&(n.from+=1,n.to&&(n.to+=1))}iS.exports={disjunctionToList:rS,listToDisjunction:HB,increaseQuantifierByOne:BB}});var oS=ke((tG,nS)=>{"use strict";var VB=of(),WB=VB.increaseQuantifierByOne;nS.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=sS(r.node.quantifier),s=i.from,o=i.to,l=sS(e.quantifier),c=l.from,u=l.to;if(r.node.quantifier.greedy!==e.quantifier.greedy&&!lf(r.node.quantifier)&&!lf(e.quantifier))return;e.quantifier.kind="Range",e.quantifier.from=s+c,o&&u?e.quantifier.to=o+u:delete e.quantifier.to,(lf(r.node.quantifier)||lf(e.quantifier))&&(e.quantifier.greedy=!0),r.remove()}else{if(!r.hasEqualSource(a.getChild()))return;WB(e.quantifier),r.remove()}}}};function lf(n){return n.greedy&&(n.kind==="+"||n.kind==="*"||n.kind==="Range"&&!n.to)}function sS(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 dS=ke((aG,lS)=>{"use strict";lS.exports={Quantifier:function(a){var e=a.node;e.kind==="Range"&&(zB(a),$B(a),UB(a))}};function zB(n){var a=n.node;a.from!==0||a.to||(a.kind="*",delete a.from)}function $B(n){var a=n.node;a.from!==1||a.to||(a.kind="+",delete a.from)}function UB(n){var a=n.node;a.from!==1||a.to!==1||n.parentPath.replace(n.parentPath.node.expression)}});var uS=ke((rG,cS)=>{"use strict";cS.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 hS=ke((iG,fS)=>{"use strict";function pS(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}fS.exports={_hasIFlag:!1,_hasUFlag:!1,init:function(a){this._hasIFlag=a.flags.includes("i"),this._hasUFlag=a.flags.includes("u")},CharacterClass:function(a){_B(a),qB(a,this._hasIFlag,this._hasUFlag),YB(a)}};function _B(n){var a=n.node;a.expressions.forEach(function(e,t){GB(e)&&n.getChild(t).replace({type:"Char",value:"\\d",kind:"meta"})})}function qB(n,a,e){var t=n.node,r=null,i=null,s=null,o=null,l=null,c=null;t.expressions.forEach(function(u,p){Ly(u,"\\d")?r=n.getChild(p):KB(u)?i=n.getChild(p):QB(u)?s=n.getChild(p):XB(u)?o=n.getChild(p):a&&e&&ic(u,383)?l=n.getChild(p):a&&e&&ic(u,8490)&&(c=n.getChild(p))}),r&&(i&&s||a&&(i||s))&&o&&(!e||!a||l&&c)&&(r.replace({type:"Char",value:"\\w",kind:"meta"}),i&&i.remove(),s&&s.remove(),o.remove(),l&&l.remove(),c&&c.remove())}var Ny=[function(n){return mS(n," ")}].concat(pS(["\\f","\\n","\\r","\\t","\\v"].map(function(n){return function(a){return Ly(a,n)}})),pS([160,5760,8232,8233,8239,8287,12288,65279].map(function(n){return function(a){return ic(a,n)}})),[function(n){return n.type==="ClassRange"&&ic(n.from,8192)&&ic(n.to,8202)}]);function YB(n){var a=n.node;if(!(a.expressions.length<Ny.length||!Ny.every(function(t){return a.expressions.some(function(r){return t(r)})}))){var e=a.expressions.find(function(t){return Ly(t,"\\n")});e.value="\\s",e.symbol=void 0,e.codePoint=NaN,a.expressions.map(function(t,r){return Ny.some(function(i){return i(t)})?n.getChild(r):void 0}).filter(Boolean).forEach(function(t){return t.remove()})}}function GB(n){return n.type==="ClassRange"&&n.from.value==="0"&&n.to.value==="9"}function mS(n,a){var e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"simple";return n.type==="Char"&&n.value===a&&n.kind===e}function Ly(n,a){return mS(n,a,"meta")}function KB(n){return n.type==="ClassRange"&&n.from.value==="a"&&n.to.value==="z"}function QB(n){return n.type==="ClassRange"&&n.from.value==="A"&&n.to.value==="Z"}function XB(n){return n.type==="Char"&&n.value==="_"&&n.kind==="simple"}function ic(n,a){return n.type==="Char"&&n.kind==="unicode"&&n.codePoint===a}});var kS=ke((sG,gS)=>{"use strict";gS.exports={CharacterClass:function(a){var e=a.node;if(!(e.expressions.length!==1||!t4(a)||!JB(e.expressions[0]))){var t=e.expressions[0],r=t.value,i=t.kind,s=t.escaped;if(e.negative){if(!ZB(r))return;r=e4(r)}a.replace({type:"Char",value:r,kind:i,escaped:s||a4(r)})}}};function JB(n){return n.type==="Char"&&n.value!=="\\b"}function ZB(n){return/^\\[dwsDWS]$/.test(n)}function e4(n){return/[dws]/.test(n)?n.toUpperCase():n.toLowerCase()}function t4(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 a4(n){return/[*[()+?$./{}|]/.test(n)}});var yS=ke((nG,vS)=>{"use strict";vS.exports={_hasXFlag:!1,init:function(a){this._hasXFlag=a.flags.includes("x")},Char:function(a){var e=a.node;e.escaped&&r4(a,this._hasXFlag)&&delete e.escaped}};function r4(n,a){var e=n.node.value,t=n.index,r=n.parent;return r.type!=="CharacterClass"&&r.type!=="ClassRange"?!s4(e,t,r,a):!i4(e,t,r)}function i4(n,a,e){return n==="^"?a===0&&!e.negative:n==="-"?!0:/[\]\\]/.test(n)}function s4(n,a,e,t){return n==="{"?n4(a,e):n==="}"?o4(a,e):t&&/[ #]/.test(n)?!0:/[*[()+?^$./\\|]/.test(n)}function df(n,a,e){for(var t=n,r=(e?t>=0:t<a.expressions.length)&&a.expressions[t];r&&r.type==="Char"&&r.kind==="simple"&&!r.escaped&&/\d/.test(r.value);)e?t--:t++,r=(e?t>=0:t<a.expressions.length)&&a.expressions[t];return Math.abs(n-t)}function pl(n,a){return n&&n.type==="Char"&&n.kind==="simple"&&!n.escaped&&n.value===a}function n4(n,a){if(n==null)return!1;var e=df(n+1,a),t=n+e+1,r=t<a.expressions.length&&a.expressions[t];if(e){if(pl(r,"}"))return!0;if(pl(r,","))return e=df(t+1,a),t=t+e+1,r=t<a.expressions.length&&a.expressions[t],pl(r,"}")}return!1}function o4(n,a){if(n==null)return!1;var e=df(n-1,a,!0),t=n-e-1,r=t>=0&&a.expressions[t];return e&&pl(r,"{")?!0:pl(r,",")?(e=df(t-1,a,!0),t=t-e-1,r=t<a.expressions.length&&a.expressions[t],e&&pl(r,"{")):!1}});var xS=ke((oG,TS)=>{"use strict";TS.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){xs(l)&&r.push(l.value)}),t.sort(l4);for(var i=0;i<t.length;i++){var s=t[i];if(d4(s,r,this._hasIUFlags)||c4(s,t[i-1])||u4(s,t[i+1]))t.splice(i,1),i--;else{var o=p4(s,i,t);t.splice(i-o+1,o),i-=o}}}};function l4(n,a){var e=cf(n),t=cf(a);if(e===t){if(n.type==="ClassRange"&&a.type!=="ClassRange")return-1;if(a.type==="ClassRange"&&n.type!=="ClassRange")return 1;if(n.type==="ClassRange"&&a.type==="ClassRange")return cf(n.to)-cf(a.to);if(xs(n)&&xs(a)||bS(n)&&bS(a))return n.value<a.value?-1:1}return e-t}function cf(n){return n.type==="Char"?n.value==="-"||n.kind==="control"?1/0:n.kind==="meta"&&isNaN(n.codePoint)?-1:n.codePoint:n.from.codePoint}function xs(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return n.type==="Char"&&n.kind==="meta"&&(a?n.value===a:/^\\[dws]$/i.test(n.value))}function bS(n){return n.type==="Char"&&n.kind==="control"}function d4(n,a,e){for(var t=0;t<a.length;t++)if(jy(n,a[t],e))return!0;return!1}function jy(n,a,e){return n.type==="ClassRange"?jy(n.from,a,e)&&jy(n.to,a,e):a==="\\S"&&(xs(n,"\\w")||xs(n,"\\d"))||a==="\\D"&&(xs(n,"\\W")||xs(n,"\\s"))||a==="\\w"&&xs(n,"\\d")||a==="\\W"&&xs(n,"\\s")?!0:n.type!=="Char"||isNaN(n.codePoint)?!1:a==="\\s"?wS(n):a==="\\S"?!wS(n):a==="\\d"?Hy(n):a==="\\D"?!Hy(n):a==="\\w"?By(n,e):a==="\\W"?!By(n,e):!1}function wS(n){return n.codePoint===9||n.codePoint===10||n.codePoint===11||n.codePoint===12||n.codePoint===13||n.codePoint===32||n.codePoint===160||n.codePoint===5760||n.codePoint>=8192&&n.codePoint<=8202||n.codePoint===8232||n.codePoint===8233||n.codePoint===8239||n.codePoint===8287||n.codePoint===12288||n.codePoint===65279}function Hy(n){return n.codePoint>=48&&n.codePoint<=57}function By(n,a){return Hy(n)||n.codePoint>=65&&n.codePoint<=90||n.codePoint>=97&&n.codePoint<=122||n.value==="_"||a&&(n.codePoint===383||n.codePoint===8490)}function c4(n,a){if(a&&a.type==="ClassRange"){if(Vy(n,a))return!0;if(uf(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.codePoint<a.from.codePoint&&(a.from=n.from),n.to.codePoint>a.to.codePoint&&(a.to=n.to),!0}return!1}function u4(n,a){return a&&a.type==="ClassRange"&&uf(n)&&a.from.codePoint===n.codePoint+1?(a.from=n,!0):!1}function Vy(n,a){return n.type==="Char"&&isNaN(n.codePoint)?!1:n.type==="ClassRange"?Vy(n.from,a)&&Vy(n.to,a):n.codePoint>=a.from.codePoint&&n.codePoint<=a.to.codePoint}function p4(n,a,e){if(!uf(n))return 0;for(var t=0;a>0;){var r=e[a],i=e[a-1];if(uf(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 uf(n){return n&&n.type==="Char"&&!isNaN(n.codePoint)&&(By(n,!1)||n.kind==="unicode"||n.kind==="hex"||n.kind==="oct"||n.kind==="decimal")}});var DS=ke((lG,SS)=>{"use strict";var m4=rf(),CS=of(),f4=CS.disjunctionToList,h4=CS.listToDisjunction;SS.exports={Disjunction:function(a){var e=a.node,t={},r=f4(e).filter(function(i){var s=i?m4.getForNode(i).jsonEncode():"null";return t.hasOwnProperty(s)?!1:(t[s]=i,!0)});a.replace(h4(r))}}});var MS=ke((dG,PS)=>{"use strict";PS.exports={Disjunction:function(a){var e=a.node,t=a.parent;if(ES[t.type]){var r=new Map;if(!(!pf(e,r)||!r.size)){var i={type:"CharacterClass",expressions:Array.from(r.keys()).sort().map(function(s){return r.get(s)})};ES[t.type](a.getParent(),i)}}}};var ES={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 pf(n,a){if(!n)return!1;var e=n.type;if(e==="Disjunction"){var t=n.left,r=n.right;return pf(t,a)&&pf(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 pf(s,a)});return!1}});var AS=ke((cG,IS)=>{"use strict";IS.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 RS=ke((uG,FS)=>{"use strict";function Wy(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}FS.exports={Group:function(a){var e=a.node,t=a.parent,r=a.getChild();if(!(e.capturing||!r)&&g4(a)&&!(r.node.type==="Disjunction"&&t.type!=="RegExp")&&!(t.type==="Repetition"&&r.node.type!=="Char"&&r.node.type!=="CharacterClass"))if(r.node.type==="Alternative"){var i=a.getParent();i.node.type==="Alternative"&&i.replace({type:"Alternative",expressions:[].concat(Wy(t.expressions.slice(0,a.index)),Wy(r.node.expressions),Wy(t.expressions.slice(a.index+1)))})}else a.replace(r.node)}};function g4(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")}});var LS=ke((pG,NS)=>{"use strict";function mf(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}var ff=rf(),k4=of(),OS=k4.increaseQuantifierByOne;NS.exports={Alternative:function(a){for(var e=a.node,t=1;t<e.expressions.length;){var r=a.getChild(t);if(t=Math.max(1,v4(a,r,t)),t>=e.expressions.length||(r=a.getChild(t),t=Math.max(1,y4(a,r,t)),t>=e.expressions.length))break;r=a.getChild(t),t=Math.max(1,b4(a,r,t)),t++}}};function v4(n,a,e){for(var t=n.node,r=Math.ceil(e/2),i=0;i<r;){var s=e-2*i-1,o=void 0,l=void 0;if(i===0?(o=a,l=n.getChild(s)):(o=ff.getForNode({type:"Alternative",expressions:[].concat(mf(t.expressions.slice(e-i,e)),[a.node])}),l=ff.getForNode({type:"Alternative",expressions:[].concat(mf(t.expressions.slice(s,e-i)))})),o.hasEqualSource(l)){for(var c=0;c<2*i+1;c++)n.getChild(s).remove();return a.replace({type:"Repetition",expression:i===0&&o.node.type!=="Repetition"?o.node:{type:"Group",capturing:!1,expression:o.node},quantifier:{type:"Quantifier",kind:"Range",from:2,to:2,greedy:!0}}),s}i++}return e}function y4(n,a,e){for(var t=n.node,r=0;r<e;){var i=n.getChild(r);if(i.node.type==="Repetition"&&i.node.quantifier.greedy){var s=i.getChild(),o=void 0;if(s.node.type==="Group"&&!s.node.capturing&&(s=s.getChild()),r+1===e?(o=a,o.node.type==="Group"&&!o.node.capturing&&(o=o.getChild())):o=ff.getForNode({type:"Alternative",expressions:[].concat(mf(t.expressions.slice(r+1,e+1)))}),s.hasEqualSource(o)){for(var l=r;l<e;l++)n.getChild(r+1).remove();return OS(i.node.quantifier),r}}r++}return e}function b4(n,a,e){var t=n.node;if(a.node.type==="Repetition"&&a.node.quantifier.greedy){var r=a.getChild(),i=void 0;r.node.type==="Group"&&!r.node.capturing&&(r=r.getChild());var s=void 0;if(r.node.type==="Alternative"?(s=r.node.expressions.length,i=ff.getForNode({type:"Alternative",expressions:[].concat(mf(t.expressions.slice(e-s,e)))})):(s=1,i=n.getChild(e-1),i.node.type==="Group"&&!i.node.capturing&&(i=i.getChild())),i.hasEqualSource(r)){for(var o=e-s;o<e;o++)n.getChild(e-s).remove();return OS(a.node.quantifier),e-s}}return e}});var HS=ke((mG,jS)=>{"use strict";jS.exports=new Map([["charSurrogatePairToSingleUnicode",z0()],["charCodeToSimpleChar",Q0()],["charCaseInsensitiveLowerCaseTransform",eS()],["charClassRemoveDuplicates",aS()],["quantifiersMerge",oS()],["quantifierRangeToSymbol",dS()],["charClassClassrangesToChars",uS()],["charClassToMeta",hS()],["charClassToSingleChar",kS()],["charEscapeUnescape",yS()],["charClassClassrangesMerge",xS()],["disjunctionRemoveDuplicates",DS()],["groupSingleCharsToCharClass",MS()],["removeEmptyGroup",AS()],["ungroup",RS()],["combineRepeatingPatterns",LS()]])});var zS=ke((fG,WS)=>{"use strict";var BS=V0(),w4=rc(),VS=sf(),hf=HS();WS.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(hf.keys()),l=o.filter(function(m){return!s.includes(m)}),c=a;a instanceof RegExp&&(a=""+a),typeof a=="string"&&(c=w4.parse(a));var u=new VS.TransformResult(c),p=void 0;do p=u.toString(),c=BS(u.getAST()),l.forEach(function(m){if(!hf.has(m))throw new Error("Unknown optimization-transform: "+m+". Available transforms are: "+Array.from(hf.keys()).join(", "));var f=hf.get(m),h=VS.transform(c,f);h.toString()!==u.toString()&&(h.toString().length<=u.toString().length?u=h:c=BS(u.getAST()))});while(u.toString()!==p);return u}}});var sc=ke((hG,US)=>{"use strict";var $S="\u03B5",T4=$S+"*";US.exports={EPSILON:$S,EPSILON_CLOSURE:T4}});var zy=ke((gG,YS)=>{"use strict";var x4=(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")}})(),C4=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function S4(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}function D4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var qS=sc(),E4=qS.EPSILON,_S=qS.EPSILON_CLOSURE,P4=(function(){function n(a,e){D4(this,n),this.in=a,this.out=e}return C4(n,[{key:"matches",value:function(e){return this.in.matches(e)}},{key:"getAlphabet",value:function(){if(!this._alphabet){this._alphabet=new Set;var e=this.getTransitionTable();for(var t in e){var r=e[t];for(var i in r)i!==_S&&this._alphabet.add(i)}}return this._alphabet}},{key:"getAcceptingStates",value:function(){return this._acceptingStates||this.getTransitionTable(),this._acceptingStates}},{key:"getAcceptingStateNumbers",value:function(){if(!this._acceptingStateNumbers){this._acceptingStateNumbers=new Set;var e=!0,t=!1,r=void 0;try{for(var i=this.getAcceptingStates()[Symbol.iterator](),s;!(e=(s=i.next()).done);e=!0){var o=s.value;this._acceptingStateNumbers.add(o.number)}}catch(l){t=!0,r=l}finally{try{!e&&i.return&&i.return()}finally{if(t)throw r}}}return this._acceptingStateNumbers}},{key:"getTransitionTable",value:function(){var e=this;if(!this._transitionTable){this._transitionTable={},this._acceptingStates=new Set;var t=new Set,r=new Set,i=function s(o){if(!t.has(o)){t.add(o),o.number=t.size,e._transitionTable[o.number]={},o.accepting&&e._acceptingStates.add(o);var l=o.getTransitions(),c=!0,u=!1,p=void 0;try{for(var m=l[Symbol.iterator](),f;!(c=(f=m.next()).done);c=!0){var h=f.value,k=x4(h,2),g=k[0],v=k[1],b=[];r.add(g);var y=!0,w=!1,x=void 0;try{for(var T=v[Symbol.iterator](),C;!(y=(C=T.next()).done);y=!0){var S=C.value;s(S),b.push(S.number)}}catch(E){w=!0,x=E}finally{try{!y&&T.return&&T.return()}finally{if(w)throw x}}e._transitionTable[o.number][g]=b}}catch(E){u=!0,p=E}finally{try{!c&&m.return&&m.return()}finally{if(u)throw p}}}};i(this.in),t.forEach(function(s){delete e._transitionTable[s.number][E4],e._transitionTable[s.number][_S]=[].concat(S4(s.getEpsilonClosure())).map(function(o){return o.number})})}return this._transitionTable}}]),n})();YS.exports=P4});var KS=ke((kG,GS)=>{"use strict";var M4=(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 I4(n){return Array.isArray(n)?n:Array.from(n)}function $y(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}var Cs=null;function A4(n){var a=n.getTransitionTable(),e=Object.keys(a),t=n.getAlphabet(),r=n.getAcceptingStateNumbers();Cs={};var i=new Set;e.forEach(function(oe){oe=Number(oe);var le=r.has(oe);le?Cs[oe]=r:(i.add(oe),Cs[oe]=i)});var s=[[i,r].filter(function(oe){return oe.size>0})],o=void 0,l=void 0;o=s[s.length-1],l=s[s.length-2];for(var c=function(){var le={},be=!0,Ae=!1,De=void 0;try{for(var et=o[Symbol.iterator](),Ke;!(be=(Ke=et.next()).done);be=!0){var Re=Ke.value,ne={},he=I4(Re),Se=he[0],Qe=he.slice(1);ne[Se]=new Set([Se]);var Ue=!0,ce=!1,gt=void 0;try{e:for(var tt=Qe[Symbol.iterator](),ha;!(Ue=(ha=tt.next()).done);Ue=!0){var zt=ha.value,ot=!0,bt=!1,Ka=void 0;try{for(var nr=Object.keys(ne)[Symbol.iterator](),Br;!(ot=(Br=nr.next()).done);ot=!0){var Xt=Br.value;if(R4(zt,Xt,a,t)){ne[Xt].add(zt),ne[zt]=ne[Xt];continue e}}}catch(ja){bt=!0,Ka=ja}finally{try{!ot&&nr.return&&nr.return()}finally{if(bt)throw Ka}}ne[zt]=new Set([zt])}}catch(ja){ce=!0,gt=ja}finally{try{!Ue&&tt.return&&tt.return()}finally{if(ce)throw gt}}Object.assign(le,ne)}}catch(ja){Ae=!0,De=ja}finally{try{!be&&et.return&&et.return()}finally{if(Ae)throw De}}Cs=le;var Vr=new Set(Object.keys(le).map(function(ja){return le[ja]}));s.push([].concat($y(Vr))),o=s[s.length-1],l=s[s.length-2]};!F4(o,l);)c();var u=new Map,p=1;o.forEach(function(oe){return u.set(oe,p++)});var m={},f=new Set,h=function(le,be){var Ae=!0,De=!1,et=void 0;try{for(var Ke=le[Symbol.iterator](),Re;!(Ae=(Re=Ke.next()).done);Ae=!0){var ne=Re.value;r.has(ne)&&f.add(be)}}catch(he){De=!0,et=he}finally{try{!Ae&&Ke.return&&Ke.return()}finally{if(De)throw et}}},k=!0,g=!1,v=void 0;try{for(var b=u.entries()[Symbol.iterator](),y;!(k=(y=b.next()).done);k=!0){var w=y.value,x=M4(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 q=G.value;if(j=a[q][R],j)break}}catch(oe){B=!0,X=oe}finally{try{!W&&V.return&&V.return()}finally{if(B)throw X}}j&&(m[C][R]=u.get(Cs[j]))}}catch(oe){E=!0,A=oe}finally{try{!S&&N.return&&N.return()}finally{if(E)throw A}}}}catch(oe){g=!0,v=oe}finally{try{!k&&b.return&&b.return()}finally{if(g)throw v}}return n.setTransitionTable(m),n.setAcceptingStateNumbers(f),n}function F4(n,a){if(!a||n.length!==a.length)return!1;for(var e=0;e<n.length;e++){var t=n[e],r=a[e];if(t.size!==r.size||[].concat($y(t)).sort().join(",")!==[].concat($y(r)).sort().join(","))return!1}return!0}function R4(n,a,e,t){var r=!0,i=!1,s=void 0;try{for(var o=t[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var c=l.value;if(!O4(n,a,e,c))return!1}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return!0}function O4(n,a,e,t){if(!Cs[n]||!Cs[a])return!1;var r=e[n][t],i=e[a][t];return!r&&!i?!0:Cs[n].has(r)&&Cs[a].has(i)}GS.exports={minimize:A4}});var ZS=ke((vG,JS)=>{"use strict";var N4=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function QS(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}function L4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var j4=KS(),H4=sc(),XS=H4.EPSILON_CLOSURE,B4=(function(){function n(a){L4(this,n),this._nfa=a}return N4(n,[{key:"minimize",value:function(){this.getTransitionTable(),this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._originalTransitionTable=this._transitionTable,j4.minimize(this)}},{key:"getAlphabet",value:function(){return this._nfa.getAlphabet()}},{key:"getAcceptingStateNumbers",value:function(){return this._acceptingStateNumbers||this.getTransitionTable(),this._acceptingStateNumbers}},{key:"getOriginaAcceptingStateNumbers",value:function(){return this._originalAcceptingStateNumbers||this.getTransitionTable(),this._originalAcceptingStateNumbers}},{key:"setTransitionTable",value:function(e){this._transitionTable=e}},{key:"setAcceptingStateNumbers",value:function(e){this._acceptingStateNumbers=e}},{key:"getTransitionTable",value:function(){var e=this;if(this._transitionTable)return this._transitionTable;var t=this._nfa.getTransitionTable(),r=Object.keys(t);this._acceptingStateNumbers=new Set;for(var i=t[r[0]][XS],s=[i],o=this.getAlphabet(),l=this._nfa.getAcceptingStateNumbers(),c={},u=function(oe){var le=!0,be=!1,Ae=void 0;try{for(var De=l[Symbol.iterator](),et;!(le=(et=De.next()).done);le=!0){var Ke=et.value;if(oe.indexOf(Ke)!==-1){e._acceptingStateNumbers.add(oe.join(","));break}}}catch(Re){be=!0,Ae=Re}finally{try{!le&&De.return&&De.return()}finally{if(be)throw Ae}}};s.length>0;){var p=s.shift(),m=p.join(",");c[m]={};var f=!0,h=!1,k=void 0;try{for(var g=o[Symbol.iterator](),v;!(f=(v=g.next()).done);f=!0){var b=v.value,y=[];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]&&y.push.apply(y,QS(t[B][XS]))}}catch(q){I=!0,R=q}finally{try{!N&&j.return&&j.return()}finally{if(I)throw R}}}}}catch(q){x=!0,T=q}finally{try{!w&&C.return&&C.return()}finally{if(x)throw T}}var X=new Set(y),V=[].concat(QS(X));if(V.length>0){var G=V.join(",");c[m][b]=G,c.hasOwnProperty(G)||s.unshift(V)}}}catch(q){h=!0,k=q}finally{try{!f&&g.return&&g.return()}finally{if(h)throw k}}}return this._transitionTable=this._remapStateNumbers(c)}},{key:"_remapStateNumbers",value:function(e){var t={};this._originalTransitionTable=e;var r={};Object.keys(e).forEach(function(k,g){t[k]=g+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(k){u=!0,p=k}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})();JS.exports=B4});var tD=ke((yG,eD)=>{"use strict";var V4=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function W4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var z4=(function(){function n(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=a.accepting,t=e===void 0?!1:e;W4(this,n),this._transitions=new Map,this.accepting=t}return V4(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})();eD.exports=z4});var rD=ke((bG,aD)=>{"use strict";var $4=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function U4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}function _4(n,a){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a&&(typeof a=="object"||typeof a=="function")?a:n}function q4(n,a){if(typeof a!="function"&&a!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof a);n.prototype=Object.create(a&&a.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a&&(Object.setPrototypeOf?Object.setPrototypeOf(n,a):n.__proto__=a)}var Y4=tD(),G4=sc(),Uy=G4.EPSILON,K4=(function(n){q4(a,n);function a(){return U4(this,a),_4(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return $4(a,[{key:"matches",value:function(t){var r=arguments.length>1&&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(Uy)[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,k=!1,g=void 0;try{for(var v=f[Symbol.iterator](),b;!(h=(b=v.next()).done);h=!0){var y=b.value;if(y.matches(m))return!0}}catch(A){k=!0,g=A}finally{try{!h&&v.return&&v.return()}finally{if(k)throw g}}var w=!0,x=!1,T=void 0;try{for(var C=this.getTransitionsOnSymbol(Uy)[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(Uy),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})(Y4);aD.exports=K4});var _y=ke((wG,sD)=>{"use strict";var gf=zy(),ml=rD(),Q4=sc(),or=Q4.EPSILON;function iD(n){var a=new ml,e=new ml({accepting:!0});return new gf(a.addTransition(n,e),e)}function X4(){return iD(or)}function J4(n,a){return n.out.accepting=!1,a.out.accepting=!0,n.out.addTransition(or,a.in),new gf(n.in,a.out)}function Z4(n){for(var a=arguments.length,e=Array(a>1?a-1:0),t=1;t<a;t++)e[t-1]=arguments[t];var r=!0,i=!1,s=void 0;try{for(var o=e[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var c=l.value;n=J4(n,c)}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return n}function eV(n,a){var e=new ml,t=new ml;return e.addTransition(or,n.in),e.addTransition(or,a.in),t.accepting=!0,n.out.accepting=!1,a.out.accepting=!1,n.out.addTransition(or,t),a.out.addTransition(or,t),new gf(e,t)}function tV(n){for(var a=arguments.length,e=Array(a>1?a-1:0),t=1;t<a;t++)e[t-1]=arguments[t];var r=!0,i=!1,s=void 0;try{for(var o=e[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var c=l.value;n=eV(n,c)}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return n}function aV(n){var a=new ml,e=new ml({accepting:!0});return a.addTransition(or,n.in),a.addTransition(or,e),n.out.accepting=!1,n.out.addTransition(or,e),e.addTransition(or,n.in),new gf(a,e)}function rV(n){return n.in.addTransition(or,n.out),n.out.addTransition(or,n.in),n}function iV(n){return n.out.addTransition(or,n.in),n}function sV(n){return n.in.addTransition(or,n.out),n}sD.exports={alt:Z4,char:iD,e:X4,or:tV,rep:rV,repExplicit:aV,plusRep:iV,questionRep:sV}});var lD=ke((TG,oD)=>{"use strict";function nV(n){if(Array.isArray(n)){for(var a=0,e=Array(n.length);a<n.length;a++)e[a]=n[a];return e}else return Array.from(n)}var oV=rc(),fl=_y(),lV=fl.alt,dV=fl.char,cV=fl.or,uV=fl.rep,pV=fl.plusRep,mV=fl.questionRep;function Ss(n){if(n&&!nD[n.type])throw new Error(n.type+" is not supported in NFA/DFA interpreter.");return n?nD[n.type](n):""}var nD={RegExp:function(a){if(a.flags!=="")throw new Error("NFA/DFA: Flags are not supported yet.");return Ss(a.body)},Alternative:function(a){var e=(a.expressions||[]).map(Ss);return lV.apply(void 0,nV(e))},Disjunction:function(a){return cV(Ss(a.left),Ss(a.right))},Repetition:function(a){switch(a.quantifier.kind){case"*":return uV(Ss(a.expression));case"+":return pV(Ss(a.expression));case"?":return mV(Ss(a.expression));default:throw new Error("Unknown repeatition: "+a.quantifier.kind+".")}},Char:function(a){if(a.kind!=="simple")throw new Error("NFA/DFA: Only simple chars are supported yet.");return dV(a.value)},Group:function(a){return Ss(a.expression)}};oD.exports={build:function(a){var e=a;return a instanceof RegExp&&(a=""+a),typeof a=="string"&&(e=oV.parse(a,{captureLocations:!0})),Ss(e)}}});var uD=ke((xG,cD)=>{"use strict";var fV=zy(),dD=ZS(),hV=lD(),gV=_y();cD.exports={NFA:fV,DFA:dD,builders:gV,toNFA:function(a){return hV.build(a)},toDFA:function(a){return new dD(this.toNFA(a))},test:function(a,e){return this.toDFA(a).matches(e)}}});var mD=ke((CG,pD)=>{"use strict";var kV=(function(){function n(a,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,r.key,r)}}return function(a,e,t){return e&&n(a.prototype,e),t&&n(a,t),a}})();function vV(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var yV=(function(){function n(a,e){var t=e.flags,r=e.groups,i=e.source;vV(this,n),this._re=a,this._groups=r,this.flags=t,this.source=i||a.source,this.dotAll=t.includes("s"),this.global=a.global,this.ignoreCase=a.ignoreCase,this.multiline=a.multiline,this.sticky=a.sticky,this.unicode=a.unicode}return kV(n,[{key:"test",value:function(e){return this._re.test(e)}},{key:"compile",value:function(e){return this._re.compile(e)}},{key:"toString",value:function(){return this._toStringResult||(this._toStringResult="/"+this.source+"/"+this.flags),this._toStringResult}},{key:"exec",value:function(e){var t=this._re.exec(e);if(!this._groups||!t)return t;t.groups={};for(var r in this._groups){var i=this._groups[r];t.groups[r]=t[i]}return t}}]),n})();pD.exports={RegExpTree:yV}});var kD=ke((SG,gD)=>{"use strict";var bV=H0(),wV=Sy(),TV=zS(),fD=rc(),hD=sf(),xV=Oy(),CV=uD(),SV=mD(),DV=SV.RegExpTree,EV={parser:fD,fa:CV,TransformResult:hD.TransformResult,parse:function(a,e){return fD.parse(""+a,e)},traverse:function(a,e,t){return xV.traverse(a,e,t)},transform:function(a,e){return hD.transform(a,e)},generate:function(a){return wV.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 TV.optimize(a,{whitelist:e,blacklist:r})},compatTranspile:function(a,e){return bV.transform(a,e)},exec:function(a,e){if(typeof a=="string"){var t=this.compatTranspile(a),r=t.getExtra();r.namedCapturingGroups?a=new DV(t.toRegExp(),{flags:t.getFlags(),source:t.getSource(),groups:r.namedCapturingGroups}):a=t.toRegExp()}return a.exec(e)}};gD.exports=EV});var yD=ke((DG,vD)=>{"use strict";vD.exports=kD()});var Xy=ke((EG,SD)=>{"use strict";var PV=Cy(),qy=Qm(),nn=yD(),bD=new WeakMap;function MV(n){return PV.mode==="spec-compliant"?AV(this,n):IV(this,n)}function IV(n,a){let e=n.lastIndex,t=qy.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}=wD(n);i.lastIndex=e;let o=qy.call(i,a);if(o===null)throw new TypeError;$r(t,"indices",r=TD(o,s))}return r},set(i){$r(t,"indices",i)}}),t}function AV(n,a){let{measurementRegExp:e,groupInfos:t}=wD(n);e.lastIndex=n.lastIndex;let r=qy.call(e,a);if(r===null)return null;n.lastIndex=e.lastIndex;let i=[];$r(i,0,r[0]);for(let s of t)$r(i,s.oldGroupNumber,r[s.newGroupNumber]);return $r(i,"index",r.index),$r(i,"input",r.input),$r(i,"groups",r.groups),$r(i,"indices",TD(r,t)),i}function wD(n){let a=bD.get(n);a||(a=jV(nn.parse(`/${n.source}/${n.flags}`)),bD.set(n,a));let e=a.getExtra();return{measurementRegExp:a.toRegExp(),groupInfos:e}}function TD(n,a){let e=n.index,t=e+n[0].length,r=!!n.groups,i=[],s=r?Object.create(null):void 0;$r(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]}$r(i,o.oldGroupNumber,l),s&&o.groupName!==void 0&&$r(s,o.groupName,l)}return $r(i,"groups",s),i}function $r(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 kf,Yy=!1,oc=new Set,Gy=[],hl=!1,xD=1,vf=[],Ky=new Map,Qy=new Map,FV={init(){Yy=!1,oc.clear(),Gy.length=0,hl=!1,xD=1,vf.length=0,Ky.clear(),Qy.clear(),kf=[]},RegExp(n){return nn.traverse(n.node,RV),oc.size>0&&(nn.transform(n.node,CD),nn.transform(n.node,OV),Yy&&nn.transform(n.node,NV)),!1}},nc={pre(n){Gy.push(hl),hl=n.node.type==="Group"&&n.node.capturing},post(n){hl&&oc.add(n.node),hl=Gy.pop()||hl}},RV={Alternative:nc,Disjunction:nc,Assertion:nc,Group:nc,Repetition:nc,Backreference(n){Yy=!0}},CD={Alternative(n){if(oc.has(n.node)){let a=0,e=[],t=[],r=[];for(let i=0;i<n.node.expressions.length;i++){let s=n.node.expressions[i];if(oc.has(s)){if(i>a){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=[]}vf.push(t),nn.transform(s,CD),vf.pop(),e.push(s);continue}e.push(s)}n.update({expressions:r.concat(e)})}return!1},Group(n){n.node.capturing&&Ky.set(n.node,LV())}},OV={Group(n){if(!kf)throw new Error("Not initialized.");if(!n.node.capturing)return;let a=n.node.number,e=xD++,t=Ky.get(n.node);a!==-1&&(kf.push({oldGroupNumber:a,newGroupNumber:e,measurementGroups:t&&t.map(r=>r.number),groupName:n.node.name}),Qy.set(a,e)),n.update({number:e})}},NV={Backreference(n){let a=Qy.get(n.node.number);a&&(n.node.kind==="number"?n.update({number:a,reference:a}):n.update({number:a}))}};function LV(){let n=[];for(let a of vf)for(let e of a)n.push(e);return n}function jV(n){let a=nn.transform(n,FV);return new nn.TransformResult(a.getAST(),kf)}SD.exports=MV});var Jy=ke((PG,ED)=>{"use strict";var DD=Qm(),HV=Xy();function BV(){let n=new RegExp("a");return DD.call(n,"a").indices?DD:HV}ED.exports=BV});var MD=ke((MG,PD)=>{"use strict";var VV=Jy();function WV(){let n=VV();RegExp.prototype.exec!==n&&(RegExp.prototype.exec=n)}PD.exports=WV});var FD=ke((IG,AD)=>{"use strict";var zV=Xy(),$V=Qm(),ID=Jy(),UV=MD(),_V=Cy(),qV=ID();function on(n,a){return qV.call(n,a)}on.implementation=zV;on.native=$V;on.getPolyfill=ID;on.shim=UV;on.config=_V;on||(on={});AD.exports=on});var e5,A7,Sf,qD,uc,pc,YD,t5,GD,F7,a5,r5,R7,cb,Jn=D(()=>{e5=Math.pow(10,8)*24*60*60*1e3,A7=-e5,Sf=6048e5,qD=864e5,uc=6e4,pc=36e5,YD=1e3,t5=3600,GD=t5*24,F7=GD*7,a5=GD*365.2425,r5=a5/12,R7=r5*3,cb=Symbol.for("constructDateFrom")});function Pe(n,a){return typeof n=="function"?n(a):n&&typeof n=="object"&&cb in n?n[cb](a):n instanceof Date?new n.constructor(a):new Date(a)}var Ut=D(()=>{Jn()});function Me(n,a){return Pe(a||n,n)}var _t=D(()=>{Ut()});function bl(n,a,e){let t=Me(n,e==null?void 0:e.in);return isNaN(a)?Pe((e==null?void 0:e.in)||n,NaN):(a&&t.setDate(t.getDate()+a),t)}var mc=D(()=>{Ut();_t()});var KD=D(()=>{});var QD=D(()=>{});var XD=D(()=>{});var JD=D(()=>{});var ZD=D(()=>{});var eE=D(()=>{});var tE=D(()=>{});var aE=D(()=>{});function Ur(){return i5}var i5,Zn=D(()=>{i5={}});function dr(n,a){var o,l,c,u,p,m,f,h;let e=Ur(),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=Me(n,a==null?void 0:a.in),i=r.getDay(),s=(i<t?7:0)+i-t;return r.setDate(r.getDate()-s),r.setHours(0,0,0,0),r}var cn=D(()=>{Zn();_t()});function vi(n,a){return dr(n,{...a,weekStartsOn:1})}var eo=D(()=>{cn()});function Df(n,a){let e=Me(n,a==null?void 0:a.in),t=e.getFullYear(),r=Pe(e,0);r.setFullYear(t+1,0,4),r.setHours(0,0,0,0);let i=vi(r),s=Pe(e,0);s.setFullYear(t,0,4),s.setHours(0,0,0,0);let o=vi(s);return e.getTime()>=i.getTime()?t+1:e.getTime()>=o.getTime()?t:t-1}var Ef=D(()=>{Ut();eo();_t()});function to(n){let a=Me(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 Pf=D(()=>{_t()});function wl(n,...a){let e=Pe.bind(null,n||a.find(t=>typeof t=="object"));return a.map(e)}var Mf=D(()=>{Ut()});function Ms(n,a){let e=Me(n,a==null?void 0:a.in);return e.setHours(0,0,0,0),e}var If=D(()=>{_t()});function rE(n,a,e){let[t,r]=wl(e==null?void 0:e.in,n,a),i=Ms(t),s=Ms(r),o=+i-to(i),l=+s-to(s);return Math.round((o-l)/qD)}var ub=D(()=>{Pf();Mf();Jn();If()});function iE(n,a){let e=Df(n,a),t=Pe((a==null?void 0:a.in)||n,0);return t.setFullYear(e,0,4),t.setHours(0,0,0,0),vi(t)}var pb=D(()=>{Ut();Ef();eo()});var sE=D(()=>{});var nE=D(()=>{});var oE=D(()=>{});var lE=D(()=>{});var dE=D(()=>{});var cE=D(()=>{});var uE=D(()=>{});var pE=D(()=>{});var mE=D(()=>{});var fE=D(()=>{});var hE=D(()=>{});var gE=D(()=>{});var kE=D(()=>{});var vE=D(()=>{});var yE=D(()=>{});function Tl(n){return Pe(n,Date.now())}var fc=D(()=>{Ut()});var bE=D(()=>{});function Af(n,a,e){let[t,r]=wl(e==null?void 0:e.in,n,a);return+Ms(t)==+Ms(r)}var Ff=D(()=>{Mf();If()});function wE(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}var mb=D(()=>{});function hc(n){return!(!wE(n)&&typeof n!="number"||isNaN(+Me(n)))}var fb=D(()=>{mb();_t()});var TE=D(()=>{});var xE=D(()=>{});var CE=D(()=>{});var SE=D(()=>{});var DE=D(()=>{});var EE=D(()=>{});var PE=D(()=>{});var ME=D(()=>{});var IE=D(()=>{});var AE=D(()=>{});var FE=D(()=>{});var RE=D(()=>{});var OE=D(()=>{});var NE=D(()=>{});var LE=D(()=>{});var jE=D(()=>{});var HE=D(()=>{});var BE=D(()=>{});var VE=D(()=>{});var WE=D(()=>{});var zE=D(()=>{});var $E=D(()=>{});var UE=D(()=>{});var _E=D(()=>{});var qE=D(()=>{});var YE=D(()=>{});var GE=D(()=>{});var KE=D(()=>{});var QE=D(()=>{});var XE=D(()=>{});var JE=D(()=>{});var ZE=D(()=>{});var eP=D(()=>{});function tP(n,a){let e=Me(n,a==null?void 0:a.in);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e}var hb=D(()=>{_t()});var aP=D(()=>{});var rP=D(()=>{});var iP=D(()=>{});var sP=D(()=>{});var nP=D(()=>{});var oP=D(()=>{});var lP=D(()=>{});var dP=D(()=>{});var cP=D(()=>{});var uP=D(()=>{});var pP=D(()=>{});var mP=D(()=>{});var fP=D(()=>{});var s5,hP,gP=D(()=>{s5={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"}},hP=(n,a,e)=>{let t,r=s5[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 Rf(n){return(a={})=>{let e=a.width?String(a.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var kP=D(()=>{});var n5,o5,l5,vP,yP=D(()=>{kP();n5={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},o5={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},l5={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},vP={date:Rf({formats:n5,defaultWidth:"full"}),time:Rf({formats:o5,defaultWidth:"full"}),dateTime:Rf({formats:l5,defaultWidth:"full"})}});var d5,bP,wP=D(()=>{d5={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},bP=(n,a,e,t)=>d5[n]});function xl(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 TP=D(()=>{});var c5,u5,p5,m5,f5,h5,g5,xP,CP=D(()=>{TP();c5={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},u5={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},p5={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"]},m5={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"]},f5={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"}},h5={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"}},g5=(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"},xP={ordinalNumber:g5,era:xl({values:c5,defaultWidth:"wide"}),quarter:xl({values:u5,defaultWidth:"wide",argumentCallback:n=>n-1}),month:xl({values:p5,defaultWidth:"wide"}),day:xl({values:m5,defaultWidth:"wide"}),dayPeriod:xl({values:f5,defaultWidth:"wide",formattingValues:h5,defaultFormattingWidth:"wide"})}});function Cl(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)?v5(o,p=>p.test(s)):k5(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 k5(n,a){for(let e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&a(n[e]))return e}function v5(n,a){for(let e=0;e<n.length;e++)if(a(n[e]))return e}var SP=D(()=>{});function DP(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 EP=D(()=>{});var y5,b5,w5,T5,x5,C5,S5,D5,E5,P5,M5,I5,PP,MP=D(()=>{SP();EP();y5=/^(\d+)(th|st|nd|rd)?/i,b5=/\d+/i,w5={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},T5={any:[/^b/i,/^(a|c)/i]},x5={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},C5={any:[/1/i,/2/i,/3/i,/4/i]},S5={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},D5={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]},E5={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},P5={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]},M5={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},I5={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}},PP={ordinalNumber:DP({matchPattern:y5,parsePattern:b5,valueCallback:n=>parseInt(n,10)}),era:Cl({matchPatterns:w5,defaultMatchWidth:"wide",parsePatterns:T5,defaultParseWidth:"any"}),quarter:Cl({matchPatterns:x5,defaultMatchWidth:"wide",parsePatterns:C5,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Cl({matchPatterns:S5,defaultMatchWidth:"wide",parsePatterns:D5,defaultParseWidth:"any"}),day:Cl({matchPatterns:E5,defaultMatchWidth:"wide",parsePatterns:P5,defaultParseWidth:"any"}),dayPeriod:Cl({matchPatterns:M5,defaultMatchWidth:"any",parsePatterns:I5,defaultParseWidth:"any"})}});var ao,gb=D(()=>{gP();yP();wP();CP();MP();ao={code:"en-US",formatDistance:hP,formatLong:vP,formatRelative:bP,localize:xP,match:PP,options:{weekStartsOn:0,firstWeekContainsDate:1}}});var kb=D(()=>{gb()});function IP(n,a){let e=Me(n,a==null?void 0:a.in);return rE(e,tP(e))+1}var vb=D(()=>{ub();hb();_t()});function Of(n,a){let e=Me(n,a==null?void 0:a.in),t=+vi(e)-+iE(e);return Math.round(t/Sf)+1}var Nf=D(()=>{Jn();eo();pb();_t()});function Sl(n,a){var u,p,m,f,h,k,g,v;let e=Me(n,a==null?void 0:a.in),t=e.getFullYear(),r=Ur(),i=(v=(g=(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?g:(k=(h=r.locale)==null?void 0:h.options)==null?void 0:k.firstWeekContainsDate)!=null?v:1,s=Pe((a==null?void 0:a.in)||n,0);s.setFullYear(t+1,0,i),s.setHours(0,0,0,0);let o=dr(s,a),l=Pe((a==null?void 0:a.in)||n,0);l.setFullYear(t,0,i),l.setHours(0,0,0,0);let c=dr(l,a);return+e>=+o?t+1:+e>=+c?t:t-1}var gc=D(()=>{Zn();Ut();cn();_t()});function AP(n,a){var o,l,c,u,p,m,f,h;let e=Ur(),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=Sl(n,a),i=Pe((a==null?void 0:a.in)||n,0);return i.setFullYear(r,0,t),i.setHours(0,0,0,0),dr(i,a)}var yb=D(()=>{Zn();Ut();gc();cn()});function Lf(n,a){let e=Me(n,a==null?void 0:a.in),t=+dr(e,a)-+AP(e,a);return Math.round(t/Sf)+1}var jf=D(()=>{Jn();cn();yb();_t()});function at(n,a){let e=n<0?"-":"",t=Math.abs(n).toString().padStart(a,"0");return e+t}var bb=D(()=>{});var Is,FP=D(()=>{bb();Is={y(n,a){let e=n.getFullYear(),t=e>0?e:1-e;return at(a==="yy"?t%100:t,a.length)},M(n,a){let e=n.getMonth();return a==="M"?String(e+1):at(e+1,2)},d(n,a){return at(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 at(n.getHours()%12||12,a.length)},H(n,a){return at(n.getHours(),a.length)},m(n,a){return at(n.getMinutes(),a.length)},s(n,a){return at(n.getSeconds(),a.length)},S(n,a){let e=a.length,t=n.getMilliseconds(),r=Math.trunc(t*Math.pow(10,e-3));return at(r,a.length)}}});function RP(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+at(i,2)}function OP(n,a){return n%60===0?(n>0?"-":"+")+at(Math.abs(n)/60,2):ro(n,a)}function ro(n,a=""){let e=n>0?"-":"+",t=Math.abs(n),r=at(Math.trunc(t/60),2),i=at(t%60,2);return e+r+a+i}var Dl,wb,NP=D(()=>{vb();Nf();Ef();jf();gc();bb();FP();Dl={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wb={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 Is.y(n,a)},Y:function(n,a,e,t){let r=Sl(n,t),i=r>0?r:1-r;if(a==="YY"){let s=i%100;return at(s,2)}return a==="Yo"?e.ordinalNumber(i,{unit:"year"}):at(i,a.length)},R:function(n,a){let e=Df(n);return at(e,a.length)},u:function(n,a){let e=n.getFullYear();return at(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 at(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 at(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 Is.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 at(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=Lf(n,t);return a==="wo"?e.ordinalNumber(r,{unit:"week"}):at(r,a.length)},I:function(n,a,e){let t=Of(n);return a==="Io"?e.ordinalNumber(t,{unit:"week"}):at(t,a.length)},d:function(n,a,e){return a==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):Is.d(n,a)},D:function(n,a,e){let t=IP(n);return a==="Do"?e.ordinalNumber(t,{unit:"dayOfYear"}):at(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 at(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 at(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 at(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=Dl.noon:t===0?r=Dl.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=Dl.evening:t>=12?r=Dl.afternoon:t>=4?r=Dl.morning:r=Dl.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 Is.h(n,a)},H:function(n,a,e){return a==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):Is.H(n,a)},K:function(n,a,e){let t=n.getHours()%12;return a==="Ko"?e.ordinalNumber(t,{unit:"hour"}):at(t,a.length)},k:function(n,a,e){let t=n.getHours();return t===0&&(t=24),a==="ko"?e.ordinalNumber(t,{unit:"hour"}):at(t,a.length)},m:function(n,a,e){return a==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):Is.m(n,a)},s:function(n,a,e){return a==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):Is.s(n,a)},S:function(n,a){return Is.S(n,a)},X:function(n,a,e){let t=n.getTimezoneOffset();if(t===0)return"Z";switch(a){case"X":return OP(t);case"XXXX":case"XX":return ro(t);case"XXXXX":case"XXX":default:return ro(t,":")}},x:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"x":return OP(t);case"xxxx":case"xx":return ro(t);case"xxxxx":case"xxx":default:return ro(t,":")}},O:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"O":case"OO":case"OOO":return"GMT"+RP(t,":");case"OOOO":default:return"GMT"+ro(t,":")}},z:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"z":case"zz":case"zzz":return"GMT"+RP(t,":");case"zzzz":default:return"GMT"+ro(t,":")}},t:function(n,a,e){let t=Math.trunc(+n/1e3);return at(t,a.length)},T:function(n,a,e){return at(+n,a.length)}}});var LP,jP,A5,kc,Tb=D(()=>{LP=(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"})}},jP=(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"})}},A5=(n,a)=>{let e=n.match(/(P+)(p+)?/)||[],t=e[1],r=e[2];if(!r)return LP(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}}",LP(t,a)).replace("{{time}}",jP(r,a))},kc={p:jP,P:A5}});function Hf(n){return F5.test(n)}function Bf(n){return R5.test(n)}function vc(n,a,e){let t=N5(n,a,e);if(console.warn(t),O5.includes(n))throw new RangeError(t)}function N5(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 F5,R5,O5,xb=D(()=>{F5=/^D+$/,R5=/^Y+$/,O5=["D","DD","YY","YYYY"]});function Cb(n,a,e){var u,p,m,f,h,k,g,v,b,y,w,x,T,C,S,E,A,N;let t=Ur(),r=(p=(u=e==null?void 0:e.locale)!=null?u:t.locale)!=null?p:ao,i=(y=(b=(k=(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?k:t.firstWeekContainsDate)!=null?b:(v=(g=t.locale)==null?void 0:g.options)==null?void 0:v.firstWeekContainsDate)!=null?y: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=Me(n,e==null?void 0:e.in);if(!hc(o))throw new RangeError("Invalid time value");let l=a.match(j5).map(I=>{let R=I[0];if(R==="p"||R==="P"){let j=kc[R];return j(I,r.formatLong)}return I}).join("").match(L5).map(I=>{if(I==="''")return{isToken:!1,value:"'"};let R=I[0];if(R==="'")return{isToken:!1,value:W5(I)};if(wb[R])return{isToken:!0,value:I};if(R.match(V5))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)&&Bf(R)||!(e!=null&&e.useAdditionalDayOfYearTokens)&&Hf(R))&&vc(R,a,String(n));let j=wb[R[0]];return j(o,R,r.localize,c)}).join("")}function W5(n){let a=n.match(H5);return a?a[1].replace(B5,"'"):n}var L5,j5,H5,B5,V5,HP=D(()=>{kb();Zn();NP();Tb();xb();fb();_t();L5=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,j5=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,H5=/^'([^]*?)'?$/,B5=/''/g,V5=/[a-zA-Z]/});var BP=D(()=>{});var VP=D(()=>{});var WP=D(()=>{});var zP=D(()=>{});var $P=D(()=>{});var UP=D(()=>{});var _P=D(()=>{});var qP=D(()=>{});var YP=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(()=>{});function rM(){return Object.assign({},Ur())}var Sb=D(()=>{Zn()});var iM=D(()=>{});function sM(n,a){let e=Me(n,a==null?void 0:a.in).getDay();return e===0?7:e}var Db=D(()=>{_t()});var nM=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 vM=D(()=>{});var yM=D(()=>{});var bM=D(()=>{});var wM=D(()=>{});var TM=D(()=>{});var xM=D(()=>{});var CM=D(()=>{});var SM=D(()=>{});var DM=D(()=>{});var EM=D(()=>{});var PM=D(()=>{});var MM=D(()=>{});var IM=D(()=>{});var AM=D(()=>{});function FM(n,a){let e=z5(a)?new a(0):Pe(a,0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}function z5(n){var a;return typeof n=="function"&&((a=n.prototype)==null?void 0:a.constructor)===n}var Eb=D(()=>{Ut()});var $5,Vf,Wf,zf,Pb=D(()=>{Ut();Eb();$5=10,Vf=class{constructor(){z(this,"subPriority",0)}validate(a,e){return!0}},Wf=class extends Vf{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)}},zf=class extends Vf{constructor(e,t){super();z(this,"priority",$5);z(this,"subPriority",-1);this.context=e||(r=>Pe(t,r))}set(e,t){return t.timestampIsSet?e:Pe(e,FM(e,this.context))}}});var de,Xe=D(()=>{Pb();de=class{run(a,e,t,r){let i=this.parse(a,e,t,r);return i?{setter:new Wf(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(a,e,t){return!0}}});var $f,RM=D(()=>{Xe();$f=class extends de{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 _e,_r,Ha=D(()=>{_e={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}/},_r={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 ct(n,a){return n&&{value:a(n.value),rest:n.rest}}function Ve(n,a){let e=a.match(n);return e?{value:parseInt(e[0],10),rest:a.slice(e[0].length)}:null}function qr(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*pc+i*uc+s*YD),rest:a.slice(e[0].length)}}function Uf(n){return Ve(_e.anyDigitsSigned,n)}function Ee(n,a){switch(n){case 1:return Ve(_e.singleDigit,a);case 2:return Ve(_e.twoDigits,a);case 3:return Ve(_e.threeDigits,a);case 4:return Ve(_e.fourDigits,a);default:return Ve(new RegExp("^\\d{1,"+n+"}"),a)}}function El(n,a){switch(n){case 1:return Ve(_e.singleDigitSigned,a);case 2:return Ve(_e.twoDigitsSigned,a);case 3:return Ve(_e.threeDigitsSigned,a);case 4:return Ve(_e.fourDigitsSigned,a);default:return Ve(new RegExp("^-?\\d{1,"+n+"}"),a)}}function Pl(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 _f(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 qf(n){return n%400===0||n%4===0&&n%100!==0}var it=D(()=>{Jn();Ha()});var Yf,OM=D(()=>{Xe();it();Yf=class extends de{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 ct(Ee(4,e),i);case"yo":return ct(r.ordinalNumber(e,{unit:"year"}),i);default:return ct(Ee(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=_f(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 Gf,NM=D(()=>{gc();cn();Xe();it();Gf=class extends de{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 ct(Ee(4,e),i);case"Yo":return ct(r.ordinalNumber(e,{unit:"year"}),i);default:return ct(Ee(t.length,e),i)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r,i){let s=Sl(e,i);if(r.isTwoDigitYear){let l=_f(r.year,s);return e.setFullYear(l,0,i.firstWeekContainsDate),e.setHours(0,0,0,0),dr(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),dr(e,i)}}});var Kf,LM=D(()=>{eo();Ut();Xe();it();Kf=class extends de{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"?El(4,e):El(t.length,e)}set(e,t,r){let i=Pe(e,0);return i.setFullYear(r,0,4),i.setHours(0,0,0,0),vi(i)}}});var Qf,jM=D(()=>{Xe();it();Qf=class extends de{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"?El(4,e):El(t.length,e)}set(e,t,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}});var Xf,HM=D(()=>{Xe();it();Xf=class extends de{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 Ee(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 Jf,BM=D(()=>{Xe();it();Jf=class extends de{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 Ee(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 Zf,VM=D(()=>{Ha();Xe();it();Zf=class extends de{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 ct(Ve(_e.month,e),i);case"MM":return ct(Ee(2,e),i);case"Mo":return ct(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 eh,WM=D(()=>{Ha();Xe();it();eh=class extends de{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 ct(Ve(_e.month,e),i);case"LL":return ct(Ee(2,e),i);case"Lo":return ct(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 zM(n,a,e){let t=Me(n,e==null?void 0:e.in),r=Lf(t,e)-a;return t.setDate(t.getDate()-r*7),Me(t,e==null?void 0:e.in)}var Mb=D(()=>{jf();_t()});var th,$M=D(()=>{Mb();cn();Ha();Xe();it();th=class extends de{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 Ve(_e.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return Ee(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r,i){return dr(zM(e,r,i),i)}}});function UM(n,a,e){let t=Me(n,e==null?void 0:e.in),r=Of(t,e)-a;return t.setDate(t.getDate()-r*7),t}var Ib=D(()=>{Nf();_t()});var ah,_M=D(()=>{Ib();eo();Ha();Xe();it();ah=class extends de{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 Ve(_e.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return Ee(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r){return vi(UM(e,r))}}});var U5,_5,rh,qM=D(()=>{Ha();Xe();it();U5=[31,28,31,30,31,30,31,31,30,31,30,31],_5=[31,29,31,30,31,30,31,31,30,31,30,31],rh=class extends de{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 Ve(_e.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return Ee(t.length,e)}}validate(e,t){let r=e.getFullYear(),i=qf(r),s=e.getMonth();return i?t>=1&&t<=_5[s]:t>=1&&t<=U5[s]}set(e,t,r){return e.setDate(r),e.setHours(0,0,0,0),e}}});var ih,YM=D(()=>{Ha();Xe();it();ih=class extends de{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 Ve(_e.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return Ee(t.length,e)}}validate(e,t){let r=e.getFullYear();return qf(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 Ml(n,a,e){var p,m,f,h,k,g,v,b;let t=Ur(),r=(b=(v=(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?v:(g=(k=t.locale)==null?void 0:k.options)==null?void 0:g.weekStartsOn)!=null?b:0,i=Me(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 bl(i,u,e)}var yc=D(()=>{Zn();mc();_t()});var sh,GM=D(()=>{yc();Xe();sh=class extends de{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=Ml(e,r,i),e.setHours(0,0,0,0),e}}});var nh,KM=D(()=>{yc();Xe();it();nh=class extends de{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 ct(Ee(t.length,e),s);case"eo":return ct(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=Ml(e,r,i),e.setHours(0,0,0,0),e}}});var oh,QM=D(()=>{yc();Xe();it();oh=class extends de{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 ct(Ee(t.length,e),s);case"co":return ct(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=Ml(e,r,i),e.setHours(0,0,0,0),e}}});function XM(n,a,e){let t=Me(n,e==null?void 0:e.in),r=sM(t,e),i=a-r;return bl(t,i,e)}var Ab=D(()=>{mc();Db();_t()});var lh,JM=D(()=>{Ab();Xe();it();lh=class extends de{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 Ee(t.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return ct(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 ct(r.day(e,{width:"narrow",context:"formatting"}),i);case"iiiiii":return ct(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),i);case"iiii":default:return ct(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=XM(e,r),e.setHours(0,0,0,0),e}}});var dh,ZM=D(()=>{Xe();it();dh=class extends de{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(Pl(r),0,0,0),e}}});var ch,e1=D(()=>{Xe();it();ch=class extends de{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(Pl(r),0,0,0),e}}});var uh,t1=D(()=>{Xe();it();uh=class extends de{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(Pl(r),0,0,0),e}}});var ph,a1=D(()=>{Ha();Xe();it();ph=class extends de{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,r){switch(t){case"h":return Ve(_e.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return Ee(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 mh,r1=D(()=>{Ha();Xe();it();mh=class extends de{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 Ve(_e.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return Ee(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,r){return e.setHours(r,0,0,0),e}}});var fh,i1=D(()=>{Ha();Xe();it();fh=class extends de{constructor(){super(...arguments);z(this,"priority",70);z(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,r){switch(t){case"K":return Ve(_e.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return Ee(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 hh,s1=D(()=>{Ha();Xe();it();hh=class extends de{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 Ve(_e.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return Ee(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 gh,n1=D(()=>{Ha();Xe();it();gh=class extends de{constructor(){super(...arguments);z(this,"priority",60);z(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"m":return Ve(_e.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return Ee(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setMinutes(r,0,0),e}}});var kh,o1=D(()=>{Ha();Xe();it();kh=class extends de{constructor(){super(...arguments);z(this,"priority",50);z(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"s":return Ve(_e.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return Ee(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setSeconds(r,0),e}}});var vh,l1=D(()=>{Xe();it();vh=class extends de{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 ct(Ee(t.length,e),r)}set(e,t,r){return e.setMilliseconds(r),e}}});var yh,d1=D(()=>{Ut();Pf();Ha();Xe();it();yh=class extends de{constructor(){super(...arguments);z(this,"priority",10);z(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return qr(_r.basicOptionalMinutes,e);case"XX":return qr(_r.basic,e);case"XXXX":return qr(_r.basicOptionalSeconds,e);case"XXXXX":return qr(_r.extendedOptionalSeconds,e);case"XXX":default:return qr(_r.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Pe(e,e.getTime()-to(e)-r)}}});var bh,c1=D(()=>{Ut();Pf();Ha();Xe();it();bh=class extends de{constructor(){super(...arguments);z(this,"priority",10);z(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return qr(_r.basicOptionalMinutes,e);case"xx":return qr(_r.basic,e);case"xxxx":return qr(_r.basicOptionalSeconds,e);case"xxxxx":return qr(_r.extendedOptionalSeconds,e);case"xxx":default:return qr(_r.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Pe(e,e.getTime()-to(e)-r)}}});var wh,u1=D(()=>{Ut();Xe();it();wh=class extends de{constructor(){super(...arguments);z(this,"priority",40);z(this,"incompatibleTokens","*")}parse(e){return Uf(e)}set(e,t,r){return[Pe(e,r*1e3),{timestampIsSet:!0}]}}});var Th,p1=D(()=>{Ut();Xe();it();Th=class extends de{constructor(){super(...arguments);z(this,"priority",20);z(this,"incompatibleTokens","*")}parse(e){return Uf(e)}set(e,t,r){return[Pe(e,r),{timestampIsSet:!0}]}}});var m1,f1=D(()=>{RM();OM();NM();LM();jM();HM();BM();VM();WM();$M();_M();qM();YM();GM();KM();QM();JM();ZM();e1();t1();a1();r1();i1();s1();n1();o1();l1();d1();c1();u1();p1();m1={G:new $f,y:new Yf,Y:new Gf,R:new Kf,u:new Qf,Q:new Xf,q:new Jf,M:new Zf,L:new eh,w:new th,I:new ah,d:new rh,D:new ih,E:new sh,e:new nh,c:new oh,i:new lh,a:new dh,b:new ch,B:new uh,h:new ph,H:new mh,K:new fh,k:new hh,m:new gh,s:new kh,S:new vh,X:new yh,x:new bh,t:new wh,T:new Th}});function h1(n,a,e,t){var g,v,b,y,w,x,T,C,S,E,A,N,I,R,j,W,B,X;let r=()=>Pe((t==null?void 0:t.in)||e,NaN),i=rM(),s=(v=(g=t==null?void 0:t.locale)!=null?g:i.locale)!=null?v:ao,o=(E=(S=(x=(w=t==null?void 0:t.firstWeekContainsDate)!=null?w:(y=(b=t==null?void 0:t.locale)==null?void 0:b.options)==null?void 0:y.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():Me(e,t==null?void 0:t.in);let c={firstWeekContainsDate:o,weekStartsOn:l,locale:s},u=[new zf(t==null?void 0:t.in,e)],p=a.match(Y5).map(V=>{let G=V[0];if(G in kc){let q=kc[G];return q(V,s.formatLong)}return V}).join("").match(q5),m=[];for(let V of p){!(t!=null&&t.useAdditionalWeekYearTokens)&&Bf(V)&&vc(V,a,n),!(t!=null&&t.useAdditionalDayOfYearTokens)&&Hf(V)&&vc(V,a,n);let G=V[0],q=m1[G];if(q){let{incompatibleTokens:oe}=q;if(Array.isArray(oe)){let be=m.find(Ae=>oe.includes(Ae.token)||Ae.token===G);if(be)throw new RangeError(`The format string mustn't contain \`${be.fullToken}\` and \`${V}\` at the same time`)}else if(q.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 le=q.run(n,V,s.match,c);if(!le)return r();u.push(le.setter),n=le.rest}else{if(G.match(X5))throw new RangeError("Format string contains an unescaped latin alphabet character `"+G+"`");if(V==="''"?V="'":G==="'"&&(V=J5(V)),n.indexOf(V)===0)n=n.slice(V.length);else return r()}}if(n.length>0&&Q5.test(n))return r();let f=u.map(V=>V.priority).sort((V,G)=>G-V).filter((V,G,q)=>q.indexOf(V)===G).map(V=>u.filter(G=>G.priority===V).sort((G,q)=>q.subPriority-G.subPriority)).map(V=>V[0]),h=Me(e,t==null?void 0:t.in);if(isNaN(+h))return r();let k={};for(let V of f){if(!V.validate(h,c))return r();let G=V.set(h,k,c);Array.isArray(G)?(h=G[0],Object.assign(k,G[1])):h=G}return h}function J5(n){return n.match(G5)[1].replace(K5,"'")}var q5,Y5,G5,K5,Q5,X5,g1=D(()=>{kb();Tb();xb();Ut();Sb();_t();Pb();f1();q5=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Y5=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,G5=/^'([^]*?)'?$/,K5=/''/g,Q5=/\S/,X5=/[a-zA-Z]/});var k1=D(()=>{});var v1=D(()=>{});var y1=D(()=>{});var b1=D(()=>{});var w1=D(()=>{});var T1=D(()=>{});var x1=D(()=>{});var C1=D(()=>{});var S1=D(()=>{});var D1=D(()=>{});var E1=D(()=>{});var P1=D(()=>{});var M1=D(()=>{});var I1=D(()=>{});function A1(n,a,e){let[t,r]=wl(e==null?void 0:e.in,n,a);return t.getFullYear()===r.getFullYear()}var Fb=D(()=>{Mf()});var F1=D(()=>{});var R1=D(()=>{});var O1=D(()=>{});var N1=D(()=>{});var L1=D(()=>{});var j1=D(()=>{});var H1=D(()=>{});function B1(n,a){return A1(Pe((a==null?void 0:a.in)||n,n),Tl((a==null?void 0:a.in)||n))}var V1=D(()=>{Ut();fc();Fb()});var W1=D(()=>{});function z1(n,a){return Af(Pe((a==null?void 0:a.in)||n,n),Tl((a==null?void 0:a.in)||n))}var $1=D(()=>{Ut();fc();Ff()});function U1(n,a){return Af(n,bl(Tl((a==null?void 0:a.in)||n),1),a)}var _1=D(()=>{mc();fc();Ff()});var q1=D(()=>{});var Y1=D(()=>{});var G1=D(()=>{});var K1=D(()=>{});var Q1=D(()=>{});var X1=D(()=>{});var J1=D(()=>{});var Z1=D(()=>{});var eI=D(()=>{});var tI=D(()=>{});var aI=D(()=>{});var rI=D(()=>{});var iI=D(()=>{});var sI=D(()=>{});var nI=D(()=>{});var oI=D(()=>{});var lI=D(()=>{});var dI=D(()=>{});var cI=D(()=>{});var uI=D(()=>{});var pI=D(()=>{});var mI=D(()=>{});var fI=D(()=>{});var hI=D(()=>{});var gI=D(()=>{});var kI=D(()=>{});var vI=D(()=>{});var yI=D(()=>{});var bI=D(()=>{});function wI(n,a){var c;let e=()=>Pe(a==null?void 0:a.in,NaN),t=(c=a==null?void 0:a.additionalDigits)!=null?c:2,r=aW(n),i;if(r.date){let u=rW(r.date,t);i=iW(u.restDateString,u.year)}if(!i||isNaN(+i))return e();let s=+i,o=0,l;if(r.time&&(o=sW(r.time),isNaN(o)))return e();if(r.timezone){if(l=nW(r.timezone),isNaN(l))return e()}else{let u=new Date(s+o),p=Me(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 Me(s+o+l,a==null?void 0:a.in)}function aW(n){let a={},e=n.split(xh.dateTimeDelimiter),t;if(e.length>2)return a;if(/:/.test(e[0])?t=e[0]:(a.date=e[0],t=e[1],xh.timeZoneDelimiter.test(a.date)&&(a.date=n.split(xh.timeZoneDelimiter)[0],t=n.substr(a.date.length,n.length))),t){let r=xh.timezone.exec(t);r?(a.time=t.replace(r[1],""),a.timezone=r[1]):a.time=t}return a}function rW(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 iW(n,a){if(a===null)return new Date(NaN);let e=n.match(Z5);if(!e)return new Date(NaN);let t=!!e[4],r=bc(e[1]),i=bc(e[2])-1,s=bc(e[3]),o=bc(e[4]),l=bc(e[5])-1;if(t)return uW(a,o,l)?oW(a,o,l):new Date(NaN);{let c=new Date(0);return!dW(a,i,s)||!cW(a,r)?new Date(NaN):(c.setUTCFullYear(a,i,Math.max(r,s)),c)}}function bc(n){return n?parseInt(n):1}function sW(n){let a=n.match(eW);if(!a)return NaN;let e=Rb(a[1]),t=Rb(a[2]),r=Rb(a[3]);return pW(e,t,r)?e*pc+t*uc+r*1e3:NaN}function Rb(n){return n&&parseFloat(n.replace(",","."))||0}function nW(n){if(n==="Z")return 0;let a=n.match(tW);if(!a)return 0;let e=a[1]==="+"?-1:1,t=parseInt(a[2]),r=a[3]&&parseInt(a[3])||0;return mW(t,r)?e*(t*pc+r*uc):NaN}function oW(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 TI(n){return n%400===0||n%4===0&&n%100!==0}function dW(n,a,e){return a>=0&&a<=11&&e>=1&&e<=(lW[a]||(TI(n)?29:28))}function cW(n,a){return a>=1&&a<=(TI(n)?366:365)}function uW(n,a,e){return a>=1&&a<=53&&e>=0&&e<=6}function pW(n,a,e){return n===24?a===0&&e===0:e>=0&&e<60&&a>=0&&a<60&&n>=0&&n<25}function mW(n,a){return a>=0&&a<=59}var xh,Z5,eW,tW,lW,xI=D(()=>{Jn();Ut();_t();xh={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},Z5=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,eW=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,tW=/^([+-])(\d{2})(?::?(\d{2}))?$/;lW=[31,null,31,30,31,30,31,31,30,31,30,31]});var CI=D(()=>{});var SI=D(()=>{});var DI=D(()=>{});var EI=D(()=>{});var PI=D(()=>{});var MI=D(()=>{});var II=D(()=>{});var AI=D(()=>{});var FI=D(()=>{});var RI=D(()=>{});var OI=D(()=>{});var NI=D(()=>{});var LI=D(()=>{});var jI=D(()=>{});var HI=D(()=>{});var BI=D(()=>{});var VI=D(()=>{});var WI=D(()=>{});var zI=D(()=>{});var $I=D(()=>{});var UI=D(()=>{});var _I=D(()=>{});var qI=D(()=>{});var YI=D(()=>{});var GI=D(()=>{});var KI=D(()=>{});var QI=D(()=>{});var XI=D(()=>{});var JI=D(()=>{});var ZI=D(()=>{});var eA=D(()=>{});var tA=D(()=>{});var aA=D(()=>{});var rA=D(()=>{});var iA=D(()=>{});var sA=D(()=>{});var nA=D(()=>{});var oA=D(()=>{});var lA=D(()=>{});var dA=D(()=>{});var cA=D(()=>{});var uA=D(()=>{});var pA=D(()=>{});var mA=D(()=>{});var fA=D(()=>{});var hA=D(()=>{});var gA=D(()=>{QD();eE();mc();aE();nE();tE();oE();KD();lE();dE();cE();uE();pE();hE();gE();kE();vE();yE();Ut();fc();bE();TE();ub();xE();CE();SE();EE();PE();ME();IE();AE();RE();OE();NE();BE();VE();WE();zE();$E();UE();_E();qE();YE();KE();QE();XE();ZE();aP();rP();LE();iP();sP();oP();lP();dP();jE();cP();uP();pP();mP();nP();eP();fP();HP();BP();VP();WP();zP();$P();UP();_P();qP();YP();GP();KP();QP();XP();JP();vb();ZP();tM();aM();Sb();iM();Db();Nf();Ef();nM();oM();lM();dM();cM();DE();uM();pM();mM();jf();fM();gc();gM();kM();vM();yM();bM();wM();TM();xM();CM();SM();DM();mb();EM();PM();MM();IM();AM();HE();eM();k1();v1();y1();Ff();w1();x1();C1();D1();E1();P1();I1();T1();Fb();XD();JD();F1();R1();O1();N1();L1();j1();H1();V1();W1();$1();_1();q1();fb();Y1();ZD();G1();Q1();X1();Z1();eI();hM();tI();J1();aI();rI();mE();iI();sI();nI();oI();fE();lI();dI();cI();uI();pI();mI();fI();hI();gI();kI();vI();yI();bI();g1();xI();CI();SI();DI();EI();PI();MI();II();AI();FI();RI();OI();NI();LI();jI();HI();BI();WI();zI();yc();$I();UI();_I();Ab();Ib();sE();qI();YI();VI();GI();KI();Mb();QI();XI();If();JI();b1();eo();pb();S1();JE();GE();M1();ZI();eA();cn();yb();hb();tA();rA();iA();K1();sA();FE();nA();oA();aA();lA();dA();cA();uA();_t();Eb();pA();mA();fA();hA()});var kA=D(()=>{});var vA=D(()=>{});var yA=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(()=>{});var UA=D(()=>{});var _A=D(()=>{});var qA=D(()=>{});var YA=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 sF=D(()=>{});var nF=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 vF=D(()=>{});var yF=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(()=>{});var VF=D(()=>{});var WF=D(()=>{});var zF=D(()=>{});var $F=D(()=>{});var UF=D(()=>{});var _F=D(()=>{});var qF=D(()=>{});var YF=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(()=>{kA();vA();yA();bA();wA();TA();xA();CA();SA();DA();EA();PA();MA();IA();AA();FA();RA();OA();NA();LA();jA();HA();BA();VA();WA();zA();$A();gb();UA();_A();qA();YA();GA();KA();QA();XA();JA();ZA();eF();tF();aF();rF();iF();sF();nF();oF();lF();dF();cF();uF();pF();mF();fF();hF();gF();kF();vF();yF();bF();wF();TF();xF();CF();SF();DF();EF();PF();MF();IF();AF();FF();RF();OF();NF();LF();jF();HF();BF();VF();WF();zF();$F();UF();_F();qF();YF();GF();KF();QF();XF();JF();ZF();eR();tR();aR()});var iR={};wt(iR,{formatDate:()=>fW,getLocalDateString:()=>Sh,getRelativeTimeString:()=>bi,getTodayLocalDateString:()=>yi,parseLocalDate:()=>Ch});function fW(n){return z1(n)?"Today":U1(n)?"Tomorrow":B1(n)?Cb(n,"MMM d"):Cb(n,"MMM d, yyyy")}function Ch(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=h1(n,r,new Date,{locale:ao});if(hc(i))return Ms(i).getTime()}catch(i){continue}try{let r=wI(n);if(hc(r))return Ms(r).getTime()}catch(r){}console.warn(`Worker: Could not parse date: ${n}`)}function yi(){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 Sh(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 bi(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(()=>{gA();rR()});var Ob,Nb=D(()=>{Ob=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m});var Dh=D(()=>{});var Eh,sR=D(()=>{Eh=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<e.end)}findNextUnprotectedHash(a=0){let e=a;for(;e<this.content.length;){let t=this.content.indexOf("#",e);if(t===-1)return-1;if(!this.isPositionProtected(t))return t;e=t+1}return-1}detectObsidianLinks(){let a=/\[\[([^\]]+)\]\]/g,e;for(;(e=a.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"obsidian-link",content:e[0]})}detectMarkdownLinks(){let a=/\[([^\]]*)\]\(([^)]+)\)/g,e;for(;(e=a.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"markdown-link",content:e[0]})}detectDirectUrls(){let a=/(?:https?|ftp|mailto|file):\/\/[^\s<>"{}|\\^`\[\]]+/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=r<this.content.length?this.content[r]:" ",s=/\s|^|[^a-zA-Z0-9]/.test(t),o=/\s|$|[^a-zA-Z0-9]/.test(i);return s&&o}mergeAndSortRanges(){if(this.protectedRanges.length===0)return[];this.protectedRanges.sort((t,r)=>t.start-r.start);let a=[],e=this.protectedRanges[0];for(let t=1;t<this.protectedRanges.length;t++){let r=this.protectedRanges[t];e.end>r.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 oR={};wt(oR,{ConfigurableTaskParser:()=>io,MarkdownTaskParser:()=>Ti});var cr,Ti,io,so=D(()=>{Dh();wi();Nb();sR();cr=class cr{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 cr(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(;o<s.length;){if(l++,l>this.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,k=`${e}-L${o}`,[g,v]=this.findParentAndLevel(m),[b,y]=this.parseTaskContent(f),w=y.toLowerCase()==="x",x=this.getStatusFromMapping(y),[T,C,S]=this.extractMetadataAndTagsInternal(b),E=g!==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+1<s.length?this.extractMultilineComment(s,o+1,m):[void 0,0];o+=W;let B=this.extractLegacyPriority(A),X={id:k,content:T,status:x,rawStatus:y,completed:w,indentLevel:v,parentId:g,childrenIds:[],metadata:N,tags:I,comment:j,lineNumber:o+1,actualIndent:m,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:h,filePath:e,originalMarkdown:u,tgProject:R,line:o,children:[],priority:B,startDate:this.extractLegacyDate(N,"startDate"),dueDate:this.extractLegacyDate(N,"dueDate"),scheduledDate:this.extractLegacyDate(N,"scheduledDate"),completedDate:this.extractLegacyDate(N,"completedDate"),createdDate:this.extractLegacyDate(N,"createdDate"),recurrence:N.recurrence,project:N.project,context:N.context};if(g&&this.tasks.length>0){let V=this.tasks.find(G=>G.id===g);V&&(V.childrenIds.push(k),V.children.push(k))}this.updateIndentStack(k,v,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(;t<e.length&&/\d/.test(e[t]);)t++;return t>0&&t<e.length&&(e[t]==="."||e[t]===")")?e.slice(0,t+1).join(""):a.charAt(0)||" "}isTaskLine(a){return Ob.test(a)}parseTaskContent(a){let e=a.match(Ob);if(e&&e[4]!==void 0&&e[5]!==void 0){let t=e[4];return[e[5].trim(),t]}return[a," "]}extractMetadataAndTagsInternal(a){var o;let e={},t=[],r="",i=a,s=0;for(;s<this.config.maxMetadataIterations;){s++;let l=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode==="dataview-only"||this.config.metadataParseMode==="both")){let c=this.extractDataviewMetadata(i);if(c){let[u,p,m]=c;e[u]=p,u==="priority"&&i.substring(0,50),i=m,l=!0;continue}}if(!l&&this.config.parseMetadata&&(this.config.metadataParseMode==="emoji-only"||this.config.metadataParseMode==="both")){let c=this.extractEmojiMetadata(i);if(c){let[u,p,m,f]=c,[h,k,g]=this.extractTagsOnly(m);for(let v of g)t.push(v);for(let[v,b]of Object.entries(k))e[v]=b;e[u]=p,r+=h,i=f,l=!0;continue}}if(!l&&this.config.parseTags){let c=this.extractContext(i);if(c){let[u,p,m]=c;e.context=u,r+=p,i=m,l=!0;continue}}if(!l&&this.config.parseTags){let c=this.extractTag(i);if(c){let[u,p,m]=c,f=u.startsWith("#")?u.substring(1):u,h=f.indexOf("/");if(h!==-1){let k=f.substring(0,h),g=f.substring(h+1),v=(o=this.config.specialTagPrefixes[k])!=null?o:this.config.specialTagPrefixes[k.toLowerCase()];console.debug("[TPB] Tag parse",{tag:u,prefix:k,mappedKey:v,keys:Object.keys(this.config.specialTagPrefixes)}),v&&this.config.metadataParseMode!=="none"?e[v]=g:t.push(u)}else t.push(u);r+=p,i=m,l=!0;continue}}if(!l){r+=i;break}}return[r.trim(),e,t]}extractTimeComponents(a,e){if(!this.timeParsingService)return{...e,tags:this.safeParseTagsField(e.tags),children:[]};try{let t={},r=[],i=[];try{let o=this.timeParsingService.parseTimeComponents(a);t=o.timeComponents,r=o.errors||[],i=o.warnings||[]}catch(o){console.warn("[MarkdownTaskParser] timeParsingService.parseTimeComponents failed, continuing without time components:",o),t={},r=[],i=[]}i.length>0&&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 k=a.indexOf(f);k!==-1&&(!e||k<e.pos)&&(e={pos:k,emoji:f,key:h})}if(!e)return null;let t=a.substring(0,e.pos),r=a.substring(e.pos+e.emoji.length),i=r.match(/^\s*/),s=i?i[0].length:0,o=r.substring(s),l=o.length;for(let f=0;f<o.length;f++){let h=o[f];if(Object.keys(this.config.emojiMapping).some(g=>o.substring(f).startsWith(g))||h==="["){l=f;break}let k=this.findFileExtensionEnd(o,f);if(k>f){l=k;break}if(/\s/.test(h)&&f+1<o.length&&(o[f+1]==="#"||o[f+1]==="@")){l=f;break}if(h==="#"||h==="@"){l=f;break}}let c=o.substring(0,l).trim(),u;if(e.key==="dependsOn"&&c?u=c.split(",").map(f=>f.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]==="#")for(;i<a.length&&a[i]!==" ";)i++;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 Eh(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<i.length;o++){let l=i[o],c=l.charCodeAt(0);if(c>=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<r.length;s++){let o=r[s],l=o.charCodeAt(0);if(l>=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 k of h)t.push(k);for(let[k,g]of Object.entries(f))e[k]=g;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),k=m.substring(f+1),g=(s=this.config.specialTagPrefixes[h])!=null?s:this.config.specialTagPrefixes[h.toLowerCase()];g&&this.config.metadataParseMode!=="none"?e[g]=k: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(i<a)return[t,r+1]}return[void 0,0]}updateIndentStack(a,e,t){let r=0;for(;this.indentStack.length>0;){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(;i<a.length;){let o=a[i],l=o.trimStart();if(o.length-l.length>t&&!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=cr.dateCache.get(r);if(i!==void 0)return i;let s=Ch(t,this.customDateFormats);if(cr.dateCache.size>=cr.MAX_CACHE_SIZE){let o=cr.dateCache.keys().next().value;o&&cr.dateCache.delete(o)}return cr.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(){cr.dateCache.clear()}static getDateCacheStats(){return{size:cr.dateCache.size,maxSize:cr.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 k=f[m.toLowerCase()]||f[m];return k!==void 0?String(k):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,k]of Object.entries(f))!i.has(h)&&(r[h]===void 0||r[h]===null||r[h]==="")&&k!==void 0&&k!==null&&(h==="priority"?r[h]=t(k):r[h]=String(k));if(!i.has("tags")&&(r.tags===void 0||r.tags===null||r.tags==="")){let h=m.map(k=>this.normalizeTag(k));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}};cr.dateCache=new Map,cr.MAX_CACHE_SIZE=1e4;Ti=cr,io=class extends Ti{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 un,wc=D(()=>{Dh();un=(n,a)=>{var s,o,l,c,u,p,m,f,h,k,g,v;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:(k=a==null?void 0:a.settings)==null?void 0:k.fileMetadataInheritance,customDateFormats:(g=a==null?void 0:a.settings)!=null&&g.enableCustomDateFormats?(v=a==null?void 0:a.settings)==null?void 0:v.customDateFormats:void 0}}});var gW,Hb,pR=D(()=>{gW={"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"},Hb=gW});var kW,mR,fR=D(()=>{kW={"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"},mR=kW});var vW,hR,gR=D(()=>{vW={"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"},hR=vW});var yW,kR,vR=D(()=>{yW={"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"},kR=yW});var bW,yR,bR=D(()=>{bW={"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"},yR=bW});var wW,wR,TR=D(()=>{wW={"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"},wR=wW});var TW,xR,CR=D(()=>{TW={"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"},xR=TW});var xW,SR,DR=D(()=>{xW={"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"},SR=xW});var ER,Bb,Vb,Ph,st,Wb=D(()=>{ER=require("obsidian");pR();fR();gR();vR();bR();TR();CR();DR();Bb={en:Hb,"en-gb":mR,ja:hR,"pt-br":kR,ru:yR,uk:wR,"zh-cn":xR,"zh-tw":SR},Vb=class n{constructor(){this.currentLocale="en";this.translations=new Map;this.fallbackTranslation=Hb;this.lowercaseKeyMap=new Map;try{this.currentLocale=ER.moment.locale()}catch(a){this.currentLocale="en"}Object.entries(Bb).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 Bb?this.currentLocale=a:this.currentLocale="en"}getSupportedLocales(){return Object.keys(Bb)}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}}}`})}},Ph=Vb.getInstance(),st=(n,a)=>Ph.t(n,a)});var CW,d,Y=D(()=>{CW=require("obsidian");Wb();d=Ph.t.bind(Ph)});function PW(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 MW(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function IR(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?MW(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}function _b(n){let a=/\{\{DATE?:([^}]+)\}\}/gi,e=n.replace(a,(t,r)=>{try{return!r||r.trim()===""?t:(0,Ub.moment)().format(r)}catch(i){return console.warn(`Invalid date format in template: ${r}`,i),t}});return IR(e)}async function qi(n,a,e){let{targetFile:t,appendToFile:r,targetType:i,targetHeading:s,dailyNoteSettings:o}=e,l;if(i==="daily-note"&&o){let u=(0,Ub.moment)().format(o.format),p=o.folder?`${o.folder}/${u}.md`:`${u}.md`;l=IR(p)}else l=_b(t||"Quick Capture.md");let c=n.vault.getFileByPath(l);if(c)if(c instanceof Ol.TFile)await n.vault.process(c,u=>{if(s)return IW(u,a,s,r||"append");switch(r){case"append":{let p=(0,Ol.getFrontMatterInfo)(u),m=u.endsWith(`
|
||
`)?"":`
|
||
`;if(p.exists){let f=p.contentStart;if(f!==void 0){let h=u.slice(0,f),k=u.slice(f);return h+k+m+a}else return u+m+a}else return u+m+a}case"prepend":{let p=(0,Ol.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=PW(n,o.template);if(m instanceof Ol.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 IW(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;m<r.length;m++){let f=r[m].match(i);if(f){s=m,o=f[1].length;break}}if(s===-1){let m=n.endsWith(`
|
||
`)?"":`
|
||
`;return`${n}${m}
|
||
## ${e}
|
||
|
||
${a}`}let l=r.length;for(let m=s+1;m<r.length;m++){let h=r[m].match(/^(#{1,6})\s+/);if(h&&h[1].length<=o){l=m;break}}let c;if(t==="prepend")for(c=s+1;c<l&&r[c].trim()==="";)c++;else for(c=l;c>s+1&&r[c-1].trim()==="";)c--;let u=a.split(`
|
||
`);return[...r.slice(0,c),"",...u,"",...r.slice(c)].join(`
|
||
`)}var Ol,Ub,Nl=D(()=>{Ol=require("obsidian"),Ub=require("obsidian")});var RR=ke((Gb,Kb)=>{(function(n,a){typeof Gb=="object"&&typeof Kb!="undefined"?Kb.exports=a():typeof define=="function"&&define.amd?define(a):(n=typeof globalThis!="undefined"?globalThis:n||self).dayjs_plugin_quarterOfYear=a()})(Gb,(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 qe=ke((Qb,Xb)=>{(function(n,a){typeof Qb=="object"&&typeof Xb!="undefined"?Xb.exports=a():typeof define=="function"&&define.amd?define(a):(n=typeof globalThis!="undefined"?globalThis:n||self).dayjs=a()})(Qb,(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+)?$/,k=/\[([^\]]+)]|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,g={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])+"]"}},v=function(I,R,j){var W=String(I);return!W||W.length>=R?I:""+Array(R+1-W.length).join(j)+I},b={s:v,z:function(I){var R=-I.utcOffset(),j=Math.abs(R),W=Math.floor(j/60),B=j%60;return(R<=0?"+":"-")+v(W,2,"0")+":"+v(B,2,"0")},m:function I(R,j){if(R.date()<j.date())return-I(j,R);var W=12*(j.year()-R.year())+(j.month()-R.month()),B=R.clone().add(W,c),X=j-B<0,V=R.clone().add(W+(X?-1:1),c);return+(-(W+(j-B)/(X?B-V:V-B))||0)},a:function(I){return I<0?Math.ceil(I)||0:Math.floor(I)},p:function(I){return{M:c,y:p,w:l,d:o,D:m,h:s,m:i,s:r,ms:t,Q:u}[I]||String(I||"").toLowerCase().replace(/s$/,"")},u:function(I){return I===void 0}},y="en",w={};w[y]=g;var x="$isDayjsObject",T=function(I){return I instanceof A||!(!I||!I[x])},C=function I(R,j,W){var B;if(!R)return y;if(typeof R=="string"){var X=R.toLowerCase();w[X]&&(B=X),j&&(w[X]=j,B=X);var V=R.split("-");if(!B&&V.length>1)return I(V[0])}else{var G=R.name;w[G]=R,B=G}return!W&&B&&(y=B),B||!W&&y},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,q=(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,q)):new Date(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,q)}}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)<this.startOf(W)},R.isBefore=function(j,W){return this.endOf(W)<S(j)},R.$g=function(j,W,B){return E.u(j)?this[W]:this.set(B,j)},R.unix=function(){return Math.floor(this.valueOf()/1e3)},R.valueOf=function(){return this.$d.getTime()},R.startOf=function(j,W){var B=this,X=!!E.u(W)||W,V=E.p(j),G=function(Ke,Re){var ne=E.w(B.$u?Date.UTC(B.$y,Re,Ke):new Date(B.$y,Re,Ke),B);return X?ne:ne.endOf(o)},q=function(Ke,Re){return E.w(B.toDate()[Ke].apply(B.toDate("s"),(X?[0,0,0,0]:[23,59,59,999]).slice(Re)),B)},oe=this.$W,le=this.$M,be=this.$D,Ae="set"+(this.$u?"UTC":"");switch(V){case p:return X?G(1,0):G(31,11);case c:return X?G(1,le):G(0,le+1);case l:var De=this.$locale().weekStart||0,et=(oe<De?oe+7:oe)-De;return G(X?be-et:be+(6-et),le);case o:case m:return q(Ae+"Hours",0);case s:return q(Ae+"Minutes",1);case i:return q(Ae+"Seconds",2);case r:return q(Ae+"Milliseconds",3);default:return this.clone()}},R.endOf=function(j){return this.startOf(j,!1)},R.$set=function(j,W){var B,X=E.p(j),V="set"+(this.$u?"UTC":""),G=(B={},B[o]=V+"Date",B[m]=V+"Date",B[c]=V+"Month",B[p]=V+"FullYear",B[s]=V+"Hours",B[i]=V+"Minutes",B[r]=V+"Seconds",B[t]=V+"Milliseconds",B)[X],q=X===o?this.$D+(W-this.$W):W;if(X===c||X===p){var oe=this.clone().set(m,1);oe.$d[G](q),oe.init(),this.$d=oe.set(m,Math.min(this.$D,oe.daysInMonth())).$d}else G&&this.$d[G](q);return this.init(),this},R.set=function(j,W){return this.clone().$set(j,W)},R.get=function(j){return this[E.p(j)]()},R.add=function(j,W){var B,X=this;j=Number(j);var V=E.p(W),G=function(le){var be=S(X);return E.w(be.date(be.date()+Math.round(le*j)),X)};if(V===c)return this.set(c,this.$M+j);if(V===p)return this.set(p,this.$y+j);if(V===o)return G(1);if(V===l)return G(7);var q=(B={},B[i]=a,B[s]=e,B[r]=n,B)[V]||1,oe=this.$d.getTime()+j*q;return E.w(oe,this)},R.subtract=function(j,W){return this.add(-1*j,W)},R.format=function(j){var W=this,B=this.$locale();if(!this.isValid())return B.invalidDate||f;var X=j||"YYYY-MM-DDTHH:mm:ssZ",V=E.z(this),G=this.$H,q=this.$m,oe=this.$M,le=B.weekdays,be=B.months,Ae=B.meridiem,De=function(Re,ne,he,Se){return Re&&(Re[ne]||Re(W,X))||he[ne].slice(0,Se)},et=function(Re){return E.s(G%12||12,Re,"0")},Ke=Ae||function(Re,ne,he){var Se=Re<12?"AM":"PM";return he?Se.toLowerCase():Se};return X.replace(k,(function(Re,ne){return ne||(function(he){switch(he){case"YY":return String(W.$y).slice(-2);case"YYYY":return E.s(W.$y,4,"0");case"M":return oe+1;case"MM":return E.s(oe+1,2,"0");case"MMM":return De(B.monthsShort,oe,be,3);case"MMMM":return De(be,oe);case"D":return W.$D;case"DD":return E.s(W.$D,2,"0");case"d":return String(W.$W);case"dd":return De(B.weekdaysMin,W.$W,le,2);case"ddd":return De(B.weekdaysShort,W.$W,le,3);case"dddd":return le[W.$W];case"H":return String(G);case"HH":return E.s(G,2,"0");case"h":return et(1);case"hh":return et(2);case"a":return Ke(G,q,!0);case"A":return Ke(G,q,!1);case"m":return String(q);case"mm":return E.s(q,2,"0");case"s":return String(W.$s);case"ss":return E.s(W.$s,2,"0");case"SSS":return E.s(W.$ms,3,"0");case"Z":return V}return null})(Re)||V.replace(":","")}))},R.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},R.diff=function(j,W,B){var X,V=this,G=E.p(W),q=S(j),oe=(q.utcOffset()-this.utcOffset())*a,le=this-q,be=function(){return E.m(V,q)};switch(G){case p:X=be()/12;break;case c:X=be();break;case u:X=be()/3;break;case l:X=(le-oe)/6048e5;break;case o:X=(le-oe)/864e5;break;case s:X=le/e;break;case i:X=le/a;break;case r:X=le/n;break;default:X=le}return B?X:E.a(X)},R.daysInMonth=function(){return this.endOf(c).$D},R.$locale=function(){return w[this.$L]},R.locale=function(j,W){if(!j)return this.$L;var B=this.clone(),X=C(j,W,!0);return X&&(B.$L=X),B},R.clone=function(){return E.w(this.$d,this)},R.toDate=function(){return new Date(this.valueOf())},R.toJSON=function(){return this.isValid()?this.toISOString():null},R.toISOString=function(){return this.$d.toISOString()},R.toString=function(){return this.$d.toUTCString()},I})(),N=A.prototype;return S.prototype=N,[["$ms",t],["$s",r],["$m",i],["$H",s],["$W",o],["$M",c],["$y",p],["$D",m]].forEach((function(I){N[I[1]]=function(R){return this.$g(R,I[0],I[1])}})),S.extend=function(I,R){return I.$i||(I(R,A,S),I.$i=!0),S},S.locale=C,S.isDayjs=T,S.unix=function(I){return S(1e3*I)},S.en=w[y],S.Ls=w,S.p={},S}))});var Ls,Tg,LT=D(()=>{Ls=require("obsidian"),Tg=(n,a)=>{let e=null,t=n.buttonEl,r=a.containerEl.win,i=[];try{typeof Ls.getIconIds=="function"?i=(0,Ls.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 Ls.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,k=!1,g=(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=k?0:h*f,A=k?C.length:Math.min((h+1)*f,C.length);if(E>=A&&!k)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,Ls.setIcon)(R,I),R.addEventListener("click",()=>{a.onIconSelected(I),b()})}),k||h++,r.setTimeout(x,0)},v=()=>{let{scrollTop:C,scrollHeight:S,clientHeight:E}=m;k||S-C-E<50&&h*f<i.length&&g(i,!1)},b=()=>{e&&(e.remove(),e=null),r.removeEventListener("click",y),o==null||o.removeEventListener("scroll",T),m.removeEventListener("scroll",v),c.removeEventListener("click",u),c.removeEventListener("blur",p)},y=C=>{e&&!e.contains(C.target)&&b()},w=(0,Ls.debounce)(()=>{let C=c.value.toLowerCase().trim();if(!C)k=!1,g(i);else{k=!0;let S=i.filter(E=>E.toLowerCase().includes(C));g(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",v),g(i),c.addEventListener("input",w),document.body.appendChild(e),x(),r.setTimeout(()=>{r.addEventListener("click",y),o==null||o.addEventListener("scroll",T)},10)};n.onClick(()=>{e||s()})}});var b2=D(()=>{});var w2={};wt(w2,{HabitEditDialog:()=>Op});var He,Op,jT=D(()=>{He=require("obsidian");Y();LT();b2();Op=class extends He.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(k=>{let g=i.createDiv({cls:`habit-type-item ${k.id===this.habitType?"selected":""}`,attr:{"data-type":k.id}}),v=g.createDiv({cls:"habit-type-icon"},y=>{(0,He.setIcon)(y,k.icon)}),b=g.createDiv({cls:"habit-type-text"});b.createDiv({cls:"habit-type-name",text:k.name}),b.createDiv({cls:"habit-type-desc",text:k.description}),g.addEventListener("click",()=>{document.querySelectorAll(".habit-type-item").forEach(y=>{y.removeClass("selected")}),g.addClass("selected"),this.habitType=k.id,this.buildTypeSpecificForm()})});let o=e.createDiv({cls:"habit-common-form"}),l=((h=this.habitData)==null?void 0:h.id)||this.generateId(),c;new He.Setting(o).setName(d("Habit name")).setDesc(d("Display name of the habit")).addText(k=>{var g;c=k,k.setValue(((g=this.habitData)==null?void 0:g.name)||""),k.inputEl.addClass("habit-name-input")});let u;new He.Setting(o).setName(d("Description")).setDesc(d("Optional habit description")).addText(k=>{var g;u=k,k.setValue(((g=this.habitData)==null?void 0:g.description)||""),k.inputEl.addClass("habit-desc-input")});let p;new He.Setting(o).setName(d("Icon")).addButton(k=>{try{k.setIcon(this.iconInput||"circle-check")}catch(g){console.error("Error setting icon:",g);try{k.setIcon("circle-check")}catch(v){console.error("Failed to set default icon:",v)}}Tg(k,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:g=>{this.iconInput=g;try{(0,He.setIcon)(k.buttonEl,g||"circle-check")}catch(v){console.error("Error setting icon:",v);try{(0,He.setIcon)(k.buttonEl,"circle-check")}catch(b){console.error("Failed to set default icon:",b)}}this.iconInput=g}})});let m=e.createDiv({cls:"habit-type-form"}),f=e.createDiv({cls:"habit-edit-buttons"},k=>{new He.ButtonComponent(k).setWarning().setButtonText(d("Cancel")).onClick(()=>{this.close()}),new He.ButtonComponent(k).setCta().setButtonText(d("Save")).onClick(()=>{let g=c.getValue().trim();if(!g){new He.Notice(d("Please enter a habit name"));return}let v={id:l,name:g,description:u.getValue()||void 0,icon:this.iconInput||"circle-check",type:this.habitType},b=this.getTypeSpecificData();b&&(v={...v,...b},this.onSubmit(v),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 He.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 He.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 He.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 He.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 He.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 He.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 He.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 He.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 He.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 He.ExtraButtonComponent(p).setIcon("trash").setTooltip(d("Delete")).onClick(()=>{p.remove();let h=this.mappingInputs.findIndex(k=>k.keyInput===m&&k.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 He.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 He.ExtraButtonComponent(p).setIcon("trash").setTooltip(d("Delete")).onClick(()=>{p.remove();let k=this.eventInputs.findIndex(g=>g.nameInput===m&&g.detailsInput===f&&g.propertyInput===h);k>-1&&this.eventInputs.splice(k,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 He.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 He.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 He.Notice(d("Please enter a property name")),null;if(this.mappingInputs.length===0)return new He.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 He.Notice(d("Mapping key must be a number")),null;if(!s)return new He.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 He.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 He.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 ar,qg,K2=D(()=>{ar=require("obsidian");Y();qg=class extends ar.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 ar.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 ar.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 ar.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 ar.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 ar.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 k=m.createEl("ul",{cls:"substages-list"});this.stage.subStages.forEach((g,v)=>{let b=k.createEl("li",{cls:"substage-item"}),y=b.createDiv({cls:"substage-name-container"}),w=y.createEl("input",{type:"text",value:g.name||"",placeholder:d("Sub-stage name")});w.addEventListener("change",()=>{g.name=w.value});let x=y.createEl("input",{type:"text",value:g.id||"",placeholder:d("Sub-stage ID")});if(x.addEventListener("change",()=>{g.id=x.value}),this.stage.subStages.length>1){let T=y.createDiv({cls:"substage-next-container"});T.createEl("span",{text:d("Next: ")});let C=new ar.DropdownComponent(T);this.stage.subStages.forEach(S=>{S.id!==g.id&&C.addOption(S.id,S.name)}),g.next&&C.setValue(g.next),C.onChange(S=>{g.next=S})}b.createEl("div",{},T=>{new ar.ExtraButtonComponent(T).setIcon("trash").setTooltip(d("Remove")).onClick(()=>{this.stage.subStages.splice(v,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 k={id:this.generateUniqueId(),name:d("New Sub-stage")};if(this.stage.subStages.length>0){let g=this.stage.subStages[this.stage.subStages.length-1];g&&("next"in g,g.next=k.id),this.stage.subStages[0]&&(k.next=this.stage.subStages[0].id)}this.stage.subStages.push(k),f()})};f()}let l=t.createDiv({cls:"can-proceed-to-section"});new ar.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(k=>k.id===m);if(h){let k=p.createEl("li",{cls:"can-proceed-item"});new ar.Setting(k).setName(h.name).addExtraButton(v=>{v.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 ar.DropdownComponent(h),this.allStages.forEach(k=>{k.id!==this.stage.id&&(!this.stage.canProceedTo||!this.stage.canProceedTo.includes(k.id))&&m.addOption(k.id,k.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 Mn,In,gx=D(()=>{Mn=require("obsidian");Y();K2();In=class extends Mn.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 Mn.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 Mn.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 Mn.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 k=m.createEl("li",{cls:"workflow-stage-item"}),g=new Mn.Setting(k).setName(f.name).setDesc(f.type);if(g.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),g.addExtraButton(v=>{v.setIcon("pencil").setTooltip(d("Edit")).onClick(()=>{new qg(this.app,f,this.workflow.stages,b=>{this.workflow.stages[h]=b,o()}).open()})}),h>0&&g.addExtraButton(v=>{v.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<this.workflow.stages.length-1&&g.addExtraButton(v=>{v.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()})}),g.addExtraButton(v=>{v.setIcon("trash").setTooltip(d("Delete")).onClick(()=>{this.workflow.stages.splice(h,1),o()})}),f.type==="cycle"&&f.subStages&&f.subStages.length>0){let v=k.createEl("div",{cls:"workflow-substages-list"});f.subStages.forEach((b,y)=>{let x=v.createEl("div",{cls:"substage-item"}).createDiv({cls:"substage-settings-container"}),T=new Mn.Setting(x);T.setName(d("Sub-stage")+" "+(y+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(y,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 Or,ek,sL=D(()=>{Or=require("obsidian");Y();ek=class extends Or.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 Or.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 Or.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 Or.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 Or.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 Or.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 Or.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 Or.Notice(d("Please provide a workflow name and ID"));return}if(!this.workflow.stages||this.workflow.stages.length===0){new Or.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 nL(n,a){let e=n.getValue().split(`
|
||
`),t=a.line,r=Jq(e,t);return r===-1?null:oL(e,r)}function Jq(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].length<i){s=!0;break}if(l.trim()&&!c)break}if(!s)return e}}return-1}function oL(n,a){var c;let e=n[a],t=e.match(/^(\s*)[-*+] \[(.)\](.+)/);if(!t)return{content:e.trim(),level:0,line:a,isTask:!1,status:"",children:[]};let r=t[1].length,i=t[2],o={content:t[3].trim(),level:r,line:a,isTask:!0,status:i,children:[]},l=a+1;for(;l<n.length;){let u=n[l];if(!u.trim()){l++;continue}let p=u.match(/^(\s*)[-*+] \[(.)\]/);if(p){let m=p[1].length;if(m>r){let f=oL(n,l);o.children.push(f),l=Zq(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 Zq(n,a,e){for(let t=a+1;t<n.length;t++){let r=n[t];if(!r.trim())continue;let i=r.match(/^(\s*)/);if((i?i[1].length:0)<=e)return t}return null}function lL(n,a,e){let t=[];if(n.isTask){t.push({id:gd(n.content),name:n.content,type:n.children.length>0?"linear":"terminal"}),n.children.forEach((r,i)=>{let s=eY(r,i===n.children.length-1);t.push(s)});for(let r=0;r<t.length-1;r++)t[r].next=t[r+1].id}return{id:e,name:a,description:d("Workflow generated from task structure"),stages:t,metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}}function eY(n,a){let e={id:gd(n.content),name:n.content,type:a?"terminal":"linear"};return n.children.length>0&&(e.type="cycle",e.subStages=n.children.map((t,r)=>({id:gd(t.content),name:t.content,next:r<n.children.length-1?gd(n.children[r+1].content):gd(n.children[0].content)}))),e}function gd(n){return n.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30)}function Sx(n,a,e,t){let r=n.getLine(a.line),i=r.match(/^(\s*)/),o=`${i?i[1]:""}- [ ] ${e.name} #workflow/${e.id}`;r.trim()===""?n.setLine(a.line,o):n.replaceRange(`
|
||
${o}`,{line:a.line,ch:r.length},{line:a.line,ch:r.length})}function Dx(n,a,e){let r=n.getLine(a.line).match(/^(\s*)[-*+] \[(.)\](.+)/);if(!r)return!1;let[,i,s,o]=r;if(o.includes("#workflow/"))return!1;let l=`${i}- [${s}]${o} #workflow/${e}`;return n.setLine(a.line,l),!0}function dL(n,a){let e=1+n.children.length,t=a.find(r=>Math.abs(r.stages.length-e)<=1);return t?{...t,id:gd(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 cL=D(()=>{Y()});var nk={};wt(nk,{convertTaskToWorkflowCommand:()=>ak,convertToWorkflowRootCommand:()=>ik,createQuickWorkflowCommand:()=>tk,duplicateWorkflowCommand:()=>sk,showWorkflowQuickActionsCommand:()=>Ex,startWorkflowHereCommand:()=>rk});function tk(n,a,e,t){return n?t.settings.workflow.enableWorkflow:(new ek(t.app,t,r=>{t.settings.workflow.definitions.push(r),t.saveSettings(),new sa.Notice(d("Workflow created successfully"))}).open(),!0)}function ak(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=nL(a,r);if(!i||!i.isTask)return new sa.Notice(d("No task structure found at cursor position")),!1;let s=dL(i,t.settings.workflow.definitions);if(s){let o=new sa.Menu;o.addItem(l=>{l.setTitle(d("Use similar existing workflow")).setIcon("copy").onClick(()=>{pL(i,s.name,s.id,t)})}),o.addItem(l=>{l.setTitle(d("Create new workflow")).setIcon("plus").onClick(()=>{uL(i,t)})}),o.showAtMouseEvent(window.event)}else uL(i,t);return!0}function rk(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 sa.Notice(d("No workflows defined. Create a workflow first.")),!1;if(r.length===1){let i=a.getCursor();Sx(a,i,r[0],t),new sa.Notice(d("Workflow task created"))}else{let i=new sa.Menu;r.forEach(s=>{i.addItem(o=>{o.setTitle(s.name).setIcon("workflow").onClick(()=>{let l=a.getCursor();Sx(a,l,s,t),new sa.Notice(d("Workflow task created"))})})}),i.showAtMouseEvent(window.event)}return!0}function ik(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 sa.Notice(d("No workflows defined. Create a workflow first.")),!1;let i=a.getCursor();if(r.length===1)Dx(a,i,r[0].id)?new sa.Notice(d("Task converted to workflow root")):new sa.Notice(d("Failed to convert task"));else{let s=new sa.Menu;r.forEach(o=>{s.addItem(l=>{l.setTitle(o.name).setIcon("workflow").onClick(()=>{Dx(a,i,o.id)?new sa.Notice(d("Task converted to workflow root")):new sa.Notice(d("Failed to convert task"))})})}),s.showAtMouseEvent(window.event)}return!0}function sk(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 sa.Notice(d("No workflows to duplicate")),!1;let i=new sa.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 In(t.app,t,l,c=>{t.settings.workflow.definitions.push(c),t.saveSettings(),new sa.Notice(d("Workflow duplicated and saved"))}).open()})})}),i.showAtMouseEvent(window.event),!0}function uL(n,a){let e=n.content+" Workflow",t=e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30);pL(n,e,t,a)}function pL(n,a,e,t){let r=lL(n,a,e);new In(t.app,t,r,i=>{t.settings.workflow.definitions.push(i),t.saveSettings(),new sa.Notice(d("Workflow created from task structure"))}).open()}function Ex(n,a,e,t){if(n)return t.settings.workflow.enableWorkflow;let r=new sa.Menu;r.addItem(o=>{o.setTitle(d("Create Quick Workflow")).setIcon("plus-circle").onClick(()=>{tk(!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(()=>{ak(!1,a,e,t)})}),s.includes("#workflow/")||r.addItem(o=>{o.setTitle(d("Convert to Workflow Root")).setIcon("workflow").onClick(()=>{ik(!1,a,e,t)})})),r.addItem(o=>{o.setTitle(d("Start Workflow Here")).setIcon("play").onClick(()=>{rk(!1,a,e,t)})}),t.settings.workflow.definitions.length>0&&r.addItem(o=>{o.setTitle(d("Duplicate Workflow")).setIcon("copy").onClick(()=>{sk(!1,a,e,t)})}),r.showAtMouseEvent(window.event),!0}var sa,Jp=D(()=>{sa=require("obsidian");sL();gx();cL();Y()});function Ix(n){return HL(n.extension)}function uk(n,a,e="both"){return HL(n.extension)?a?a.shouldIncludeFile(n,e):!0:!1}function HL(n){return Object.values(jL).includes(n)}var jL,Ax=D(()=>{jL=(e=>(e.MARKDOWN="md",e.CANVAS="canvas",e))(jL||{})});var oj=D(()=>{});var cs,Cd,Kx=D(()=>{cs=require("obsidian");Y();oj();Cd=class extends cs.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,cs.moment)(r):(0,cs.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,cs.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,cs.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,cs.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,cs.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 cj={};wt(cj,{DatePickerModal:()=>nm});var dj,nm,Qx=D(()=>{dj=require("obsidian");Kx();nm=class extends dj.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 Cd(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 qn(n){let a=new Date(n);return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}var Fd,rv,e3=D(()=>{Fd=require("obsidian");Ax();rv=class extends Fd.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 Fd.TFile){let t=uk(e,this.fileFilterManager,"inline");(t||Math.random()<.1)&&e.path,t&&this.queueFileForIndexing(e)}})),this.registerEvent(this.vault.on("delete",e=>{if(e instanceof Fd.TFile){let t=uk(e,this.fileFilterManager,"inline");e.path,t&&this.removeFileFromIndex(e)}})),this.registerEvent(this.vault.on("create",e=>{if(e instanceof Fd.TFile){let t=uk(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=qn(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=qn(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=qn(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=qn(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=qn(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=qn(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=qn(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=qn(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(r<e.value)for(let s of i)t.add(s);return t}return new Set}filterByDueDate(e){if(e.operator==="=")return this.taskCache.dueDate.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.dueDate.entries()){let o=new Date(i);if(e.operator==="before"&&o<t||e.operator==="after"&&o>t)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"&&o<t||e.operator==="after"&&o>t)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"&&o<t||e.operator==="after"&&o>t)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<t}getFileLastMtime(e){return this.taskCache.fileMtimes.get(e)}updateFileMtime(e,t){this.taskCache.fileMtimes||(this.taskCache.fileMtimes=new Map),this.taskCache.fileProcessedTimes||(this.taskCache.fileProcessedTimes=new Map),this.taskCache.fileMtimes.set(e,t),this.taskCache.fileProcessedTimes.set(e,Date.now())}hasValidCache(e,t){let r=this.taskCache.files.has(e),i=!this.isFileChanged(e,t);return r&&i}cleanupFileCache(e){this.taskCache.fileMtimes.delete(e),this.taskCache.fileProcessedTimes.delete(e),this.removeFileFromIndex(e)}validateCacheConsistency(){for(let e of this.taskCache.fileMtimes.keys())this.taskCache.files.has(e)||(this.taskCache.fileMtimes.delete(e),this.taskCache.fileProcessedTimes.delete(e));for(let e of this.taskCache.files.keys())this.taskCache.fileMtimes.has(e)}ensureCacheStructure(e){e.fileMtimes||(e.fileMtimes=new Map),e.fileProcessedTimes||(e.fileProcessedTimes=new Map)}setCache(e){this.ensureCacheStructure(e),this.taskCache=e;for(let t of this.taskCache.files.keys())this.lastIndexTime.set(t,Date.now())}}});var a3=ke((t3,mC)=>{(function(n){if(typeof t3=="object"&&typeof mC!="undefined")mC.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(k){var g=r[u][1][k];return o(g||k)},h,h.exports,t,r,i,s)}return i[u].exports}for(var l=typeof require=="function"&&require,c=0;c<s.length;c++)o(s[c]);return o})({1:[function(t,r,i){(function(s){"use strict";var o=s.MutationObserver||s.WebKitMutationObserver,l;if(o){var c=0,u=new o(k),p=s.document.createTextNode("");u.observe(p,{characterData:!0}),l=function(){p.data=c=++c%2}}else if(!s.setImmediate&&typeof s.MessageChannel!="undefined"){var m=new s.MessageChannel;m.port1.onmessage=k,l=function(){m.port2.postMessage(0)}}else"document"in s&&"onreadystatechange"in s.document.createElement("script")?l=function(){var v=s.document.createElement("script");v.onreadystatechange=function(){k(),v.onreadystatechange=null,v.parentNode.removeChild(v),v=null},s.document.documentElement.appendChild(v)}:l=function(){setTimeout(k,0)};var f,h=[];function k(){f=!0;for(var v,b,y=h.length;y;){for(b=h,h=[],v=-1;++v<y;)b[v]();y=h.length}f=!1}r.exports=g;function g(v){h.push(v)===1&&!f&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(t,r,i){"use strict";var s=t(1);function o(){}var l={},c=["REJECTED"],u=["FULFILLED"],p=["PENDING"];r.exports=m;function m(T){if(typeof T!="function")throw new TypeError("resolver must be a function");this.state=p,this.queue=[],this.outcome=void 0,T!==o&&g(this,T)}m.prototype.catch=function(T){return this.then(null,T)},m.prototype.then=function(T,C){if(typeof T!="function"&&this.state===u||typeof C!="function"&&this.state===c)return this;var S=new this.constructor(o);if(this.state!==p){var E=this.state===u?T:C;h(S,E,this.outcome)}else this.queue.push(new f(S,T,C));return S};function f(T,C,S){this.promise=T,typeof C=="function"&&(this.onFulfilled=C,this.callFulfilled=this.otherCallFulfilled),typeof S=="function"&&(this.onRejected=S,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(T){l.resolve(this.promise,T)},f.prototype.otherCallFulfilled=function(T){h(this.promise,this.onFulfilled,T)},f.prototype.callRejected=function(T){l.reject(this.promise,T)},f.prototype.otherCallRejected=function(T){h(this.promise,this.onRejected,T)};function h(T,C,S){s(function(){var E;try{E=C(S)}catch(A){return l.reject(T,A)}E===T?l.reject(T,new TypeError("Cannot resolve promise with itself")):l.resolve(T,E)})}l.resolve=function(T,C){var S=v(k,C);if(S.status==="error")return l.reject(T,S.value);var E=S.value;if(E)g(T,E);else{T.state=u,T.outcome=C;for(var A=-1,N=T.queue.length;++A<N;)T.queue[A].callFulfilled(C)}return T},l.reject=function(T,C){T.state=c,T.outcome=C;for(var S=-1,E=T.queue.length;++S<E;)T.queue[S].callRejected(C);return T};function k(T){var C=T&&T.then;if(T&&(typeof T=="object"||typeof T=="function")&&typeof C=="function")return function(){C.apply(T,arguments)}}function g(T,C){var S=!1;function E(R){S||(S=!0,l.reject(T,R))}function A(R){S||(S=!0,l.resolve(T,R))}function N(){C(A,E)}var I=v(N);I.status==="error"&&E(I.value)}function v(T,C){var S={};try{S.value=T(C),S.status="success"}catch(E){S.status="error",S.value=E}return S}m.resolve=b;function b(T){return T instanceof this?T:l.resolve(new this(o),T)}m.reject=y;function y(T){var C=new this(o);return l.reject(C,T)}m.all=w;function w(T){var C=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=T.length,E=!1;if(!S)return this.resolve([]);for(var A=new Array(S),N=0,I=-1,R=new this(o);++I<S;)j(T[I],I);return R;function j(W,B){C.resolve(W).then(X,function(V){E||(E=!0,l.reject(R,V))});function X(V){A[B]=V,++N===S&&!E&&(E=!0,l.resolve(R,A))}}}m.race=x;function x(T){var C=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=T.length,E=!1;if(!S)return this.resolve([]);for(var A=-1,N=new this(o);++A<S;)I(T[A]);return N;function I(R){C.resolve(R).then(function(j){E||(E=!0,l.resolve(N,j))},function(j){E||(E=!0,l.reject(N,j))})}}},{1:1}],3:[function(t,r,i){(function(s){"use strict";typeof s.Promise!="function"&&(s.Promise=t(2))}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{2:2}],4:[function(t,r,i){"use strict";var s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(P){return typeof P}:function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P};function o(P,F){if(!(P instanceof F))throw new TypeError("Cannot call a class as a function")}function l(){try{if(typeof indexedDB!="undefined")return indexedDB;if(typeof webkitIndexedDB!="undefined")return webkitIndexedDB;if(typeof mozIndexedDB!="undefined")return mozIndexedDB;if(typeof OIndexedDB!="undefined")return OIndexedDB;if(typeof msIndexedDB!="undefined")return msIndexedDB}catch(P){return}}var c=l();function u(){try{if(!c||!c.open)return!1;var P=typeof openDatabase!="undefined"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),F=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!P||F)&&typeof indexedDB!="undefined"&&typeof IDBKeyRange!="undefined"}catch(M){return!1}}function p(P,F){P=P||[],F=F||{};try{return new Blob(P,F)}catch(O){if(O.name!=="TypeError")throw O;for(var M=typeof BlobBuilder!="undefined"?BlobBuilder:typeof MSBlobBuilder!="undefined"?MSBlobBuilder:typeof MozBlobBuilder!="undefined"?MozBlobBuilder:WebKitBlobBuilder,L=new M,H=0;H<P.length;H+=1)L.append(P[H]);return L.getBlob(F.type)}}typeof Promise=="undefined"&&t(3);var m=Promise;function f(P,F){F&&P.then(function(M){F(null,M)},function(M){F(M)})}function h(P,F,M){typeof F=="function"&&P.then(F),typeof M=="function"&&P.catch(M)}function k(P){return typeof P!="string"&&(console.warn(P+" used as a key, but it is not a string."),P=String(P)),P}function g(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var v="local-forage-detect-blob-support",b=void 0,y={},w=Object.prototype.toString,x="readonly",T="readwrite";function C(P){for(var F=P.length,M=new ArrayBuffer(F),L=new Uint8Array(M),H=0;H<F;H++)L[H]=P.charCodeAt(H);return M}function S(P){return new m(function(F){var M=P.transaction(v,T),L=p([""]);M.objectStore(v).put(L,"key"),M.onabort=function(H){H.preventDefault(),H.stopPropagation(),F(!1)},M.oncomplete=function(){var H=navigator.userAgent.match(/Chrome\/(\d+)/),O=navigator.userAgent.match(/Edge\//);F(O||!H||parseInt(H[1],10)>=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=y[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=y[P.name],M=F.deferredOperations.pop();if(M)return M.resolve(),M.promise}function I(P,F){var M=y[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(y[P.name]=y[P.name]||be(),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(_){var Q=O.result;try{Q.createObjectStore(P.storeName),_.oldVersion<=1&&Q.createObjectStore(v)}catch(Z){if(Z.name==="ConstraintError")console.warn('The database "'+P.name+'" has been upgraded from version '+_.oldVersion+" to version "+_.newVersion+', but the storage "'+P.storeName+'" already exists.');else throw Z}}),O.onerror=function(_){_.preventDefault(),L(O.error)},O.onsuccess=function(){var _=O.result;_.onversionchange=function(Q){Q.target.close()},M(_),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.version<P.db.version,H=P.version>P.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 q(P){var F=this,M=F._initReady().then(function(){var L=y[F._dbInfo.name];if(L&&L.dbReady)return L.dbReady});return h(M,P,P),M}function oe(P){A(P);for(var F=y[P.name],M=F.forages,L=0;L<M.length;L++){var H=M[L];H._dbInfo.db&&(H._dbInfo.db.close(),H._dbInfo.db=null)}return P.db=null,j(P).then(function(O){return P.db=O,B(P)?W(P):O}).then(function(O){P.db=F.db=O;for(var _=0;_<M.length;_++)M[_]._dbInfo.db=O}).catch(function(O){throw I(P,O),O})}function le(P,F,M,L){L===void 0&&(L=1);try{var H=P.db.transaction(P.storeName,F);M(null,H)}catch(O){if(L>0&&(!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 oe(P).then(function(){le(P,F,M,L-1)})}).catch(M);M(O)}}function be(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Ae(P){var F=this,M={db:null};if(P)for(var L in P)M[L]=P[L];var H=y[M.name];H||(H=be(),y[M.name]=H),H.forages.push(F),F._initReady||(F._initReady=F.ready,F.ready=q);var O=[];function _(){return m.resolve()}for(var Q=0;Q<H.forages.length;Q++){var Z=H.forages[Q];Z!==F&&O.push(Z._initReady().catch(_))}var ee=H.forages.slice(0);return m.all(O).then(function(){return M.db=H.db,j(M)}).then(function(ae){return M.db=ae,B(M,F._defaultConfig.version)?W(M):ae}).then(function(ae){M.db=H.db=ae,F._dbInfo=M;for(var me=0;me<ee.length;me++){var Oe=ee[me];Oe!==F&&(Oe._dbInfo.db=M.db,Oe._dbInfo.version=M.version)}})}function De(P,F){var M=this;P=k(P);var L=new m(function(H,O){M.ready().then(function(){le(M._dbInfo,x,function(_,Q){if(_)return O(_);try{var Z=Q.objectStore(M._dbInfo.storeName),ee=Z.get(P);ee.onsuccess=function(){var ae=ee.result;ae===void 0&&(ae=null),G(ae)&&(ae=V(ae)),H(ae)},ee.onerror=function(){O(ee.error)}}catch(ae){O(ae)}})}).catch(O)});return f(L,F),L}function et(P,F){var M=this,L=new m(function(H,O){M.ready().then(function(){le(M._dbInfo,x,function(_,Q){if(_)return O(_);try{var Z=Q.objectStore(M._dbInfo.storeName),ee=Z.openCursor(),ae=1;ee.onsuccess=function(){var me=ee.result;if(me){var Oe=me.value;G(Oe)&&(Oe=V(Oe));var rt=P(Oe,me.key,ae++);rt!==void 0?H(rt):me.continue()}else H()},ee.onerror=function(){O(ee.error)}}catch(me){O(me)}})}).catch(O)});return f(L,F),L}function Ke(P,F,M){var L=this;P=k(P);var H=new m(function(O,_){var Q;L.ready().then(function(){return Q=L._dbInfo,w.call(F)==="[object Blob]"?E(Q.db).then(function(Z){return Z?F:X(F)}):F}).then(function(Z){le(L._dbInfo,T,function(ee,ae){if(ee)return _(ee);try{var me=ae.objectStore(L._dbInfo.storeName);Z===null&&(Z=void 0);var Oe=me.put(Z,P);ae.oncomplete=function(){Z===void 0&&(Z=null),O(Z)},ae.onabort=ae.onerror=function(){var rt=Oe.error?Oe.error:Oe.transaction.error;_(rt)}}catch(rt){_(rt)}})}).catch(_)});return f(H,M),H}function Re(P,F){var M=this;P=k(P);var L=new m(function(H,O){M.ready().then(function(){le(M._dbInfo,T,function(_,Q){if(_)return O(_);try{var Z=Q.objectStore(M._dbInfo.storeName),ee=Z.delete(P);Q.oncomplete=function(){H()},Q.onerror=function(){O(ee.error)},Q.onabort=function(){var ae=ee.error?ee.error:ee.transaction.error;O(ae)}}catch(ae){O(ae)}})}).catch(O)});return f(L,F),L}function ne(P){var F=this,M=new m(function(L,H){F.ready().then(function(){le(F._dbInfo,T,function(O,_){if(O)return H(O);try{var Q=_.objectStore(F._dbInfo.storeName),Z=Q.clear();_.oncomplete=function(){L()},_.onabort=_.onerror=function(){var ee=Z.error?Z.error:Z.transaction.error;H(ee)}}catch(ee){H(ee)}})}).catch(H)});return f(M,P),M}function he(P){var F=this,M=new m(function(L,H){F.ready().then(function(){le(F._dbInfo,x,function(O,_){if(O)return H(O);try{var Q=_.objectStore(F._dbInfo.storeName),Z=Q.count();Z.onsuccess=function(){L(Z.result)},Z.onerror=function(){H(Z.error)}}catch(ee){H(ee)}})}).catch(H)});return f(M,P),M}function Se(P,F){var M=this,L=new m(function(H,O){if(P<0){H(null);return}M.ready().then(function(){le(M._dbInfo,x,function(_,Q){if(_)return O(_);try{var Z=Q.objectStore(M._dbInfo.storeName),ee=!1,ae=Z.openKeyCursor();ae.onsuccess=function(){var me=ae.result;if(!me){H(null);return}P===0||ee?H(me.key):(ee=!0,me.advance(P))},ae.onerror=function(){O(ae.error)}}catch(me){O(me)}})}).catch(O)});return f(L,F),L}function Qe(P){var F=this,M=new m(function(L,H){F.ready().then(function(){le(F._dbInfo,x,function(O,_){if(O)return H(O);try{var Q=_.objectStore(F._dbInfo.storeName),Z=Q.openKeyCursor(),ee=[];Z.onsuccess=function(){var ae=Z.result;if(!ae){L(ee);return}ee.push(ae.key),ae.continue()},Z.onerror=function(){H(Z.error)}}catch(ae){H(ae)}})}).catch(H)});return f(M,P),M}function Ue(P,F){F=g.apply(this,arguments);var M=this.config();P=typeof P!="function"&&P||{},P.name||(P.name=P.name||M.name,P.storeName=P.storeName||M.storeName);var L=this,H;if(!P.name)H=m.reject("Invalid arguments");else{var O=P.name===M.name&&L._dbInfo.db,_=O?m.resolve(L._dbInfo.db):j(P).then(function(Q){var Z=y[P.name],ee=Z.forages;Z.db=Q;for(var ae=0;ae<ee.length;ae++)ee[ae]._dbInfo.db=Q;return Q});P.storeName?H=_.then(function(Q){if(Q.objectStoreNames.contains(P.storeName)){var Z=Q.version+1;A(P);var ee=y[P.name],ae=ee.forages;Q.close();for(var me=0;me<ae.length;me++){var Oe=ae[me];Oe._dbInfo.db=null,Oe._dbInfo.version=Z}var rt=new m(function(lt,Jt){var $t=c.open(P.name,Z);$t.onerror=function(zr){var Jd=$t.result;Jd.close(),Jt(zr)},$t.onupgradeneeded=function(){var zr=$t.result;zr.deleteObjectStore(P.storeName)},$t.onsuccess=function(){var zr=$t.result;zr.close(),lt(zr)}});return rt.then(function(lt){ee.db=lt;for(var Jt=0;Jt<ae.length;Jt++){var $t=ae[Jt];$t._dbInfo.db=lt,N($t._dbInfo)}}).catch(function(lt){throw(I(P,lt)||m.resolve()).catch(function(){}),lt})}}):H=_.then(function(Q){A(P);var Z=y[P.name],ee=Z.forages;Q.close();for(var ae=0;ae<ee.length;ae++){var me=ee[ae];me._dbInfo.db=null}var Oe=new m(function(rt,lt){var Jt=c.deleteDatabase(P.name);Jt.onerror=function(){var $t=Jt.result;$t&&$t.close(),lt(Jt.error)},Jt.onblocked=function(){console.warn('dropInstance blocked for database "'+P.name+'" until all open connections are closed')},Jt.onsuccess=function(){var $t=Jt.result;$t&&$t.close(),rt($t)}});return Oe.then(function(rt){Z.db=rt;for(var lt=0;lt<ee.length;lt++){var Jt=ee[lt];N(Jt._dbInfo)}}).catch(function(rt){throw(I(P,rt)||m.resolve()).catch(function(){}),rt})})}return f(H,F),H}var ce={_driver:"asyncStorage",_initStorage:Ae,_support:u(),iterate:et,getItem:De,setItem:Ke,removeItem:Re,clear:ne,length:he,key:Se,keys:Qe,dropInstance:Ue};function gt(){return typeof openDatabase=="function"}var tt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ha="~~local_forage_type~",zt=/^~~local_forage_type~([^~]+)~/,ot="__lfsc__:",bt=ot.length,Ka="arbf",nr="blob",Br="si08",Xt="ui08",Vr="uic8",ja="si16",Wr="si32",tn="ur16",an="ui32",Gm="fl32",_C="fl64",qC=bt+Ka.length,YC=Object.prototype.toString;function GC(P){var F=P.length*.75,M=P.length,L,H=0,O,_,Q,Z;P[P.length-1]==="="&&(F--,P[P.length-2]==="="&&F--);var ee=new ArrayBuffer(F),ae=new Uint8Array(ee);for(L=0;L<M;L+=4)O=tt.indexOf(P[L]),_=tt.indexOf(P[L+1]),Q=tt.indexOf(P[L+2]),Z=tt.indexOf(P[L+3]),ae[H++]=O<<2|_>>4,ae[H++]=(_&15)<<4|Q>>2,ae[H++]=(Q&3)<<6|Z&63;return ee}function vy(P){var F=new Uint8Array(P),M="",L;for(L=0;L<F.length;L+=3)M+=tt[F[L]>>2],M+=tt[(F[L]&3)<<4|F[L+1]>>4],M+=tt[(F[L+1]&15)<<2|F[L+2]>>6],M+=tt[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 oH(P,F){var M="";if(P&&(M=YC.call(P)),P&&(M==="[object ArrayBuffer]"||P.buffer&&YC.call(P.buffer)==="[object ArrayBuffer]")){var L,H=ot;P instanceof ArrayBuffer?(L=P,H+=Ka):(L=P.buffer,M==="[object Int8Array]"?H+=Br:M==="[object Uint8Array]"?H+=Xt:M==="[object Uint8ClampedArray]"?H+=Vr:M==="[object Int16Array]"?H+=ja:M==="[object Uint16Array]"?H+=tn:M==="[object Int32Array]"?H+=Wr:M==="[object Uint32Array]"?H+=an:M==="[object Float32Array]"?H+=Gm:M==="[object Float64Array]"?H+=_C:F(new Error("Failed to get type for BinaryArray"))),F(H+vy(L))}else if(M==="[object Blob]"){var O=new FileReader;O.onload=function(){var _=ha+P.type+"~"+vy(this.result);F(ot+nr+_)},O.readAsArrayBuffer(P)}else try{F(JSON.stringify(P))}catch(_){console.error("Couldn't convert value into a JSON string: ",P),F(null,_)}}function lH(P){if(P.substring(0,bt)!==ot)return JSON.parse(P);var F=P.substring(qC),M=P.substring(bt,qC),L;if(M===nr&&zt.test(F)){var H=F.match(zt);L=H[1],F=F.substring(H[0].length)}var O=GC(F);switch(M){case Ka:return O;case nr:return p([O],{type:L});case Br:return new Int8Array(O);case Xt:return new Uint8Array(O);case Vr:return new Uint8ClampedArray(O);case ja:return new Int16Array(O);case tn:return new Uint16Array(O);case Wr:return new Int32Array(O);case an:return new Uint32Array(O);case Gm:return new Float32Array(O);case _C:return new Float64Array(O);default:throw new Error("Unkown type: "+M)}}var yy={serialize:oH,deserialize:lH,stringToBuffer:GC,bufferToString:vy};function KC(P,F,M,L){P.executeSql("CREATE TABLE IF NOT EXISTS "+F.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],M,L)}function dH(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,_){try{M.db=openDatabase(M.name,String(M.version),M.description,M.size)}catch(Q){return _(Q)}M.db.transaction(function(Q){KC(Q,M,function(){F._dbInfo=M,O()},function(Z,ee){_(ee)})},_)});return M.serializer=yy,H}function rn(P,F,M,L,H,O){P.executeSql(M,L,H,function(_,Q){Q.code===Q.SYNTAX_ERR?_.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[F.storeName],function(Z,ee){ee.rows.length?O(Z,Q):KC(Z,F,function(){Z.executeSql(M,L,H,O)},O)},O):O(_,Q)},O)}function cH(P,F){var M=this;P=k(P);var L=new m(function(H,O){M.ready().then(function(){var _=M._dbInfo;_.db.transaction(function(Q){rn(Q,_,"SELECT * FROM "+_.storeName+" WHERE key = ? LIMIT 1",[P],function(Z,ee){var ae=ee.rows.length?ee.rows.item(0).value:null;ae&&(ae=_.serializer.deserialize(ae)),H(ae)},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function uH(P,F){var M=this,L=new m(function(H,O){M.ready().then(function(){var _=M._dbInfo;_.db.transaction(function(Q){rn(Q,_,"SELECT * FROM "+_.storeName,[],function(Z,ee){for(var ae=ee.rows,me=ae.length,Oe=0;Oe<me;Oe++){var rt=ae.item(Oe),lt=rt.value;if(lt&&(lt=_.serializer.deserialize(lt)),lt=P(lt,rt.key,Oe+1),lt!==void 0){H(lt);return}}H()},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function QC(P,F,M,L){var H=this;P=k(P);var O=new m(function(_,Q){H.ready().then(function(){F===void 0&&(F=null);var Z=F,ee=H._dbInfo;ee.serializer.serialize(F,function(ae,me){me?Q(me):ee.db.transaction(function(Oe){rn(Oe,ee,"INSERT OR REPLACE INTO "+ee.storeName+" (key, value) VALUES (?, ?)",[P,ae],function(){_(Z)},function(rt,lt){Q(lt)})},function(Oe){if(Oe.code===Oe.QUOTA_ERR){if(L>0){_(QC.apply(H,[P,Z,M,L-1]));return}Q(Oe)}})})}).catch(Q)});return f(O,M),O}function pH(P,F,M){return QC.apply(this,[P,F,M,1])}function mH(P,F){var M=this;P=k(P);var L=new m(function(H,O){M.ready().then(function(){var _=M._dbInfo;_.db.transaction(function(Q){rn(Q,_,"DELETE FROM "+_.storeName+" WHERE key = ?",[P],function(){H()},function(Z,ee){O(ee)})})}).catch(O)});return f(L,F),L}function fH(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(_){rn(_,O,"DELETE FROM "+O.storeName,[],function(){L()},function(Q,Z){H(Z)})})}).catch(H)});return f(M,P),M}function hH(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(_){rn(_,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 gH(P,F){var M=this,L=new m(function(H,O){M.ready().then(function(){var _=M._dbInfo;_.db.transaction(function(Q){rn(Q,_,"SELECT key FROM "+_.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 kH(P){var F=this,M=new m(function(L,H){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(_){rn(_,O,"SELECT key FROM "+O.storeName,[],function(Q,Z){for(var ee=[],ae=0;ae<Z.rows.length;ae++)ee.push(Z.rows.item(ae).key);L(ee)},function(Q,Z){H(Z)})})}).catch(H)});return f(M,P),M}function vH(P){return new m(function(F,M){P.transaction(function(L){L.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(H,O){for(var _=[],Q=0;Q<O.rows.length;Q++)_.push(O.rows.item(Q).name);F({db:P,storeNames:_})},function(H,O){M(O)})},function(L){M(L)})})}function yH(P,F){F=g.apply(this,arguments);var M=this.config();P=typeof P!="function"&&P||{},P.name||(P.name=P.name||M.name,P.storeName=P.storeName||M.storeName);var L=this,H;return P.name?H=new m(function(O){var _;P.name===M.name?_=L._dbInfo.db:_=openDatabase(P.name,"","",0),P.storeName?O({db:_,storeNames:[P.storeName]}):O(vH(_))}).then(function(O){return new m(function(_,Q){O.db.transaction(function(Z){function ee(rt){return new m(function(lt,Jt){Z.executeSql("DROP TABLE IF EXISTS "+rt,[],function(){lt()},function($t,zr){Jt(zr)})})}for(var ae=[],me=0,Oe=O.storeNames.length;me<Oe;me++)ae.push(ee(O.storeNames[me]));m.all(ae).then(function(){_()}).catch(function(rt){Q(rt)})},function(Z){Q(Z)})})}):H=m.reject("Invalid arguments"),f(H,F),H}var bH={_driver:"webSQLStorage",_initStorage:dH,_support:gt(),iterate:uH,getItem:cH,setItem:pH,removeItem:mH,clear:fH,length:hH,key:gH,keys:kH,dropInstance:yH};function wH(){try{return typeof localStorage!="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(P){return!1}}function XC(P,F){var M=P.name+"/";return P.storeName!==F.storeName&&(M+=P.storeName+"/"),M}function TH(){var P="_localforage_support_test";try{return localStorage.setItem(P,!0),localStorage.removeItem(P),!1}catch(F){return!0}}function xH(){return!TH()||localStorage.length>0}function CH(P){var F=this,M={};if(P)for(var L in P)M[L]=P[L];return M.keyPrefix=XC(P,F._defaultConfig),xH()?(F._dbInfo=M,M.serializer=yy,m.resolve()):m.reject()}function SH(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 DH(P,F){var M=this;P=k(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 EH(P,F){var M=this,L=M.ready().then(function(){for(var H=M._dbInfo,O=H.keyPrefix,_=O.length,Q=localStorage.length,Z=1,ee=0;ee<Q;ee++){var ae=localStorage.key(ee);if(ae.indexOf(O)===0){var me=localStorage.getItem(ae);if(me&&(me=H.serializer.deserialize(me)),me=P(me,ae.substring(_),Z++),me!==void 0)return me}}});return f(L,F),L}function PH(P,F){var M=this,L=M.ready().then(function(){var H=M._dbInfo,O;try{O=localStorage.key(P)}catch(_){O=null}return O&&(O=O.substring(H.keyPrefix.length)),O});return f(L,F),L}function MH(P){var F=this,M=F.ready().then(function(){for(var L=F._dbInfo,H=localStorage.length,O=[],_=0;_<H;_++){var Q=localStorage.key(_);Q.indexOf(L.keyPrefix)===0&&O.push(Q.substring(L.keyPrefix.length))}return O});return f(M,P),M}function IH(P){var F=this,M=F.keys().then(function(L){return L.length});return f(M,P),M}function AH(P,F){var M=this;P=k(P);var L=M.ready().then(function(){var H=M._dbInfo;localStorage.removeItem(H.keyPrefix+P)});return f(L,F),L}function FH(P,F,M){var L=this;P=k(P);var H=L.ready().then(function(){F===void 0&&(F=null);var O=F;return new m(function(_,Q){var Z=L._dbInfo;Z.serializer.serialize(F,function(ee,ae){if(ae)Q(ae);else try{localStorage.setItem(Z.keyPrefix+P,ee),_(O)}catch(me){(me.name==="QuotaExceededError"||me.name==="NS_ERROR_DOM_QUOTA_REACHED")&&Q(me),Q(me)}})})});return f(H,M),H}function RH(P,F){if(F=g.apply(this,arguments),P=typeof P!="function"&&P||{},!P.name){var M=this.config();P.name=P.name||M.name,P.storeName=P.storeName||M.storeName}var L=this,H;return P.name?H=new m(function(O){P.storeName?O(XC(P,L._defaultConfig)):O(P.name+"/")}).then(function(O){for(var _=localStorage.length-1;_>=0;_--){var Q=localStorage.key(_);Q.indexOf(O)===0&&localStorage.removeItem(Q)}}):H=m.reject("Invalid arguments"),f(H,F),H}var OH={_driver:"localStorageWrapper",_initStorage:CH,_support:wH(),iterate:EH,getItem:DH,setItem:FH,removeItem:AH,clear:SH,length:IH,key:PH,keys:MH,dropInstance:RH},NH=function(F,M){return F===M||typeof F=="number"&&typeof M=="number"&&isNaN(F)&&isNaN(M)},LH=function(F,M){for(var L=F.length,H=0;H<L;){if(NH(F[H],M))return!0;H++}return!1},JC=Array.isArray||function(P){return Object.prototype.toString.call(P)==="[object Array]"},Xd={},ZC={},ll={INDEXEDDB:ce,WEBSQL:bH,LOCALSTORAGE:OH},jH=[ll.INDEXEDDB._driver,ll.WEBSQL._driver,ll.LOCALSTORAGE._driver],Km=["dropInstance"],by=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(Km),HH={description:"",driver:jH.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function BH(P,F){P[F]=function(){var M=arguments;return P.ready().then(function(){return P[F].apply(P,M)})}}function wy(){for(var P=1;P<arguments.length;P++){var F=arguments[P];if(F)for(var M in F)F.hasOwnProperty(M)&&(JC(F[M])?arguments[0][M]=F[M].slice():arguments[0][M]=F[M])}return arguments[0]}var VH=(function(){function P(F){o(this,P);for(var M in ll)if(ll.hasOwnProperty(M)){var L=ll[M],H=L._driver;this[M]=H,Xd[H]||this.defineDriver(L)}this._defaultConfig=wy({},HH),this._config=wy({},this._defaultConfig,F),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return P.prototype.config=function(M){if((typeof M=="undefined"?"undefined":s(M))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var L in M){if(L==="storeName"&&(M[L]=M[L].replace(/\W/g,"_")),L==="version"&&typeof M[L]!="number")return new Error("Database version must be a number.");this._config[L]=M[L]}return"driver"in M&&M.driver?this.setDriver(this._config.driver):!0}else return typeof M=="string"?this._config[M]:this._config},P.prototype.defineDriver=function(M,L,H){var O=new m(function(_,Q){try{var Z=M._driver,ee=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!M._driver){Q(ee);return}for(var ae=by.concat("_initStorage"),me=0,Oe=ae.length;me<Oe;me++){var rt=ae[me],lt=!LH(Km,rt);if((lt||M[rt])&&typeof M[rt]!="function"){Q(ee);return}}var Jt=function(){for(var Jd=function($H){return function(){var UH=new Error("Method "+$H+" is not implemented by the current driver"),e0=m.reject(UH);return f(e0,arguments[arguments.length-1]),e0}},Ty=0,zH=Km.length;Ty<zH;Ty++){var xy=Km[Ty];M[xy]||(M[xy]=Jd(xy))}};Jt();var $t=function(Jd){Xd[Z]&&""+Z,Xd[Z]=M,ZC[Z]=Jd,_()};"_support"in M?M._support&&typeof M._support=="function"?M._support().then($t,Q):$t(!!M._support):$t(!0)}catch(zr){Q(zr)}});return h(O,L,H),O},P.prototype.driver=function(){return this._driver||null},P.prototype.getDriver=function(M,L,H){var O=Xd[M]?m.resolve(Xd[M]):m.reject(new Error("Driver not found."));return h(O,L,H),O},P.prototype.getSerializer=function(M){var L=m.resolve(yy);return h(L,M),L},P.prototype.ready=function(M){var L=this,H=L._driverSet.then(function(){return L._ready===null&&(L._ready=L._initDriver()),L._ready});return h(H,M,M),H},P.prototype.setDriver=function(M,L,H){var O=this;JC(M)||(M=[M]);var _=this._getSupportedDrivers(M);function Q(){O._config.driver=O.driver()}function Z(me){return O._extend(me),Q(),O._ready=O._initStorage(O._config),O._ready}function ee(me){return function(){var Oe=0;function rt(){for(;Oe<me.length;){var lt=me[Oe];return Oe++,O._dbInfo=null,O._ready=null,O.getDriver(lt).then(Z).catch(rt)}Q();var Jt=new Error("No available storage method found.");return O._driverSet=m.reject(Jt),O._driverSet}return rt()}}var ae=this._driverSet!==null?this._driverSet.catch(function(){return m.resolve()}):m.resolve();return this._driverSet=ae.then(function(){var me=_[0];return O._dbInfo=null,O._ready=null,O.getDriver(me).then(function(Oe){O._driver=Oe._driver,Q(),O._wrapLibraryMethodsWithReady(),O._initDriver=ee(_)})}).catch(function(){Q();var me=new Error("No available storage method found.");return O._driverSet=m.reject(me),O._driverSet}),h(this._driverSet,L,H),this._driverSet},P.prototype.supports=function(M){return!!ZC[M]},P.prototype._extend=function(M){wy(this,M)},P.prototype._getSupportedDrivers=function(M){for(var L=[],H=0,O=M.length;H<O;H++){var _=M[H];this.supports(_)&&L.push(_)}return L},P.prototype._wrapLibraryMethodsWithReady=function(){for(var M=0,L=by.length;M<L;M++)BH(this,by[M])},P.prototype.createInstance=function(M){return new P(M)},P})(),WH=new VH;r.exports=WH},{3:3}]},{},[4])(4)})});var Yn,Rd,fC=D(()=>{Yn=Fe(a3()),Rd=class{constructor(a,e){this.appId=a;this.cachePrefix="taskgenius/cache/";this.initialized=!1;this.currentVersion="unknown";this.currentVersion=e||"unknown",this.persister=Yn.default.createInstance({name:this.cachePrefix+this.appId,driver:[Yn.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=Yn.default.createInstance({name:this.cachePrefix+this.appId,driver:[Yn.default.LOCALSTORAGE],description:"TaskGenius metadata fallback cache"}),this.initialized=!0}}async recreate(){try{await Yn.default.dropInstance({name:this.cachePrefix+this.appId})}catch(a){console.error("Error dropping storage instance:",a)}this.persister=Yn.default.createInstance({name:this.cachePrefix+this.appId,driver:[Yn.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 Wt,iv,r3=D(()=>{fC();Wt={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}`}},iv=class{constructor(a,e){this.schemaVersion=1;this.currentVersion=e||"1.0.0",this.cache=new Rd(a,this.currentVersion),`${a}${this.currentVersion}`}generateHash(a){let e=JSON.stringify(a),t=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=(t<<5)-t+i,t=t&t}return Math.abs(t).toString(16)}isVersionValid(a){return a.version===this.currentVersion&&a.schema===this.schemaVersion}async loadRaw(a){try{let e=await this.cache.loadFile(Wt.raw(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Wt.raw(a)),null)}catch(e){return console.error(`Error loading raw tasks for ${a}:`,e),null}}async storeRaw(a,e,t,r){let i={hash:this.generateHash(t||e),time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:e,mtime:r};await this.cache.storeFile(Wt.raw(a),i)}isRawValid(a,e,t,r){if(!this.isVersionValid(e)||r!==void 0&&e.mtime!==void 0&&e.mtime!==r)return!1;if(t){let i=this.generateHash(t);return e.hash===i}return!0}async loadProject(a){try{let e=await this.cache.loadFile(Wt.project(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Wt.project(a)),null)}catch(e){return console.error(`Error loading project data for ${a}:`,e),null}}async storeProject(a,e){let t={hash:this.generateHash(e),time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:e};await this.cache.storeFile(Wt.project(a),t)}async loadAugmented(a){try{let e=await this.cache.loadFile(Wt.augmented(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Wt.augmented(a)),null)}catch(e){return console.error(`Error loading augmented tasks for ${a}:`,e),null}}async storeAugmented(a,e){let t={hash:this.generateHash(e),time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:e};await this.cache.storeFile(Wt.augmented(a),t)}async storeIcsEvents(a){let e={time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:a};await this.cache.storeFile(Wt.icsEvents(),e),`${a.length}`}async loadIcsEvents(){try{let a=await this.cache.loadFile(Wt.icsEvents());return!a||!a.data?[]:this.isVersionValid(a.data)?a.data.data||[]:(await this.cache.removeFile(Wt.icsEvents()),[])}catch(a){return console.error("[Storage] Error loading ICS events:",a),[]}}async loadConsolidated(){try{let a=await this.cache.loadConsolidatedCache("taskIndex");return!a||!a.data?null:this.isVersionValid(a.data)?(`${a.data.data?Object.keys(a.data.data).length:0}`,a.data):(await this.cache.removeFile(Wt.consolidated()),null)}catch(a){return console.error("[Storage] Error loading consolidated index:",a),null}}async storeConsolidated(a){let e={time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:a};`${a?Object.keys(a).length:0}`,await this.cache.storeConsolidatedCache("taskIndex",e)}async saveMeta(a,e){await this.cache.storeFile(Wt.meta.custom(a),e)}async loadMeta(a){var t;let e=await this.cache.loadFile(Wt.meta.custom(a));return(t=e==null?void 0:e.data)!=null?t:null}async listAugmentedPaths(){let a=await this.cache.allFiles(),e="tasks.augmented:";return a.filter(t=>t.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(Wt.raw(a)),this.cache.removeFile(Wt.project(a)),this.cache.removeFile(Wt.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(Wt.meta.version(),{version:this.currentVersion}),await this.cache.storeFile(Wt.meta.schemaVersion(),{schema:this.schemaVersion})}async loadVersion(){try{let a=await this.cache.loadFile(Wt.meta.version()),e=await this.cache.loadFile(Wt.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 gC={};wt(gC,{Events:()=>se,Seq:()=>Ft,emit:()=>ge,emitTaskCacheUpdated:()=>R6,on:()=>Kt,onTaskCacheUpdated:()=>F6});function ge(n,a,e){n.workspace.trigger(a,e)}function Kt(n,a,e){return n.workspace.on(a,e)}var se,hC,Ft,F6,R6,pi=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"},hC=0,Ft={next(){return hC=hC+1>>>0,hC}};F6=(n,a)=>Kt(n,se.TASK_CACHE_UPDATED,a),R6=(n,a)=>ge(n,se.TASK_CACHE_UPDATED,a)});var sv,i3=D(()=>{e3();r3();pi();sv=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 rv(a,e,t),this.storage=new iv(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()}`,ge(this.app,se.CACHE_READY,{initial:!0,timestamp:Date.now(),seq:Ft.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=Ft.next(),ge(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=Ft.next(),ge(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=Ft.next(),ge(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=Ft.next(),ge(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;r<e.length;r++)t=new Set([...t].filter(i=>e[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&&l<a.from)&&!(a.to&&l>a.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=Ft.next(),ge(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=Ft.next(),ge(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=Ft.next(),ge(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 kC={};wt(kC,{QueryAPI:()=>Cm});var Cm,nv=D(()=>{i3();Cm=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 sv(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<e.getTime():!1})}async getOverdueTasks(){let a=new Date;return a.setHours(0,0,0,0),(await this.getAllTasks()).filter(t=>{var r;return!t.completed&&((r=t.metadata)==null?void 0:r.dueDate)&&t.metadata.dueDate<a.getTime()})}getOverdueTasksSync(){let a=new Date;return a.setHours(0,0,0,0),this.getAllTasksSync().filter(t=>{var r;return!t.completed&&((r=t.metadata)==null?void 0:r.dueDate)&&t.metadata.dueDate<a.getTime()})}async getAvailableContextsAndProjects(){let a=await this.getAllTasks(),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()}}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 o3={};wt(o3,{CanvasParser:()=>Hi,DEFAULT_CANVAS_PARSING_OPTIONS:()=>n3});var n3,Hi,uv=D(()=>{so();wc();n3={includeNodeIds:!1,includePositions:!1,nodeSeparator:`
|
||
|
||
`,preserveLineBreaks:!0},Hi=class n{constructor(a,e={}){this.markdownParser=new Ti(a),this.options={...n3,...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=`<!-- Node ID: ${s.id} -->
|
||
${o}`),this.options.includePositions&&(o=`<!-- Position: x=${s.x}, y=${s.y} -->
|
||
${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 Ti(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=un(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 f3=ke(m3=>{var yC=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*2<this._elements.length||(this._elements=this._elements.slice(this._offset),this._offset=0),a}pop(){return this.dequeue()}front(){return this.size()>0?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)}};m3.Queue=yC});var g3=ke(h3=>{var{Queue:N6}=f3();h3.Queue=N6});var PC=ke(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});var Rt=require("obsidian"),wC="YYYY-MM-DD",TC="gggg-[W]ww",w3="YYYY-MM",T3="YYYY-[Q]Q",x3="YYYY";function Fm(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 Rm(){var n,a,e,t;try{let{internalPlugins:r,plugins:i}=window.app;if(Fm("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||wC,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||wC,folder:(s==null?void 0:s.trim())||"",template:(l==null?void 0:l.trim())||""}}catch(r){}}function Om(){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(Fm("weekly"))return{format:c.format||TC,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||TC,folder:((i=u.weeklyNoteFolder)==null?void 0:i.trim())||"",template:((s=u.weeklyNoteTemplate)==null?void 0:s.trim())||""}}catch(o){}}function Nm(){var a,e,t,r;let n=window.app.plugins;try{let i=Fm("monthly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.monthly)||{};return{format:i.format||w3,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function Lm(){var a,e,t,r;let n=window.app.plugins;try{let i=Fm("quarterly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.quarterly)||{};return{format:i.format||T3,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function jm(){var a,e,t,r;let n=window.app.plugins;try{let i=Fm("yearly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.yearly)||{};return{format:i.format||x3,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function C3(...n){let a=[];for(let t=0,r=n.length;t<r;t++)a=a.concat(n[t].split("/"));let e=[];for(let t=0,r=a.length;t<r;t++){let i=a[t];!i||i==="."||e.push(i)}return a[0]===""&&e.unshift(""),e.join("/")}function j6(n){let a=n.substring(n.lastIndexOf("/")+1);return a.lastIndexOf(".")!=-1&&(a=a.substring(0,a.lastIndexOf("."))),a}async function H6(n){let a=n.replace(/\\/g,"/").split("/");if(a.pop(),a.length){let e=C3(...a);window.app.vault.getAbstractFileByPath(e)||await window.app.vault.createFolder(e)}}async function Hm(n,a){a.endsWith(".md")||(a+=".md");let e=Rt.normalizePath(C3(n,a));return await H6(e),e}async function _d(n){let{metadataCache:a,vault:e}=window.app,t=Rt.normalizePath(n);if(t==="/")return Promise.resolve(["",null]);try{let r=a.getFirstLinkpathDest(t,""),i=await e.cachedRead(r),s=window.app.foldManager.load(r);return[i,s]}catch(r){return console.error(`Failed to read the daily note template '${t}'`,r),new Rt.Notice("Failed to read the daily note template"),["",null]}}function Vi(n,a="day"){let e=n.clone().startOf(a).format();return`${a}-${e}`}function S3(n){return n.replace(/\[[^\]]*\]/g,"")}function B6(n,a){if(a==="week"){let e=S3(n);return/w{1,2}/i.test(e)&&(/M{1,4}/.test(e)||/D{1,4}/.test(e))}return!1}function qd(n,a){return D3(n.basename,a)}function V6(n,a){return D3(j6(n),a)}function D3(n,a){let t={day:Rm,week:Om,month:Nm,quarter:Lm,year:jm}[a]().format.split("/").pop(),r=window.moment(n,t,!0);if(!r.isValid())return null;if(B6(t,a)&&a==="week"){let i=S3(t);if(/w{1,2}/i.test(i))return window.moment(n,t.replace(/M{1,4}/g,"").replace(/D{1,4}/g,""),!1)}return r}var xC=class extends Error{};async function E3(n){let a=window.app,{vault:e}=a,t=window.moment,{template:r,format:i,folder:s}=Rm(),[o,l]=await _d(r),c=n.format(i),u=await Hm(s,c);try{let p=await e.create(u,o.replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,t().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,f,h,k,g,v)=>{let b=t(),y=n.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return h&&y.add(parseInt(k,10),g),v?y.format(v.substring(1).trim()):y.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 Rt.Notice("Unable to create new file.")}}function W6(n,a){var e;return(e=a[Vi(n,"day")])!=null?e:null}function z6(){let{vault:n}=window.app,{folder:a}=Rm(),e=n.getAbstractFileByPath(Rt.normalizePath(a));if(!e)throw new xC("Failed to find daily notes folder");let t={};return Rt.Vault.recurseChildren(e,r=>{if(r instanceof Rt.TFile){let i=qd(r,"day");if(i){let s=Vi(i,"day");t[s]=r}}}),t}var CC=class extends Error{};function $6(){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 U6(n){return $6().indexOf(n.toLowerCase())}async function P3(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Om(),[i,s]=await _d(e),o=n.format(t),l=await Hm(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),v=n.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&v.add(parseInt(f,10),h),k?v.format(k.substring(1).trim()):v.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=U6(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 Rt.Notice("Unable to create new file.")}}function _6(n,a){var e;return(e=a[Vi(n,"week")])!=null?e:null}function q6(){let n={};if(!I3())return n;let{vault:a}=window.app,{folder:e}=Om(),t=a.getAbstractFileByPath(Rt.normalizePath(e));if(!t)throw new CC("Failed to find weekly notes folder");return Rt.Vault.recurseChildren(t,r=>{if(r instanceof Rt.TFile){let i=qd(r,"week");if(i){let s=Vi(i,"week");n[s]=r}}}),n}var SC=class extends Error{};async function M3(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Nm(),[i,s]=await _d(e),o=n.format(t),l=await Hm(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),v=n.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&v.add(parseInt(f,10),h),k?v.format(k.substring(1).trim()):v.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 Rt.Notice("Unable to create new file.")}}function Y6(n,a){var e;return(e=a[Vi(n,"month")])!=null?e:null}function G6(){let n={};if(!A3())return n;let{vault:a}=window.app,{folder:e}=Nm(),t=a.getAbstractFileByPath(Rt.normalizePath(e));if(!t)throw new SC("Failed to find monthly notes folder");return Rt.Vault.recurseChildren(t,r=>{if(r instanceof Rt.TFile){let i=qd(r,"month");if(i){let s=Vi(i,"month");n[s]=r}}}),n}var DC=class extends Error{};async function K6(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Lm(),[i,s]=await _d(e),o=n.format(t),l=await Hm(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),v=n.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&v.add(parseInt(f,10),h),k?v.format(k.substring(1).trim()):v.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 Rt.Notice("Unable to create new file.")}}function Q6(n,a){var e;return(e=a[Vi(n,"quarter")])!=null?e:null}function X6(){let n={};if(!F3())return n;let{vault:a}=window.app,{folder:e}=Lm(),t=a.getAbstractFileByPath(Rt.normalizePath(e));if(!t)throw new DC("Failed to find quarterly notes folder");return Rt.Vault.recurseChildren(t,r=>{if(r instanceof Rt.TFile){let i=qd(r,"quarter");if(i){let s=Vi(i,"quarter");n[s]=r}}}),n}var EC=class extends Error{};async function J6(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=jm(),[i,s]=await _d(e),o=n.format(t),l=await Hm(r,o);try{let c=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),v=n.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&v.add(parseInt(f,10),h),k?v.format(k.substring(1).trim()):v.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 Rt.Notice("Unable to create new file.")}}function Z6(n,a){var e;return(e=a[Vi(n,"year")])!=null?e:null}function e8(){let n={};if(!R3())return n;let{vault:a}=window.app,{folder:e}=jm(),t=a.getAbstractFileByPath(Rt.normalizePath(e));if(!t)throw new EC("Failed to find yearly notes folder");return Rt.Vault.recurseChildren(t,r=>{if(r instanceof Rt.TFile){let i=qd(r,"year");if(i){let s=Vi(i,"year");n[s]=r}}}),n}function t8(){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 I3(){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 A3(){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 F3(){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 R3(){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 a8(n){let a={day:Rm,week:Om,month:Nm,quarter:Lm,year:jm}[n];return a()}function r8(n,a){return{day:E3,month:M3,week:P3}[n](a)}Ne.DEFAULT_DAILY_NOTE_FORMAT=wC;Ne.DEFAULT_MONTHLY_NOTE_FORMAT=w3;Ne.DEFAULT_QUARTERLY_NOTE_FORMAT=T3;Ne.DEFAULT_WEEKLY_NOTE_FORMAT=TC;Ne.DEFAULT_YEARLY_NOTE_FORMAT=x3;Ne.appHasDailyNotesPluginLoaded=t8;Ne.appHasMonthlyNotesPluginLoaded=A3;Ne.appHasQuarterlyNotesPluginLoaded=F3;Ne.appHasWeeklyNotesPluginLoaded=I3;Ne.appHasYearlyNotesPluginLoaded=R3;Ne.createDailyNote=E3;Ne.createMonthlyNote=M3;Ne.createPeriodicNote=r8;Ne.createQuarterlyNote=K6;Ne.createWeeklyNote=P3;Ne.createYearlyNote=J6;Ne.getAllDailyNotes=z6;Ne.getAllMonthlyNotes=G6;Ne.getAllQuarterlyNotes=X6;Ne.getAllWeeklyNotes=q6;Ne.getAllYearlyNotes=e8;Ne.getDailyNote=W6;Ne.getDailyNoteSettings=Rm;Ne.getDateFromFile=qd;Ne.getDateFromPath=V6;Ne.getDateUID=Vi;Ne.getMonthlyNote=Y6;Ne.getMonthlyNoteSettings=Nm;Ne.getPeriodicNoteSettings=a8;Ne.getQuarterlyNote=Q6;Ne.getQuarterlyNoteSettings=Lm;Ne.getTemplateInfo=_d;Ne.getWeeklyNote=_6;Ne.getWeeklyNoteSettings=Om;Ne.getYearlyNote=Z6;Ne.getYearlyNoteSettings=jm});var sr,VC=D(()=>{pi();uv();sr=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=Hi.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=Hi.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&&ge(this.plugin.app,se.WRITE_OPERATION_START,{path:r.path,taskId:a.id}),await this.vault.modify(r,u),this.plugin.app&&ge(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;o<r.length;o++){let l=r[o];if(this.isTaskLine(l)&&this.lineMatchesTask(l,e)){let c=this.updateCompleteTaskLine(l,e,t);s[o]=c,i=!0;break}}return i?(a.text=s.join(`
|
||
`),{success:!0}):{success:!1,error:`Task not found in Canvas text node: ${e.originalMarkdown}`}}catch(r){return{success:!1,error:`Error updating task in text node: ${r.message}`}}}isTaskLine(a){return/^\s*[-*+]\s*\[[^\]]*\]\s*/.test(a)}lineMatchesTask(a,e){if(e.originalMarkdown){let i=a.trim(),s=e.originalMarkdown.trim();if(i===s)return!0;let o=i.replace(/^[-*+]\s*\[[^\]]*\]\s*/,"- [ ] "),l=s.replace(/^[-*+]\s*\[[^\]]*\]\s*/,"- [ ] ");if(o===l)return!0}let t=this.extractCoreTaskContent(a),r=this.extractCoreTaskContent(e.content);return t===r}extractCoreTaskContent(a){let e=a;return e=e.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,""),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(/\s+(🔼|🔽|⏫|⏬|🔺)/g,""),e=e.replace(/🏁\s*[^\s]+/g,""),e=e.replace(/🏁\s*\{[^}]*\}/g,""),e=e.replace(/🔁\s*[^\s]+/g,""),e=e.replace(/🆔\s*[^\s]+/g,""),e=e.replace(/⛔\s*[^\s]+/g,""),e=e.replace(/\[[^:]+::\s*[^\]]+\]/g,""),e=e.replace(/#[^\s#]+/g,""),e=e.replace(/@[^\s@]+/g,""),e=e.replace(/\s+/g," ").trim(),e}updateTaskStatusInLine(a,e){return a.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${e}$2`)}updateCompleteTaskLine(a,e,t){let r=this.plugin.settings.preferMetadataFormat==="dataview",i=a.match(/^(\s*)/),s=i?i[0]:"",o=a;if(t.status)o=o.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${t.status}$2`);else if(e.completed!==t.completed){let p=t.completed?"x":" ";o=o.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${p}$2`)}let l=o.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);o=(l?l[1]:"")+t.content,o=this.removeExistingMetadata(o),o=o.replace(/\s+/g," ").trim();let u=this.buildMetadataArray(t,e,r);return u.length>0&&(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 k=new Date(h);return`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.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 k;return((k=h.metadata.tgProject)==null?void 0:k.readonly)===!0};if(a.metadata.tags&&a.metadata.tags.length>0){let h=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",k=a.metadata.tags.filter(v=>!(typeof v!="string"||v.startsWith(`#${h}/`)||v.startsWith("@")&&a.metadata.context&&v===`@${a.metadata.context}`)),g=[...new Set(k)].map(v=>v.startsWith("#")?v:`#${v}`).filter(v=>v.length>1);g.length>0&&r.push(...g)}if(a.metadata.project&&!u(e))if(t){let k=`[${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}:: ${a.metadata.project}]`;r.includes(k)||r.push(k)}else{let k=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${a.metadata.project}`;r.includes(k)||r.push(k)}if(a.metadata.context)if(t){let k=`[${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context"}:: ${a.metadata.context}]`;r.includes(k)||r.push(k)}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=Hi.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=Hi.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=Hi.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;c<r.length;c++){let u=r[c];if(this.isTaskLine(u)&&this.lineMatchesTask(u,e)){o=c,i=!0;break}}if(!i)return{success:!1,error:`Task not found in Canvas text node: ${e.originalMarkdown}`};let l=[o];if(t){let c=r[o],u=this.getIndentLevel(c);for(let p=o+1;p<r.length;p++){let m=r[p],f=this.getIndentLevel(m);if(this.isTaskLine(m)&&f<=u)break;this.isTaskLine(m)&&f>u&&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<a.length;t++){let r=a[t].trim();if(r.startsWith("#")&&r.toLowerCase().includes(e.toLowerCase()))return t}return-1}formatTaskLine(a){return`- [${a.completed?"x":" "}] ${a.content}`}removeCompletionMetadata(a){let e=a;return e=e.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/\[completion::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,""),e=e.replace(/\[scheduled::\s*\d{4}-\d{2}-\d{2}\]/gi,""),e=e.replace(/\s+/g," ").trim(),e}static isCanvasTask(a){return a.metadata.sourceType==="canvas"}}});var zC={};wt(zC,{WriteAPI:()=>qm});var Ma,ws,qm,fy=D(()=>{Ma=require("obsidian"),ws=Fe(PC());Nl();pi();VC();qm=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 sr(e,r)}async updateTaskStatus(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(sr.isCanvasTask(e))return this.updateCanvasTask({taskId:a.taskId,updates:{status:a.status,completed:a.completed}});let t=this.vault.getAbstractFileByPath(e.filePath);if(!t)return{success:!1,error:"File not found"};let i=(await this.vault.read(t)).split(`
|
||
`);if(e.line<0||e.line>=i.length)return{success:!1,error:"Invalid line number"};let s=i[e.line];if(a.status!==void 0)s=s.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${a.status}$2`);else if(a.completed!==void 0){let o=a.completed?"x":" ";if(s=s.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${o}$2`),a.completed&&!e.metadata.completedDate){let l=(0,Ma.moment)().format("YYYY-MM-DD"),u=this.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${l}]`:`\u2705 ${l}`;s=`${s} ${u}`}}if(i[e.line]=s,ge(this.app,se.WRITE_OPERATION_START,{path:t.path,taskId:a.taskId}),await this.vault.modify(t,i.join(`
|
||
`)),ge(this.app,se.WRITE_OPERATION_COMPLETE,{path:t.path,taskId:a.taskId}),a.completed===!0&&!e.completed){let o={...e,completed:!0};this.app.workspace.trigger("task-genius:task-completed",o)}return{success:!0}}catch(e){return console.error("WriteAPI: Error updating task status:",e),{success:!1,error:String(e)}}}async updateTask(a){var e;try{let t=await Promise.resolve(this.getTaskById(a.taskId));if(!t)return{success:!1,error:"Task not found"};if(sr.isCanvasTask(t))return this.updateCanvasTask(a);if(((e=t==null?void 0:t.metadata)==null?void 0:e.source)==="file-source"||t.id.startsWith("file-source:"))return this.updateFileSourceTask(t,a.updates,a.taskId);let i=this.vault.getAbstractFileByPath(t.filePath);if(!i)return{success:!1,error:"File not found"};let o=(await this.vault.read(i)).split(`
|
||
`);if(t.line<0||t.line>=o.length)return{success:!1,error:"Invalid line number"};let l={...t,...a.updates},c=o[t.line];if(a.updates.status!==void 0){let p=a.updates.status;c=c.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${p}$2`)}else if(a.updates.completed!==void 0){let p=a.updates.completed?"x":" ";c=c.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${p}$2`)}if(a.updates.content!==void 0){let p=c.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(p){let m=p[1],f=c.match(/([\s]+(🔺|⏫|🔼|🔽|⏬|🛫|⏳|📅|✅|🔁|\[[\w]+::|#|@|\+).*)?$/),h=f?f[0]:"";c=`${m}${a.updates.content}${h}`}}if(a.updates.metadata){let p=c.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*[^🔺⏫🔼🔽⏬🛫⏳📅✅🔁\[#@+]*)/);if(p){let m=p[0],f=this.generateMetadata({...t.metadata,...a.updates.metadata});c=`${m}${f?` ${f}`:""}`}}o[t.line]=c,ge(this.app,se.WRITE_OPERATION_START,{path:i.path,taskId:a.taskId}),await this.vault.modify(i,o.join(`
|
||
`));let u={...t,...a.updates,originalMarkdown:c.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"")};return ge(this.app,se.TASK_UPDATED,{task:u}),a.updates.completed===!0&&!t.completed&&this.app.workspace.trigger("task-genius:task-completed",u),ge(this.app,se.WRITE_OPERATION_COMPLETE,{path:i.path,taskId:a.taskId}),{success:!0,task:u}}catch(t){return console.error("WriteAPI: Error updating task:",t),{success:!1,error:String(t)}}}async updateFileSourceTask(a,e,t){var m,f,h,k,g,v,b,y,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=(k=s==null?void 0:s.preferFrontmatterTitle)!=null?k:!0,c=(b=(v=(g=this.plugin.settings)==null?void 0:g.fileSource)==null?void 0:v.fileTaskProperties)==null?void 0:b.customContentField;try{let E=(y=e.metadata)!=null?y:{};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){ge(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 q=(W=V.symbolToMetadata)==null?void 0:W[G];if(q)G=q;else{(B=this.plugin.settings)==null||B.taskStatuses;let oe=((X=this.plugin.settings)==null?void 0:X.taskStatuses)||{},le=Object.entries(oe).map(([be,Ae])=>({type:be,symbols:String(Ae)}));for(let be of le){let Ae=be.symbols.split("|").filter(Boolean);for(let De of Ae)if(De===G||De.length>1&&De.includes(G)){let Ke={completed:"completed",inProgress:"in-progress",planned:"planned",abandoned:"cancelled",notStarted:"not-started"}[be.type];Ke&&(G=Ke);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)}),ge(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(ge(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}}ge(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 ge(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<r.length;s++)if(r[s].startsWith("# ")){i=s;break}if(i>=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,Ma.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,Ma.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,Ma.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;ge(this.app,se.WRITE_OPERATION_START,{path:s.path}),await this.vault.modify(s,l),ge(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(sr.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<o.length&&o.splice(l,1);return ge(this.app,se.WRITE_OPERATION_START,{path:t.path,taskId:a.taskId}),await this.vault.modify(t,o.join(`
|
||
`)),ge(this.app,se.WRITE_OPERATION_COMPLETE,{path:t.path,taskId:a.taskId}),ge(this.app,se.TASK_DELETED,{taskId:a.taskId,filePath:t.path,deletedTaskIds:r,mode:a.deleteChildren?"subtree":"single"}),{success:!0}}catch(e){return console.error("WriteAPI: Error deleting task:",e),{success:!1,error:String(e)}}}async batchUpdateTaskStatus(a){let e=[],t=[];for(let r of a.taskIds){let i=await this.updateTaskStatus({taskId:r,status:a.status,completed:a.completed});i.success?e.push(r):t.push({id:r,error:i.error||"Unknown error"})}return{updated:e,failed:t}}async postponeTasks(a){let e=[],t=[],r=this.parseDateOrOffset(a.newDate);if(r===null)return{updated:[],failed:a.taskIds.map(i=>({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,ws.appHasDailyNotesPluginLoaded)()){let f=(0,Ma.moment)().set("hour",12),h=(0,ws.getDailyNote)(f,(0,ws.getAllDailyNotes)());h?s=h:s=await(0,ws.createDailyNote)(f)}if(!s){let f=this.plugin.settings.quickCapture,h=((e=f==null?void 0:f.dailyNoteSettings)==null?void 0:e.folder)||"",k=((t=f==null?void 0:f.dailyNoteSettings)==null?void 0:t.format)||"YYYY-MM-DD";if(!h)try{h=(0,ws.getDailyNoteSettings)().folder||""}catch(w){}let g=(0,Ma.moment)().format(k),v=h?`${h}/${g}.md`:`${g}.md`,b=v.split("/");if(b.length>1){let w=b.slice(0,-1).join("/");try{await this.vault.createFolder(w)}catch(x){}}let y=this.vault.getAbstractFileByPath(v);y||(y=await this.vault.create(v,"")),s=y}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,Ma.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,Ma.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,Ma.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 ge(this.app,se.WRITE_OPERATION_START,{path:u.path}),await this.vault.modify(u,m),ge(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,Ma.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,Ma.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,Ma.moment)(a.completedDate).valueOf():void 0});i&&(r+=` ${i}`);let s;if(e.targetType==="daily-note"&&e.dailyNoteSettings){let o=(0,Ma.moment)().format(e.dailyNoteSettings.format||"YYYY-MM-DD");s=(e.dailyNoteSettings.folder?`${e.dailyNoteSettings.folder.replace(/\/$/,"")}/`:"")+`${o}.md`}else s=_b(e.targetFile||"Quick Capture.md");return await qi(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,Ma.moment)(a.startDate).format("YYYY-MM-DD");e.push(t?`[start:: ${c}]`:`\u{1F6EB} ${c}`)}if(a.scheduledDate){let c=(0,Ma.moment)(a.scheduledDate).format("YYYY-MM-DD");e.push(t?`[scheduled:: ${c}]`:`\u23F3 ${c}`)}if(a.dueDate){let c=(0,Ma.moment)(a.dueDate).format("YYYY-MM-DD");e.push(t?`[due:: ${c}]`:`\u{1F4C5} ${c}`)}if(a.completed&&a.completedDate){let c=(0,Ma.moment)(a.completedDate).format("YYYY-MM-DD");e.push(t?`[completion:: ${c}]`:`\u2705 ${c}`)}return 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;t<a.length;t++)if(a[t].includes(e))return{line:t};return null}getIndent(a){let e=a.match(/^(\s*)/);return e?e[1]:""}parseDateOrOffset(a){let e=Date.parse(a);if(!isNaN(e))return e;let t=a.match(/^\+(\d+)([dwmy])$/i);if(!t)return null;let r=parseInt(t[1],10),i=t[2].toLowerCase(),s=new Date;switch(i){case"d":s.setDate(s.getDate()+r);break;case"w":s.setDate(s.getDate()+r*7);break;case"m":s.setMonth(s.getMonth()+r);break;case"y":s.setFullYear(s.getFullYear()+r);break}return s.setHours(0,0,0,0),s.getTime()}async updateCanvasTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(!sr.isCanvasTask(e))return{success:!1,error:"Task is not a Canvas task"};let t={...e,...a.updates,metadata:{...e.metadata,...a.updates.metadata}},r=await this.canvasTaskUpdater.updateCanvasTask(e,t);return r.success?(ge(this.app,se.TASK_UPDATED,{task:t}),a.updates.completed===!0&&!e.completed&&this.app.workspace.trigger("task-genius:task-completed",t),{success:!0,task:t}):{success:!1,error:r.error}}catch(e){return console.error("WriteAPI: Error updating Canvas task:",e),{success:!1,error:String(e)}}}async deleteCanvasTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(!sr.isCanvasTask(e))return{success:!1,error:"Task is not a Canvas task"};let t=[a.taskId];if(a.deleteChildren){let i=await this.getDescendantTaskIds(a.taskId);t.push(...i)}let r=await this.canvasTaskUpdater.deleteCanvasTask(e,a.deleteChildren);return r.success&&ge(this.app,se.TASK_DELETED,{taskId:a.taskId,filePath:e.filePath,deletedTaskIds:t,mode:a.deleteChildren?"subtree":"single"}),r}catch(e){return console.error("WriteAPI: Error deleting Canvas task:",e),{success:!1,error:String(e)}}}async moveCanvasTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));return e?sr.isCanvasTask(e)?await this.canvasTaskUpdater.moveCanvasTask(e,a.targetFilePath,a.targetNodeId,a.targetSection):{success:!1,error:"Task is not a Canvas task"}:{success:!1,error:"Task not found"}}catch(e){return console.error("WriteAPI: Error moving Canvas task:",e),{success:!1,error:String(e)}}}async duplicateCanvasTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));return e?sr.isCanvasTask(e)?await this.canvasTaskUpdater.duplicateCanvasTask(e,a.targetFilePath,a.targetNodeId,a.targetSection,a.preserveMetadata):{success:!1,error:"Task is not a Canvas task"}:{success:!1,error:"Task not found"}}catch(e){return console.error("WriteAPI: Error duplicating Canvas task:",e),{success:!1,error:String(e)}}}async addTaskToCanvasNode(a){try{let t=`- ${a.completed?"[x]":"[ ]"} ${a.content}`;if(a.metadata){let i=this.generateMetadata(a.metadata);i&&(t+=` ${i}`)}return await this.canvasTaskUpdater.addTaskToCanvasNode(a.filePath,t,a.targetNodeId,a.targetSection)}catch(e){return console.error("WriteAPI: Error adding task to Canvas node:",e),{success:!1,error:String(e)}}}isCanvasTask(a){return sr.isCanvasTask(a)}getCanvasTaskUpdater(){return this.canvasTaskUpdater}}});var F8={};wt(F8,{default:()=>ky,showPopoverWithProgressBar:()=>eb});module.exports=dl(F8);var la=require("obsidian");var lr=require("@codemirror/view"),Ds=require("@codemirror/language");var RD=Fe(FD()),YV={from:-1,to:-1,match:/.*/.exec("")},GV="gm"+(/x/.unicode==null?"":"u");Symbol.iterator;var gl=class{constructor(a,e,t,r=0,i=a.length){this.to=i;this.curLine="";this.done=!1;this.value=YV;this.re=new RegExp(e,GV+(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,RD.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(),t<r||t>this.value.to)return this.value={from:t,to:r,match:e},this;a=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),a=0;else return this.done=!0,this}}};var yf=require("obsidian");function OD(n,a){if(!n.settings.hideProgressBarBasedOnConditions)return!1;let e=a.sourcePath?n.app.vault.getFileByPath(a.sourcePath):null;if(!e||!(e instanceof yf.TFile))return!1;let t=e;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&&r.frontmatter[i]!==void 0)return!!r.frontmatter[i]}}return!1}function ND(n,a){if(n.settings.progressBarDisplayMode==="none")return!0;if(!n.settings.hideProgressBarBasedOnConditions)return!1;let e=a.state.field(yf.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 hi(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 Ia(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=hi(n);return r?" ":" ".repeat(i)}catch(t){return console.error("Error building indent string:",t),""}}function ln(n){let a=n.app.plugins.plugins["obsidian-tasks-plugin"];return!a||!a._loaded?null:a.apiV1}var kl=/\b(g|goal)::\s{0,1}(\d+)\b/i;function KV(n){if(!n)return null;let a=n.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]\s*(.*?)$/);return a&&a[3]?a[3].trim():null}function QV(n){if(!n)return null;let a=n.match(kl);return a?Number(a[2]):null}function Zy(n){if(!n)return null;let a=KV(n);return a?QV(a):null}function Es(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(k){return console.error("Error evaluating expression:",h,k),f}}),m}var lc=class extends lr.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=Es({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=()=>{eb(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=Es({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 LD(n,a){return lr.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.progressDecorations=lr.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(ND(a,e))return{progress:lr.Decoration.none};for(let i of e.visibleRanges){let s,o,l;try{s=new gl(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 gl(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 gl(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:lr.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=lr.Decoration.widget({widget:new lc(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,Ds.syntaxTree)(r.state).resolveInner(o+1).type.prop(Ds.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?Zy(m):null;if(!m||!/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/.test(m))continue;let h=this.calculateRangeForTransform(r.state,p.to);if(!h)continue;let k=this.getDocumentText(r.state.doc,h.from,h.to);if(!k||k.length===1)continue;let g=this.extractTasksFromRange(h,r.state,!0,f);if(g.total===0)continue;let v=lr.Decoration.widget({widget:new lc(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(v.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,Ds.syntaxTree)(r.state).resolveInner(o+1).type.prop(Ds.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(v=>c==null?void 0:c.split(" ").includes(v)))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 k=this.extractTasksFromRange(f,r.state,!0);if(k.total===0)continue;let g=lr.Decoration.widget({widget:new lc(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(g.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,Ds.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(""),k=f.filter(g=>!h.includes(g)).join("|");return new RegExp(u+p+"\\[("+k+")\\]")}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,k,g,v;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":(((k=(h=a==null?void 0:a.settings.taskStatuses)==null?void 0:h.planned)==null?void 0:k.split("|"))||["?"]).includes(e)?"planned":(((v=(g=a==null?void 0:a.settings.taskStatuses)==null?void 0:g.notStarted)==null?void 0:v.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,Ds.syntaxTree)(e).iterate({to:t,enter:l=>{if(l.type.name.startsWith("header")&&l.from<t&&l.from>o){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 v,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 y=((v=e[0].match(/^[\s|\t]*/))==null?void 0:v[0])||"",w=((b=e[1].match(/^[\s|\t]*/))==null?void 0:b[0])||"";if(y===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 y=e[0].match(/^[\s|\t]*/);y&&(p=y[0].length/m)}let h=this.createTotalTaskRegex(!1,p,m),k=this.createTotalTaskRegex(!0),g=(a==null?void 0:a.settings.allowCustomProgressGoal)&&r!==null;for(let y=0;y<e.length;y++)if(y!==0){if(t){let w=e[y],x=w.trim();if(!(a!=null&&a.settings.countSubLevel)){let T=w.match(/^[\s|\t]*/);if((T?T[0].length/m:0)!==p+1)continue}if(x&&w.match(h)&&!this.shouldExcludeTask(x)){u++;let T=this.getTaskStatus(x),C=x.match(/\[(.)]/);C&&C[1]&&f.push({mark:C[1],status:T,lineText:x});let S=Zy(x);T==="completed"?(g||i++,g&&S!==null&&(i+=S)):T==="inProgress"?(g||s++,g&&S!==null&&(s+=S)):T==="abandoned"?(g||o++,g&&S!==null&&(o+=S)):T==="planned"?(g||c++,g&&S!==null&&(c+=S)):T==="notStarted"&&(g||l++,g&&S!==null&&(l+=S))}}else if(a!=null&&a.settings.addTaskProgressBarToHeading){let w=e[y],x=w.trim();if(!(a!=null&&a.settings.countSubLevel)){let T=w.match(/^[\s|\t]*/);if((T?T[0].length/m:0)!==0)continue}if(x&&w.match(k)&&!this.shouldExcludeTask(x)){u++;let T=this.getTaskStatus(x),C=x.match(/\[(.)]/);C&&C[1]&&f.push({mark:C[1],status:T,lineText:x}),T==="completed"?i++:T==="inProgress"?s++:T==="abandoned"?o++:T==="planned"?c++:T==="notStarted"&&l++}}}return g&&t&&(u=r||0),i=Math.min(i,u),s=Math.min(s,u-i),o=Math.min(o,u-i-s),c=Math.min(c,u-i-s-o),l=u-i-s-o-c,{completed:i,total:u,inProgress:s,abandoned:o,notStarted:l,planned:c}}},{provide:e=>[lr.EditorView.decorations.of(t=>{var r;return((r=t.plugin(e))==null?void 0:r.progressDecorations)||lr.Decoration.none})]})}var ki=require("@codemirror/view"),xf=require("@codemirror/state"),$i=require("obsidian");var bf=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 Xn=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 vl=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 gi=require("@codemirror/view"),Ps=require("obsidian"),dc=require("@codemirror/state"),Tf=require("@codemirror/language");var dt=dc.Annotation.define(),jD={TODO:" ",DOING:"-","IN-PROGRESS":">",DONE:"x"},wf=class extends gi.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(Ps.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(),ln(this.plugin)){u.click();return}if(Ps.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 Ps.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:dt.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(jD),marks:jD,excludeMarksFromCycle:[]}}cycleTaskState(){var h,k;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(g=>!o.includes(g));if(l.length===0){let g=this.view.state.field(Ps.editorInfoField);g&&((k=(h=g==null?void 0:g.editor)==null?void 0:h.cm)==null||k.dispatch({selection:dc.EditorSelection.range(this.to+1,this.to+1)})),this.app.commands.executeCommandById("editor:toggle-checklist-status");return}let c=-1;for(let g=0;g<l.length;g++){let v=l[g];if(s[v]===r){c=g;break}}c===-1&&(c=0);let u=(c+1)%l.length,p=l[u],m=s[p]||" ",f=e.replace(/\[(.)]/,`[${m}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:f},annotations:dt.of("taskStatusChange"),selection:dc.EditorSelection.range(this.to+1,this.to+1)})}};function HD(n,a){class e{constructor(i){this.decorations=gi.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.match=new gi.MatchDecorator({regexp:/^(\s*)((?:[-*+]|\d+[.)])\s)(\[(.)]\s)/g,decorate:(i,s,o,l,c)=>{if(!this.shouldRender(c,s,o))return;let u=l[4],p=l[2],m=p.trim(),h=l[3].trim(),k=this.isLivePreview(c.state),g=a.settings.taskStatusCycle,v=a.settings.taskStatusMarks,b=a.settings.excludeMarksFromCycle||[],y=g.filter(x=>!b.includes(x));if(y.length===0&&!a.settings.enableCustomTaskMarks)return;let w=Object.keys(v).find(x=>v[x]===u)||y[0];if(!k&&a.settings.enableTextMarkInSourceMode){let x=s+l[1].length+p.length,T=x+h.length;i(x,T,gi.Decoration.replace({widget:new wf(n,a,c,x,T,w,m)}))}else i(s+l[1].length,s+l[1].length+p.length+h.length,gi.Decoration.replace({widget:new wf(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=gi.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(Ps.editorLivePreviewField)}shouldRender(i,s,o){let c=(0,Tf.syntaxTree)(i.state).resolveInner(s+1).type.prop(Tf.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 gi.ViewPlugin.fromClass(e,t)}var ib=xf.Facet.define({combine:n=>n[0]||null}),tb=class extends ki.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=vl.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=vl.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=vl.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($i.editorEditorField,!1);if(e)return e;if((i=this.plugin)!=null&&i.app){let l=this.plugin.app.workspace.getActiveViewOfType($i.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($i.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:dt.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),k=h.text,g=` ^${m}`,b=(((r=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:r.inProgress)||">|/").split("|")[0]||"/",y=k.replace(/\[([^\]]+)\]/,`[${b}]`).trimEnd()+g;`${h.number}`;try{f.dispatch({changes:{from:h.from,to:h.to,insert:y},annotations:dt.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($i.editorInfoField);if(h!=null&&h.editor){let k=this.state.doc.lineAt(this.lineFrom),g=k.text,b=(((o=(s=(i=this.plugin)==null?void 0:i.settings)==null?void 0:s.taskStatuses)==null?void 0:o.inProgress)||">|/").split("|")[0]||"/",y=g.replace(/\[([^\]]+)\]/,`[${b}]`).trimEnd()+` ^${m}`;try{h.editor.replaceRange(y,{line:k.number-1,ch:0},{line:k.number-1,ch:g.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 k=(((u=(c=(l=this.plugin)==null?void 0:l.settings)==null?void 0:c.taskStatuses)==null?void 0:u.inProgress)||">|/").split("|")[0]||"/";this.updateTaskStatus(`[${k}]`)}`${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",k=m.replace(/\[([^\]]+)\]/,`[${h}]`),g=k.match(/\s*\^[\w-]+\s*$/);if(g){let v=k.length-g[0].length;k=k.slice(0,v)+` (${c})`+k.slice(v)}else k=k.replace(/\s*$/,` (${c})`);try{u.dispatch({changes:{from:p.from,to:p.to,insert:k}})}catch(v){console.error("[TaskTimer] Error updating task:",v);let b=this.state.field($i.editorInfoField);b!=null&&b.editor&&b.editor.replaceRange(k,{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)}},XV=xf.StateField.define({create(n){return BD(n)},update(n,a){let e=a.isUserEvent("undo")||a.isUserEvent("redo");return a.docChanged||a.effects.length>0||e?(a.docChanged&&JV(a),BD(a.state)):n},provide:n=>ki.EditorView.decorations.from(n)});function BD(n){var c,u,p,m,f;let a=n.facet(ib);if(!((c=a==null?void 0:a.settings)!=null&&c.enabled))return ki.Decoration.none;let e=n.field($i.editorInfoField);if(!(e!=null&&e.app))return ki.Decoration.none;let t=e.app.workspace.getActiveFile();if(!t)return ki.Decoration.none;if(t.path,!new bf(a.settings,a.metadataCache).isTaskTimerEnabled(t))return t.path,ki.Decoration.none;let i=new Xn(a.settings),s=[],o=n.doc;o.lines;let l=1/0;for(let h=1;h<=o.lines;h++){let g=o.line(h).text;if(ab(g)){let v=((u=g.match(/^(\s*)/))==null?void 0:u[1].length)||0;v<l&&(l=v)}}for(let h=1;h<=o.lines;h++){let k=o.line(h),g=k.text;if(ab(g)&&(g.trim(),(((p=g.match(/^(\s*)/))==null?void 0:p[1].length)||0)===l)){let y=g.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(y){let T=y[1],C=((f=(m=a==null?void 0:a.plugin)==null?void 0:m.settings)==null?void 0:f.taskStatuses)||{completed:"x|X",abandoned:"-"};if(C.completed.split("|").includes(T)||C.abandoned.split("|").includes(T)&&!rb(g))continue}let w=rb(g),x=ki.Decoration.widget({widget:new tb(n,a.settings,i,k.from,k.to,t.path,a.plugin,w),side:-1,block:!0});s.push(x.range(k.from))}}return s.length,ki.Decoration.set(s,!0)}function ab(n){return/^\s*[-*+]\s+\[[^\]]*\]/.test(n)}function rb(n){let a=n.match(/\^([a-zA-Z0-9\-_]+)/);return a?a[1]:void 0}function JV(n){var s;let a=n.state.facet(ib);if(!((s=a==null?void 0:a.settings)!=null&&s.enabled)||!a.plugin)return;let e=n.state.field($i.editorInfoField);if(!(e!=null&&e.app))return;let t=e.app.workspace.getActiveFile();if(!t)return;let r=new Xn(a.settings),i=n.state.doc;n.changes.iterChangedRanges((o,l,c,u)=>{var f,h;let p=i.lineAt(c).number,m=i.lineAt(u).number;for(let k=p;k<=m;k++){if(k>i.lines)continue;let v=i.line(k).text;if(!ab(v))continue;let b=rb(v);if(!b)continue;let y=v.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(!y)continue;let w=y[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 VD(n){let a={settings:n.settings.taskTimer,metadataCache:n.app.metadataCache,plugin:n};return[ib.of(a),XV]}var Cf=require("obsidian");function sb(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 ZV(n){if(!n)return null;let a=n.match(kl);return a?Number(a[2]):null}function WD(n){if(!n)return null;let a=sb(n);return a?ZV(a):null}function zD(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=sb(n);if(!e)return null;let t=e.match(kl);if(!t)return null;let r=parseInt(t[2],10);return n.setAttribute("data-custom-goal",r.toString()),r}function $D(n){if(!n)return!1;let a=sb(n);return a?!!a.match(kl):!1}function nb(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 ob(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 lb(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 cc(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 db(n,a,e){n.settings.addTaskProgressBarToHeading&&a.forEach((t,r)=>{if(!r||t.length===0)return;let i={parentElement:r,childrenElement:t},s=new cc(n,i,e).onload();r.appendChild(s)})}function UD({plugin:n,element:a,ctx:e}){var t,r;if(!OD(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 k=h[1].length;if(p&&k<=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 g of m){let v=createEl("li",{cls:"task-list-item"}),b=g.match(/\[(.)\]/);if(b&&b[1]){let w=b[1];v.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),v.prepend(x)}let y=g.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");v.appendChild(createSpan({text:y})),f.push(v)}let h={parentElement:a.children[0],childrenElement:f},k=new cc(n,h,"normal",{sectionInfo:i,ctx:e,element:a}).onload();a.children[0].appendChild(k)}}}if(a.find("ul.contains-task-list")){let i=a.findAll(".task-list-item"),s=nb(i);if(lb(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=ob(a);db(n,o,"normal")}}else if(a.find("ol.contains-task-list")){let i=a.findAll(".task-list-item"),s=nb(i);if(lb(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=ob(a);db(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=nb(s);if(lb(n,o,"dataview"),n.settings.addTaskProgressBarToHeading){let l=ob(i);db(n,l,"dataview")}i.setAttribute("data-task-progress-bar","true")}}}var cc=class extends Cf.Component{constructor(e,t,r,i){super();this.type=r;this.debounceUpdateFromModifiedFile=(0,Cf.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 k,g,v;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 y=b.match(/^(#{1,6})\s/);if(y){let w=y[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 y=createEl("li",{cls:"task-list-item"}),w=b.match(/\[(.)\]/);if(w&&w[1]){let T=w[1];y.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),y.prepend(C)}let x=b.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");y.appendChild(createSpan({text:x})),f.push(y)}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;(k=this.progressBarEl)==null||k.detach(),this.onunload();let y=this.onload();this.progressBarEl.remove(),b.appendChild(y),(((g=this.plugin)==null?void 0:g.settings.progressBarDisplayMode)==="text"||((v=this.plugin)==null?void 0:v.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,k,g,v,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":(((k=(h=this.plugin)==null?void 0:h.settings.taskStatuses.planned)==null?void 0:k.split("|"))||["?"]).includes(e)?"planned":(((v=(g=this.plugin)==null?void 0:g.settings.taskStatuses.notStarted)==null?void 0:v.split("|"))||[" "]).includes(e)?"notStarted":((b=this.plugin)==null?void 0:b.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,c,u,p,m,f,h,k,g;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":(((g=(k=this.plugin)==null?void 0:k.settings.taskStatuses.notStarted)==null?void 0:g.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 g=f.parentElement;if(g&&g.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let v=f.closest("li");if(v){let b=v.parentElement;if((p=b==null?void 0:b.parentElement)==null?void 0:p.closest("li"))continue}}}o++;let k=f.getAttribute("data-task");if(k){let g=this.getTaskStatusFromDataTask(k);this.isCompletedTaskFromDataTask(k)?e++:g==="inProgress"?t++:g==="abandoned"?r++:g==="planned"?i++:g==="notStarted"&&s++}else{let g=((m=f.textContent)==null?void 0:m.trim())||"",v=g.match(/\[(.)]/);if(v&&v[1]){let b=this.getTaskStatus(g);this.isCompletedTask(g)?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)&&$D((u=m.parentElement)==null?void 0:u.parentElement),k=m.querySelector(".task-list-item-checkbox");if(!k)continue;let g=m.getAttribute("data-task");if(g){let v=this.getTaskStatusFromDataTask(g);h&&(f=WD(m)),this.isCompletedTaskFromDataTask(g)?(h||t++,f!==null&&(t+=f)):v==="inProgress"?(h||r++,h&&f!==null&&(r+=f)):v==="abandoned"?(h||i++,h&&f!==null&&(i+=f)):v==="planned"?(h||s++,h&&f!==null&&(s+=f)):v==="notStarted"&&(h||o++,h&&f!==null&&(o+=f))}else{let v=((p=m.textContent)==null?void 0:p.trim())||"",b=k,y=v.match(/\[(.)]/);if(y&&y[1]){let w=this.getTaskStatus(v);this.isCompletedTask(v)?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 k of this.group.childrenElement){let g=k.parentElement;g&&(t.has(g)||t.set(g,[]),(u=t.get(g))==null||u.push(k))}let r=[];for(let k of this.group.childrenElement){if(!k.querySelector(".task-list-item-checkbox"))continue;if(r.push(k),(p=this.plugin)!=null&&p.settings.countSubLevel){if((f=this.plugin)!=null&&f.settings.countSubLevel){let b=k.findAll(".task-list-item");for(let y of b)e++,r.push(y)}}else{let b=k.parentElement;if(b&&b.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let y=k.closest("li");if(y){let w=y.parentElement;if((m=w==null?void 0:w.parentElement)==null?void 0:m.closest("li"))continue}}}let v=zD((h=k.parentElement)==null?void 0:h.parentElement);v?e=v: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=Es({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=Es({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 Il=require("obsidian");var _D=/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g;var dn={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}"},yl={"\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();Nb();so();wc();var Lb=null,lR=null,dR=null;function hW(n,a){return(!Lb||dR!==n||lR!==a)&&(Lb=new Ti(un(n,a)),dR=n,lR=a),Lb}function pn(n,a,e,t,r){let s=hW(t,r).parseLegacy(a,n);if(s.length>0){let o=s[0];return o.line=e,o}return null}function Ot(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 Yr(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 cR(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 uR({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 jb(n,i,s,o,e).load()}}var jb=class extends Il.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,Il.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 v;let e=this.ctx.getSectionInfo(this.taskItem),t=this.ctx.sourcePath?this.plugin.app.vault.getFileByPath(this.ctx.sourcePath):null;if(!t||!(t instanceof Il.TFile))return;let r=null;if(!e){if((v=this.ctx.containerEl)!=null&&v.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=ln(this.plugin),k=m==="DONE"&&h,g=c==="DONE";this.plugin.app.vault.process(t,b=>{var T;let y=b.split(`
|
||
`),w,x;if(e){let C=parseInt(this.taskItem.getAttribute("data-line")||"0");w=e.lineStart+C,x=y[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=y[w]}else return b;if(k){let C=h.executeToggleTaskDoneCommand(x,t.path),S=C.split(`
|
||
`);S.length===1?y[w]=C:y.splice(w,1,...S),this.currentMark=f,this.triggerMarkUpdate(f),this.originalCheckbox.checked=!0}else{let C=x;if(g&&(C=C.replace(/\s+✅\s+\d{4}-\d{2}-\d{2}/,"")),C=C.replace(/(\s*[-*+]\s*\[)(.)(])/,`$1${f}$3`),C!==x){y[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=pn(t.path,x,w,this.plugin.settings.preferMetadataFormat,this.plugin);C&&this.plugin.app.workspace.trigger("task-genius:task-completed",C)}return y.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()}};Y();var pe={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 ut(n,a){let e=n.settings.viewConfiguration||pe.viewConfiguration,t=e.find(l=>l.id===a),s=pe.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 Ra=require("obsidian");Y();var Di=require("obsidian");Y();var Zi=require("obsidian");Y();Y();var mn=class{constructor(a){this.plugin=a}getOnboardingConfigs(){return[this.getBeginnerConfig(),this.getAdvancedConfig(),this.getPowerUserConfig()]}getBeginnerConfig(){let a=pe.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:{...pe.quickCapture,enableQuickCapture:!0},workflow:{...pe.workflow,enableWorkflow:!1},rewards:{...pe.rewards,enableRewards:!1},habit:{...pe.habit,enableHabits:!1},fileParsingConfig:{...pe.fileParsingConfig,enableWorkerProcessing:!1,enableFileMetadataParsing:!1,enableTagBasedTaskParsing:!1},timelineSidebar:{...pe.timelineSidebar,enableTimelineSidebar:!1},betaTest:{enableBaseView:!1}}}}getAdvancedConfig(){let a=pe.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:{...pe.quickCapture,enableQuickCapture:!0},projectConfig:{...pe.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...pe.fileMetadataInheritance,enabled:!0},workflow:{...pe.workflow,enableWorkflow:!0,autoAddTimestamp:!0},autoDateManager:{...pe.autoDateManager,enabled:!0},completedTaskMover:{...pe.completedTaskMover,enableCompletedTaskMover:!0},rewards:{...pe.rewards,enableRewards:!1},habit:{...pe.habit,enableHabits:!1},fileParsingConfig:{...pe.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!1},timelineSidebar:{...pe.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:pe.viewConfiguration,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...pe.quickCapture,enableQuickCapture:!0,enableMinimalMode:!0},projectConfig:{...pe.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...pe.fileMetadataInheritance,enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!0},workflow:{...pe.workflow,enableWorkflow:!0,autoAddTimestamp:!0,calculateSpentTime:!0},rewards:{...pe.rewards,enableRewards:!0},habit:{...pe.habit,enableHabits:!0},fileParsingConfig:{...pe.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!0,enableTagBasedTaskParsing:!0,enableMtimeOptimization:!0},timelineSidebar:{...pe.timelineSidebar,enableTimelineSidebar:!0},autoDateManager:{...pe.autoDateManager,enabled:!0,manageCompletedDate:!0,manageStartDate:!0},completedTaskMover:{...pe.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=pe.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={...pe.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={...pe.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={...pe.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,k,g;let t=this.getOnboardingConfigs().find(v=>v.mode===a);if(!t)throw new Error(`Configuration mode ${a} not found`);let r=this.plugin.settings.viewConfiguration||[],i=r.filter(v=>v.type==="custom"),s=t.settings.viewConfiguration||[],o=new Set(r.map(v=>v.id)),l=s.filter(v=>!o.has(v.id)),c=s.filter(v=>o.has(v.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)!==((k=this.plugin.settings.workflow)==null?void 0:k.enableWorkflow)&&u.push(`Workflow ${(g=t.settings.workflow)!=null&&g.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 PR=require("obsidian"),Al=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,PR.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}};Y();var Ui=require("obsidian"),Fl=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,Ui.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,Ui.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,Ui.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,Ui.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,Ui.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,Ui.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,Ui.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,Ui.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,Ui.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 Ao=require("obsidian");Y();var wa=require("obsidian");var MR=require("obsidian"),Mh=require("@codemirror/state"),Rl=require("@codemirror/view");function zb(n,a){let e=Object.keys(a).map(t=>SW(n,t,a[t]));return e.length===1?e[0]:function(){e.forEach(t=>t())}}function SW(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 _i(n,a,e){let t=DW(n);return new $b(n,t,a,e)}function DW(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 EW={cursorLocation:{anchor:0,head:0},value:"",singleLine:!1,cls:"",placeholder:"",onEnter:()=>!1,onEscape:()=>{},onSubmit:()=>{},onBlur:()=>{},onPaste:()=>{},onChange:()=>{}},$b=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={...EW,...r},this.initial_value=this.options.value,this.scope=new MR.Scope(a.scope),this.scope.register(["Mod"],"Enter",()=>!0);let i=this,s=zb(e.prototype,{buildLocalExtensions:c=>function(){let u=c.call(this);if(this===i.editor){i.options.placeholder&&u.push((0,Rl.placeholder)(i.options.placeholder)),u.push(Rl.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(Mh.Prec.highest(Rl.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(zb(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:Mh.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()}};Nl();var xi=require("obsidian"),Ih=null,AW=3e4;async function Yb(n){let a=Date.now();if(!Ih||a-Ih.lastUpdate>AW){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)}Ih={tags:e,projects:t,contexts:r,lastUpdate:a}}return Ih}var qb=class extends xi.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()}},fn=class extends qb{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,xi.prepareFuzzySearch)(e.toLowerCase());return this.availableChoices.filter(r=>t(r.toLowerCase())).slice(0,100)}getSuggestionText(e){return e}getSuggestionValue(e){return e}},ur=class extends fn{constructor(a,e,t){super(a,e,[]),Yb(t).then(r=>{this.availableChoices=r.projects})}},pr=class extends fn{constructor(a,e,t){super(a,e,[]),Yb(t).then(r=>{this.availableChoices=r.contexts})}},Gr=class extends fn{constructor(a,e,t){super(a,e,[]),Yb(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,xi.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}`}},Ah=class extends fn{constructor(a,e,t){let i=a.vault.getAllFolders().map(s=>s.path);super(a,e,["/",...i])}},Fh=class extends fn{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,xi.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,xi.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}},Rh=class extends fn{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)}},no=class extends xi.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,xi.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()}},Oh=class extends xi.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,xi.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()}};Y();var Tc=require("obsidian");function FW(n){let a="",e=0;for(;e<n.length;)if(e<n.length-1&&n[e]==="["&&n[e+1]==="["){let t=e+2,r=1;for(;t<n.length-1&&r>0;){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(_D);t&&t.index===0?e+=t[0].length:(a+=n[e],e++)}else a+=n[e],e++;return a}function Ba(n){if(!n)return n;let a=n,e=[dn.startDateSymbol,dn.createdDateSymbol,dn.scheduledDateSymbol,dn.dueDateSymbol,dn.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,""),dn.recurrenceSymbol){let p=dn.recurrenceSymbol.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),m=e.map(k=>k.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),f=["\u{1F194}","\u26D4","\u{1F3C1}"].map(k=>k.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.min(h.index+h.length,m))||t.push({text:o[0],index:p,length:o[0].length,id:`wiki_${l++}`})}for(s.lastIndex=0;(o=s.exec(a))!==null;){let p=o.index,m=p+o[0].length;t.some(h=>Math.max(h.index,p)<Math.min(h.index+h.length,m))||t.push({text:o[0],index:p,length:o[0].length,id:`md_${l++}`})}let c=a,u=new Map;if(t.length>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=FW(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 It=class extends Tc.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;i<r.length;i++){let s=`block-${Date.now()}-${i}`,o=this.container.createEl("div",{cls:["markdown-block","markdown-renderer"]});o.dataset.blockId=s,this.blockElements.set(s,o),this.queueRender(r[i],s)}this.processRenderQueue()}splitIntoBlocks(e){return this.hideMarks?Ba(e).split(/\n\s*\n/).filter(t=>t.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 Tc.MarkdownRenderer.render(this.app,t,i,this.sourcePath,this))}else await Tc.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 lo=require("obsidian"),FR=require("obsidian");var Va=require("obsidian");Y();var mr=require("obsidian");Y();var Lh=require("obsidian"),Nh=class extends Lh.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()}},Ll=class extends Lh.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 hn=class extends mr.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 mr.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 mr.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 Nh(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 mr.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 Ll(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 mr.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 mr.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 Ll(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 mr.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 mr.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 Ll(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 mr.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 mr.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 Yi(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 As(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 RW(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 AR(n,a){return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[n]||"No status"}function OW(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 Tt(n,a,e){let t=e.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"}),r=OW(n);return t.dataset.task=r,t.checked=r!==" ",t}var Gi=class extends Va.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 Va.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(Ba(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(RW(e,this.plugin.settings))});let i=new gn(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 Va.TextComponent(t);e.content,r.setValue(Ba(e.content)),r.inputEl.addClass("details-edit-content");let i=this.createFormField(this.editFormEl,d("Project")),s=Ot(e),o=Yr(e),l=new Va.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"}),q="",oe="";switch(V.type){case"path":q=d("Auto-assigned from path")+`: ${V.source}`,oe="\u{1F4C1}";break;case"metadata":q=d("Auto-assigned from file metadata")+`: ${V.source}`,oe="\u{1F4C4}";break;case"config":q=d("Auto-assigned from config file")+`: ${V.source}`,oe="\u2699\uFE0F";break;default:q=d("Auto-assigned")+`: ${V.source}`,oe="\u{1F517}"}G.createEl("span",{cls:"indicator-icon",text:oe}),G.createEl("span",{cls:"indicator-text",text:q}),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 ur(this.app,l.inputEl,this.plugin);let c=this.createFormField(this.editFormEl,d("Tags")),u=new Va.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 Gr(this.app,u.inputEl,this.plugin);let p=this.createFormField(this.editFormEl,d("Context")),m=new Va.TextComponent(p);m.setValue(e.metadata.context||""),new pr(this.app,m.inputEl,this.plugin);let f=this.createFormField(this.editFormEl,d("Priority")),h=new Va.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 g=this.createFormField(this.editFormEl,d("Due Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.dueDate&&(g.value=Yi(e.metadata.dueDate));let b=this.createFormField(this.editFormEl,d("Start Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.startDate&&(b.value=Yi(e.metadata.startDate));let w=this.createFormField(this.editFormEl,d("Scheduled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.scheduledDate&&(w.value=Yi(e.metadata.scheduledDate));let T=this.createFormField(this.editFormEl,d("Cancelled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.cancelledDate&&(T.value=Yi(e.metadata.cancelledDate));let C=this.createFormField(this.editFormEl,d("On Completion")),S=(0,Va.debounce)(async()=>{let V={...e},G=r.getValue();V.content=G;let q={...V.metadata},oe=l.getValue();o?q.project=e.metadata.project:q.project=oe||void 0;let le=u.getValue();q.tags=le?le.split(",").map(ce=>ce.trim()).map(ce=>ce.startsWith("#")?ce.slice(1):ce).filter(ce=>ce):[];let be=m.getValue();q.context=be||void 0;let Ae=h.getValue();q.priority=Ae?parseInt(Ae):void 0;let De=g.value;if(De){let ce=As(De);e.metadata.dueDate!==ce?q.dueDate=ce:q.dueDate=e.metadata.dueDate}else!De&&e.metadata.dueDate?q.dueDate=void 0:q.dueDate=e.metadata.dueDate;let et=b.value;if(et){let ce=As(et);e.metadata.startDate!==ce?q.startDate=ce:q.startDate=e.metadata.startDate}else!et&&e.metadata.startDate?q.startDate=void 0:q.startDate=e.metadata.startDate;let Ke=w.value;if(Ke){let ce=As(Ke);e.metadata.scheduledDate!==ce?q.scheduledDate=ce:q.scheduledDate=e.metadata.scheduledDate}else!Ke&&e.metadata.scheduledDate?q.scheduledDate=void 0:q.scheduledDate=e.metadata.scheduledDate;let Re=T.value;if(Re){let ce=As(Re);e.metadata.cancelledDate!==ce?q.cancelledDate=ce:q.cancelledDate=e.metadata.cancelledDate}else!Re&&e.metadata.cancelledDate?q.cancelledDate=void 0:q.cancelledDate=e.metadata.cancelledDate;let ne=N.getValue();q.dependsOn=ne?ne.split(",").map(ce=>ce.trim()).filter(ce=>ce):void 0;let he=E.getValue();q.onCompletion=he||void 0;let Se=R.getValue();q.id=Se||void 0;let Qe=W.getValue();q.recurrence=Qe||void 0,V.metadata=q;let Ue=this.hasTaskChanges(e,V);if(this.onTaskUpdate&&Ue)try{await this.onTaskUpdate(e,V),this.currentTask=V,this.isEditing=!1,this.showTaskDetails(V)}catch(ce){console.error("Failed to update task:",ce)}},800),E=new hn(C,this.plugin,{initialValue:e.metadata.onCompletion||"",onChange:V=>{let G=E.getConfig();this.shouldTriggerOnCompletionSave(G,V)&&S()},onValidationChange:(V,G)=>{let q=C.querySelector(".oncompletion-validation-message");if(q&&q.remove(),G){let oe=C.createDiv({cls:"oncompletion-validation-message error",text:G})}else if(V){let oe=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 Va.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 Va.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 Va.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(g),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<l.length;u++)if(l[u]!==c[u])return!0}else if(s!==o)return!0}return!1}createFormField(e,t){let r=e.createDiv({cls:"details-form-field"});return r.createDiv({cls:"details-form-label",text:t}),r.createDiv({cls:"details-form-input"})}addMetadataField(e,t,r){let i=e.createDiv({cls:"metadata-field"});i.createDiv({cls:"metadata-label"}).setText(t),i.createDiv({cls:"metadata-value"}).setText(r)}async editTask(e){var s,o;if(typeof e=="object"&&"isFileTask"in e){let l=e,c=this.app.vault.getFileByPath(l.sourceEntry.file.path);if(!c)return;await this.app.workspace.getLeaf(!0).openFile(c);let p=(s=this.app.workspace.activeEditor)==null?void 0:s.editor;p&&(p.setCursor({line:l.line||0,ch:0}),p.focus());return}let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;await this.app.workspace.getLeaf(!1).openFile(t);let i=(o=this.app.workspace.activeEditor)==null?void 0:o.editor;i&&(i.setCursor({line:e.line||0,ch:0}),i.focus())}setVisible(e){this.isVisible=e,e?(this.containerEl.show(),this.containerEl.addClass("visible"),this.containerEl.removeClass("hidden")):(this.containerEl.addClass("hidden"),this.containerEl.removeClass("visible"),setTimeout(()=>{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()}};Y();var gn=class extends FR.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":AR(o.status,this.plugin.settings)}}),c=l;this.plugin.settings.enableTaskGeniusIcons?(0,lo.setIcon)(c,o.status):c=Tt(o.text,{...this.task,status:o.text},l),this.registerDomEvent(c,"click",u=>{var m,f,h,k;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),(k=(h=this.params).onTaskStatusSelected)==null||k.call(h,o.text),this.task={...this.task,status:o.text},this.containerEl.querySelectorAll(".status-option").forEach(g=>{g.removeClass("current")}),l.addClass("current")})});let i=e.createEl("div",{cls:"more-status"}),s=new lo.ExtraButtonComponent(i).setIcon("ellipsis").onClick(()=>{var p;let o=new lo.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 g={" ":"notStarted","/":"inProgress",x:"completed","-":"abandoned","?":"planned",">":"inProgress",X:"completed"}[f];this.plugin.settings.enableTaskGeniusIcons&&g?h.titleEl.createEl("span",{cls:"status-option-icon"},v=>{(0,lo.setIcon)(v,g)}):h.titleEl.createEl("span",{cls:"status-option-checkbox"},v=>{Tt(f,this.task,v)}),h.titleEl.createEl("span",{cls:"status-option",text:m}),h.onClick(()=>{var v,b,y,w;(b=(v=this.params).onTaskUpdate)==null||b.call(v,this.task,{...this.task,status:f}),(w=(y=this.params).onTaskStatusSelected)==null||w.call(y,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 RT={};wt(RT,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingContext:()=>Yc,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>FT,de:()=>kw,en:()=>dw,es:()=>wT,fr:()=>Ew,ja:()=>Aw,nl:()=>Uw,parse:()=>z_,parseDate:()=>$_,pt:()=>Lw,ru:()=>hT,strict:()=>W_,uk:()=>AT,zh:()=>sT});var dw={};wt(dw,{Chrono:()=>ve,GB:()=>zz,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>Gc,configuration:()=>qh,parse:()=>$z,parseDate:()=>Uz,strict:()=>lw});var BR=Fe(RR(),1),Zb=Fe(qe(),1);var $;(function(n){n[n.AM=0]="AM",n[n.PM=1]="PM"})($||($={}));var ye;(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"})(ye||(ye={}));var Mr;(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"})(Mr||(Mr={}));function OR(n,a){n.assign("day",a.getDate()),n.assign("month",a.getMonth()+1),n.assign("year",a.getFullYear())}function NR(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 jh(n,a){n.imply("day",a.getDate()),n.imply("month",a.getMonth()+1),n.imply("year",a.getFullYear())}function LR(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 Jb=Fe(qe(),1);var LW={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=>jR(n,Mr.MARCH,ye.SUNDAY,2),dstEnd:n=>jR(n,Mr.OCTOBER,ye.SUNDAY,3)},CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CT:{timezoneOffsetDuringDst:-300,timezoneOffsetNonDst:-360,dstStart:n=>kn(n,Mr.MARCH,ye.SUNDAY,2,2),dstEnd:n=>kn(n,Mr.NOVEMBER,ye.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=>kn(n,Mr.MARCH,ye.SUNDAY,2,2),dstEnd:n=>kn(n,Mr.NOVEMBER,ye.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=>kn(n,Mr.MARCH,ye.SUNDAY,2,2),dstEnd:n=>kn(n,Mr.NOVEMBER,ye.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=>kn(n,Mr.MARCH,ye.SUNDAY,2,2),dstEnd:n=>kn(n,Mr.NOVEMBER,ye.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 kn(n,a,e,t,r=0){let i=0,s=0;for(;s<t;)i++,new Date(n,a-1,i).getDay()===e&&s++;return new Date(n,a-1,i,r)}function jR(n,a,e,t=0){let r=e===0?7:e,i=new Date(n,a-1+1,1,12),s=i.getDay()===0?7:i.getDay(),o;return s===r?o=7:s<r?o=7+s-r:o=s-r,i.setDate(i.getDate()-o),new Date(n,a-1,i.getDate(),t)}function Hh(n,a,e={}){var r;if(n==null)return null;if(typeof n=="number")return n;let t=(r=e[n])!=null?r:LW[n];return t==null?null:typeof t=="number"?t:a==null?null:(0,Jb.default)(a).isAfter(t.dstStart(a.getFullYear()))&&!(0,Jb.default)(a).isAfter(t.dstEnd(a.getFullYear()))?t.timezoneOffsetDuringDst:t.timezoneOffsetNonDst}function HR(n,a){var t,r,i,s,o,l,c;let e=new Date(n);if(a.y&&(a.year=a.y,delete a.y),a.mo&&(a.month=a.mo,delete a.mo),a.M&&(a.month=a.M,delete a.M),a.w&&(a.week=a.w,delete a.w),a.d&&(a.day=a.d,delete a.d),a.h&&(a.hour=a.h,delete a.h),a.m&&(a.minute=a.m,delete a.m),a.s&&(a.second=a.s,delete a.s),a.ms&&(a.millisecond=a.ms,delete a.ms),"year"in a){let u=Math.floor(a.year);e.setFullYear(e.getFullYear()+u);let p=a.year-u;p>0&&(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 jl(n){let a={};for(let e in n)a[e]=-n[e];return a}Zb.default.extend(BR.default);var Ye=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=Hh(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,Zb.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=HR(a.getDateWithAdjustedTimezone(),e),r=new n(a);return r.addTag("result/relativeDate"),e.hour||e.minute||e.second?(r.addTag("result/relativeDateAndTime"),NR(r,t),OR(r,t),r.assign("timezoneOffset",a.getTimezoneOffset())):(LR(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}},We=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 Ja(n,a,e="\\s{0,5},?\\s{0,5}"){let t=a.replace(/\((?!\?)/g,"(?:");return`${n}${t}(?:${e}${t}){0,10}`}function jW(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`(?:${jW(n).sort((e,t)=>t.length-e.length).join("|").replace(/\./g,"\\.")})`}var VR=Fe(qe(),1);function fr(n){return n<100&&(n>50?n=n+1900:n=n+2e3),n}function Je(n,a,e){let t=(0,VR.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))<Math.abs(r.diff(t))?r=i:Math.abs(s.diff(t))<Math.abs(r.diff(t))&&(r=s),r.year()}var Bh={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6},aw={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},Kr={...aw,jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12},ew={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},tw={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31},zR={second:"second",seconds:"second",minute:"minute",minutes:"minute",hour:"hour",hours:"hour",day:"d",days:"d",week:"week",weeks:"week",month:"month",months:"month",quarter:"quarter",quarters:"quarter",year:"year",years:"year"},xc={s:"second",sec:"second",second:"second",seconds:"second",m:"minute",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",d:"d",day:"d",days:"d",w:"w",week:"week",weeks:"week",mo:"month",mon:"month",mos:"month",month:"month",months:"month",qtr:"quarter",quarter:"quarter",quarters:"quarter",y:"year",yr:"year",year:"year",years:"year",...zR},$R=`(?:${te(ew)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;function HW(n){let a=n.toLowerCase();return ew[a]!==void 0?ew[a]:a==="a"||a==="an"||a=="the"?1:a.match(/few/)?3:a.match(/half/)?.5:a.match(/couple/)?2:a.match(/several/)?7:parseFloat(a)}var Hl=`(?:${te(tw)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;function Bl(n){let a=n.toLowerCase();return tw[a]!==void 0?tw[a]:(a=a.replace(/(?:st|nd|rd|th)$/i,""),parseInt(a))}var vn="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9]|2[0-5])";function yn(n){if(/BE/i.test(n))return n=n.replace(/BE/i,""),parseInt(n)-543;if(/BCE?/i.test(n))return n=n.replace(/BCE?/i,""),-parseInt(n);if(/(AD|CE)/i.test(n))return n=n.replace(/(AD|CE)/i,""),parseInt(n);let a=parseInt(n);return fr(a)}var UR=`(${$R})\\s{0,3}(${te(xc)})`,WR=new RegExp(UR,"i"),BW=`(${$R})\\s{0,3}(${te(zR)})`,_R="\\s{0,5},?(?:\\s*and)?\\s{0,5}",Fs=Ja("(?:(?:about|around)\\s{0,3})?",UR,_R),bn=Ja("(?:(?:about|around)\\s{0,3})?",BW,_R);function Qr(n){let a={},e=n,t=WR.exec(e);for(;t;)VW(a,t),e=e.substring(t[0].length).trim(),t=WR.exec(e);return Object.keys(a).length==0?null:a}function VW(n,a){if(a[0].match(/^[a-zA-Z]+$/))return;let e=HW(a[1]),t=xc[a[2].toLowerCase()];n[t]=e}var U=class{constructor(){z(this,"cachedInnerPattern",null);z(this,"cachedPattern",null)}innerPatternHasChange(a,e){return this.innerPattern(a)!==e}patternLeftBoundary(){return"(\\W|^)"}pattern(a){return this.cachedInnerPattern&&!this.innerPatternHasChange(a,this.cachedInnerPattern)?this.cachedPattern:(this.cachedInnerPattern=this.innerPattern(a),this.cachedPattern=new RegExp(`${this.patternLeftBoundary()}${this.cachedInnerPattern.source}`,this.cachedInnerPattern.flags),this.cachedPattern)}extract(a,e){var r;let t=(r=e[1])!=null?r:"";e.index=e.index+t.length,e[0]=e[0].substring(t.length);for(let i=2;i<e.length;i++)e[i-1]=e[i];return this.innerExtract(a,e)}};var WW=new RegExp(`(?:(?:within|in|for)\\s*)?(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Fs})(?=\\W|$)`,"i"),zW=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Fs})(?=\\W|$)`,"i"),$W=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${bn})(?=\\W|$)`,"i"),Cc=class extends U{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(e){return this.strictMode?$W:e.option.forwardDate?WW:zW}innerExtract(e,t){if(t[0].match(/^for\s*the\s*\w+/))return null;let r=Qr(t[1]);return r?(e.debug(()=>{K.createRelativeFromReference(e.reference,r)}),K.createRelativeFromReference(e.reference,r)):null}};var UW=new RegExp(`(?:on\\s{0,3})?(${Hl})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${Hl}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${te(Kr)})(?:(?:-|/|,?\\s{0,3})(${vn}(?!\\w)))?(?=\\W|$)`,"i"),qR=1,YR=2,_W=3,GR=4,Sc=class extends U{innerPattern(){return UW}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Kr[e[_W].toLowerCase()],i=Bl(e[qR]);if(i>31)return e.index=e.index+e[qR].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[GR]){let s=yn(e[GR]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[YR]){let s=Bl(e[YR]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var qW=new RegExp(`(${te(Kr)})(?:-|/|\\s*,?\\s*)(${Hl})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${Hl})\\s*)?(?:(?:-|/|\\s*,\\s*|\\s+)(${vn}))?(?=\\W|$)(?!\\:\\d)`,"i"),YW=1,KR=2,rw=3,iw=4,Dc=class extends U{constructor(e){super();z(this,"shouldSkipYearLikeDate");this.shouldSkipYearLikeDate=e}innerPattern(){return qW}innerExtract(e,t){let r=Kr[t[YW].toLowerCase()],i=Bl(t[KR]);if(i>31||this.shouldSkipYearLikeDate&&!t[rw]&&!t[iw]&&t[KR].match(/^2[0-5]$/))return null;let s=e.createParsingComponents({day:i,month:r}).addTag("parser/ENMonthNameMiddleEndianParser");if(t[iw]){let c=yn(t[iw]);s.assign("year",c)}else{let c=Je(e.refDate,i,r);s.imply("year",c)}if(!t[rw])return s;let o=Bl(t[rw]),l=e.createParsingResult(t.index,t[0]);return l.start=s,l.end=s.clone(),l.end.assign("day",o),l}};var GW=new RegExp(`((?:in)\\s*)?(${te(Kr)})\\s*(?:(?:,|-|of)?\\s*(${vn})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),KW=1,QW=2,QR=3,Ec=class extends U{innerPattern(){return GW}innerExtract(a,e){let t=e[QW].toLowerCase();if(e[0].length<=3&&!aw[t])return null;let r=a.createParsingResult(e.index+(e[KW]||"").length,e.index+e[0].length);r.start.imply("day",1),r.start.addTag("parser/ENMonthNameParser");let i=Kr[t];if(r.start.assign("month",i),e[QR]){let s=yn(e[QR]);r.start.assign("year",s)}else{let s=Je(a.refDate,1,i);r.start.imply("year",s)}return r}};var XW=new RegExp(`([0-9]{4})[-\\.\\/\\s](?:(${te(Kr)})|([0-9]{1,2}))[-\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),JW=1,ZW=2,XR=3,ez=4,Pc=class extends U{constructor(e){super();z(this,"strictMonthDateOrder");this.strictMonthDateOrder=e}innerPattern(){return XW}innerExtract(e,t){let r=parseInt(t[JW]),i=parseInt(t[ez]),s=t[XR]?parseInt(t[XR]):Kr[t[ZW].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 tz=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),az=1,rz=2,Mc=class extends U{innerPattern(){return tz}innerExtract(a,e){let t=parseInt(e[rz]),r=parseInt(e[az]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};function iz(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 sz(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 JR=2,Vl=3,Vh=4,Wh=5,Ic=6,ga=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[JR]);if(o>100){if(this.strictMode||e[Vl]!=null)return null;i=o%100,o=Math.floor(o/100)}if(o>24)return null;if(e[Vl]!=null){if(e[Vl].length==1&&!e[Ic])return null;i=parseInt(e[Vl])}if(i>=60)return null;if(o>12&&(s=$.PM),e[Ic]!=null){if(o>12)return null;let l=e[Ic][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[Wh]!=null){let l=parseInt(e[Wh].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[Vh]!=null){let l=parseInt(e[Vh]);if(l>=60)return null;r.assign("second",l)}return r}extractFollowingTimeComponents(a,e,t){let r=a.createParsingComponents();if(e[Wh]!=null){let l=parseInt(e[Wh].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[Vh]!=null){let l=parseInt(e[Vh]);if(l>=60)return null;r.assign("second",l)}let i=parseInt(e[JR]),s=0,o=-1;if(e[Vl]!=null?s=parseInt(e[Vl]):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=$.PM),e[Ic]!=null){if(i>12)return null;let l=e[Ic][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()<t.start.date().getTime()&&r.imply("day",r.get("day")+1),r}checkAndReturnWithoutFollowingPattern(a){if(a.text.match(/^\d$/)||a.text.match(/^\d\d\d+$/)||a.text.match(/\d[apAP]$/))return null;let e=a.text.match(/[^\d:.](\d[\d.]+)$/);if(e){let t=e[1];if(this.strictMode||t.includes(".")&&!t.match(/\d(\.\d{2})+$/)||parseInt(t)>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=iz(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=sz(a,e),this.cachedFollowingPhase=a,this.cachedFollowingSuffix=e,this.cachedFollowingTimePatten)}};var Ac=class extends ga{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 nz=new RegExp(`(${Fs})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),oz=new RegExp(`(${bn})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),Fc=class extends U{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?oz:nz}innerExtract(e,t){let r=Qr(t[1]);return r?K.createRelativeFromReference(e.reference,jl(r)):null}};var lz=new RegExp(`(${Fs})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),dz=new RegExp(`(${bn})\\s{0,5}(later|after|from now)(?=\\W|$)`,"i"),cz=1,Rc=class extends U{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?dz:lz}innerExtract(e,t){let r=Qr(t[cz]);return r?K.createRelativeFromReference(e.reference,r):null}};var Wl=class{refine(a,e){return e.filter(t=>this.isValid(a,t))}},hr=class{refine(a,e){if(e.length<2)return e;let t=[],r=e[0],i=null;for(let s=1;s<e.length;s++){i=e[s];let o=a.text.substring(r.index+r.text.length,i.index);if(!this.shouldMergeResults(o,r,i,a))t.push(r),r=i;else{let l=r,c=i,u=this.mergeResults(o,l,c,a);a.debug(()=>{`${this.constructor.name}${l}${c}${u}`}),r=u}}return r!=null&&t.push(r),t}};var vt=class extends hr{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<t.index?r.text=e.text+a+t.text:r.text=t.text+a+e.text,r}};var Oc=class extends vt{patternBetween(){return/^\s*(to|-|–|until|through|till)\s*$/i}};function Ci(n,a){a=a.add(1,"day"),kt(n,a),Ki(n,a)}function ZR(n,a){a=a.add(1,"day"),sw(n,a),Ki(n,a)}function kt(n,a){n.assign("day",a.date()),n.assign("month",a.month()+1),n.assign("year",a.year())}function eO(n,a){n.assign("hour",a.hour()),n.assign("minute",a.minute()),n.assign("second",a.second()),n.assign("millisecond",a.millisecond()),n.get("hour")<12?n.assign("meridiem",$.AM):n.assign("meridiem",$.PM)}function sw(n,a){n.imply("day",a.date()),n.imply("month",a.month()+1),n.imply("year",a.year())}function Ki(n,a){n.imply("hour",a.hour()),n.imply("minute",a.minute()),n.imply("second",a.second()),n.imply("millisecond",a.millisecond())}function nw(n,a){let e=n.clone(),t=n.start,r=a.start;if(e.start=tO(t,r),n.end!=null||a.end!=null){let i=n.end==null?n.start:n.end,s=a.end==null?a.start:a.end,o=tO(i,s);if(n.end==null&&o.date().getTime()<e.start.date().getTime()){let l=o.dayjs().add(1,"day");o.isCertain("day")?kt(o,l):sw(o,l)}e.end=o}return e}function tO(n,a){let e=n.clone();return a.isCertain("hour")?(e.assign("hour",a.get("hour")),e.assign("minute",a.get("minute")),a.isCertain("second")?(e.assign("second",a.get("second")),a.isCertain("millisecond")?e.assign("millisecond",a.get("millisecond")):e.imply("millisecond",a.get("millisecond"))):(e.imply("second",a.get("second")),e.imply("millisecond",a.get("millisecond")))):(e.imply("hour",a.get("hour")),e.imply("minute",a.get("minute")),e.imply("second",a.get("second")),e.imply("millisecond",a.get("millisecond"))),a.isCertain("timezoneOffset")&&e.assign("timezoneOffset",a.get("timezoneOffset")),a.isCertain("meridiem")?e.assign("meridiem",a.get("meridiem")):a.get("meridiem")!=null&&e.get("meridiem")==null&&e.imply("meridiem",a.get("meridiem")),e.get("meridiem")==$.PM&&e.get("hour")<12&&(a.isCertain("hour")?e.assign("hour",e.get("hour")+12):e.imply("hour",e.get("hour")+12)),e.addTags(n.tags()),e.addTags(a.tags()),e}var yt=class extends hr{shouldMergeResults(a,e,t){return(e.start.isOnlyDate()&&t.start.isOnlyTime()||t.start.isOnlyDate()&&e.start.isOnlyTime())&&a.match(this.patternBetween())!=null}mergeResults(a,e,t){let r=e.start.isOnlyDate()?nw(e,t):nw(t,e);return r.index=e.index,r.text=e.text+a+t.text,r}};var zl=class extends yt{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|\u2219|:)?\\s*$")}};var uz=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),Nc=class{constructor(a){z(this,"timezoneOverrides");this.timezoneOverrides=a}refine(a,e){var r;let t=(r=a.option.timezones)!=null?r:{};return e.forEach(i=>{var f,h;let s=a.text.substring(i.index+i.text.length),o=uz.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=Hh(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 pz=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),mz=1,fz=2,hz=3,Si=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=pz.exec(r);if(!i)return;a.debug(()=>{`${i[0]}${t}`});let s=parseInt(i[fz]),o=parseInt(i[hz]||"0"),l=s*60+o;l>840||(i[mz]==="-"&&(l=-l),t.end!=null&&t.end.assign("timezoneOffset",l),t.start.assign("timezoneOffset",l),t.text+=i[0])}),e}};var wn=class{refine(a,e){if(e.length<2)return e;let t=[],r=e[0];for(let i=1;i<e.length;i++){let s=e[i];if(s.index>=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 aO=Fe(qe(),1);var Lc=class{refine(a,e){return a.option.forwardDate&&e.forEach(t=>{let r=(0,aO.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),jh(t.start,s),a.debug(()=>{`${this.constructor.name}${t}${i}${s}`}),t.end&&t.end.isOnlyTime()&&(jh(t.end,s),t.start.date()>t.end.date()&&(s.setDate(s.getDate()+1),jh(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 jc=class extends Wl{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 gz=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"),kz=1,vz=2,yz=3,rO=4,bz=5,iO=6,sO=7,wz=8,nO=9,oO=10,Rs=class extends U{innerPattern(){return gz}innerExtract(a,e){let t=a.createParsingComponents({year:parseInt(e[kz]),month:parseInt(e[vz]),day:parseInt(e[yz])});if(e[rO]!=null&&(t.assign("hour",parseInt(e[rO])),t.assign("minute",parseInt(e[bz])),e[iO]!=null&&t.assign("second",parseInt(e[iO])),e[sO]!=null&&t.assign("millisecond",parseInt(e[sO])),e[wz]!=null)){let r=0;if(e[nO]){let i=parseInt(e[nO]),s=0;e[oO]!=null&&(s=parseInt(e[oO])),r=i*60,r<0?r-=s:r+=s}t.assign("timezoneOffset",r)}return t.addTag("parser/ISOFormatParser")}};var co=class extends hr{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 xt(n,a=!1){return n.parsers.unshift(new Rs),n.refiners.unshift(new co),n.refiners.unshift(new Si),n.refiners.unshift(new wn),n.refiners.push(new Nc),n.refiners.push(new wn),n.refiners.push(new Lc),n.refiners.push(new jc(a)),n}var cO=Fe(qe(),1);var Tn=Fe(qe(),1);function Wa(n){let a=(0,Tn.default)(n.getDateWithAdjustedTimezone()),e=new K(n,{});return kt(e,a),eO(e,a),e.assign("timezoneOffset",n.getTimezoneOffset()),e.addTag("casualReference/now"),e}function ka(n){let a=(0,Tn.default)(n.getDateWithAdjustedTimezone()),e=new K(n,{});return kt(e,a),Ki(e,a),e.addTag("casualReference/today"),e}function za(n){return uo(n,1).addTag("casualReference/yesterday")}function uo(n,a){return Qi(n,-a)}function $a(n){return Qi(n,1).addTag("casualReference/tomorrow")}function Qi(n,a){let e=(0,Tn.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e=e.add(a,"day"),kt(t,e),Ki(t,e),t}function lO(n,a=22){let e=(0,Tn.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return kt(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/tonight"),t}function zh(n,a=0){let e=(0,Tn.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e.hour()<6&&(e=e.add(-1,"day")),kt(t,e),t.imply("hour",a),t}function $l(n,a=20){let e=new K(n,{});return e.imply("meridiem",$.PM),e.imply("hour",a),e.addTag("casualReference/evening"),e}function $h(n,a=20){let e=(0,Tn.default)(n.getDateWithAdjustedTimezone()),t=new K(n,{});return e=e.add(-1,"day"),kt(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/yesterday"),t.addTag("casualReference/evening"),t}function po(n){let a=new K(n,{}),e=(0,Tn.default)(n.getDateWithAdjustedTimezone());return e.hour()>2&&ZR(a,e),a.assign("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("millisecond",0),a.addTag("casualReference/midnight"),a}function Ul(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 dO(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 _l(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 Tz=/(now|today|tonight|tomorrow|overmorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,Hc=class extends U{innerPattern(a){return Tz}innerExtract(a,e){let t=(0,cO.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"now":i=Wa(a.reference);break;case"today":i=ka(a.reference);break;case"yesterday":i=za(a.reference);break;case"tomorrow":case"tmr":case"tmrw":i=$a(a.reference);break;case"tonight":i=lO(a.reference);break;case"overmorrow":i=Qi(a.reference,2);break;default:r.match(/last\s*night/)&&(t.hour()>6&&(t=t.add(-1,"day")),kt(i,t),i.imply("hour",0));break}return i.addTag("parser/ENCasualDateParser"),i}};var xz=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i,Bc=class extends U{innerPattern(){return xz}innerExtract(a,e){let t=null;switch(e[1].toLowerCase()){case"afternoon":t=dO(a.reference);break;case"evening":case"night":t=$l(a.reference);break;case"midnight":t=po(a.reference);break;case"morning":t=Ul(a.reference);break;case"noon":case"midday":t=_l(a.reference);break}return t&&t.addTag("parser/ENCasualTimeParser"),t}};function ea(n){let a={};for(let e in n)a[e]=-n[e];return a}function Uh(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 ta(n,a,e){let t=n.getDateWithAdjustedTimezone(),r=Cz(t,a,e),i=new K(n);return i=Uh(i,{day:r}),i.assign("weekday",a),i}function Cz(n,a,e){let t=n.getDay();switch(e){case"this":return _h(n,a);case"last":return uO(n,a);case"next":return t==ye.SUNDAY?a==ye.SUNDAY?7:a:t==ye.SATURDAY?a==ye.SATURDAY?7:a==ye.SUNDAY?8:1+a:a<t&&a!=ye.SUNDAY?_h(n,a):_h(n,a)+7}return Sz(n,a)}function Sz(n,a){let e=uO(n,a),t=_h(n,a);return t<-e?t:e}function _h(n,a){let e=n.getDay(),t=a-e;return t<0&&(t+=7),t}function uO(n,a){let e=n.getDay(),t=a-e;return t>=0&&(t-=7),t}var Dz=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${te(Bh)}|weekend|weekday)(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),Ez=1,Pz=2,Mz=3,Vc=class extends U{innerPattern(){return Dz}innerExtract(a,e){let t=e[Ez],r=e[Mz],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[Pz].toLowerCase(),l;if(Bh[o]!==void 0)l=Bh[o];else if(o=="weekend")l=s=="last"?ye.SUNDAY:ye.SATURDAY;else if(o=="weekday"){let c=a.reference.getDateWithAdjustedTimezone().getDay();c==ye.SUNDAY||c==ye.SATURDAY?l=s=="last"?ye.FRIDAY:ye.MONDAY:(l=c-1,l=s=="last"?l-1:l+1,l=l%5+1)}else return null;return ta(a.reference,l,s)}};var pO=Fe(qe(),1);var Iz=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${te(xc)})(?=\\s*)(?=\\W|$)`,"i"),Az=1,Fz=2,Wc=class extends U{innerPattern(){return Iz}innerExtract(a,e){let t=e[Az].toLowerCase(),r=e[Fz].toLowerCase(),i=xc[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,pO.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 Rz=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"),Oz=1,Nz=5,mO=2,fO=3,ow=4,da=class{constructor(a){z(this,"groupNumberMonth");z(this,"groupNumberDay");this.groupNumberMonth=a?fO:mO,this.groupNumberDay=a?mO:fO}pattern(){return Rz}extract(a,e){let t=e.index+e[Oz].length,r=e.index+e[0].length-e[Nz].length;if(t>0&&a.text.substring(0,t).match("\\d/?$")||r<a.text.length&&a.text.substring(r).match("^/?\\d"))return;let i=a.text.substring(t,r);if(i.match(/^\d\.\d$/)||i.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)||!e[ow]&&i.indexOf("/")<0)return;let s=a.createParsingResult(t,i),o=parseInt(e[this.groupNumberMonth]),l=parseInt(e[this.groupNumberDay]);if((o<1||o>12)&&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[ow]){let c=parseInt(e[ow]),u=fr(c);s.start.assign("year",u)}else{let c=Je(a.refDate,l,o);s.start.imply("year",c)}return s.addTag("parser/SlashDateFormatParser")}};var Lz=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${Fs})(?=\\W|$)`,"i"),jz=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${bn})(?=\\W|$)`,"i"),zc=class extends U{constructor(e=!0){super();z(this,"allowAbbreviations");this.allowAbbreviations=e}innerPattern(){return this.allowAbbreviations?Lz:jz}innerExtract(e,t){let r=t[1].toLowerCase(),i=Qr(t[2]);if(!i)return null;switch(r){case"last":case"past":case"-":i=jl(i);break}return K.createRelativeFromReference(e.reference,i)}};function Hz(n){return n.text.match(/^[+-]/i)!=null}function hO(n){return n.text.match(/^-/i)!=null}var $c=class extends hr{shouldMergeResults(a,e,t){return a.match(/^\s*$/i)?Hz(t)||hO(t):!1}mergeResults(a,e,t,r){let i=Qr(t.text);hO(t)&&(i=ea(i));let s=K.createRelativeFromReference(new Ye(e.start.date()),i);return new We(e.reference,e.index,`${e.text}${a}${t.text}`,s)}};function gO(n){return n.text.match(/\s+(before|from)$/i)!=null}function Bz(n){return n.text.match(/\s+(after|since)$/i)!=null}var Uc=class extends hr{patternBetween(){return/^\s*$/i}shouldMergeResults(a,e,t){return!a.match(this.patternBetween())||!gO(e)&&!Bz(e)?!1:!!t.start.get("day")&&!!t.start.get("month")&&!!t.start.get("year")}mergeResults(a,e,t){let r=Qr(e.text);gO(e)&&(r=jl(r));let i=K.createRelativeFromReference(new Ye(t.start.date()),r);return new We(t.reference,e.index,`${e.text}${a}${t.text}`,i)}};var Vz=new RegExp(`^\\s*(${vn})`,"i"),Wz=1,_c=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=Vz.exec(r);if(!i||i[0].trim().length<=3)return;a.debug(()=>{`${i[0]}${t}`});let s=yn(i[Wz]);t.end!=null&&t.end.assign("year",s),t.start.assign("year",s),t.text+=i[0]}),e}};var qc=class extends Wl{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 mo=class{createCasualConfiguration(a=!1){let e=this.createConfiguration(!1,a);return e.parsers.push(new Hc),e.parsers.push(new Bc),e.parsers.push(new Ec),e.parsers.push(new Wc),e.parsers.push(new zc),e.refiners.push(new qc),e}createConfiguration(a=!0,e=!1){let t=xt({parsers:[new da(e),new Cc(a),new Sc,new Dc(e),new Vc,new Mc,new Ac(a),new Fc(a),new Rc(a)],refiners:[new zl]},a);return t.parsers.unshift(new Pc(a)),t.refiners.unshift(new Uc),t.refiners.unshift(new $c),t.refiners.unshift(new wn),t.refiners.push(new zl),t.refiners.push(new _c),t.refiners.push(new Oc),t}};var ve=class n{constructor(a){z(this,"parsers");z(this,"refiners");z(this,"defaultConfig",new mo);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 Yc(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 We?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}},Yc=class{constructor(a,e,t){z(this,"text");z(this,"option");z(this,"reference");z(this,"refDate");this.text=a,this.reference=new Ye(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 We(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 qh=new mo,Gc=new ve(qh.createCasualConfiguration(!1)),lw=new ve(qh.createConfiguration(!0,!1)),zz=new ve(qh.createCasualConfiguration(!0));function $z(n,a,e){return Gc.parse(n,a,e)}function Uz(n,a,e){return Gc.parseDate(n,a,e)}var kw={};wt(kw,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>hw,createCasualConfiguration:()=>AO,createConfiguration:()=>gw,parse:()=>s$,parseDate:()=>n$,strict:()=>i$});var Kc=class extends ga{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 uw={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},pw={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},cw={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},Qc={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"},mw=`(?:${te(cw)}|[0-9]+|[0-9]+\\.[0-9]+|halb?|halbe?|einigen?|wenigen?|mehreren?)`;function fw(n){let a=n.toLowerCase();return cw[a]!==void 0?cw[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 vO="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";function yO(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 fr(a)}var bO=`(${mw})\\s{0,5}(${te(Qc)})\\s{0,5}`,kO=new RegExp(bO,"i"),wO=Ja("",bO);function TO(n){let a={},e=n,t=kO.exec(e);for(;t;)_z(a,t),e=e.substring(t[0].length),t=kO.exec(e);return a}function _z(n,a){let e=fw(a[1]),t=Qc[a[2].toLowerCase()];n[t]=e}var qz=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${te(uw)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),Yz=1,Gz=3,Kz=2,Xc=class extends U{innerPattern(){return qz}innerExtract(a,e){let t=e[Kz].toLowerCase(),r=uw[t],i=e[Yz],s=e[Gz],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"),ta(a.reference,r,l)}};var Qz=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"),Xz=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"),Jz=2,xO=3,CO=4,SO=5,Jc=class n{pattern(a){return Qz}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=Xz.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[Jz]),e[xO]!=null&&(r=parseInt(e[xO])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[SO]!=null){if(t>12)return null;let s=e[SO].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[CO]!=null){let s=parseInt(e[CO]);if(s>=60)return null;a.assign("second",s)}return a}};var Zc=class extends vt{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}};var eu=class extends yt{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}};var EO=Fe(qe(),1);var DO=Fe(qe(),1);var fo=class n extends U{innerPattern(a){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(a,e){let t=(0,DO.default)(a.refDate),r=e[2].toLowerCase(),i=a.createParsingComponents();return Ki(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=Uh(a,{day:1})),a.imply("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break}return a}};var Zz=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),e$=1,t$=2,tu=class extends U{innerPattern(a){return Zz}innerExtract(a,e){let t=(0,EO.default)(a.refDate),r=(e[e$]||"").toLowerCase(),i=(e[t$]||"").toLowerCase(),s=a.createParsingComponents();switch(r){case"jetzt":s=Wa(a.reference);break;case"heute":s=ka(a.reference);break;case"morgen":Ci(s,t);break;case"\xFCbermorgen":case"uebermorgen":t=t.add(1,"day"),Ci(s,t);break;case"gestern":t=t.add(-1,"day"),kt(s,t),Ki(s,t);break;case"vorgestern":t=t.add(-2,"day"),kt(s,t),Ki(s,t);break;default:r.match(/letzte\s*nacht/)&&(t.hour()>6&&(t=t.add(-1,"day")),kt(s,t),s.imply("hour",0));break}return i&&(s=fo.extractTimeComponents(s,i)),s}};var a$=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${te(pw)})(?:(?:-|/|,?\\s*)(${vO}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),PO=1,MO=2,r$=3,IO=4,au=class extends U{innerPattern(){return a$}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=pw[e[r$].toLowerCase()],i=parseInt(e[PO]);if(i>31)return e.index=e.index+e[PO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[IO]){let s=yO(e[IO]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[MO]){let s=parseInt(e[MO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var ru=class extends U{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*)?(${mw})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${te(Qc)})`,"i")}innerExtract(a,e){let t=e[2]?fw(e[2]):1,r=Qc[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=ea(i)),K.createRelativeFromReference(a.reference,i)}};var iu=class extends U{innerPattern(){return new RegExp(`(?:in|f\xFCr|w\xE4hrend)\\s*(${wO})(?=\\W|$)`,"i")}innerExtract(a,e){let t=TO(e[1]);return K.createRelativeFromReference(a.reference,t)}};var hw=new ve(AO()),i$=new ve(gw(!0));function s$(n,a,e){return hw.parse(n,a,e)}function n$(n,a,e){return hw.parseDate(n,a,e)}function AO(n=!0){let a=gw(!1,n);return a.parsers.unshift(new fo),a.parsers.unshift(new tu),a.parsers.unshift(new ru),a}function gw(n=!0,a=!0){return xt({parsers:[new Rs,new da(a),new Kc,new Jc,new au,new Xc,new iu],refiners:[new Zc,new eu]},n)}var Ew={};wt(Ew,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>Sw,createCasualConfiguration:()=>$O,createConfiguration:()=>Dw,parse:()=>k$,parseDate:()=>v$,strict:()=>g$});var FO=Fe(qe(),1);var su=class extends U{innerPattern(a){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(a,e){let t=(0,FO.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"maintenant":return Wa(a.reference);case"aujourd'hui":return ka(a.reference);case"hier":return za(a.reference);case"demain":return $a(a.reference);default:r.match(/cette\s*nuit/)?(kt(i,t),i.imply("hour",22),i.imply("meridiem",$.PM)):r.match(/la\s*veille/)&&(t=t.add(-1,"day"),kt(i,t),i.imply("hour",0))}return i}};var nu=class extends U{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 ou=class extends ga{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 lu=class extends yt{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|au|vers|de|,|-)?\\s*$")}};var du=class extends vt{patternBetween(){return/^\s*(à|a|au|-)\s*$/i}};var yw={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},bw={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},vw={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},cu={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"},ww=`(?:${te(vw)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;function Tw(n){let a=n.toLowerCase();return vw[a]!==void 0?vw[a]:a==="une"||a==="un"?1:a.match(/quelques?/)?3:a.match(/demi-?/)?.5:parseFloat(a)}var xw="(?:[0-9]{1,2}(?:er)?)";function Cw(n){let a=n.toLowerCase();return a=a.replace(/(?:er)$/i,""),parseInt(a)}var OO="(?:[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 NO(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 LO=`(${ww})\\s{0,5}(${te(cu)})\\s{0,5}`,RO=new RegExp(LO,"i"),Yh=Ja("",LO);function Gh(n){let a={},e=n,t=RO.exec(e);for(;t;)o$(a,t),e=e.substring(t[0].length),t=RO.exec(e);return a}function o$(n,a){let e=Tw(a[1]),t=cu[a[2].toLowerCase()];n[t]=e}var l$=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${te(yw)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),d$=1,c$=2,uu=class extends U{innerPattern(){return l$}innerExtract(a,e){let t=e[d$].toLowerCase(),r=yw[t];if(r===void 0)return null;let i=e[c$];i=i||"",i=i.toLowerCase();let s=null;return i=="dernier"?s="last":i=="prochain"&&(s="next"),ta(a.reference,r,s)}};var u$=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"),p$=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"),m$=2,jO=3,HO=4,BO=5,pu=class n{pattern(a){return u$}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=p$.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[m$]),e[jO]!=null&&(r=parseInt(e[jO])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[BO]!=null){if(t>12)return null;let s=e[BO][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[HO]!=null){let s=parseInt(e[HO]);if(s>=60)return null;a.assign("second",s)}return a}};var f$=new RegExp(`(?:on\\s*?)?(${xw})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${xw}))?(?:-|/|\\s*(?:de)?\\s*)(${te(bw)})(?:(?:-|/|,?\\s*)(${OO}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),VO=1,WO=2,h$=3,zO=4,mu=class extends U{innerPattern(){return f$}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=bw[e[h$].toLowerCase()],i=Cw(e[VO]);if(i>31)return e.index=e.index+e[VO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[zO]){let s=NO(e[zO]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[WO]){let s=Cw(e[WO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var fu=class extends U{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${Yh})(?=(?:\\W|$))`,"i")}innerExtract(a,e){let t=Gh(e[1]),r=ea(t);return K.createRelativeFromReference(a.reference,r)}};var hu=class extends U{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${Yh})(?=\\W|$)`,"i")}innerExtract(a,e){let t=Gh(e[1]);return K.createRelativeFromReference(a.reference,t)}};var gu=class extends U{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${ww})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${te(cu)})(?:\\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]?Tw(e[1]):1,r=cu[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=ea(i)),K.createRelativeFromReference(a.reference,i)}};var Sw=new ve($O()),g$=new ve(Dw(!0));function k$(n,a,e){return Sw.parse(n,a,e)}function v$(n,a,e){return Sw.parseDate(n,a,e)}function $O(n=!0){let a=Dw(!1,n);return a.parsers.unshift(new su),a.parsers.unshift(new nu),a.parsers.unshift(new gu),a}function Dw(n=!0,a=!0){return xt({parsers:[new da(a),new mu,new ou,new pu,new fu,new hu,new uu],refiners:[new lu,new du]},n)}var Aw={};wt(Aw,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>Mw,createCasualConfiguration:()=>GO,createConfiguration:()=>Iw,parse:()=>N$,parseDate:()=>L$,strict:()=>O$});var Xi={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},ql={\u65E5:0,\u6708:1,\u706B:2,\u6C34:3,\u6728:4,\u91D1:5,\u571F:6};function Za(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,y$)}function y$(n){return String.fromCharCode(n.charCodeAt(0)-65248)}function ho(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?Xi[t]:a*Xi[t]:a+=Xi[t]}return a}var _O=Fe(qe(),1),b$=/(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i,UO=1,w$=2,Pw=3,T$=4,x$=5,C$=6,ku=class{pattern(){return b$}extract(a,e){let t=parseInt(Za(e[x$])),r=parseInt(Za(e[C$])),i=a.createParsingComponents({day:r,month:t});if(e[UO]&&e[UO].match("\u540C|\u4ECA|\u672C")){let s=(0,_O.default)(a.refDate);i.assign("year",s.year())}if(e[w$]){let s=e[T$],o=s=="\u5143"?1:parseInt(Za(s));e[Pw]=="\u4EE4\u548C"?o+=2018:e[Pw]=="\u5E73\u6210"?o+=1988:e[Pw]=="\u662D\u548C"&&(o+=1925),i.assign("year",o)}else{let s=Je(a.refDate,r,t);i.imply("year",s)}return i}};var vu=class extends vt{patternBetween(){return/^\s*(から|-|ー|-|~|~)\s*$/i}};var qO=Fe(qe(),1);var S$=/今日|きょう|本日|ほんじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;function D$(n){switch(n){case"\u304D\u3087\u3046":return"\u4ECA\u65E5";case"\u307B\u3093\u3058\u3064":return"\u672C\u65E5";case"\u304D\u306E\u3046":return"\u6628\u65E5";case"\u3042\u3057\u305F":return"\u660E\u65E5";case"\u3053\u3093\u3084":return"\u4ECA\u591C";case"\u3053\u3093\u3086\u3046":return"\u4ECA\u5915";case"\u3053\u3093\u3070\u3093":return"\u4ECA\u6669";case"\u3051\u3055":return"\u4ECA\u671D";default:return n}}var yu=class{pattern(){return S$}extract(a,e){let t=D$(e[0]),r=(0,qO.default)(a.refDate),i=a.createParsingComponents();switch(t){case"\u6628\u65E5":return za(a.reference);case"\u660E\u65E5":return $a(a.reference);case"\u672C\u65E5":case"\u4ECA\u65E5":return ka(a.reference)}return t=="\u4ECA\u591C"||t=="\u4ECA\u5915"||t=="\u4ECA\u6669"?(i.imply("hour",22),i.assign("meridiem",$.PM)):t.match("\u4ECA\u671D")&&(i.imply("hour",6),i.assign("meridiem",$.AM)),i.assign("day",r.date()),i.assign("month",r.month()+1),i.assign("year",r.year()),i}};var E$=new RegExp("((?<prefix>\u524D\u306E|\u6B21\u306E|\u4ECA\u9031))?(?<weekday>"+Object.keys(ql).join("|")+")(?:\u66DC\u65E5|\u66DC)","i"),bu=class{pattern(){return E$}extract(a,e){let t=e.groups.weekday,r=ql[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"),ta(a.reference,r,s)}};var P$=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"),YO=1,M$=2,I$=3,wu=class{pattern(){return P$}extract(a,e){let t=a.createParsingComponents(),r=parseInt(Za(e[M$])),i=parseInt(Za(e[I$]));if(r<1||r>12||i<1||i>31)return null;if(t.assign("day",i),t.assign("month",r),e[YO]){let s=parseInt(Za(e[YO])),o=fr(s);t.assign("year",o)}else{let s=Je(a.reference.instant,i,r);t.imply("year",s)}return t}};var A$=new RegExp("(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(Xi).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(Xi).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(Xi).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),F$=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(Xi).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(Xi).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(Xi).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Kh=1,Qh=2,xn=3,Yl=4,Xh=5,Tu=class extends U{innerPattern(){return A$}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[Yl]){let o=parseInt(Za(e[Yl]));if(isNaN(o)&&(o=ho(e[Yl])),o>=60)return null;t.start.assign("second",o)}if(r=parseInt(Za(e[Qh])),isNaN(r)&&(r=ho(e[Qh])),e[xn]?e[xn]==="\u534A"?i=30:(i=parseInt(Za(e[xn])),isNaN(i)&&(i=ho(e[xn]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(s=$.PM),e[Kh]){if(r>12)return null;let o=e[Kh],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[Xh]){if(r>12)return null;let o=e[Xh][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=F$.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[Yl]){let o=parseInt(Za(e[Yl]));if(isNaN(o)&&(o=ho(e[Yl])),o>=60)return null;t.end.assign("second",o)}if(r=parseInt(Za(e[Qh])),isNaN(r)&&(r=ho(e[Qh])),e[xn]?e[xn]==="\u534A"?i=30:(i=parseInt(Za(e[xn])),isNaN(i)&&(i=ho(e[xn]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(s=$.PM),e[Kh]){if(r>12)return null;let o=e[Kh],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[Xh]){if(r>12)return null;let o=e[Xh][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()<t.start.date().getTime()&&t.end.imply("day",t.end.get("day")+1),t}};var xu=class extends yt{patternBetween(){return/^\s*(の)?\s*$/i}};var Cu=class extends hr{mergeResults(a,e,t){let r=e.clone();return r.text=e.text+a+t.text,r.start.assign("weekday",t.start.get("weekday")),r.end&&r.end.assign("weekday",t.start.get("weekday")),r}shouldMergeResults(a,e,t){return e.start.isCertain("day")&&t.start.isOnlyWeekdayComponent()&&!t.start.isCertain("hour")&&a.match(/^[,、の]?\s*$/)!==null}};var R$=new RegExp("(?:\\(|\\\uFF08)(?<weekday>"+Object.keys(ql).join("|")+")(?:\\)|\\\uFF09)","i"),Su=class{pattern(){return R$}extract(a,e){let t=e.groups.weekday,r=ql[t];return r===void 0?null:ta(a.reference,r)}};var Mw=new ve(GO()),O$=new ve(Iw(!0));function N$(n,a,e){return Mw.parse(n,a,e)}function L$(n,a,e){return Mw.parseDate(n,a,e)}function GO(){let n=Iw(!1);return n.parsers.unshift(new yu),n}function Iw(n=!0){let a=xt({parsers:[new ku,new bu,new Su,new wu,new Tu],refiners:[new Cu,new xu,new vu]},n);return a.refiners=a.refiners.filter(e=>!(e instanceof co)),a}var Lw={};wt(Lw,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>Ow,createCasualConfiguration:()=>tN,createConfiguration:()=>Nw,parse:()=>U$,parseDate:()=>_$,strict:()=>$$});var Fw={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},Rw={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},KO="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function QO(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 j$=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${te(Fw)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),H$=1,B$=2,V$=3,Du=class extends U{innerPattern(){return j$}innerExtract(a,e){let t=e[B$].toLowerCase(),r=Fw[t];if(r===void 0)return null;let i=e[H$],s=e[V$],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"),ta(a.reference,r,l)}};var Eu=class extends ga{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}};var Pu=class extends yt{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}};var Mu=class extends vt{patternBetween(){return/^\s*(?:-)\s*$/i}};var W$=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(Rw)})(?:\\s*(?:de|,)?\\s*(${KO}))?(?=\\W|$)`,"i"),XO=1,JO=2,z$=3,ZO=4,Iu=class extends U{innerPattern(){return W$}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Rw[e[z$].toLowerCase()],i=parseInt(e[XO]);if(i>31)return e.index=e.index+e[XO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[ZO]){let s=QO(e[ZO]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[JO]){let s=parseInt(e[JO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Au=class extends U{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 Wa(a.reference);case"hoje":return ka(a.reference);case"amanha":case"amanh\xE3":return $a(a.reference);case"ontem":return za(a.reference)}return r}};var eN=Fe(qe(),1),Fu=class extends U{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(a,e){let t=(0,eN.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":Ci(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 Ow=new ve(tN()),$$=new ve(Nw(!0));function U$(n,a,e){return Ow.parse(n,a,e)}function _$(n,a,e){return Ow.parseDate(n,a,e)}function tN(n=!0){let a=Nw(!1,n);return a.parsers.push(new Au),a.parsers.push(new Fu),a}function Nw(n=!0,a=!0){return xt({parsers:[new da(a),new Du,new Eu,new Iu],refiners:[new Pu,new Mu]},n)}var Uw={};wt(Uw,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>zw,createCasualConfiguration:()=>pN,createConfiguration:()=>$w,parse:()=>DU,parseDate:()=>EU,strict:()=>SU});var Ru=class extends vt{patternBetween(){return/^\s*(tot|-)\s*$/i}};var Ou=class extends yt{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}};var Nu=class extends U{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 Wa(a.reference);case"vandaag":return ka(a.reference);case"morgen":case"morgend":return $a(a.reference);case"gisteren":return za(a.reference)}return r}};var aN=Fe(qe(),1);var q$=1,Y$=2,Lu=class extends U{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(a,e){let t=(0,aN.default)(a.refDate),r=a.createParsingComponents();switch(e[q$]==="deze"&&(r.assign("day",a.refDate.getDate()),r.assign("month",a.refDate.getMonth()+1),r.assign("year",a.refDate.getFullYear())),e[Y$].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":Ci(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 Bw={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},Os={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},jw={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},Hw={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},ju={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"},G$=`(?:${te(jw)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;function K$(n){let a=n.toLowerCase();return jw[a]!==void 0?jw[a]:a==="paar"?2:a==="half"||a.match(/halve?/)?.5:parseFloat(a.replace(",","."))}var Vw=`(?:${te(Hw)}|[0-9]{1,2}(?:ste|de)?)`;function Ww(n){let a=n.toLowerCase();return Hw[a]!==void 0?Hw[a]:(a=a.replace(/(?:ste|de)$/i,""),parseInt(a))}var Jh="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";function Zh(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 fr(a)}var iN=`(${G$})\\s{0,5}(${te(ju)})\\s{0,5}`,rN=new RegExp(iN,"i"),Ji=Ja("(?:(?:binnen|in)\\s*)?",iN);function Cn(n){let a={},e=n,t=rN.exec(e);for(;t;)Q$(a,t),e=e.substring(t[0].length),t=rN.exec(e);return a}function Q$(n,a){let e=K$(a[1]),t=ju[a[2].toLowerCase()];n[t]=e}var Hu=class extends U{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+Ji+")(?=\\W|$)","i")}innerExtract(a,e){let t=Cn(e[1]);return K.createRelativeFromReference(a.reference,t)}};var X$=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${te(Bw)})(?=\\W|$)`,"i"),J$=1,Z$=2,eU=3,Bu=class extends U{innerPattern(){return X$}innerExtract(a,e){let t=e[Z$].toLowerCase(),r=Bw[t],i=e[J$],s=e[eU],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o=="vorige"?l="last":o=="volgende"?l="next":o=="deze"&&(l="this"),ta(a.reference,r,l)}};var tU=new RegExp(`(?:on\\s*?)?(${Vw})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${Vw}))?(?:-|/|\\s*(?:of)?\\s*)(`+te(Os)+`)(?:(?:-|/|,?\\s*)(${Jh}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),aU=3,sN=1,nN=2,oN=4,Vu=class extends U{innerPattern(){return tU}innerExtract(a,e){let t=Os[e[aU].toLowerCase()],r=Ww(e[sN]);if(r>31)return e.index=e.index+e[sN].length,null;let i=a.createParsingComponents({day:r,month:t});if(e[oN]){let l=Zh(e[oN]);i.assign("year",l)}else{let l=Je(a.refDate,r,t);i.imply("year",l)}if(!e[nN])return i;let s=Ww(e[nN]),o=a.createParsingResult(e.index,e[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",s),o}};var rU=new RegExp(`(${te(Os)})\\s*(?:[,-]?\\s*(${Jh})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),iU=1,lN=2,Gl=class extends U{innerPattern(){return rU}innerExtract(a,e){let t=a.createParsingComponents();t.imply("day",1);let r=e[iU],i=Os[r.toLowerCase()];if(t.assign("month",i),e[lN]){let s=Zh(e[lN]);t.assign("year",s)}else{let s=Je(a.refDate,1,i);t.imply("year",s)}return t}};var sU=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),nU=1,oU=2,Wu=class extends U{innerPattern(){return sU}innerExtract(a,e){let t=parseInt(e[oU]),r=parseInt(e[nU]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};var zu=class extends ga{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 lU=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${te(Os)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),dU=1,cU=2,dN=3,uU=4,$u=class extends U{innerPattern(){return lU}innerExtract(a,e){let t=e[dN]?parseInt(e[dN]):Os[e[cU].toLowerCase()];if(t<1||t>12)return null;let r=parseInt(e[dU]);return{day:parseInt(e[uU]),month:t,year:r}}};var cN=Fe(qe(),1),pU=1,mU=2,Uu=class extends U{innerPattern(a){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(a,e){let t=e[pU].toLowerCase(),r=e[mU].toLowerCase(),i=a.createParsingComponents(),s=(0,cN.default)(a.refDate);switch(t){case"gisteren":kt(i,s.add(-1,"day"));break;case"van":kt(i,s);break;case"morgen":Ci(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 fU=new RegExp(`(dit|deze|vorig|afgelopen|(?:aan)?komend|over|\\+|-)e?\\s*(${Ji})(?=\\W|$)`,"i"),hU=1,gU=2,_u=class extends U{innerPattern(){return fU}innerExtract(a,e){let t=e[hU].toLowerCase(),r=Cn(e[gU]);switch(t){case"vorig":case"afgelopen":case"-":r=ea(r);break}return K.createRelativeFromReference(a.reference,r)}};var uN=Fe(qe(),1);var kU=new RegExp(`(dit|deze|(?:aan)?komend|volgend|afgelopen|vorig)e?\\s*(${te(ju)})(?=\\s*)(?=\\W|$)`,"i"),vU=1,yU=2,qu=class extends U{innerPattern(){return kU}innerExtract(a,e){let t=e[vU].toLowerCase(),r=e[yU].toLowerCase(),i=ju[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,uN.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 bU=new RegExp("("+Ji+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),wU=new RegExp("("+Ji+")geleden(?=(?:\\W|$))","i"),Yu=class extends U{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?wU:bU}innerExtract(e,t){let r=Cn(t[1]),i=ea(r);return K.createRelativeFromReference(e.reference,i)}};var TU=new RegExp("("+Ji+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),xU=new RegExp("("+Ji+")(later|vanaf nu)(?=(?:\\W|$))","i"),CU=1,Gu=class extends U{constructor(e){super();z(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?xU:TU}innerExtract(e,t){let r=Cn(t[CU]);return K.createRelativeFromReference(e.reference,r)}};var zw=new ve(pN()),SU=new ve($w(!0));function DU(n,a,e){return zw.parse(n,a,e)}function EU(n,a,e){return zw.parseDate(n,a,e)}function pN(n=!0){let a=$w(!1,n);return a.parsers.unshift(new Nu),a.parsers.unshift(new Lu),a.parsers.unshift(new Uu),a.parsers.unshift(new Gl),a.parsers.unshift(new qu),a.parsers.unshift(new _u),a}function $w(n=!0,a=!0){return xt({parsers:[new da(a),new Hu,new Vu,new Gl,new Bu,new $u,new Wu,new zu(n),new Yu(n),new Gu(n)],refiners:[new Ou,new Ru]},n)}var sT={};wt(sT,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>rT,createCasualConfiguration:()=>NN,createConfiguration:()=>iT,hans:()=>hg,hant:()=>fg,parse:()=>t_,parseDate:()=>a_,strict:()=>e_});var hN=Fe(qe(),1);var va={\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},Kl={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function Jr(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?va[t]:a*va[t]:a+=va[t]}return a}function mN(n){let a="";for(let e=0;e<n.length;e++){let t=n[e];a=a+va[t]}return parseInt(a)}var _w=1,fN=2,qw=3,go=class extends U{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(va).join("")+"]{4}|["+Object.keys(va).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(va).join("")+"]{1,3})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(va).join("")+"]{1,3})?(?:\\s*)(?:\u65E5|\u53F7)?")}innerExtract(a,e){let t=(0,hN.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=parseInt(e[fN]);if(isNaN(i)&&(i=Jr(e[fN])),r.start.assign("month",i),e[qw]){let s=parseInt(e[qw]);isNaN(s)&&(s=Jr(e[qw])),r.start.assign("day",s)}else r.start.imply("day",t.date());if(e[_w]){let s=parseInt(e[_w]);isNaN(s)&&(s=mN(e[_w])),r.start.assign("year",s)}else r.start.imply("year",t.year());return r}};var gN=Fe(qe(),1);var PU=new RegExp("(\\d+|["+Object.keys(va).join("")+"]+|\u534A|\u51E0)(?:\\s*)(?:\u4E2A)?(\u79D2(?:\u949F)?|\u5206\u949F|\u5C0F\u65F6|\u949F|\u65E5|\u5929|\u661F\u671F|\u793C\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u8FC7)?\u540E|(?:\u4E4B)?\u5185)","i"),Yw=1,MU=2,ko=class extends U{innerPattern(){return PU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[Yw]);if(isNaN(r)&&(r=Jr(e[Yw])),isNaN(r)){let l=e[Yw];if(l==="\u51E0")r=3;else if(l==="\u534A")r=.5;else return null}let i=(0,gN.default)(a.refDate),o=e[MU][0];return o.match(/[日天星礼月年]/)?(o=="\u65E5"||o=="\u5929"?i=i.add(r,"d"):o=="\u661F"||o=="\u793C"?i=i.add(r*7,"d"):o=="\u6708"?i=i.add(r,"month"):o=="\u5E74"&&(i=i.add(r,"year")),t.start.assign("year",i.year()),t.start.assign("month",i.month()+1),t.start.assign("day",i.date()),t):(o=="\u79D2"?i=i.add(r,"second"):o=="\u5206"?i=i.add(r,"minute"):(o=="\u5C0F"||o=="\u949F")&&(i=i.add(r,"hour")),t.start.imply("year",i.year()),t.start.imply("month",i.month()+1),t.start.imply("day",i.date()),t.start.assign("hour",i.hour()),t.start.assign("minute",i.minute()),t.start.assign("second",i.second()),t)}};var kN=Fe(qe(),1);var IU=new RegExp("(?<prefix>\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys(Kl).join("|")+")"),vo=class extends U{innerPattern(){return IU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Kl[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,kN.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)<Math.abs(i-u)?l=l.day(i-7):Math.abs(i+7-u)<Math.abs(i-u)?l=l.day(i+7):l=l.day(i),t.start.assign("weekday",i),c?(t.start.assign("day",l.date()),t.start.assign("month",l.month()+1),t.start.assign("year",l.year())):(t.start.imply("day",l.date()),t.start.imply("month",l.month()+1),t.start.imply("year",l.year())),t}};var vN=Fe(qe(),1);var AU=new RegExp("(?:\u4ECE|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\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)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(va).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(va).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(va).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),FU=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\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)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(va).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(va).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(va).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),eg=1,tg=2,ag=3,rg=4,ig=5,sg=6,Zr=7,Ql=8,ng=9,yo=class extends U{innerPattern(){return AU}innerExtract(a,e){if(e.index>0&&a.text[e.index-1].match(/\w/))return null;let t=(0,vN.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=t.clone();if(e[eg]){let u=e[eg];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[rg]){let u=e[rg];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[Ql]){let u=parseInt(e[Ql]);if(isNaN(u)&&(u=Jr(e[Ql])),u>=60)return null;r.start.assign("second",u)}if(s=parseInt(e[sg]),isNaN(s)&&(s=Jr(e[sg])),e[Zr]?e[Zr]=="\u534A"?o=30:e[Zr]=="\u6B63"||e[Zr]=="\u6574"?o=0:(o=parseInt(e[Zr]),isNaN(o)&&(o=Jr(e[Zr]))):s>100&&(o=s%100,s=Math.floor(s/100)),o>=60||s>24)return null;if(s>=12&&(l=1),e[ng]){if(s>12)return null;let u=e[ng][0].toLowerCase();u=="a"&&(l=0,s==12&&(s=0)),u=="p"&&(l=1,s!=12&&(s+=12))}else if(e[tg]){let p=e[tg][0];p=="\u65E9"?(l=0,s==12&&(s=0)):p=="\u665A"&&(l=1,s!=12&&(s+=12))}else if(e[ag]){let p=e[ag][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[ig]){let p=e[ig][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=FU.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[eg]){let u=e[eg];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[rg]){let u=e[rg];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[Ql]){let u=parseInt(e[Ql]);if(isNaN(u)&&(u=Jr(e[Ql])),u>=60)return null;r.end.assign("second",u)}if(s=parseInt(e[sg]),isNaN(s)&&(s=Jr(e[sg])),e[Zr]?e[Zr]=="\u534A"?o=30:e[Zr]=="\u6B63"||e[Zr]=="\u6574"?o=0:(o=parseInt(e[Zr]),isNaN(o)&&(o=Jr(e[Zr]))):s>100&&(o=s%100,s=Math.floor(s/100)),o>=60||s>24)return null;if(s>=12&&(l=1),e[ng]){if(s>12)return null;let u=e[ng][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[tg]){let p=e[tg][0];p=="\u65E9"?(l=0,s==12&&(s=0)):p=="\u665A"&&(l=1,s!=12&&(s+=12))}else if(e[ag]){let p=e[ag][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[ig]){let p=e[ig][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()<r.start.date().getTime()&&r.end.imply("day",r.end.get("day")+1),r}};var yN=Fe(qe(),1);var RU=new RegExp("(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys(Kl).join("|")+")"),bo=class extends U{innerPattern(){return RU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Kl[r];if(i===void 0)return null;let s=(0,yN.default)(a.refDate),o=!1,l=s.day();return Math.abs(i-7-l)<Math.abs(i-l)?s=s.day(i-7):Math.abs(i+7-l)<Math.abs(i-l)?s=s.day(i+7):s=s.day(i),t.start.assign("weekday",i),o?(t.start.assign("day",s.date()),t.start.assign("month",s.month()+1),t.start.assign("year",s.year())):(t.start.imply("day",s.date()),t.start.imply("month",s.month()+1),t.start.imply("year",s.year())),t}};var xN=Fe(qe(),1);var OU=1,bN=2,NU=3,wN=4,TN=5,LU=6,wo=class extends U{innerPattern(a){return new RegExp("(\u800C\u5BB6|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(a,e){let t=e.index,r=a.createParsingResult(t,e[0]),i=(0,xN.default)(a.refDate),s=i;if(e[OU])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[bN]){let o=e[bN],l=e[NU];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")),l=="\u65E9"||l=="\u671D"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(e[wN]){let l=e[wN][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[TN]){let o=e[TN];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[LU];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 DN=Fe(qe(),1);var ya={\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},Xl={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function ei(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?ya[t]:a*ya[t]:a+=ya[t]}return a}function CN(n){let a="";for(let e=0;e<n.length;e++){let t=n[e];a=a+ya[t]}return parseInt(a)}var Gw=1,SN=2,Kw=3,To=class extends U{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(ya).join("")+"]{4}|["+Object.keys(ya).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(ya).join("")+"]{1,2})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(ya).join("")+"]{1,2})?(?:\\s*)(?:\u65E5|\u865F)?")}innerExtract(a,e){let t=(0,DN.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=parseInt(e[SN]);if(isNaN(i)&&(i=ei(e[SN])),r.start.assign("month",i),e[Kw]){let s=parseInt(e[Kw]);isNaN(s)&&(s=ei(e[Kw])),r.start.assign("day",s)}else r.start.imply("day",t.date());if(e[Gw]){let s=parseInt(e[Gw]);isNaN(s)&&(s=CN(e[Gw])),r.start.assign("year",s)}else r.start.imply("year",t.year());return r}};var EN=Fe(qe(),1);var jU=new RegExp("(\\d+|["+Object.keys(ya).join("")+"]+|\u534A|\u5E7E)(?:\\s*)(?:\u500B)?(\u79D2(?:\u9418)?|\u5206\u9418|\u5C0F\u6642|\u9418|\u65E5|\u5929|\u661F\u671F|\u79AE\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u904E)?\u5F8C|(?:\u4E4B)?\u5167)","i"),Qw=1,HU=2,xo=class extends U{innerPattern(){return jU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[Qw]);if(isNaN(r)&&(r=ei(e[Qw])),isNaN(r)){let l=e[Qw];if(l==="\u5E7E")r=3;else if(l==="\u534A")r=.5;else return null}let i=(0,EN.default)(a.refDate),o=e[HU][0];return o.match(/[日天星禮月年]/)?(o=="\u65E5"||o=="\u5929"?i=i.add(r,"d"):o=="\u661F"||o=="\u79AE"?i=i.add(r*7,"d"):o=="\u6708"?i=i.add(r,"month"):o=="\u5E74"&&(i=i.add(r,"year")),t.start.assign("year",i.year()),t.start.assign("month",i.month()+1),t.start.assign("day",i.date()),t):(o=="\u79D2"?i=i.add(r,"second"):o=="\u5206"?i=i.add(r,"minute"):(o=="\u5C0F"||o=="\u9418")&&(i=i.add(r,"hour")),t.start.imply("year",i.year()),t.start.imply("month",i.month()+1),t.start.imply("day",i.date()),t.start.assign("hour",i.hour()),t.start.assign("minute",i.minute()),t.start.assign("second",i.second()),t)}};var PN=Fe(qe(),1);var BU=new RegExp("(?<prefix>\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(Xl).join("|")+")"),Co=class extends U{innerPattern(){return BU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Xl[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,PN.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)<Math.abs(i-u)?l=l.day(i-7):Math.abs(i+7-u)<Math.abs(i-u)?l=l.day(i+7):l=l.day(i),t.start.assign("weekday",i),c?(t.start.assign("day",l.date()),t.start.assign("month",l.month()+1),t.start.assign("year",l.year())):(t.start.imply("day",l.date()),t.start.imply("month",l.month()+1),t.start.imply("year",l.year())),t}};var MN=Fe(qe(),1);var VU=new RegExp("(?:\u7531|\u5F9E|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ya).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ya).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ya).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),WU=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ya).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ya).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ya).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),og=1,lg=2,dg=3,cg=4,ug=5,pg=6,ti=7,Jl=8,mg=9,So=class extends U{innerPattern(){return VU}innerExtract(a,e){if(e.index>0&&a.text[e.index-1].match(/\w/))return null;let t=(0,MN.default)(a.refDate),r=a.createParsingResult(e.index,e[0]),i=t.clone();if(e[og]){var s=e[og];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[cg]){var o=e[cg];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[Jl]){var p=parseInt(e[Jl]);if(isNaN(p)&&(p=ei(e[Jl])),p>=60)return null;r.start.assign("second",p)}if(l=parseInt(e[pg]),isNaN(l)&&(l=ei(e[pg])),e[ti]?e[ti]=="\u534A"?c=30:e[ti]=="\u6B63"||e[ti]=="\u6574"?c=0:(c=parseInt(e[ti]),isNaN(c)&&(c=ei(e[ti]))):l>100&&(c=l%100,l=Math.floor(l/100)),c>=60||l>24)return null;if(l>=12&&(u=1),e[mg]){if(l>12)return null;var m=e[mg][0].toLowerCase();m=="a"&&(u=0,l==12&&(l=0)),m=="p"&&(u=1,l!=12&&(l+=12))}else if(e[lg]){var f=e[lg],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(e[dg]){var k=e[dg],g=k[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(u=0,l==12&&(l=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(e[ug]){var v=e[ug],b=v[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=WU.exec(a.text.substring(r.index+r.text.length)),!e)return r.text.match(/^\d+$/)?null:r;let y=i.clone();if(r.end=a.createParsingComponents(),e[og]){var s=e[og];s=="\u660E"||s=="\u807D"?t.hour()>1&&(y=y.add(1,"day")):s=="\u6628"||s=="\u5C0B"||s=="\u7434"?y=y.add(-1,"day"):s=="\u524D"?y=y.add(-2,"day"):s=="\u5927\u524D"?y=y.add(-3,"day"):s=="\u5F8C"?y=y.add(2,"day"):s=="\u5927\u5F8C"&&(y=y.add(3,"day")),r.end.assign("day",y.date()),r.end.assign("month",y.month()+1),r.end.assign("year",y.year())}else if(e[cg]){var o=e[cg];o=="\u660E"||o=="\u807D"?y=y.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?y=y.add(-1,"day"):o=="\u524D"?y=y.add(-2,"day"):o=="\u5927\u524D"?y=y.add(-3,"day"):o=="\u5F8C"?y=y.add(2,"day"):o=="\u5927\u5F8C"&&(y=y.add(3,"day")),r.end.assign("day",y.date()),r.end.assign("month",y.month()+1),r.end.assign("year",y.year())}else r.end.imply("day",y.date()),r.end.imply("month",y.month()+1),r.end.imply("year",y.year());if(l=0,c=0,u=-1,e[Jl]){var p=parseInt(e[Jl]);if(isNaN(p)&&(p=ei(e[Jl])),p>=60)return null;r.end.assign("second",p)}if(l=parseInt(e[pg]),isNaN(l)&&(l=ei(e[pg])),e[ti]?e[ti]=="\u534A"?c=30:e[ti]=="\u6B63"||e[ti]=="\u6574"?c=0:(c=parseInt(e[ti]),isNaN(c)&&(c=ei(e[ti]))):l>100&&(c=l%100,l=Math.floor(l/100)),c>=60||l>24)return null;if(l>=12&&(u=1),e[mg]){if(l>12)return null;var m=e[mg][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[lg]){var f=e[lg],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(e[dg]){var k=e[dg],g=k[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(u=0,l==12&&(l=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(e[ug]){var v=e[ug],b=v[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()<r.start.date().getTime()&&r.end.imply("day",r.end.get("day")+1),r}};var IN=Fe(qe(),1);var zU=new RegExp("(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(Xl).join("|")+")"),Do=class extends U{innerPattern(){return zU}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=Xl[r];if(i===void 0)return null;let s=(0,IN.default)(a.refDate),o=!1,l=s.day();return Math.abs(i-7-l)<Math.abs(i-l)?s=s.day(i-7):Math.abs(i+7-l)<Math.abs(i-l)?s=s.day(i+7):s=s.day(i),t.start.assign("weekday",i),o?(t.start.assign("day",s.date()),t.start.assign("month",s.month()+1),t.start.assign("year",s.year())):(t.start.imply("day",s.date()),t.start.imply("month",s.month()+1),t.start.imply("year",s.year())),t}};var Eo=class extends vt{patternBetween(){return/^\s*(至|到|\-|\~|~|-|ー)\s*$/i}};var Po=class extends yt{patternBetween(){return/^\s*$/i}};var fg={};wt(fg,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>Xw,createCasualConfiguration:()=>Jw,createConfiguration:()=>Zw,hant:()=>$U,parse:()=>_U,parseDate:()=>qU,strict:()=>UU});var $U=new ve(Jw()),Xw=new ve(Jw()),UU=new ve(Zw());function _U(n,a,e){return Xw.parse(n,a,e)}function qU(n,a,e){return Xw.parseDate(n,a,e)}function Jw(){let n=Zw();return n.parsers.unshift(new wo),n}function Zw(){let n=xt({parsers:[new To,new Co,new Do,new So,new xo],refiners:[new Eo,new Po]});return n.refiners=n.refiners.filter(a=>!(a instanceof Si)),n}var hg={};wt(hg,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>eT,createCasualConfiguration:()=>tT,createConfiguration:()=>aT,hans:()=>QU,parse:()=>JU,parseDate:()=>ZU,strict:()=>XU});var ON=Fe(qe(),1);var YU=1,AN=2,GU=3,FN=4,RN=5,KU=6,Ku=class extends U{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,ON.default)(a.refDate),s=i;if(e[YU])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[AN]){let o=e[AN],l=e[GU];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[FN]){let l=e[FN][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[RN]){let o=e[RN];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[KU];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 Qu=class extends vt{patternBetween(){return/^\s*(至|到|-|~|~|-|ー)\s*$/i}};var Xu=class extends yt{patternBetween(){return/^\s*$/i}};var QU=new ve(tT()),eT=new ve(tT()),XU=new ve(aT());function JU(n,a,e){return eT.parse(n,a,e)}function ZU(n,a,e){return eT.parseDate(n,a,e)}function tT(){let n=aT();return n.parsers.unshift(new Ku),n}function aT(){let n=xt({parsers:[new go,new vo,new bo,new yo,new ko],refiners:[new Qu,new Xu]});return n.refiners=n.refiners.filter(a=>!(a instanceof Si)),n}var rT=new ve(NN()),e_=new ve(iT());function t_(n,a,e){return rT.parse(n,a,e)}function a_(n,a,e){return rT.parseDate(n,a,e)}function NN(){let n=iT();return n.parsers.unshift(new wo),n}function iT(){let n=xt({parsers:[new To,new go,new Co,new vo,new Do,new bo,new So,new yo,new xo,new ko],refiners:[new Eo,new Po]});return n.refiners=n.refiners.filter(a=>!(a instanceof Si)),n}var hT={};wt(hT,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>mT,createCasualConfiguration:()=>_N,createConfiguration:()=>fT,parse:()=>f_,parseDate:()=>h_,strict:()=>m_});var Ir={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},dT={\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},cT={\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},Zl={...cT,\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},oT={\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},lT={\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},Ju={\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"},r_=`(?:${te(oT)}|[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 i_(n){let a=n.toLowerCase();return oT[a]!==void 0?oT[a]:a.match(/несколько/)?3:a.match(/пол/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var uT=`(?:${te(lT)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;function pT(n){let a=n.toLowerCase();return lT[a]!==void 0?lT[a]:parseInt(a)}var nT="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?",gg=`(?:[1-9][0-9]{0,3}${nT}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${nT}|[5-9][0-9]${nT})`;function kg(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 fr(a)}var jN=`(${r_})\\s{0,3}(${te(Ju)})`,LN=new RegExp(jN,"i"),ed=Ja("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",jN);function td(n){let a={},e=n,t=LN.exec(e);for(;t;)s_(a,t),e=e.substring(t[0].length).trim(),t=LN.exec(e);return a}function s_(n,a){let e=i_(a[1]),t=Ju[a[2].toLowerCase()];n[t]=e}var HN=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${ed})${Ir.rightBoundary}`,Zu=class extends U{patternLeftBoundary(){return Ir.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(HN,Ir.flags):new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${HN}`,Ir.flags)}innerExtract(a,e){let t=td(e[1]);return K.createRelativeFromReference(a.reference,t)}};var Mo=class extends U{patternLeftBoundary(){return Ir.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),Ir.flags)}innerPatternHasChange(a,e){return!1}},gr=class extends Mo{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${Ir.rightBoundary}`,Ir.flags)}};var BN=1,VN=2,n_=3,WN=4,ep=class extends gr{innerPatternString(a){return`(?:\u0441)?\\s*(${uT})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${uT}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${te(Zl)})(?:(?:-|\\/|,?\\s{0,3})(${gg}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Zl[e[n_].toLowerCase()],i=pT(e[BN]);if(i>31)return e.index=e.index+e[BN].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[WN]){let s=kg(e[WN]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[VN]){let s=pT(e[VN]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var o_=2,zN=3,tp=class extends Mo{innerPatternString(a){return`((?:\u0432)\\s*)?(${te(Zl)})\\s*(?:[,-]?\\s*(${gg})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[o_].toLowerCase();if(e[0].length<=3&&!cT[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=Zl[t];if(r.start.assign("month",i),e[zN]){let s=kg(e[zN]);r.start.assign("year",s)}else{let s=Je(a.refDate,1,i);r.start.imply("year",s)}return r}};var ap=class extends ga{constructor(a){super(a)}patternFlags(){return Ir.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))?(?!\\/)${Ir.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 rp=class extends Mo{innerPatternString(a){return`(${ed})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`}innerExtract(a,e){let t=td(e[1]),r=ea(t);return K.createRelativeFromReference(a.reference,r)}};var ip=class extends vt{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}};var sp=class extends yt{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}};var np=class extends gr{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 ka(a.reference);case"\u0432\u0447\u0435\u0440\u0430":return za(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return $a(a.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Qi(a.reference,2);case"\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Qi(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return uo(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return uo(a.reference,3)}return r}};var $N=Fe(qe(),1);var op=class extends gr{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,$N.default)(a.refDate),r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0441\u0435\u0439\u0447\u0430\u0441")return Wa(a.reference);if(r==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||r==="\u0432\u0435\u0447\u0435\u0440\u0430")return $l(a.reference);if(r.endsWith("\u0443\u0442\u0440\u043E\u043C")||r.endsWith("\u0443\u0442\u0440\u0430"))return Ul(a.reference);if(r.match(/в\s*полдень/))return _l(a.reference);if(r.match(/прошлой\s*ночью/))return zh(a.reference);if(r.match(/прошлым\s*вечером/))return $h(a.reference);if(r.match(/следующей\s*ночью/)){let s=t.hour()<22?1:2;t=t.add(s,"day"),kt(i,t),i.imply("hour",0)}return r.match(/в\s*полночь/)||r.endsWith("\u043D\u043E\u0447\u044C\u044E")?po(a.reference):i}};var l_=1,d_=2,c_=3,lp=class extends gr{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(dT)})(?:\\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[d_].toLowerCase(),r=dT[t],i=e[l_],s=e[c_],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"),ta(a.reference,r,l)}};var UN=Fe(qe(),1);var u_=1,p_=2,dp=class extends gr{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(Ju)})`}innerExtract(a,e){let t=e[u_].toLowerCase(),r=e[p_].toLowerCase(),i=Ju[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,UN.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 cp=class extends gr{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*(${ed})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=td(e[2]);switch(t){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":r=ea(r);break}return K.createRelativeFromReference(a.reference,r)}};var mT=new ve(_N()),m_=new ve(fT(!0));function f_(n,a,e){return mT.parse(n,a,e)}function h_(n,a,e){return mT.parseDate(n,a,e)}function _N(){let n=fT(!1);return n.parsers.unshift(new np),n.parsers.unshift(new op),n.parsers.unshift(new tp),n.parsers.unshift(new dp),n.parsers.unshift(new cp),n}function fT(n=!0){return xt({parsers:[new da(!0),new Zu,new ep,new lp,new ap(n),new rp],refiners:[new sp,new ip]},n)}var wT={};wt(wT,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>yT,createCasualConfiguration:()=>r2,createConfiguration:()=>bT,parse:()=>D_,parseDate:()=>E_,strict:()=>S_});var kT={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},vT={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},gT={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},YN={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"},g_=`(?:${te(gT)}|[0-9]+|[0-9]+\\.[0-9]+|un?|uno?|una?|algunos?|unos?|demi-?)`;function k_(n){let a=n.toLowerCase();return gT[a]!==void 0?gT[a]:a==="un"||a==="una"||a==="uno"?1:a.match(/algunos?/)||a.match(/unos?/)?3:a.match(/media?/)?.5:parseFloat(a)}var GN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function KN(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 QN=`(${g_})\\s{0,5}(${te(YN)})\\s{0,5}`,qN=new RegExp(QN,"i"),XN=Ja("",QN);function JN(n){let a={},e=n,t=qN.exec(e);for(;t;)v_(a,t),e=e.substring(t[0].length),t=qN.exec(e);return a}function v_(n,a){let e=k_(a[1]),t=YN[a[2].toLowerCase()];n[t]=e}var y_=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|pasado|pr[o\xF3]ximo)\\s*)?(${te(kT)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|pasado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),b_=1,w_=2,T_=3,up=class extends U{innerPattern(){return y_}innerExtract(a,e){let t=e[w_].toLowerCase(),r=kT[t];if(r===void 0)return null;let i=e[b_],s=e[T_],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"),ta(a.reference,r,l)}};var pp=class extends ga{primaryPrefix(){return"(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:l)?|\\?)\\s*"}};var mp=class extends yt{patternBetween(){return new RegExp("^\\s*(?:,|de|aslas|a)?\\s*$")}};var fp=class extends vt{patternBetween(){return/^\s*(?:-)\s*$/i}};var x_=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(vT)})(?:\\s*(?:de|,)?\\s*(${GN}))?(?=\\W|$)`,"i"),ZN=1,e2=2,C_=3,t2=4,hp=class extends U{innerPattern(){return x_}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=vT[e[C_].toLowerCase()],i=parseInt(e[ZN]);if(i>31)return e.index=e.index+e[ZN].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[t2]){let s=KN(e[t2]);t.start.assign("year",s)}else{let s=Je(a.refDate,i,r);t.start.imply("year",s)}if(e[e2]){let s=parseInt(e[e2]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var gp=class extends U{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 Wa(a.reference);case"hoy":return ka(a.reference);case"ma\xF1ana":return $a(a.reference);case"ayer":return za(a.reference)}return r}};var a2=Fe(qe(),1),kp=class extends U{innerPattern(){return/(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i}innerExtract(a,e){let t=(0,a2.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":Ci(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 vp=class extends U{innerPattern(){return new RegExp(`(?:en|por|durante|de|dentro de)\\s*(${XN})(?=\\W|$)`,"i")}innerExtract(a,e){let t=JN(e[1]);return K.createRelativeFromReference(a.reference,t)}};var yT=new ve(r2()),S_=new ve(bT(!0));function D_(n,a,e){return yT.parse(n,a,e)}function E_(n,a,e){return yT.parseDate(n,a,e)}function r2(n=!0){let a=bT(!1,n);return a.parsers.push(new gp),a.parsers.push(new kp),a}function bT(n=!0,a=!0){return xt({parsers:[new da(a),new up,new pp,new hp,new vp],refiners:[new mp,new fp]},n)}var AT={};wt(AT,{Chrono:()=>ve,Meridiem:()=>$,ParsingComponents:()=>K,ParsingResult:()=>We,ReferenceWithTimezone:()=>Ye,Weekday:()=>ye,casual:()=>MT,createCasualConfiguration:()=>m2,createConfiguration:()=>IT,parse:()=>B_,parseDate:()=>V_,strict:()=>H_});var ai={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},ST={\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},DT={\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},ad={...DT,\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},xT={\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},CT={\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},yp={\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"},P_=`(?:${te(xT)}|[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 M_(n){let a=n.toLowerCase();return xT[a]!==void 0?xT[a]:a.match(/декілька/)?2:a.match(/пів/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var ET=`(?:${te(CT)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435)?)`;function PT(n){let a=n.toLowerCase();return CT[a]!==void 0?CT[a]:parseInt(a)}var TT="(?:\\s+(?:\u0440\u043E\u043A\u0443|\u0440\u0456\u043A|\u0440|\u0440.))?",vg=`(?:[1-9][0-9]{0,3}${TT}\\s*(?:\u043D.\u0435.|\u0434\u043E \u043D.\u0435.|\u043D. \u0435.|\u0434\u043E \u043D. \u0435.)|[1-2][0-9]{3}${TT}|[5-9][0-9]${TT})`;function yg(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 fr(a)}var s2=`(${P_})\\s{0,3}(${te(yp)})`,i2=new RegExp(s2,"i"),rd=Ja("(?:(?:\u0431\u043B\u0438\u0437\u044C\u043A\u043E|\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E)\\s{0,3})?",s2);function id(n){let a={},e=n,t=i2.exec(e);for(;t;)I_(a,t),e=e.substring(t[0].length).trim(),t=i2.exec(e);return a}function I_(n,a){let e=M_(a[1]),t=yp[a[2].toLowerCase()];n[t]=e}var n2=`(?:(?:\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E|\u043E\u0440\u0456\u0454\u043D\u0442\u043E\u0432\u043D\u043E)\\s*(?:~\\s*)?)?(${rd})${ai.rightBoundary}`,bp=class extends U{patternLeftBoundary(){return ai.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(n2,"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*${n2}`,ai.flags)}innerExtract(a,e){let t=id(e[1]);return K.createRelativeFromReference(a.reference,t)}};var Io=class extends U{patternLeftBoundary(){return ai.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),ai.flags)}innerPatternHasChange(a,e){return!1}},kr=class extends Io{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${ai.rightBoundary}`,ai.flags)}};var o2=1,l2=2,A_=3,d2=4,wp=class extends kr{innerPatternString(a){return`(?:\u0437|\u0456\u0437)?\\s*(${ET})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${ET}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${te(ad)})(?:(?:-|\\/|,?\\s{0,3})(${vg}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=ad[e[A_].toLowerCase()],i=PT(e[o2]);if(i>31)return e.index=e.index+e[o2].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[d2]){let s=yg(e[d2]);t.start.assign("year",s)}else{let s=Je(a.reference.instant,i,r);t.start.imply("year",s)}if(e[l2]){let s=PT(e[l2]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var F_=2,c2=3,Tp=class extends Io{innerPatternString(a){return`((?:\u0432|\u0443)\\s*)?(${te(ad)})\\s*(?:[,-]?\\s*(${vg})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[F_].toLowerCase();if(e[0].length<=3&&!DT[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=ad[t];if(r.start.assign("month",i),e[c2]){let s=yg(e[c2]);r.start.assign("year",s)}else{let s=Je(a.reference.instant,1,i);r.start.imply("year",s)}return r}};var xp=class extends ga{constructor(a){super(a)}patternFlags(){return ai.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))?(?!\\/)${ai.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 Cp=class extends Io{innerPatternString(a){return`(${rd})\\s{0,5}\u0442\u043E\u043C\u0443(?=(?:\\W|$))`}innerExtract(a,e){let t=id(e[1]),r=ea(t);return K.createRelativeFromReference(a.reference,r)}};var Sp=class extends vt{patternBetween(){return/^\s*(і до|і по|до|по|-)\s*$/i}};var Dp=class extends yt{patternBetween(){return new RegExp("^\\s*(T|\u0432|\u0443|\u043E|,|-)?\\s*$")}};var Ep=class extends kr{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 ka(a.reference);case"\u0432\u0447\u043E\u0440\u0430":return za(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return $a(a.reference);case"\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return Qi(a.reference,2);case"\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return Qi(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return uo(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return uo(a.reference,3)}return r}};var u2=Fe(qe(),1);var Pp=class extends kr{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,u2.default)(a.reference.instant),r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0437\u0430\u0440\u0430\u0437")return Wa(a.reference);if(r==="\u0432\u0432\u0435\u0447\u0435\u0440\u0456"||r==="\u0432\u0435\u0447\u043E\u0440\u0430")return $l(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 Ul(a.reference);if(r.endsWith("\u043E\u043F\u0456\u0432\u0434\u043D\u0456"))return _l(a.reference);if(r.match(/минулої\s*ночі/))return zh(a.reference);if(r.match(/минулого\s*вечора/))return $h(a.reference);if(r.match(/наступної\s*ночі/)){let s=t.hour()<22?1:2;t=t.add(s,"day"),kt(i,t),i.imply("hour",1)}return r.match(/цієї\s*ночі/)?po(a.reference):r.endsWith("\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456")||r.endsWith("\u0432\u043D\u043E\u0447\u0456")?po(a.reference):i}};var R_=1,O_=2,N_=3,Mp=class extends kr{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(ST)})(?:\\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[O_].toLocaleLowerCase(),r=ST[t],i=e[R_],s=e[N_],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"),ta(a.reference,r,l)}};var p2=Fe(qe(),1);var L_=1,j_=2,Ip=class extends kr{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(yp)})(?=\\s*)`}innerExtract(a,e){let t=e[L_].toLowerCase(),r=e[j_].toLowerCase(),i=yp[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,p2.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 Ap=class extends kr{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*(${rd})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=id(e[3]);switch(t){case"\u043E\u0441\u0442\u0430\u043D\u043D\u0456":case"\u043C\u0438\u043D\u0443\u043B\u0456":case"-":r=ea(r);break}return K.createRelativeFromReference(a.reference,r)}};var MT=new ve(m2()),H_=new ve(IT(!0));function m2(){let n=IT(!1);return n.parsers.unshift(new Ep),n.parsers.unshift(new Pp),n.parsers.unshift(new Tp),n.parsers.unshift(new Ip),n.parsers.unshift(new Ap),n}function IT(n){return xt({parsers:[new Rs,new da(!0),new bp,new wp,new Mp,new xp(n),new Cp],refiners:[new Dp,new Sp]},n)}function B_(n,a,e){return MT.parse(n,a,e)}function V_(n,a,e){return MT.parseDate(n,a,e)}var W_=lw,FT=Gc;function z_(n,a,e){return FT.parse(n,a,e)}function $_(n,a,e){return FT.parseDate(n,a,e)}var sd=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&&p<f.index+f.text.length)){let f=this.parseTimeComponent(u);if(f)switch(l.add(p),t.push({text:u,index:p,timeComponent:f,isRange:!1}),this.determineTimeContext(a,u,p)){case"start":e.startTime||(e.startTime=f);break;case"due":e.dueTime||(e.dueTime=f);break;case"scheduled":e.scheduledTime||(e.scheduledTime=f);break}}}for(let c of o){let u=c[0],p=c.index||0;if(l.has(p))continue;if(!t.some(f=>f.isRange&&p>=f.index&&p<f.index+f.text.length)){let f=this.parseTimeComponent(u);if(f)switch(t.push({text:u,index:p,timeComponent:f,isRange:!1}),this.determineTimeContext(a,u,p)){case"start":e.startTime||(e.startTime=f);break;case"due":e.dueTime||(e.dueTime=f);break;case"scheduled":e.scheduledTime||(e.scheduledTime=f);break}}}return{timeComponents:e,timeExpressions:t}}determineTimeContext(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.scheduled)if(s.includes(o.toLowerCase()))return"scheduled";for(let o of this.config.dateKeywords.due)if(s.includes(o.toLowerCase()))return"due";return s.includes("at")||s.includes("@")?"scheduled":"due"}parseTimeExpressions(a){var s;if(!this.config.enabled)return{originalText:a,cleanedText:a,parsedExpressions:[]};let e=this.generateCacheKey(a);if(this.parseCache.has(e))return this.parseCache.get(e);let{timeComponents:t,timeExpressions:r}=this.extractTimeComponents(a),i={originalText:a,cleanedText:a,parsedExpressions:[],timeComponents:t};try{if(typeof a!="string")return console.warn("TimeParsingService: Invalid input type, expected string"),i;if(a.trim().length===0)return i;let o=RT,l;try{l=o.parse(a)}catch(c){console.warn("TimeParsingService: Chrono parsing failed:",c),l=[]}if(l.length===0&&/[\u4e00-\u9fff]/.test(a))try{if(o.zh&&o.zh.hant&&typeof o.zh.hant.parse=="function"){let c=o.zh.parse(a);c&&c.length>0&&(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 k=r.find(b=>b.index>=m-10&&b.index<=m+f+10),g=!1;k!=null&&k.rangeStart&&(k!=null&&k.rangeEnd)&&(g=k.rangeStart.hour>k.rangeEnd.hour);let v={text:u,date:p,type:h,index:m,length:f,timeComponent:k==null?void 0:k.timeComponent,isTimeRange:(k==null?void 0:k.isRange)||!1,rangeStart:k==null?void 0:k.rangeStart,rangeEnd:k==null?void 0:k.rangeEnd,crossesMidnight:g||void 0};switch(i.parsedExpressions.push(v),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;m<c;m++)if(t.has(m)){u=!0;break}if(u)continue;let p=this.parseChineseDate(o);if(p){for(let m=l;m<c;m++)t.add(m);e.push({text:o,index:l,length:o.length,start:{date:()=>p}})}}}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}}},f2={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 bg=require("obsidian");var ba=require("obsidian");Y();function h2(){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 ba.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 ba.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 ba.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 ba.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 ba.Notice(d("Lowest priority set"))}}]}function g2(){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 ba.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 ba.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 ba.Notice(d("Scheduled date set"))}}]}function k2(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 ba.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 ba.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 ba.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 ba.Notice(d("Target set to")+` ${i}`)}})}),a}function v2(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 ba.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 ba.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 ba.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 ba.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 ba.Notice(d("Tagged with")+` #${r}`)}})})}catch(e){console.warn("Failed to load existing tags:",e)}return a}function y2(n){return{priority:h2(),date:g2(),target:k2(n),tag:v2(n)}}function Fp(n,a){let e=y2(a);switch(n){case"!":return e.priority;case"~":return e.date;case"*":return e.target;case"#":return e.tag;default:return[]}}var Rp=class extends bg.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 Fp(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,bg.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 Ns=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 Rp(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 U_(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function __(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?U_(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var ca=class extends wa.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 Ns(e,t),this.plugin.settings.quickCapture.targetType==="daily-note"){let s=(0,wa.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=__(o)}else this.tempTargetFilePath=this.plugin.settings.quickCapture.targetFile;this.preferMetadataFormat=this.plugin.settings.preferMetadataFormat,this.timeParsingService=new sd(this.plugin.settings.timeParsing||f2),r&&(this.taskMetadata=r),this.useFullFeaturedMode=i&&!wa.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 no(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 no(this.app,o,this.plugin.settings.quickCapture,f=>{var h,k;o.textContent=f.path,this.tempTargetFilePath=f.path,(k=(h=this.markdownEditor)==null?void 0:h.editor)==null||k.focus()}),r.createDiv({text:d("Task Properties"),cls:"quick-capture-section-title"}),new gn(this.plugin,r,{status:this.taskMetadata.status},{type:"quick-capture",onTaskStatusSelected:f=>{this.taskMetadata.status=f,this.updatePreview()}}).load(),new wa.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 wa.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 wa.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 wa.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(k=>{this.taskMetadata.priority=k?parseInt(k):void 0,this.updatePreview()})}),new wa.Setting(r).setName(d("Project")).addText(f=>{new ur(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 wa.Setting(r).setName(d("Context")).addText(f=>{new pr(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 wa.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 It(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=_i(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 wa.Notice(d("Nothing to capture"));return}try{let r=this.processContentWithMetadata(e),i={...this.plugin.settings.quickCapture,targetFile:this.tempTargetFilePath};await qi(this.app,r,i),new wa.Notice(d("Captured successfully")),this.close()}catch(r){new wa.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()),k=this.taskMetadata.status||" ",g=`${f} [${k}] ${h}`;r.push(this.addLineMetadataToTask(g,l))}else{let f=this.taskMetadata.status||" ",h=this.cleanTemporaryMarks(c),k=`- [${f}] ${h}`;r.push(this.addLineMetadataToTask(k,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 nd=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(k=>{let g=u.createEl("li");g.createEl("code",{text:k.marker}),g.createSpan().setText(" - "+k.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(k=>{f.createEl("li").createSpan().setText(k.symbol+" - "+k.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 ca(this.plugin.app,this.plugin).open():new Ao.Notice(d("Quick capture is now enabled in your configuration!"),3e3)}catch(s){console.error("Failed to open quick capture:",s),new Ao.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 Ao.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,Ao.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"})}};Y();var OT=require("obsidian"),od=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,OT.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((y,w)=>{let x=p.createDiv("quick-start-step");x.createDiv("step-number").setText((w+1).toString()),x.createDiv("step-content").setText(y)});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(y=>{let w=h.createEl("li"),x=w.createSpan("step-check");(0,OT.setIcon)(x,"arrow-right"),w.createSpan("step-text").setText(y)});let g=a.createDiv("resources-section");g.createEl("h3",{text:d("Helpful Resources")});let v=g.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(y=>{let w=v.createDiv("resource-item"),x=w.createDiv("resource-content");x.createEl("h4",{text:y.title}),x.createEl("p",{text:y.description}),y.url?(w.addEventListener("click",()=>{window.open(y.url,"_blank")}),w.addClass("resource-clickable")):y.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 wg=class extends Zi.Modal{constructor(a,e,t){super(a),this.plugin=e,this.configManager=new mn(e),this.onComplete=t,this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1},this.userLevelSelector=new Al(this.configManager),this.configPreview=new Fl(this.configManager),this.taskCreationGuide=new nd(this.plugin),this.onboardingComplete=new od,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 Zi.ButtonComponent(a).setButtonText(d("Skip onboarding")).onClick(()=>this.handleSkip()),this.backButton=new Zi.ButtonComponent(a).setButtonText(d("Back")).onClick(()=>this.handleBack()),this.nextButton=new Zi.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,Zi.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 Zi.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 NT(n,a){new Di.Setting(a).setName(d("About")+" Task Genius").setHeading(),new Di.Setting(a).setName(d("Version")).setDesc(`Task Genius v${n.plugin.manifest.version}`),new Di.Setting(a).setName(d("Donate")).setDesc(d("If you like this plugin, consider donating to support continued development:")).addButton(t=>{t.buttonEl.outerHTML='<a href="https://www.buymeacoffee.com/boninall"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=boninall&button_colour=6495ED&font_colour=ffffff&font_family=Inter&outline_colour=000000&coffee_colour=FFDD00"></a>'}),new Di.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 Di.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 wg(n.plugin.app,n.plugin,()=>{n.display()}).open()})}),new Di.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 Di.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,Di.setIcon)(s,i)}let r=t.createSpan();(0,Di.setIcon)(r,"task-genius")})}var q_=require("obsidian");Y();var HT=require("obsidian");Y();var vr=require("obsidian");jT();Y();var xg=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 vr.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,vr.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 vr.ExtraButtonComponent(u).setTooltip(d("Edit")).setIcon("edit").onClick(()=>{this.openHabitEditDialog(r)}),new vr.ExtraButtonComponent(u).setTooltip(d("Delete")).setIcon("trash").onClick(()=>{this.deleteHabit(r)})})})}openHabitEditDialog(a){new Op(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 vr.Notice(a?d("Habit updated"):d("Habit added"))}).open()}deleteHabit(a){let e=a.name,t=new vr.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 vr.ButtonComponent(i).setButtonText(d("Cancel")).setClass("habit-cancel-button").onClick(()=>{t.close()}),new vr.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 vr.Notice(d("Habit deleted"))),t.close()})}),t.open()}};function BT(n,a){new HT.Setting(a).setName(d("Habit")).setDesc(d("Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.")).setHeading(),new HT.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"});Y_(n,e)}function Y_(n,a){new xg(n.plugin,a)}var fe=require("obsidian");Y();var ld=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;s<t.length;s++){let o=t[s],l=i[i.length-1];this.calculateDaysBetween(l.dtend||l.dtstart,o.dtstart)<=e.maxGapDays?i.push(o):(i.length>0&&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 Ei=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}};Ei.WEBCAL_REGEX=/^webcal:\/\//i,Ei.URL_VALIDATION_REGEX=/^https?:\/\/[^\s/$.?#].[^\s]*$/i;var Np=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 fe.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,fe.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 Cg(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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 g=l.createEl("div");g.createSpan({text:`${d("Color")}: `}),g.createEl("span",{attr:{style:`display: inline-block; width: 12px; height: 12px; background: ${e.color}; border-radius: 2px; margin-left: 4px; vertical-align: middle;`}}),g.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 Cg(this.plugin.app,g=>{this.config.sources[t]=g,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 g=this.plugin.getIcsManager();if(g){let v=await g.syncSource(e.id);v.success?(new fe.Notice(d("Sync completed successfully")),m.removeClass("syncing"),m.addClass("success"),setTimeout(()=>m.removeClass("success"),2e3)):(new fe.Notice(d("Sync failed: ")+v.error),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3))}}catch(g){new fe.Notice(d("Sync failed: ")+g.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 k=f.createEl("button",{text:d("Delete"),cls:"mod-warning",title:d("Delete this calendar source")});k.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()}},Cg=class extends fe.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 fe.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 fe.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,Ei.isWebcalUrl(o)){let u=Ei.convertWebcalUrl(o);if(u.success){let p=Ei.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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"),k=h.createEl("button",{text:d("Edit"),cls:"mod-cta"});k.onclick=()=>{new Sg(this.app,b=>{this.source.textReplacements[l]=b,r()},o).open()};let g=h.createEl("button",{text:o.enabled?d("Disable"):d("Enable")});g.onclick=()=>{this.source.textReplacements[l].enabled=!o.enabled,r()};let v=h.createEl("button",{text:d("Delete"),cls:"mod-warning"});v.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 Sg(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 fe.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 fe.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 fe.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 fe.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=ld.getDefaultConfig()),new fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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 fe.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(k=>k.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 fe.Notice(d("Please enter a name for the source")),!1;if(!this.source.url.trim())return new fe.Notice(d("Please enter a URL for the source")),!1;let a=Ei.convertWebcalUrl(this.source.url);return a.success?!0:(new fe.Notice(d("Please enter a valid URL")+": "+a.error),!1)}generateId(){return`ics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}},Sg=class extends fe.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 fe.Setting(a).setName(d("Rule Name")).setDesc(d("Descriptive name for this replacement rule")).addText(k=>{k.setPlaceholder(d("Remove Meeting Prefix")).setValue(this.rule.name).onChange(g=>{this.rule.name=g})}),new fe.Setting(a).setName(d("Enabled")).setDesc(d("Whether this rule is active")).addToggle(k=>{k.setValue(this.rule.enabled).onChange(g=>{this.rule.enabled=g})}),new fe.Setting(a).setName(d("Target Field")).setDesc(d("Which field to apply the replacement to")).addDropdown(k=>{k.addOption("summary",d("Summary/Title")).addOption("description",d("Description")).addOption("location",d("Location")).addOption("all",d("All Fields")).setValue(this.rule.target).onChange(g=>{this.rule.target=g})});let e,t,r=k=>{if(t)try{if(this.rule.pattern&&k){let g=new RegExp(this.rule.pattern,this.rule.flags||"g"),v=k.replace(g,this.rule.replacement),b=t.querySelector(".test-result");b&&(b.textContent=v,b.style.color=v!==k?"#4caf50":"#666")}else{let g=t.querySelector(".test-result");g&&(g.textContent=k||"",g.style.color="#666")}}catch(g){let v=t.querySelector(".test-result");v&&(v.textContent="Invalid regex pattern",v.style.color="#f44336")}};new fe.Setting(a).setName(d("Pattern (Regular Expression)")).setDesc(d("Regular expression pattern to match. Use parentheses for capture groups.")).addText(k=>{k.setPlaceholder("^Meeting: ").setValue(this.rule.pattern).onChange(g=>{this.rule.pattern=g,e&&e.getValue()&&r(e.getValue())})}),new fe.Setting(a).setName(d("Replacement")).setDesc(d("Text to replace matches with. Use $1, $2, etc. for capture groups.")).addText(k=>{k.setPlaceholder("").setValue(this.rule.replacement).onChange(g=>{this.rule.replacement=g,e&&e.getValue()&&r(e.getValue())})}),new fe.Setting(a).setName(d("Regex Flags")).setDesc(d("Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)")).addText(k=>{k.setPlaceholder("g").setValue(this.rule.flags||"").onChange(g=>{this.rule.flags=g,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 fe.Setting(u).setName(d("Test Input")).setDesc(d("Enter text to test the replacement rule")).addText(k=>{e=k,k.setPlaceholder("Meeting: Weekly Standup").onChange(g=>{r(g)})});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 fe.Notice(d("Please enter a name for the rule")),!1;if(!this.rule.pattern.trim())return new fe.Notice(d("Please enter a pattern")),!1;try{new RegExp(this.rule.pattern,this.rule.flags||"g")}catch(a){return new fe.Notice(d("Invalid regular expression pattern")),!1}return!0}generateId(){return`rule-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}};var mt=require("obsidian");Y();function WT(n,a){new mt.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 mt.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 mt.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 mt.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 mt.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 mt.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 mt.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 mt.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 mt.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")&&G_(n,a),new mt.Setting(a).setName(d("Hide progress bars")).setHeading(),new mt.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 mt.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(pe.hideProgressBarTags).setValue(n.plugin.settings.hideProgressBarTags).onChange(async r=>{n.plugin.settings.hideProgressBarTags=r,n.applySettingsUpdate()})),new mt.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 mt.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(pe.hideProgressBarMetadata).setValue(n.plugin.settings.hideProgressBarMetadata).onChange(async r=>{n.plugin.settings.hideProgressBarMetadata=r,n.applySettingsUpdate()})),new mt.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 G_(n,a){if(new mt.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 mt.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"});VT(n,a,n.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]");let s=a.createEl("div",{cls:"custom-format-textarea-container"},c=>{let u=new mt.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(),VT(n,a,p)})});new mt.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 k=T2(n,c.code,f);m.setText(`${d("Preview")}: ${k}`)}catch(k){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 k=a.querySelectorAll("textarea");for(let g of Array.from(k))if(g.placeholder==="[{{COMPLETED}}/{{TOTAL}}]"){g.value=c.code;break}VT(n,a,c.code)})})}else(n.plugin.settings.displayMode==="range-based"||!n.plugin.settings.displayMode)&&(new mt.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 mt.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&&K_(n,a)))}function K_(n,a){new mt.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 mt.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 mt.Setting(a).setName(d("Add new range")).setDesc(d("Add a new progress percentage range with custom text"));let e=new mt.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 mt.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 VT(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=T2(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 T2(n,a,e){try{let t=n.plugin.settings.customFormat;n.plugin.settings.customFormat=a;let r=Es(e,n.plugin);return n.plugin.settings.customFormat=t,r}catch(t){throw console.error("Error in renderFormatPreview:",t),t}}var qt=require("obsidian");Y();function zT(n,a){new qt.Setting(a).setName(d("Quick capture")).setHeading(),new qt.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 qt.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 qt.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 qt.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 qt.Notice(d("Daily notes settings synced successfully"))}else new qt.Notice(d("Daily Notes plugin is not enabled"))}catch(r){console.error("Failed to sync daily notes settings:",r),new qt.Notice(d("Failed to sync daily notes settings"))}})),new qt.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 qt.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 qt.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 qt.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 qt.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 qt.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 qt.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 qt.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 qt.Setting(a).setName(d("Minimal Mode")).setHeading(),new qt.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 qt.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 Ua=require("obsidian");Wb();function $T(n,a){if(new Ua.Setting(a).setName(st("Rewards")).setDesc(st("Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.")).setHeading(),new Ua.Setting(a).setName(st("Enable rewards")).setDesc(st("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 Ua.Setting(a).setName(st("Reward display type")).setDesc(st("Choose how rewards are displayed when earned.")).addDropdown(o=>{o.addOption("modal",st("Modal dialog")).addOption("notice",st("Notice (Auto-accept)")).setValue(n.plugin.settings.rewards.showRewardType||"modal").onChange(async l=>{n.plugin.settings.rewards.showRewardType=l,n.applySettingsUpdate()})}),new Ua.Setting(a).setName(st("Occurrence levels")).setDesc(st("Define different levels of reward rarity and their probability.")).setHeading();let e=a.createDiv({cls:"rewards-levels-container"}),t=(0,Ua.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 Ua.Notice(st("Chance must be between 0 and 100.")),o.setValue(l.chance.toString()))},1e3),r=(0,Ua.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 Ua.Setting(e).setClass("rewards-level-row").addText(u=>u.setPlaceholder(st("Level Name (e.g., common)")).setValue(o.name).onChange(p=>{r(p,l)})).addText(u=>u.setPlaceholder(st("Chance (%)")).setValue(o.chance.toString()).onChange(p=>{t(u,o,p,l)})).addButton(u=>u.setIcon("trash").setTooltip(st("Delete Level")).setClass("mod-warning").onClick(()=>{n.plugin.settings.rewards.occurrenceLevels.splice(l,1),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}))}),new Ua.Setting(e).addButton(o=>o.setButtonText(st("Add occurrence level")).setCta().onClick(()=>{let l={name:st("New Level"),chance:0};n.plugin.settings.rewards.occurrenceLevels.push(l),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),new Ua.Setting(a).setName(st("Reward items")).setDesc(st("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(st("No levels defined")),n.plugin.settings.rewards.rewardItems.forEach((o,l)=>{let c=new Ua.Setting(i).setClass("rewards-item-row").addTextArea(u=>u.setPlaceholder(st("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=st("Inventory (-1 for \u221E)"),u.setPlaceholder(st("Inventory (-1 for \u221E)")).setValue(o.inventory.toString()).onChange(p=>{let m=parseInt(p,10);isNaN(m)?(new Ua.Notice(st("Invalid inventory number.")),u.setValue(o.inventory.toString())):(n.plugin.settings.rewards.rewardItems[l].inventory=m,n.applySettingsUpdate())})}).addText(u=>u.setPlaceholder(st("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(st("Image url (optional)")).setValue(o.imageUrl||"").onChange(p=>{n.plugin.settings.rewards.rewardItems[l].imageUrl=p.trim()||void 0,n.applySettingsUpdate()}),new Rh(n.app,u.inputEl,n.plugin)}).addButton(u=>u.setIcon("trash").setTooltip(st("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:st("No reward items defined yet."),cls:"setting-item-description"}),new Ua.Setting(i).addButton(o=>o.setButtonText(st("Add reward item")).setCta().onClick(()=>{var c;let l={id:`reward-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,name:st("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 Ta=require("obsidian");Y();var ft=require("obsidian"),er=require("@codemirror/state"),js=require("@codemirror/view");function Dg(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 x2(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}Y();var Ro=er.StateEffect.define(),Ar=er.StateEffect.define(),qT=er.StateEffect.define(),Lp=er.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(Ro)&&(e=a.state.field(ft.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>js.showPanel.from(n,a=>a?aq:null)}),UT=er.StateField.define({create:()=>({...ri}),update(n,a){for(let e of a.effects)e.is(Ar)&&(n=e.value);return n}}),X_=er.StateField.define({create:n=>!1,update(n,a){return n||(setTimeout(()=>{let e=a.state.field(ft.editorInfoField),t=a.state.field(ft.editorEditorField);if(e&&t&&(e!=null&&e.file)){if(e.filterAction)return!0;let r=a.state.facet(GT),i=e==null?void 0:e.addAction("filter",d("Filter Tasks"),s=>{let o=new ft.Menu;Fo(t)&&YT(t,r)&&o.addItem(c=>{c.setTitle(d("Reset")).onClick(()=>{t==null||t.dispatch({effects:Ar.of(ri)}),es(t,r),t.dispatch({effects:Ro.of(!1)})})}),o.addItem(c=>{c.setTitle(t.state.field(Lp)?d("Hide filter panel"):d("Show filter panel")).onClick(()=>{t==null||t.dispatch({effects:Ro.of(!t.state.field(Lp))})})}),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:Ar.of({...c.options})}),es(t,r))})})}),o.showAtMouseEvent(s)});r.register(()=>{i.detach(),e.filterAction=null}),e.filterAction=i}},0),!0)}}),J_=er.StateField.define({create:()=>[],update(n,a){for(let e of a.effects)if(e.is(qT))return e.value;return a.docChanged&&(n=n.map(e=>({from:a.changes.mapPos(e.from),to:a.changes.mapPos(e.to)}))),n}}),ri={includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"},Z_=er.Facet.define({combine:n=>{let a={...ri};for(let e of n)Object.assign(a,e);return a}});function jp(n){let a={...ri};return Object.keys(ri).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 Eg(n,a){return n[a]}function eq(n){let a;if(n.priority){let t=x2(n.priority);t!==null&&(a=t)}let e;if(n.date){let t=(0,ft.moment)(n.date,[ft.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 YT(n,a){let e=Fo(n);return!Object.keys(ri).every(r=>e[r]===ri[r])}function tq(n,a,e,t){let r=Fo(n),i=(0,ft.debounce)((C,S)=>{es(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 ft.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:Ar.of({...r})}),x(),es(n,t))}else r={...ri},n.dispatch({effects:Ar.of({...r})}),x(),es(n,t)})});let p=o.createEl("div",{cls:"task-filter-section"}),m=null;new ft.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(Eg(e,"advancedFilterQuery")).onChange(S=>{r.advancedFilterQuery=S,n.dispatch({effects:Ar.of({...r})}),i(n,t)}),C.inputEl.addEventListener("keydown",S=>{S.key==="Enter"?ft.Keymap.isModEvent(S)?(r.filterMode="EXCLUDE",n.dispatch({effects:Ar.of({...r})}),i(n,t)):(r.filterMode="INCLUDE",n.dispatch({effects:Ar.of({...r})}),i(n,t)):S.key==="Escape"&&n.dispatch({effects:Ro.of(!1)})}),C.inputEl.toggleClass("task-filter-query-input",!0)});let f=o.createEl("div",{cls:"task-filter-section"}),h=null;new ft.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(Eg(e,"filterMode")).onChange(S=>{r.filterMode=S,n.dispatch({effects:Ar.of({...r})}),es(n,t)})});let k=o.createEl("div",{cls:"task-filter-section"});new ft.Setting(k).setName(d("Checkbox Status")).setHeading();let g=[{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")}],v={};for(let C of g){let S=`include${C.id}`;new ft.Setting(k).setName(C.label).addToggle(E=>{v[S]=E,E.setValue(Eg(e,S)).onChange(A=>{r[S]=A,n.dispatch({effects:Ar.of({...r})}),es(n,t)})})}let b=o.createEl("div",{cls:"task-filter-section"});new ft.Setting(b).setName(d("Include Related Tasks")).setHeading();let y=[{id:"ParentTasks",label:d("Parent Tasks")},{id:"ChildTasks",label:d("Child Tasks")},{id:"SiblingTasks",label:d("Sibling Tasks")}],w={};for(let C of y){let S=`include${C.id}`;new ft.Setting(b).setName(C.label).addToggle(E=>{w[S]=E,E.setValue(Eg(e,S)).onChange(A=>{r[S]=A,n.dispatch({effects:Ar.of({...r})}),es(n,t)})})}new ft.Setting(a).addButton(C=>{C.setCta(),C.setButtonText(d("Apply")).onClick(()=>{es(n,t)})}).addButton(C=>{C.setCta(),C.setButtonText(d("Save")).onClick(()=>{if(YT(n,t)){let S=Fo(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 ft.Notice(d("Preset saved"))}else new ft.Notice(d("No changes to save"))})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(d("Reset")).onClick(()=>{iq(n),m&&m.inputEl&&(m.inputEl.value=""),r={...ri},n.dispatch({effects:Ar.of({...r})}),x(),u&&u.setValue(""),es(n,t)})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(d("Close")).onClick(()=>{n.dispatch({effects:Ro.of(!1)})})});function x(){let C=Fo(n);m&&m.setValue(C.advancedFilterQuery),h&&h.setValue(C.filterMode);for(let S of g){let E=`include${S.id}`;v[E]&&v[E].setValue(C[E])}for(let S of y){let E=`include${S.id}`;w[E]&&w[E].setValue(C[E])}}return{focusInput:()=>{m&&m.inputEl&&m.inputEl.focus()}}}function aq(n){let a=createDiv({cls:"task-filter-panel"}),e=n.state.facet(GT),t=Fo(n),{focusInput:r}=tq(n,a,t,e);return{dom:a,top:!0,mount:()=>{r()},update:i=>{},destroy:()=>{}}}function es(n,a){var c,u;let e=Fo(n),t=sq(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=Dg(h,eq(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<t.length;p++)if(i.has(p)){let m=t[p];if(e.includeParentTasks){let f=m.parentTask;for(;f;){if(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)}f=f.parentTask}}if(e.includeChildTasks){let f=h=>{for(let k of h.childTasks)if(e.includeCompleted&&k.status==="completed"||e.includeInProgress&&k.status==="inProgress"||e.includeAbandoned&&k.status==="abandoned"||e.includeNotStarted&&k.status==="notStarted"||e.includePlanned&&k.status==="planned"){let g=t.indexOf(k);g!==-1&&(r.add(g),f(k))}};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:qT.of(s)}),(u=(c=n.state.field(ft.editorInfoField))==null?void 0:c.filterAction)==null||u.toggleClass("task-filter-active",YT(n,a)),C2(n,s)}function C2(n,a=[]){let e=a.map(t=>js.Decoration.replace({inclusive:!0,block:!0}).range(t.from,t.to));e.length>0?n.dispatch({effects:_T.of(js.Decoration.none.update({add:e,filter:()=>!1}))}):n.dispatch({effects:_T.of(js.Decoration.none)})}var _T=er.StateEffect.define(),rq=er.StateField.define({create(){return js.Decoration.none},update(n,a){n=n.map(a.changes);for(let e of a.effects)e.is(_T)&&(n=e.value);return n},provide(n){return js.EditorView.decorations.from(n)}}),VMe=er.Facet.define({combine:n=>n[0]}),GT=er.Facet.define({combine:n=>n[0]});function S2(n){return[Lp,UT,J_,X_,rq,Z_.of(ri),GT.of(n)]}function Fo(n){if(n.state.field(UT,!1)){let a=n.state.field(UT);return jp(a)}return{...ri}}function iq(n){var a,e;n.dispatch({effects:[Ar.of({...ri}),qT.of([])]}),(e=(a=n.state.field(ft.editorInfoField))==null?void 0:a.filterAction)==null||e.toggleClass("task-filter-active",!1),C2(n,[])}function sq(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 k=e.line(h),g=k.text;u.lastIndex=0;let v;if(v=u.exec(g)){let b=v[1].length,y=v[4],w=v[5],x;i.includes(y)?x="completed":s.includes(y)?x="inProgress":o.includes(y)?x="abandoned":c.includes(y)?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:k.from,to:k.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 Sn(){return Date.now().toString()+Math.random().toString(36).substr(2,9)}var Pg=class extends Ta.Modal{constructor(e,t,r){super(e);this.preset=t;this.onSave=r;this.preset&&this.preset.options&&(this.preset.options=jp(this.preset.options))}onOpen(){let{contentEl:e}=this;e.empty(),this.titleEl.setText(d("Edit Filter: ")+this.preset.name),new Ta.Setting(e).setName(d("Filter name")).addText(i=>{i.setValue(this.preset.name).onChange(s=>{this.preset.name=s})}),new Ta.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 Ta.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new Ta.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 Ta.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new Ta.Setting(e).setName(d("Advanced Filter")).setDesc(d("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")),new Ta.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 Ta.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 Ta.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 KT(n,a){new Ta.Setting(a).setName(d("Task Filter")).setHeading(),new Ta.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 Ta.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 Ta.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 Pg(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 Ta.Setting(i).addButton(s=>{s.setButtonText(d("Add New Preset")).setCta().onClick(()=>{let o={id:Sn(),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 Pg(n.app,o,()=>{n.applySettingsUpdate(),t()}).open(),t()})}).addButton(s=>{s.setButtonText(d("Reset to Default Presets")).onClick(()=>{let o=new Ta.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",()=>{nq(n),t(),o.close()}),o.open()})})};t()}function nq(n){n.plugin.settings.taskFilter.presetTaskFilters=[];let a=[{id:Sn(),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:Sn(),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:Sn(),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:Sn(),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 Le=require("obsidian");Y();function QT(n,a){if(new Le.Setting(a).setName(d("Task Gutter")).setDesc(d("Configure the task gutter.")).setHeading(),new Le.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 Le.Setting(a).setName(d("Completed Task Mover")).setHeading(),new Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.Setting(a).setName(d("Incomplete Task Mover")).setHeading(),new Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.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 Le.Setting(a).setName(d("Task Sorting")).setDesc(d("Configure how tasks are sorted in the document.")).setHeading(),new Le.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 Le.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 Le.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<r.length-1){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("trash").setTooltip(d("Remove Criterion")).onClick(()=>{n.plugin.settings.sortCriteria.splice(s,1),n.applySettingsUpdate(),t()}),l.extraSettingsEl.addClass("mod-warning")})}),new Le.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=[...pe.sortCriteria],n.applySettingsUpdate(),t()})})};t()}new Le.Setting(a).setName(d("On Completion")).setHeading(),new Le.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 Le.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 Le.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 Le.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 je=require("obsidian");Y();var Ig={};wt(Ig,{allStatusCollections:()=>Mg,anuppuccinSupportedStatuses:()=>oq,auraSupportedStatuses:()=>lq,borderSupportedStatuses:()=>dq,ebullientworksSupportedStatuses:()=>cq,itsSupportedStatuses:()=>uq,lytModeSupportedStatuses:()=>pq,minimalSupportedStatuses:()=>mq,thingsSupportedStatuses:()=>fq});function oq(){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 lq(){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 dq(){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 cq(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],[">","Deferred","planned"],["!","Important","notStarted"],["?","Question","planned"],["r","Review","notStarted"]]}function uq(){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 pq(){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 mq(){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 fq(){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 Mg=["AnuPpuccin","Aura","Border","Ebullientworks","ITS","LYTMode","Minimal","Things"];function XT(n,a){if(new je.Setting(a).setName(d("Checkbox Status Settings")).setDesc(d("Configure checkbox status settings")).setHeading(),ln(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 je.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 je.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 je.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 Mg)l.addOption(c,c);l.setValue("custom"),l.onChange(async c=>{if(c==="custom")return;let u=new je.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 k=c.toLowerCase()+"SupportedStatuses",g=Ig[k];if(typeof g=="function"){let v=g(),b=n.plugin.settings.taskStatusCycle,y=n.plugin.settings.taskStatusMarks,w=n.plugin.settings.excludeMarksFromCycle;b.length=0,Object.keys(y).forEach(T=>delete y[T]),w.length=0;for(let[T,C,S]of v){let E=C.split("/")[0].trim();b.includes(E)||b.push(E),y[E]=T,T!==" "&&T!=="x"&&w.push(E)}let x={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[T,C,S]of v)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(k){console.error("Failed to apply checkbox status theme:",k)}}),u.open()})});let t=createFragment();t.createEl("span",{cls:"tg-status-icon"},l=>{(0,je.setIcon)(l,"completed")}),t.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Completed"))}),new je.Setting(a).setName(t).setDesc(d('Characters in square brackets that represent completed tasks. Example: "x|X"')).addText(l=>l.setPlaceholder(pe.taskStatuses.completed).setValue(n.plugin.settings.taskStatuses.completed).onChange(async c=>{n.plugin.settings.taskStatuses.completed=c||pe.taskStatuses.completed,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let r=createFragment();r.createEl("span",{cls:"tg-status-icon"},l=>{(0,je.setIcon)(l,"planned")}),r.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Planned"))}),new je.Setting(a).setName(r).setDesc(d('Characters in square brackets that represent planned tasks. Example: "?"')).addText(l=>l.setPlaceholder(pe.taskStatuses.planned).setValue(n.plugin.settings.taskStatuses.planned).onChange(async c=>{n.plugin.settings.taskStatuses.planned=c||pe.taskStatuses.planned,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let i=createFragment();i.createEl("span",{cls:"tg-status-icon"},l=>{(0,je.setIcon)(l,"inProgress")}),i.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("In Progress"))}),new je.Setting(a).setName(i).setDesc(d('Characters in square brackets that represent tasks in progress. Example: ">|/"')).addText(l=>l.setPlaceholder(pe.taskStatuses.inProgress).setValue(n.plugin.settings.taskStatuses.inProgress).onChange(async c=>{n.plugin.settings.taskStatuses.inProgress=c||pe.taskStatuses.inProgress,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let s=createFragment();s.createEl("span",{cls:"tg-status-icon"},l=>{(0,je.setIcon)(l,"abandoned")}),s.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Abandoned"))}),new je.Setting(a).setName(s).setDesc(d('Characters in square brackets that represent abandoned tasks. Example: "-"')).addText(l=>l.setPlaceholder(pe.taskStatuses.abandoned).setValue(n.plugin.settings.taskStatuses.abandoned).onChange(async c=>{n.plugin.settings.taskStatuses.abandoned=c||pe.taskStatuses.abandoned,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}));let o=createFragment();if(o.createEl("span",{cls:"tg-status-icon"},l=>{(0,je.setIcon)(l,"notStarted")}),o.createEl("span",{cls:"tg-status-text"},l=>{l.setText(d("Not Started"))}),new je.Setting(a).setName(o).setDesc(d('Characters in square brackets that represent not started tasks. Default is space " "')).addText(l=>l.setPlaceholder(pe.taskStatuses.notStarted).setValue(n.plugin.settings.taskStatuses.notStarted).onChange(async c=>{n.plugin.settings.taskStatuses.notStarted=c||pe.taskStatuses.notStarted,n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()})),new je.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 je.Setting(a).setName(d("Task Counting Settings")).setDesc(d("Configure which task markers to count or exclude")).setHeading(),new je.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 je.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 je.Setting(a).setName(d("Specific task markers to count")).setDesc(d('Specify which task markers to count. Example: "x|X|>|/"')).addText(l=>l.setPlaceholder(pe.onlyCountTaskMarks).setValue(n.plugin.settings.onlyCountTaskMarks).onChange(async c=>{c.length===0?n.plugin.settings.onlyCountTaskMarks=pe.onlyCountTaskMarks:n.plugin.settings.onlyCountTaskMarks=c,n.applySettingsUpdate()})),new je.Setting(a).setName(d("Checkbox Switcher")).setHeading(),new je.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 je.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 je.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 je.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 je.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 Mg)u.addOption(p,p);u.setValue("custom"),u.onChange(async p=>{if(p==="custom")return;let m=new je.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"}),k=h.createEl("button");k.setText(d("Cancel")),k.addEventListener("click",()=>{u.setValue("custom"),m.close()});let g=h.createEl("button");g.setText(d("Apply Theme")),g.addClass("mod-cta"),g.addEventListener("click",async()=>{m.close();try{let v=p.toLowerCase()+"SupportedStatuses",b=Ig[v];if(typeof b=="function"){let y=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 y){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 y)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(v){console.error("Failed to apply checkbox status theme:",v)}}),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 k=l.createDiv({cls:"task-state-row"}),g=new je.Setting(k).setName(`Status #${h+1}`).addText(v=>{v.setValue(f).setPlaceholder(d("Status name")).onChange(b=>{let y=u[h];u[h]=b,y in p&&(p[b]=p[y],delete p[y]),n.applySettingsUpdate()})}).addText(v=>{v.setValue(p[f]||" ").setPlaceholder("Mark").onChange(b=>{let y=b.trim().charAt(0)||" ";p[f]=y,n.applySettingsUpdate()}),v.inputEl.maxLength=1,v.inputEl.style.width="40px"});g.addToggle(v=>{v.setTooltip(d("Include in cycle")).setValue(!n.plugin.settings.excludeMarksFromCycle.includes(f)).onChange(b=>{b?n.plugin.settings.excludeMarksFromCycle=n.plugin.settings.excludeMarksFromCycle.filter(y=>y!==f):n.plugin.settings.excludeMarksFromCycle.includes(f)||n.plugin.settings.excludeMarksFromCycle.push(f),n.applySettingsUpdate()})}),g.addExtraButton(v=>{v.setIcon("arrow-up").setTooltip(d("Move up")).onClick(()=>{h>0&&([u[h-1],u[h]]=[u[h],u[h-1]],n.applySettingsUpdate(),c())}),v.extraSettingsEl.style.marginRight="0"}),g.addExtraButton(v=>{v.setIcon("arrow-down").setTooltip(d("Move down")).onClick(()=>{h<u.length-1&&([u[h],u[h+1]]=[u[h+1],u[h]],n.applySettingsUpdate(),c())}),v.extraSettingsEl.style.marginRight="0"}),g.addExtraButton(v=>{v.setIcon("trash").setTooltip(d("Remove")).onClick(()=>{u.splice(h,1),delete p[f],n.applySettingsUpdate(),c()}),v.extraSettingsEl.style.marginRight="0"})});let m=l.createDiv();new je.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 je.Setting(a).setName(d("Auto Date Manager")).setDesc(d("Automatically manage dates based on checkbox status changes")).setHeading(),new je.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 je.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 je.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 je.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 nt=require("obsidian");Y();var xe=require("obsidian");Y();LT();var Oo=require("obsidian");var Aa=class extends Oo.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 Oo.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 Oo.ButtonComponent(e).setButtonText(this.params.confirmText).setCta().onClick(()=>{this.params.onConfirm(!0),this.close()}),new Oo.ButtonComponent(e).setButtonText(this.params.cancelText).setCta().onClick(()=>{this.params.onConfirm(!1),this.close()})}onClose(){this.contentEl.empty()}};var ia=require("obsidian");function D2(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 as(n){for(var a=1;a<arguments.length;a++){var e=arguments[a]!=null?arguments[a]:{};a%2?D2(Object(e),!0).forEach(function(t){hq(n,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):D2(Object(e)).forEach(function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))})}return n}function Ng(n){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ng=function(a){return typeof a}:Ng=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},Ng(n)}function hq(n,a,e){return a in n?Object.defineProperty(n,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[a]=e,n}function Bs(){return Bs=Object.assign||function(n){for(var a=1;a<arguments.length;a++){var e=arguments[a];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n},Bs.apply(this,arguments)}function gq(n,a){if(n==null)return{};var e={},t=Object.keys(n),r,i;for(i=0;i<t.length;i++)r=t[i],!(a.indexOf(r)>=0)&&(e[r]=n[r]);return e}function kq(n,a){if(n==null)return{};var e=gq(n,a),t,r;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(r=0;r<i.length;r++)t=i[r],!(a.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(n,t)&&(e[t]=n[t])}return e}var vq="1.15.6";function Hs(n){if(typeof window!="undefined"&&window.navigator)return!!navigator.userAgent.match(n)}var Vs=Hs(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),qp=Hs(/Edge/i),E2=Hs(/firefox/i),Wp=Hs(/safari/i)&&!Hs(/chrome/i)&&!Hs(/android/i),ux=Hs(/iP(ad|od|hone)/i),N2=Hs(/chrome/i)&&Hs(/android/i),L2={capture:!1,passive:!1};function ze(n,a,e){n.addEventListener(a,e,!Vs&&L2)}function Be(n,a,e){n.removeEventListener(a,e,!Vs&&L2)}function Vg(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 j2(n){return n.host&&n!==document&&n.host.nodeType?n.host:n.parentNode}function Mi(n,a,e,t){if(n){e=e||document;do{if(a!=null&&(a[0]===">"?n.parentNode===e&&Vg(n,a):Vg(n,a))||t&&n===e)return n;if(n===e)break}while(n=j2(n))}return null}var P2=/\s+/g;function Fr(n,a,e){if(n&&a)if(n.classList)n.classList[e?"add":"remove"](a);else{var t=(" "+n.className+" ").replace(P2," ").replace(" "+a+" "," ");n.className=(t+(e?" "+a:"")).replace(P2," ")}}function we(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 md(n,a){var e="";if(typeof n=="string")e=n;else do{var t=we(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 H2(n,a,e){if(n){var t=n.getElementsByTagName(a),r=0,i=t.length;if(e)for(;r<i;r++)e(t[r],r);return t}return[]}function ts(){var n=document.scrollingElement;return n||document.documentElement}function ra(n,a,e,t,r){if(!(!n.getBoundingClientRect&&n!==window)){var i,s,o,l,c,u,p;if(n!==window&&n.parentNode&&n!==ts()?(i=n.getBoundingClientRect(),s=i.top,o=i.left,l=i.bottom,c=i.right,u=i.height,p=i.width):(s=0,o=0,l=window.innerHeight,c=window.innerWidth,u=window.innerHeight,p=window.innerWidth),(a||e)&&n!==window&&(r=r||n.parentNode,!Vs))do if(r&&r.getBoundingClientRect&&(we(r,"transform")!=="none"||e&&we(r,"position")!=="static")){var m=r.getBoundingClientRect();s-=m.top+parseInt(we(r,"border-top-width")),o-=m.left+parseInt(we(r,"border-left-width")),l=s+i.height,c=o+i.width;break}while(r=r.parentNode);if(t&&n!==window){var f=md(r||n),h=f&&f.a,k=f&&f.d;f&&(s/=k,o/=h,p/=h,u/=k,l=s+u,c=o+p)}return{top:s,left:o,bottom:l,right:c,width:p,height:u}}}function M2(n,a,e){for(var t=Pn(n,!0),r=ra(n)[a];t;){var i=ra(t)[e],s=void 0;if(e==="top"||e==="left"?s=r>=i:s=r<=i,!s)return t;if(t===ts())break;t=Pn(t,!1)}return!1}function fd(n,a,e,t){for(var r=0,i=0,s=n.children;i<s.length;){if(s[i].style.display!=="none"&&s[i]!==Te.ghost&&(t||s[i]!==Te.dragged)&&Mi(s[i],e.draggable,n,!1)){if(r===a)return s[i];r++}i++}return null}function px(n,a){for(var e=n.lastElementChild;e&&(e===Te.ghost||we(e,"display")==="none"||a&&!Vg(e,a));)e=e.previousElementSibling;return e||null}function ii(n,a){var e=0;if(!n||!n.parentNode)return-1;for(;n=n.previousElementSibling;)n.nodeName.toUpperCase()!=="TEMPLATE"&&n!==Te.clone&&(!a||Vg(n,a))&&e++;return e}function I2(n){var a=0,e=0,t=ts();if(n)do{var r=md(n),i=r.a,s=r.d;a+=n.scrollLeft*i,e+=n.scrollTop*s}while(n!==t&&(n=n.parentNode));return[a,e]}function yq(n,a){for(var e in n)if(n.hasOwnProperty(e)){for(var t in a)if(a.hasOwnProperty(t)&&a[t]===n[e][t])return Number(e)}return-1}function Pn(n,a){if(!n||!n.getBoundingClientRect)return ts();var e=n,t=!1;do if(e.clientWidth<e.scrollWidth||e.clientHeight<e.scrollHeight){var r=we(e);if(e.clientWidth<e.scrollWidth&&(r.overflowX=="auto"||r.overflowX=="scroll")||e.clientHeight<e.scrollHeight&&(r.overflowY=="auto"||r.overflowY=="scroll")){if(!e.getBoundingClientRect||e===document.body)return ts();if(t||a)return e;t=!0}}while(e=e.parentNode);return ts()}function bq(n,a){if(n&&a)for(var e in a)a.hasOwnProperty(e)&&(n[e]=a[e]);return n}function JT(n,a){return Math.round(n.top)===Math.round(a.top)&&Math.round(n.left)===Math.round(a.left)&&Math.round(n.height)===Math.round(a.height)&&Math.round(n.width)===Math.round(a.width)}var zp;function B2(n,a){return function(){if(!zp){var e=arguments,t=this;e.length===1?n.call(t,e[0]):n.apply(t,e),zp=setTimeout(function(){zp=void 0},a)}}}function wq(){clearTimeout(zp),zp=void 0}function V2(n,a,e){n.scrollLeft+=a,n.scrollTop+=e}function W2(n){var a=window.Polymer,e=window.jQuery||window.Zepto;return a&&a.dom?a.dom(n).cloneNode(!0):e?e(n).clone(!0)[0]:n.cloneNode(!0)}function z2(n,a,e){var t={};return Array.from(n.children).forEach(function(r){var i,s,o,l;if(!(!Mi(r,a.draggable,n,!1)||r.animated||r===e)){var c=ra(r);t.left=Math.min((i=t.left)!==null&&i!==void 0?i:1/0,c.left),t.top=Math.min((s=t.top)!==null&&s!==void 0?s:1/0,c.top),t.right=Math.max((o=t.right)!==null&&o!==void 0?o:-1/0,c.right),t.bottom=Math.max((l=t.bottom)!==null&&l!==void 0?l:-1/0,c.bottom)}}),t.width=t.right-t.left,t.height=t.bottom-t.top,t.x=t.left,t.y=t.top,t}var br="Sortable"+new Date().getTime();function Tq(){var n=[],a;return{captureAnimationState:function(){if(n=[],!!this.options.animation){var t=[].slice.call(this.el.children);t.forEach(function(r){if(!(we(r,"display")==="none"||r===Te.ghost)){n.push({target:r,rect:ra(r)});var i=as({},n[n.length-1].rect);if(r.thisAnimationDuration){var s=md(r,!0);s&&(i.top-=s.f,i.left-=s.e)}r.fromRect=i}})}},addAnimationState:function(t){n.push(t)},removeAnimationState:function(t){n.splice(yq(n,{target:t}),1)},animateAll:function(t){var r=this;if(!this.options.animation){clearTimeout(a),typeof t=="function"&&t();return}var i=!1,s=0;n.forEach(function(o){var l=0,c=o.target,u=c.fromRect,p=ra(c),m=c.prevFromRect,f=c.prevToRect,h=o.rect,k=md(c,!0);k&&(p.top-=k.f,p.left-=k.e),c.toRect=p,c.thisAnimationDuration&&JT(m,p)&&!JT(u,p)&&(h.top-p.top)/(h.left-p.left)===(u.top-p.top)/(u.left-p.left)&&(l=Cq(h,m,f,r.options)),JT(p,u)||(c.prevFromRect=u,c.prevToRect=p,l||(l=r.options.animation),r.animate(c,h,p,l)),l&&(i=!0,s=Math.max(s,l),clearTimeout(c.animationResetTimer),c.animationResetTimer=setTimeout(function(){c.animationTime=0,c.prevFromRect=null,c.fromRect=null,c.prevToRect=null,c.thisAnimationDuration=null},l),c.thisAnimationDuration=l)}),clearTimeout(a),i?a=setTimeout(function(){typeof t=="function"&&t()},s):typeof t=="function"&&t(),n=[]},animate:function(t,r,i,s){if(s){we(t,"transition",""),we(t,"transform","");var o=md(this.el),l=o&&o.a,c=o&&o.d,u=(r.left-i.left)/(l||1),p=(r.top-i.top)/(c||1);t.animatingX=!!u,t.animatingY=!!p,we(t,"transform","translate3d("+u+"px,"+p+"px,0)"),this.forRepaintDummy=xq(t),we(t,"transition","transform "+s+"ms"+(this.options.easing?" "+this.options.easing:"")),we(t,"transform","translate3d(0,0,0)"),typeof t.animated=="number"&&clearTimeout(t.animated),t.animated=setTimeout(function(){we(t,"transition",""),we(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},s)}}}}function xq(n){return n.offsetWidth}function Cq(n,a,e,t){return Math.sqrt(Math.pow(a.top-n.top,2)+Math.pow(a.left-n.left,2))/Math.sqrt(Math.pow(a.top-e.top,2)+Math.pow(a.left-e.left,2))*t.animation}var dd=[],ZT={initializeByDefault:!0},Yp={mount:function(a){for(var e in ZT)ZT.hasOwnProperty(e)&&!(e in a)&&(a[e]=ZT[e]);dd.forEach(function(t){if(t.pluginName===a.pluginName)throw"Sortable: Cannot mount plugin ".concat(a.pluginName," more than once")}),dd.push(a)},pluginEvent:function(a,e,t){var r=this;this.eventCanceled=!1,t.cancel=function(){r.eventCanceled=!0};var i=a+"Global";dd.forEach(function(s){e[s.pluginName]&&(e[s.pluginName][i]&&e[s.pluginName][i](as({sortable:e},t)),e.options[s.pluginName]&&e[s.pluginName][a]&&e[s.pluginName][a](as({sortable:e},t)))})},initializePlugins:function(a,e,t,r){dd.forEach(function(o){var l=o.pluginName;if(!(!a.options[l]&&!o.initializeByDefault)){var c=new o(a,e,a.options);c.sortable=a,c.options=a.options,a[l]=c,Bs(t,c.defaults)}});for(var i in a.options)if(a.options.hasOwnProperty(i)){var s=this.modifyOption(a,i,a.options[i]);typeof s!="undefined"&&(a.options[i]=s)}},getEventProperties:function(a,e){var t={};return dd.forEach(function(r){typeof r.eventProperties=="function"&&Bs(t,r.eventProperties.call(e[r.pluginName],a))}),t},modifyOption:function(a,e,t){var r;return dd.forEach(function(i){a[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[e]=="function"&&(r=i.optionListeners[e].call(a[i.pluginName],t))}),r}};function Sq(n){var a=n.sortable,e=n.rootEl,t=n.name,r=n.targetEl,i=n.cloneEl,s=n.toEl,o=n.fromEl,l=n.oldIndex,c=n.newIndex,u=n.oldDraggableIndex,p=n.newDraggableIndex,m=n.originalEvent,f=n.putSortable,h=n.extraEventProperties;if(a=a||e&&e[br],!!a){var k,g=a.options,v="on"+t.charAt(0).toUpperCase()+t.substr(1);window.CustomEvent&&!Vs&&!qp?k=new CustomEvent(t,{bubbles:!0,cancelable:!0}):(k=document.createEvent("Event"),k.initEvent(t,!0,!0)),k.to=s||e,k.from=o||e,k.item=r||e,k.clone=i,k.oldIndex=l,k.newIndex=c,k.oldDraggableIndex=u,k.newDraggableIndex=p,k.originalEvent=m,k.pullMode=f?f.lastPutMode:void 0;var b=as(as({},h),Yp.getEventProperties(t,a));for(var y in b)k[y]=b[y];e&&e.dispatchEvent(k),g[v]&&g[v].call(a,k)}}var Dq=["evt"],yr=function(a,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=t.evt,i=kq(t,Dq);Yp.pluginEvent.bind(Te)(a,e,as({dragEl:re,parentEl:Nt,ghostEl:Ce,rootEl:Ct,nextEl:jo,lastDownEl:Lg,cloneEl:At,cloneHidden:En,dragStarted:Hp,putSortable:Fa,activeSortable:Te.active,originalEvent:r,oldIndex:pd,oldDraggableIndex:$p,newIndex:Rr,newDraggableIndex:Dn,hideGhostForTarget:q2,unhideGhostForTarget:Y2,cloneNowHidden:function(){En=!0},cloneNowShown:function(){En=!1},dispatchSortableEvent:function(o){tr({sortable:e,name:o,originalEvent:r})}},i))};function tr(n){Sq(as({putSortable:Fa,cloneEl:At,targetEl:re,rootEl:Ct,oldIndex:pd,oldDraggableIndex:$p,newIndex:Rr,newDraggableIndex:Dn},n))}var re,Nt,Ce,Ct,jo,Lg,At,En,pd,Rr,$p,Dn,Ag,Fa,ud=!1,Wg=!1,zg=[],No,Pi,ex,tx,A2,F2,Hp,cd,Up,_p=!1,Fg=!1,jg,_a,ax=[],ox=!1,$g=[],_g=typeof document!="undefined",Rg=ux,R2=qp||Vs?"cssFloat":"float",Eq=_g&&!N2&&!ux&&"draggable"in document.createElement("div"),$2=(function(){if(_g){if(Vs)return!1;var n=document.createElement("x");return n.style.cssText="pointer-events:auto",n.style.pointerEvents==="auto"}})(),U2=function(a,e){var t=we(a),r=parseInt(t.width)-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-parseInt(t.borderLeftWidth)-parseInt(t.borderRightWidth),i=fd(a,0,e),s=fd(a,1,e),o=i&&we(i),l=s&&we(s),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+ra(i).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+ra(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[R2]==="none"||s&&t[R2]==="none"&&c+u>r)?"vertical":"horizontal"},Pq=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},Mq=function(a,e){var t;return zg.some(function(r){var i=r[br].options.emptyInsertThreshold;if(!(!i||px(r))){var s=ra(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},_2=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||Ng(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},q2=function(){!$2&&Ce&&we(Ce,"display","none")},Y2=function(){!$2&&Ce&&we(Ce,"display","")};_g&&!N2&&document.addEventListener("click",function(n){if(Wg)return n.preventDefault(),n.stopPropagation&&n.stopPropagation(),n.stopImmediatePropagation&&n.stopImmediatePropagation(),Wg=!1,!1},!0);var Lo=function(a){if(re){a=a.touches?a.touches[0]:a;var e=Mq(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[br]._onDragOver(t)}}},Iq=function(a){re&&re.parentNode[br]._isOutsideThisEl(a.target)};function Te(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=Bs({},a),n[br]=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 U2(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:Te.supportPointer!==!1&&"PointerEvent"in window&&(!Wp||ux),emptyInsertThreshold:5};Yp.initializePlugins(this,n,e);for(var t in e)!(t in a)&&(a[t]=e[t]);_2(a);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=a.forceFallback?!1:Eq,this.nativeDraggable&&(this.options.touchStartThreshold=1),a.supportPointer?ze(n,"pointerdown",this._onTapStart):(ze(n,"mousedown",this._onTapStart),ze(n,"touchstart",this._onTapStart)),this.nativeDraggable&&(ze(n,"dragover",this),ze(n,"dragenter",this)),zg.push(this.el),a.store&&a.store.get&&this.sort(a.store.get(this)||[]),Bs(this,Tq())}Te.prototype={constructor:Te,_isOutsideThisEl:function(a){!this.el.contains(a)&&a!==this.el&&(cd=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(Hq(t),!re&&!(/mousedown|pointerdown/.test(s)&&a.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&Wp&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Mi(l,r.draggable,t,!1),!(l&&l.animated)&&Lg!==l)){if(pd=ii(l),$p=ii(l,r.draggable),typeof u=="function"){if(u.call(this,a,l,this)){tr({sortable:e,rootEl:c,name:"filter",targetEl:l,toEl:t,fromEl:t}),yr("filter",e,{evt:a}),i&&a.preventDefault();return}}else if(u&&(u=u.split(",").some(function(p){if(p=Mi(c,p.trim(),t,!1),p)return tr({sortable:e,rootEl:p,name:"filter",targetEl:l,fromEl:t,toEl:t}),yr("filter",e,{evt:a}),!0}),u)){i&&a.preventDefault();return}r.handle&&!Mi(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=ra(t);if(Ct=i,re=t,Nt=re.parentNode,jo=re.nextSibling,Lg=t,Ag=s.group,Te.dragged=re,No={target:re,clientX:(e||a).clientX,clientY:(e||a).clientY},A2=No.clientX-c.left,F2=No.clientY-c.top,this._lastX=(e||a).clientX,this._lastY=(e||a).clientY,re.style["will-change"]="all",l=function(){if(yr("delayEnded",r,{evt:a}),Te.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!E2&&r.nativeDraggable&&(re.draggable=!0),r._triggerDragStart(a,e),tr({sortable:r,name:"choose",originalEvent:a}),Fr(re,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){H2(re,u.trim(),rx)}),ze(o,"dragover",Lo),ze(o,"mousemove",Lo),ze(o,"touchmove",Lo),s.supportPointer?(ze(o,"pointerup",r._onDrop),!this.nativeDraggable&&ze(o,"pointercancel",r._onDrop)):(ze(o,"mouseup",r._onDrop),ze(o,"touchend",r._onDrop),ze(o,"touchcancel",r._onDrop)),E2&&this.nativeDraggable&&(this.options.touchStartThreshold=4,re.draggable=!0),yr("delayStart",this,{evt:a}),s.delay&&(!s.delayOnTouchOnly||e)&&(!this.nativeDraggable||!(qp||Vs))){if(Te.eventCanceled){this._onDrop();return}s.supportPointer?(ze(o,"pointerup",r._disableDelayedDrag),ze(o,"pointercancel",r._disableDelayedDrag)):(ze(o,"mouseup",r._disableDelayedDrag),ze(o,"touchend",r._disableDelayedDrag),ze(o,"touchcancel",r._disableDelayedDrag)),ze(o,"mousemove",r._delayedDragTouchMoveHandler),ze(o,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&ze(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&&rx(re),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var a=this.el.ownerDocument;Be(a,"mouseup",this._disableDelayedDrag),Be(a,"touchend",this._disableDelayedDrag),Be(a,"touchcancel",this._disableDelayedDrag),Be(a,"pointerup",this._disableDelayedDrag),Be(a,"pointercancel",this._disableDelayedDrag),Be(a,"mousemove",this._delayedDragTouchMoveHandler),Be(a,"touchmove",this._delayedDragTouchMoveHandler),Be(a,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(a,e){e=e||a.pointerType=="touch"&&a,!this.nativeDraggable||e?this.options.supportPointer?ze(document,"pointermove",this._onTouchMove):e?ze(document,"touchmove",this._onTouchMove):ze(document,"mousemove",this._onTouchMove):(ze(re,"dragend",this),ze(Ct,"dragstart",this._onDragStart));try{document.selection?Hg(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(a,e){if(ud=!1,Ct&&re){yr("dragStarted",this,{evt:e}),this.nativeDraggable&&ze(document,"dragover",Iq);var t=this.options;!a&&Fr(re,t.dragClass,!1),Fr(re,t.ghostClass,!0),Te.active=this,a&&this._appendGhost(),tr({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(Pi){this._lastX=Pi.clientX,this._lastY=Pi.clientY,q2();for(var a=document.elementFromPoint(Pi.clientX,Pi.clientY),e=a;a&&a.shadowRoot&&(a=a.shadowRoot.elementFromPoint(Pi.clientX,Pi.clientY),a!==e);)e=a;if(re.parentNode[br]._isOutsideThisEl(a),e)do{if(e[br]){var t=void 0;if(t=e[br]._onDragOver({clientX:Pi.clientX,clientY:Pi.clientY,target:a,rootEl:e}),t&&!this.options.dragoverBubble)break}a=e}while(e=j2(e));Y2()}},_onTouchMove:function(a){if(No){var e=this.options,t=e.fallbackTolerance,r=e.fallbackOffset,i=a.touches?a.touches[0]:a,s=Ce&&md(Ce,!0),o=Ce&&s&&s.a,l=Ce&&s&&s.d,c=Rg&&_a&&I2(_a),u=(i.clientX-No.clientX+r.x)/(o||1)+(c?c[0]-ax[0]:0)/(o||1),p=(i.clientY-No.clientY+r.y)/(l||1)+(c?c[1]-ax[1]:0)/(l||1);if(!Te.active&&!ud){if(t&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<t)return;this._onDragStart(a,!0)}if(Ce){s?(s.e+=u-(ex||0),s.f+=p-(tx||0)):s={a:1,b:0,c:0,d:1,e:u,f:p};var m="matrix(".concat(s.a,",").concat(s.b,",").concat(s.c,",").concat(s.d,",").concat(s.e,",").concat(s.f,")");we(Ce,"webkitTransform",m),we(Ce,"mozTransform",m),we(Ce,"msTransform",m),we(Ce,"transform",m),ex=u,tx=p,Pi=i}a.cancelable&&a.preventDefault()}},_appendGhost:function(){if(!Ce){var a=this.options.fallbackOnBody?document.body:Ct,e=ra(re,!0,Rg,!0,a),t=this.options;if(Rg){for(_a=a;we(_a,"position")==="static"&&we(_a,"transform")==="none"&&_a!==document;)_a=_a.parentNode;_a!==document.body&&_a!==document.documentElement?(_a===document&&(_a=ts()),e.top+=_a.scrollTop,e.left+=_a.scrollLeft):_a=ts(),ax=I2(_a)}Ce=re.cloneNode(!0),Fr(Ce,t.ghostClass,!1),Fr(Ce,t.fallbackClass,!0),Fr(Ce,t.dragClass,!0),we(Ce,"transition",""),we(Ce,"transform",""),we(Ce,"box-sizing","border-box"),we(Ce,"margin",0),we(Ce,"top",e.top),we(Ce,"left",e.left),we(Ce,"width",e.width),we(Ce,"height",e.height),we(Ce,"opacity","0.8"),we(Ce,"position",Rg?"absolute":"fixed"),we(Ce,"zIndex","100000"),we(Ce,"pointerEvents","none"),Te.ghost=Ce,a.appendChild(Ce),we(Ce,"transform-origin",A2/parseInt(Ce.style.width)*100+"% "+F2/parseInt(Ce.style.height)*100+"%")}},_onDragStart:function(a,e){var t=this,r=a.dataTransfer,i=t.options;if(yr("dragStart",this,{evt:a}),Te.eventCanceled){this._onDrop();return}yr("setupClone",this),Te.eventCanceled||(At=W2(re),At.removeAttribute("id"),At.draggable=!1,At.style["will-change"]="",this._hideClone(),Fr(At,this.options.chosenClass,!1),Te.clone=At),t.cloneId=Hg(function(){yr("clone",t),!Te.eventCanceled&&(t.options.removeCloneOnHide||Ct.insertBefore(At,re),t._hideClone(),tr({sortable:t,name:"clone"}))}),!e&&Fr(re,i.dragClass,!0),e?(Wg=!0,t._loopId=setInterval(t._emulateDragOver,50)):(Be(document,"mouseup",t._onDrop),Be(document,"touchend",t._onDrop),Be(document,"touchcancel",t._onDrop),r&&(r.effectAllowed="move",i.setData&&i.setData.call(t,r,re)),ze(document,"drop",t),we(re,"transform","translateZ(0)")),ud=!0,t._dragStartId=Hg(t._dragStarted.bind(t,e,a)),ze(document,"selectstart",t),Hp=!0,window.getSelection().removeAllRanges(),Wp&&we(document.body,"user-select","none")},_onDragOver:function(a){var e=this.el,t=a.target,r,i,s,o=this.options,l=o.group,c=Te.active,u=Ag===l,p=o.sort,m=Fa||c,f,h=this,k=!1;if(ox)return;function g(V,G){yr(V,h,as({evt:a,isOwner:u,axis:f?"vertical":"horizontal",revert:s,dragRect:r,targetRect:i,canSort:p,fromSortable:m,target:t,completed:b,onMove:function(oe,le){return Og(Ct,e,re,r,oe,ra(oe),a,le)},changed:y},G))}function v(){g("dragOverAnimationCapture"),h.captureAnimationState(),h!==m&&m.captureAnimationState()}function b(V){return g("dragOverCompleted",{insertion:V}),V&&(u?c._hideClone():c._showClone(h),h!==m&&(Fr(re,Fa?Fa.options.ghostClass:c.options.ghostClass,!1),Fr(re,o.ghostClass,!0)),Fa!==h&&h!==Te.active?Fa=h:h===Te.active&&Fa&&(Fa=null),m===h&&(h._ignoreWhileAnimating=t),h.animateAll(function(){g("dragOverAnimationComplete"),h._ignoreWhileAnimating=null}),h!==m&&(m.animateAll(),m._ignoreWhileAnimating=null)),(t===re&&!re.animated||t===e&&!t.animated)&&(cd=null),!o.dragoverBubble&&!a.rootEl&&t!==document&&(re.parentNode[br]._isOutsideThisEl(a.target),!V&&Lo(a)),!o.dragoverBubble&&a.stopPropagation&&a.stopPropagation(),k=!0}function y(){Rr=ii(re),Dn=ii(re,o.draggable),tr({sortable:h,name:"change",toEl:e,newIndex:Rr,newDraggableIndex:Dn,originalEvent:a})}if(a.preventDefault!==void 0&&a.cancelable&&a.preventDefault(),t=Mi(t,o.draggable,e,!0),g("dragOver"),Te.eventCanceled)return k;if(re.contains(a.target)||t.animated&&t.animatingX&&t.animatingY||h._ignoreWhileAnimating===t)return b(!1);if(Wg=!1,c&&!o.disabled&&(u?p||(s=Nt!==Ct):Fa===this||(this.lastPutMode=Ag.checkPull(this,c,re,a))&&l.checkPut(this,c,re,a))){if(f=this._getDirection(a,t)==="vertical",r=ra(re),g("dragOverValid"),Te.eventCanceled)return k;if(s)return Nt=Ct,v(),this._hideClone(),g("revert"),Te.eventCanceled||(jo?Ct.insertBefore(re,jo):Ct.appendChild(re)),b(!0);var w=px(e,o.draggable);if(!w||Oq(a,f,this)&&!w.animated){if(w===re)return b(!1);if(w&&e===a.target&&(t=w),t&&(i=ra(t)),Og(Ct,e,re,r,t,i,a,!!t)!==!1)return v(),w&&w.nextSibling?e.insertBefore(re,w.nextSibling):e.appendChild(re),Nt=e,y(),b(!0)}else if(w&&Rq(a,f,this)){var x=fd(e,0,o,!0);if(x===re)return b(!1);if(t=x,i=ra(t),Og(Ct,e,re,r,t,i,a,!1)!==!1)return v(),e.insertBefore(re,x),Nt=e,y(),b(!0)}else if(t.parentNode===e){i=ra(t);var T=0,C,S=re.parentNode!==e,E=!Pq(re.animated&&re.toRect||r,t.animated&&t.toRect||i,f),A=f?"top":"left",N=M2(t,"top","top")||M2(re,"top","top"),I=N?N.scrollTop:void 0;cd!==t&&(C=i[A],_p=!1,Fg=!E&&o.invertSwap||S),T=Nq(a,t,i,f,E?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Fg,cd===t);var R;if(T!==0){var j=ii(re);do j-=T,R=Nt.children[j];while(R&&(we(R,"display")==="none"||R===Ce))}if(T===0||R===t)return b(!1);cd=t,Up=T;var W=t.nextElementSibling,B=!1;B=T===1;var X=Og(Ct,e,re,r,t,i,a,B);if(X!==!1)return(X===1||X===-1)&&(B=X===1),ox=!0,setTimeout(Fq,30),v(),B&&!W?e.appendChild(re):t.parentNode.insertBefore(re,B?W:t),N&&V2(N,0,I-N.scrollTop),Nt=re.parentNode,C!==void 0&&!Fg&&(jg=Math.abs(C-ra(t)[A])),y(),b(!0)}if(e.contains(re))return b(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){Be(document,"mousemove",this._onTouchMove),Be(document,"touchmove",this._onTouchMove),Be(document,"pointermove",this._onTouchMove),Be(document,"dragover",Lo),Be(document,"mousemove",Lo),Be(document,"touchmove",Lo)},_offUpEvents:function(){var a=this.el.ownerDocument;Be(a,"mouseup",this._onDrop),Be(a,"touchend",this._onDrop),Be(a,"pointerup",this._onDrop),Be(a,"pointercancel",this._onDrop),Be(a,"touchcancel",this._onDrop),Be(document,"selectstart",this)},_onDrop:function(a){var e=this.el,t=this.options;if(Rr=ii(re),Dn=ii(re,t.draggable),yr("drop",this,{evt:a}),Nt=re&&re.parentNode,Rr=ii(re),Dn=ii(re,t.draggable),Te.eventCanceled){this._nulling();return}ud=!1,Fg=!1,_p=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),lx(this.cloneId),lx(this._dragStartId),this.nativeDraggable&&(Be(document,"drop",this),Be(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Wp&&we(document.body,"user-select",""),we(re,"transform",""),a&&(Hp&&(a.cancelable&&a.preventDefault(),!t.dropBubble&&a.stopPropagation()),Ce&&Ce.parentNode&&Ce.parentNode.removeChild(Ce),(Ct===Nt||Fa&&Fa.lastPutMode!=="clone")&&At&&At.parentNode&&At.parentNode.removeChild(At),re&&(this.nativeDraggable&&Be(re,"dragend",this),rx(re),re.style["will-change"]="",Hp&&!ud&&Fr(re,Fa?Fa.options.ghostClass:this.options.ghostClass,!1),Fr(re,this.options.chosenClass,!1),tr({sortable:this,name:"unchoose",toEl:Nt,newIndex:null,newDraggableIndex:null,originalEvent:a}),Ct!==Nt?(Rr>=0&&(tr({rootEl:Nt,name:"add",toEl:Nt,fromEl:Ct,originalEvent:a}),tr({sortable:this,name:"remove",toEl:Nt,originalEvent:a}),tr({rootEl:Nt,name:"sort",toEl:Nt,fromEl:Ct,originalEvent:a}),tr({sortable:this,name:"sort",toEl:Nt,originalEvent:a})),Fa&&Fa.save()):Rr!==pd&&Rr>=0&&(tr({sortable:this,name:"update",toEl:Nt,originalEvent:a}),tr({sortable:this,name:"sort",toEl:Nt,originalEvent:a})),Te.active&&((Rr==null||Rr===-1)&&(Rr=pd,Dn=$p),tr({sortable:this,name:"end",toEl:Nt,originalEvent:a}),this.save()))),this._nulling()},_nulling:function(){yr("nulling",this),Ct=re=Nt=Ce=jo=At=Lg=En=No=Pi=Hp=Rr=Dn=pd=$p=cd=Up=Fa=Ag=Te.dragged=Te.ghost=Te.clone=Te.active=null,$g.forEach(function(a){a.checked=!0}),$g.length=ex=tx=0},handleEvent:function(a){switch(a.type){case"drop":case"dragend":this._onDrop(a);break;case"dragenter":case"dragover":re&&(this._onDragOver(a),Aq(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;r<i;r++)e=t[r],Mi(e,s.draggable,this.el,!1)&&a.push(e.getAttribute(s.dataIdAttr)||jq(e));return a},sort:function(a,e){var t={},r=this.el;this.toArray().forEach(function(i,s){var o=r.children[s];Mi(o,this.options.draggable,r,!1)&&(t[i]=o)},this),e&&this.captureAnimationState(),a.forEach(function(i){t[i]&&(r.removeChild(t[i]),r.appendChild(t[i]))}),e&&this.animateAll()},save:function(){var a=this.options.store;a&&a.set&&a.set(this)},closest:function(a,e){return Mi(a,e||this.options.draggable,this.el,!1)},option:function(a,e){var t=this.options;if(e===void 0)return t[a];var r=Yp.modifyOption(this,a,e);typeof r!="undefined"?t[a]=r:t[a]=e,a==="group"&&_2(t)},destroy:function(){yr("destroy",this);var a=this.el;a[br]=null,Be(a,"mousedown",this._onTapStart),Be(a,"touchstart",this._onTapStart),Be(a,"pointerdown",this._onTapStart),this.nativeDraggable&&(Be(a,"dragover",this),Be(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(e){e.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),zg.splice(zg.indexOf(this.el),1),this.el=a=null},_hideClone:function(){if(!En){if(yr("hideClone",this),Te.eventCanceled)return;we(At,"display","none"),this.options.removeCloneOnHide&&At.parentNode&&At.parentNode.removeChild(At),En=!0}},_showClone:function(a){if(a.lastPutMode!=="clone"){this._hideClone();return}if(En){if(yr("showClone",this),Te.eventCanceled)return;re.parentNode==Ct&&!this.options.group.revertClone?Ct.insertBefore(At,re):jo?Ct.insertBefore(At,jo):Ct.appendChild(At),this.options.group.revertClone&&this.animate(re,At),we(At,"display",""),En=!1}}};function Aq(n){n.dataTransfer&&(n.dataTransfer.dropEffect="move"),n.cancelable&&n.preventDefault()}function Og(n,a,e,t,r,i,s,o){var l,c=n[br],u=c.options.onMove,p;return window.CustomEvent&&!Vs&&!qp?l=new CustomEvent("move",{bubbles:!0,cancelable:!0}):(l=document.createEvent("Event"),l.initEvent("move",!0,!0)),l.to=a,l.from=n,l.dragged=e,l.draggedRect=t,l.related=r||a,l.relatedRect=i||ra(a),l.willInsertAfter=o,l.originalEvent=s,n.dispatchEvent(l),u&&(p=u.call(c,l,s)),p}function rx(n){n.draggable=!1}function Fq(){ox=!1}function Rq(n,a,e){var t=ra(fd(e.el,0,e.options,!0)),r=z2(e.el,e.options,Ce),i=10;return a?n.clientX<r.left-i||n.clientY<t.top&&n.clientX<t.right:n.clientY<r.top-i||n.clientY<t.bottom&&n.clientX<t.left}function Oq(n,a,e){var t=ra(px(e.el,e.options.draggable)),r=z2(e.el,e.options,Ce),i=10;return a?n.clientX>r.right+i||n.clientY>t.bottom&&n.clientX>t.left:n.clientY>r.bottom+i||n.clientX>t.right&&n.clientY>t.top}function Nq(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&&jg<c*r){if(!_p&&(Up===1?l>u+c*i/2:l<p-c*i/2)&&(_p=!0),_p)m=!0;else if(Up===1?l<u+jg:l>p-jg)return-Up}else if(l>u+c*(1-r)/2&&l<p-c*(1-r)/2)return Lq(a)}return m=m||s,m&&(l<u+c*i/2||l>p-c*i/2)?l>u+c/2?1:-1:0}function Lq(n){return ii(re)<ii(n)?1:-1}function jq(n){for(var a=n.tagName+n.className+n.src+n.href+n.textContent,e=a.length,t=0;e--;)t+=a.charCodeAt(e);return t.toString(36)}function Hq(n){$g.length=0;for(var a=n.getElementsByTagName("input"),e=a.length;e--;){var t=a[e];t.checked&&$g.push(t)}}function Hg(n){return setTimeout(n,0)}function lx(n){return clearTimeout(n)}_g&&ze(document,"touchmove",function(n){(Te.active||ud)&&n.cancelable&&n.preventDefault()});Te.utils={on:ze,off:Be,css:we,find:H2,is:function(a,e){return!!Mi(a,e,a,!1)},extend:bq,throttle:B2,closest:Mi,toggleClass:Fr,clone:W2,index:ii,nextTick:Hg,cancelNextTick:lx,detectDirection:U2,getChild:fd,expando:br};Te.get=function(n){return n[br]};Te.mount=function(){for(var n=arguments.length,a=new Array(n),e=0;e<n;e++)a[e]=arguments[e];a[0].constructor===Array&&(a=a[0]),a.forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Te.utils=as(as({},Te.utils),t.utils)),Yp.mount(t)})};Te.create=function(n,a){return new Te(n,a)};Te.version=vq;var aa=[],Bp,dx,cx=!1,ix,sx,Ug,Vp;function Bq(){function n(){this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0};for(var a in this)a.charAt(0)==="_"&&typeof this[a]=="function"&&(this[a]=this[a].bind(this))}return n.prototype={dragStarted:function(e){var t=e.originalEvent;this.sortable.nativeDraggable?ze(document,"dragover",this._handleAutoScroll):this.options.supportPointer?ze(document,"pointermove",this._handleFallbackAutoScroll):t.touches?ze(document,"touchmove",this._handleFallbackAutoScroll):ze(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?Be(document,"dragover",this._handleAutoScroll):(Be(document,"pointermove",this._handleFallbackAutoScroll),Be(document,"touchmove",this._handleFallbackAutoScroll),Be(document,"mousemove",this._handleFallbackAutoScroll)),O2(),Bg(),wq()},nulling:function(){Ug=dx=Bp=cx=Vp=ix=sx=null,aa.length=0},_handleFallbackAutoScroll:function(e){this._handleAutoScroll(e,!0)},_handleAutoScroll:function(e,t){var r=this,i=(e.touches?e.touches[0]:e).clientX,s=(e.touches?e.touches[0]:e).clientY,o=document.elementFromPoint(i,s);if(Ug=e,t||this.options.forceAutoScrollFallback||qp||Vs||Wp){nx(e,this.options,o,t);var l=Pn(o,!0);cx&&(!Vp||i!==ix||s!==sx)&&(Vp&&O2(),Vp=setInterval(function(){var c=Pn(document.elementFromPoint(i,s),!0);c!==l&&(l=c,Bg()),nx(e,r.options,c,t)},10),ix=i,sx=s)}else{if(!this.options.bubbleScroll||Pn(o,!0)===ts()){Bg();return}nx(e,this.options,Pn(o,!1),!1)}}},Bs(n,{pluginName:"scroll",initializeByDefault:!0})}function Bg(){aa.forEach(function(n){clearInterval(n.pid)}),aa=[]}function O2(){clearInterval(Vp)}var nx=B2(function(n,a,e,t){if(a.scroll){var r=(n.touches?n.touches[0]:n).clientX,i=(n.touches?n.touches[0]:n).clientY,s=a.scrollSensitivity,o=a.scrollSpeed,l=ts(),c=!1,u;dx!==e&&(dx=e,Bg(),Bp=a.scroll,u=a.scrollFn,Bp===!0&&(Bp=Pn(e,!0)));var p=0,m=Bp;do{var f=m,h=ra(f),k=h.top,g=h.bottom,v=h.left,b=h.right,y=h.width,w=h.height,x=void 0,T=void 0,C=f.scrollWidth,S=f.scrollHeight,E=we(f),A=f.scrollLeft,N=f.scrollTop;f===l?(x=y<C&&(E.overflowX==="auto"||E.overflowX==="scroll"||E.overflowX==="visible"),T=w<S&&(E.overflowY==="auto"||E.overflowY==="scroll"||E.overflowY==="visible")):(x=y<C&&(E.overflowX==="auto"||E.overflowX==="scroll"),T=w<S&&(E.overflowY==="auto"||E.overflowY==="scroll"));var I=x&&(Math.abs(b-r)<=s&&A+y<C)-(Math.abs(v-r)<=s&&!!A),R=T&&(Math.abs(g-i)<=s&&N+w<S)-(Math.abs(k-i)<=s&&!!N);if(!aa[p])for(var j=0;j<=p;j++)aa[j]||(aa[j]={});(aa[p].vx!=I||aa[p].vy!=R||aa[p].el!==f)&&(aa[p].el=f,aa[p].vx=I,aa[p].vy=R,clearInterval(aa[p].pid),(I!=0||R!=0)&&(c=!0,aa[p].pid=setInterval(function(){t&&this.layer===0&&Te.active._onTouchMove(Ug);var W=aa[this.layer].vy?aa[this.layer].vy*o:0,B=aa[this.layer].vx?aa[this.layer].vx*o:0;typeof u=="function"&&u.call(Te.dragged.parentNode[br],B,W,n,Ug,aa[this.layer].el)!=="continue"||V2(aa[this.layer].el,B,W)}.bind({layer:p}),24))),p++}while(a.bubbleScroll&&m!==l&&(m=Pn(m,!1)));cx=c}},30),G2=function(a){var e=a.originalEvent,t=a.putSortable,r=a.dragEl,i=a.activeSortable,s=a.dispatchSortableEvent,o=a.hideGhostForTarget,l=a.unhideGhostForTarget;if(e){var c=t||i;o();var u=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,p=document.elementFromPoint(u.clientX,u.clientY);l(),c&&!c.el.contains(p)&&(s("spill"),this.onSpill({dragEl:r,putSortable:t}))}};function mx(){}mx.prototype={startIndex:null,dragStart:function(a){var e=a.oldDraggableIndex;this.startIndex=e},onSpill:function(a){var e=a.dragEl,t=a.putSortable;this.sortable.captureAnimationState(),t&&t.captureAnimationState();var r=fd(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(e,r):this.sortable.el.appendChild(e),this.sortable.animateAll(),t&&t.animateAll()},drop:G2};Bs(mx,{pluginName:"revertOnSpill"});function fx(){}fx.prototype={onSpill:function(a){var e=a.dragEl,t=a.putSortable,r=t||this.sortable;r.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),r.animateAll()},drop:G2};Bs(fx,{pluginName:"removeOnSpill"});Te.mount(new Bq);Te.mount(fx,mx);var wr=Te;Y();var St=require("obsidian");Y();var Ho=class n extends St.Modal{constructor(a,e,t,r,i,s){super(a),this.plugin=e,this.mode=t,this.currentFilterState=r,this.onSave=i,this.onLoad=s}onOpen(){let{contentEl:a}=this;a.empty(),this.mode==="save"?this.renderSaveMode():this.renderLoadMode()}renderSaveMode(){let{contentEl:a}=this;a.createEl("h2",{text:d("Save Filter Configuration")});let e="",t="";new St.Setting(a).setName(d("Filter Configuration Name")).setDesc(d("Enter a name for this filter configuration")).addText(r=>{r.setPlaceholder(d("Filter Configuration Name")).setValue(e).onChange(i=>{e=i})}),new St.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 St.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 St.Setting(a).addButton(s=>{s.setButtonText(d("Close")).onClick(()=>{this.close()})});return}let t="";new St.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 St.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 St.Notice(d("Filter configuration name is required"));return}if(!this.currentFilterState){new St.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 St.Notice(d("Filter configuration saved successfully")),this.onSave&&this.onSave(r),this.close()}catch(i){console.error("Failed to save filter configuration:",i),new St.Notice(d("Failed to save filter configuration"))}}async loadConfiguration(a){if(!a){new St.Notice(d("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(t=>t.id===a);if(!e){new St.Notice(d("Failed to load filter configuration"));return}try{this.onLoad&&this.onLoad(e),new St.Notice(d("Filter configuration loaded successfully")),this.close()}catch(t){console.error("Failed to load filter configuration:",t),new St.Notice(d("Failed to load filter configuration"))}}async deleteConfiguration(a){if(!a){new St.Notice(d("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(r=>r.id===a);if(!e){new St.Notice(d("Failed to delete filter configuration"));return}if(await new Promise(r=>{let i=new St.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 St.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 St.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 St.Notice(d("Failed to delete filter configuration"))}}onClose(){let{contentEl:a}=this;a.empty()}};var Ii=class extends ia.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 ia.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,ia.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,ia.setIcon)(c,"save"),(0,ia.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,ia.setIcon)(c,"folder-open"),(0,ia.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,ia.setIcon)(f,"grip-vertical")})}),i.createEl("label",{cls:["compact-text"],text:d("Match")}),new ia.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 ia.ExtraButtonComponent(o).setIcon("copy").setTooltip(d("Duplicate filter group")).onClick(()=>{let m=this.generateId(),f=e.filters.map(k=>({...k,id:this.generateId()})),h={...e,id:m,filters:f};this.addFilterGroup(h,t)}).extraSettingsEl.addClasses(["duplicate-group-btn","clickable-icon"]),new ia.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,ia.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 ia.DropdownComponent(r);i.selectEl.addClasses(["filter-property-select","compact-select"]);let s=new ia.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 ia.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(k=>i.addOption(k.value,k.text));let c=t.condition,u=!1;l.some(k=>k.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<e.length-1){let l=createEl("div",{cls:"filter-group-separator-container"}),c=l.createDiv({cls:"filter-group-separator"}),u=this.rootFilterState.rootCondition,p=d("OR");u==="all"?p=d("AND"):u==="none"&&(p=d("AND NOT")),c.textContent=p.toUpperCase(),(o=i.parentNode)==null||o.insertBefore(l,i.nextSibling)}})}makeSortableGroups(){this.groupsSortable&&(this.groupsSortable.destroy(),this.groupsSortable=void 0),this.filterGroupsContainerEl&&(this.groupsSortable=new wr(this.filterGroupsContainerEl,{animation:150,handle:".drag-handle",filter:".filter-group-separator-container",preventOnFilter:!0,ghostClass:"dragging-placeholder",onEnd:e=>{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 Ho(this.app,this.plugin,"save",this.getFilterState(),t=>{t.name}).open()}openLoadConfigModal(){if(!this.plugin)return;new Ho(this.app,this.plugin,"load",void 0,void 0,t=>{this.loadFilterState(t.filterState),t.name}).open()}};var Ws=class extends xe.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,k,g,v,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 y=this.plugin.settings.viewConfiguration.find(w=>w.id===this.sourceViewId);if(y){let w=e.createDiv({cls:"copy-mode-info"});w.createEl("p",{text:d("Creating a copy based on: ")+y.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 xe.Setting(e).setName(d("View Name")).addText(y=>{this.nameInput=y,y.setValue(this.viewConfig.name).setPlaceholder(d("My Custom Task View")),y.onChange(()=>this.checkForChanges())}),new xe.Setting(e).setName(d("Icon name")).setDesc(d("Enter any Lucide icon name (e.g., list-checks, filter, inbox)")).addText(y=>{y.inputEl.hide(),this.iconInput=y,y.setValue(this.viewConfig.icon).setPlaceholder("list-plus"),y.onChange(()=>this.checkForChanges())}).addButton(y=>{try{y.setIcon(this.viewConfig.icon)}catch(w){console.error("Error setting icon:",w)}Tg(y,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:w=>{this.viewConfig.icon=w,this.checkForChanges();try{(0,xe.setIcon)(y.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 xe.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(y=>{y.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 xe.Setting(e).setName(d("First day of week")).setDesc(d("Overrides the locale default for calendar views.")).addDropdown(y=>{var x,T;t.forEach(C=>{y.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),y.setValue(String(w)),y.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 xe.Setting(e).setName(d("Hide weekends")).setDesc(d("Hide weekend columns (Saturday and Sunday) in calendar views.")).addToggle(y=>{var x,T;let w=(T=(x=this.viewConfig.specificConfig)==null?void 0:x.hideWeekends)!=null?T:!1;y.setValue(w),y.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 xe.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 xe.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 xe.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 xe.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 xe.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 y=this.viewConfig.specificConfig;if(y!=null&&y.groupBy&&y.groupBy!=="status"){new xe.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(),y.customColumns||(y.customColumns=[]);let T=y.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 xe.Setting(w).setClass("kanban-column-row").addText(A=>{A.setValue(C.title).setPlaceholder(d("Column Title")).onChange(N=>{y.customColumns&&(y.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(y.customColumns){let R=I;if(y.groupBy==="priority"&&I){let j=parseInt(I);R=isNaN(j)?I:j}y.customColumns[S].value=R,this.checkForChanges()}})});E.addExtraButton(A=>{A.setIcon("arrow-up").setTooltip(d("Move Up")).setDisabled(S===0).onClick(()=>{if(S>0&&y.customColumns){let N=y.customColumns.splice(S,1)[0];y.customColumns.splice(S-1,0,N),y.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<T.length-1&&y.customColumns){let N=y.customColumns.splice(S,1)[0];y.customColumns.splice(S+1,0,N),y.customColumns.forEach((I,R)=>{I.order=R}),this.checkForChanges(),x()}})}),E.addExtraButton(A=>{A.setIcon("trash").setTooltip(d("Remove Column")).onClick(()=>{y.customColumns&&(y.customColumns.splice(S,1),y.customColumns.forEach((N,I)=>{N.order=I}),this.checkForChanges(),x())}),A.extraSettingsEl.addClass("mod-warning")})}),new xe.Setting(w).addButton(C=>{C.setButtonText(d("Add Column")).setCta().onClick(()=>{y.customColumns||(y.customColumns=[]);let S={id:`column_${Date.now()}`,title:d("New Column"),value:"",order:y.customColumns.length};y.customColumns.push(S),this.checkForChanges(),x()})}).addButton(C=>{C.setButtonText(d("Reset Columns")).onClick(()=>{y.customColumns&&(y.customColumns=[],this.checkForChanges(),x())})})};x()}}else if(c)new xe.Setting(e).setName(d("First day of week")).setDesc(d("Overrides the locale default for forecast views.")).addDropdown(y=>{var x,T;t.forEach(C=>{y.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),y.setValue(String(w)),y.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 xe.Setting(e).setName(d("Hide weekends")).setDesc(d("Hide weekend columns (Saturday and Sunday) in forecast calendar.")).addToggle(y=>{var x,T;let w=(T=(x=this.viewConfig.specificConfig)==null?void 0:x.hideWeekends)!=null?T:!1;y.setValue(w),y.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 xe.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 y=this.viewConfig.specificConfig;((k=y==null?void 0:y.usePriorityForClassification)!=null?k:!1)?(new xe.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=y==null?void 0:y.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 xe.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=y==null?void 0:y.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 xe.Setting(e).setName(d("Urgent Tag")).setDesc(d("Tag to identify urgent tasks (e.g., #urgent, #fire)")).addText(x=>{var T;x.setValue((T=y==null?void 0:y.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 xe.Setting(e).setName(d("Important Tag")).setDesc(d("Tag to identify important tasks (e.g., #important, #key)")).addText(x=>{var T;x.setValue((T=y==null?void 0:y.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 xe.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=y==null?void 0:y.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 xe.Setting(e).setName(d("Auto Update Priority")).setDesc(d("Automatically update task priority when moved between quadrants")).addToggle(x=>{var T;x.setValue((T=y==null?void 0:y.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 xe.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=y==null?void 0:y.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 xe.Setting(e).setName(d("Hide Empty Quadrants")).setDesc(d("Hide quadrants that have no tasks")).addToggle(x=>{var T;x.setValue((T=y==null?void 0:y.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||((g=this.viewConfig.specificConfig)==null?void 0:g.viewType)==="twocolumn"||this.viewConfig.type==="custom")&&((this.isCreate&&!this.isCopyMode||this.viewConfig.type==="custom")&&new xe.Setting(e).setName(d("View type")).setDesc(d("Select the type of view to create")).addDropdown(y=>{var w;y.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()})}),((v=this.viewConfig.specificConfig)==null?void 0:v.viewType)==="twocolumn"&&(new xe.Setting(e).setName(d("Two column view settings")).setHeading(),new xe.Setting(e).setName(d("Group by task property")).setDesc(d("Select which task property to use for left column grouping")).addDropdown(y=>{y.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 xe.Setting(e).setName(d("Left column title")).setDesc(d("Title for the left column (items list)")).addText(y=>{this.leftColumnTitleInput=y,y.setValue(this.viewConfig.specificConfig.leftColumnTitle||d("Items")),y.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.leftColumnTitle=w,this.checkForChanges())})}),new xe.Setting(e).setName(d("Right column title")).setDesc(d("Default title for the right column (tasks list)")).addText(y=>{this.rightColumnTitleInput=y,y.setValue(this.viewConfig.specificConfig.rightColumnDefaultTitle||d("Tasks")),y.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.rightColumnDefaultTitle=w,this.checkForChanges())})}),new xe.Setting(e).setName(d("Multi-select Text")).setDesc(d("Text to show when multiple items are selected")).addText(y=>{this.multiSelectTextInput=y,y.setValue(this.viewConfig.specificConfig.multiSelectText||d("selected items")),y.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.multiSelectText=w,this.checkForChanges())})}),new xe.Setting(e).setName(d("Empty state text")).setDesc(d("Text to show when no items are selected")).addText(y=>{this.emptyStateTextInput=y,y.setValue(this.viewConfig.specificConfig.emptyStateText||d("No items selected")),y.onChange(w=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.emptyStateText=w,this.checkForChanges())})}))),new xe.Setting(e).setName(d("Filter Rules")).setHeading(),new xe.Setting(e).setName(d("Hide completed and abandoned tasks")).setDesc(d("Hide completed and abandoned tasks in this view.")).addToggle(y=>{y.setValue(this.viewConfig.hideCompletedAndAbandonedTasks),y.onChange(w=>{this.viewConfig.hideCompletedAndAbandonedTasks=w,this.checkForChanges()})}),new xe.Setting(e).setName(d("Filter blanks")).setDesc(d("Filter out blank tasks in this view.")).addToggle(y=>{y.setValue(this.viewConfig.filterBlanks),y.onChange(w=>{this.viewConfig.filterBlanks=w,this.checkForChanges()})}),new xe.Setting(e).setName(d("Advanced Filtering")).setDesc(d("Use advanced multi-group filtering with complex conditions")).addToggle(y=>{let w=!!this.viewFilterRule.advancedFilter;this.viewFilterRule.advancedFilter,y.setValue(w),y.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 xe.Setting(e).setName(d("Sort Criteria")).setDesc(d("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let y=e.createDiv({cls:"sort-criteria-container"}),w=()=>{y.empty(),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]);let x=this.viewConfig.sortCriteria;x.length===0&&y.createEl("p",{text:d("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),x.forEach((T,C)=>{let S=new xe.Setting(y).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<x.length-1&&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("trash").setTooltip(d("Remove Criterion")).onClick(()=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria.splice(C,1),this.checkForChanges(),w())}),E.extraSettingsEl.addClass("mod-warning")})}),new xe.Setting(y).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 xe.Setting(e).addButton(y=>{y.setButtonText(d("Save")).setCta().onClick(()=>{this.saveChanges()})}).addButton(y=>{y.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 xe.Notice(d("View configuration saved."))}close(){this.hasChanges?new Aa(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 Ii(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 hx(n,a){if(new nt.Setting(a).setName(d("View Configuration")).setDesc(d("Configure the Task Genius sidebar views, visibility, order, and create custom views.")).setHeading(),new nt.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(g=>{g.setValue(n.plugin.settings.enableView),g.onChange(v=>{if(v&&!n.plugin.settings.enableIndexer){new nt.Notice(d("Cannot enable views without indexer. Please enable the indexer first in Index & Sources settings.")),g.setValue(!1);return}n.plugin.settings.enableView=v,n.applySettingsUpdate(),n.display()})}),!n.plugin.settings.enableView){new nt.Setting(a).setName(d("Views are disabled")).setDesc(d("Enable Task Genius Views above to configure view settings."));return}new nt.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(g=>{g.addOption("list",d("List View")).addOption("tree",d("Tree View")).setValue(n.plugin.settings.defaultViewMode).onChange(v=>{n.plugin.settings.defaultViewMode=v,n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Project Tree View Settings")).setDesc(d("Configure how projects are displayed in tree view.")).setHeading(),new nt.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(g=>{g.addOption("list",d("List View")).addOption("tree",d("Tree View")).setValue(n.plugin.settings.projectViewDefaultMode).onChange(v=>{n.plugin.settings.projectViewDefaultMode=v,n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Auto-expand project tree")).setDesc(d("Automatically expand all project nodes when opening the project view in tree mode.")).addToggle(g=>{g.setValue(n.plugin.settings.projectTreeAutoExpand).onChange(v=>{n.plugin.settings.projectTreeAutoExpand=v,n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Show empty project folders")).setDesc(d("Display project folders even if they don't contain any tasks.")).addToggle(g=>{g.setValue(n.plugin.settings.projectTreeShowEmptyFolders).onChange(v=>{n.plugin.settings.projectTreeShowEmptyFolders=v,n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Project path separator")).setDesc(d("Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').")).addText(g=>{g.setPlaceholder("/").setValue(n.plugin.settings.projectPathSeparator).onChange(v=>{n.plugin.settings.projectPathSeparator=v||"/",n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Date and Time Display")).setDesc(d("Configure how dates and times are displayed in views.")).setHeading(),new nt.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(g=>{g.setValue(n.plugin.settings.useRelativeTimeForDate),g.onChange(v=>{n.plugin.settings.useRelativeTimeForDate=v,n.applySettingsUpdate()})}),new nt.Setting(a).setName(d("Editor Configuration")).setDesc(d("Configure inline editing and metadata positioning.")).setHeading(),new nt.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(g=>{g.setValue(n.plugin.settings.enableInlineEditor),g.onChange(v=>{n.plugin.settings.enableInlineEditor=v,n.applySettingsUpdate()})}),new nt.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(g=>{g.setValue(n.plugin.settings.enableDynamicMetadataPositioning),g.onChange(v=>{n.plugin.settings.enableDynamicMetadataPositioning=v,n.applySettingsUpdate()})}),new nt.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 Ii(e,n.app,"global-filter",n.plugin),t.onload();let g=v=>{t&&(n.plugin.settings.globalFilterRules={...n.plugin.settings.globalFilterRules,advancedFilter:v},n.applySettingsUpdate(),n.plugin.triggerViewUpdate())};n.plugin.registerEvent(n.app.workspace.on("task-genius:filter-changed",(v,b)=>{b==="global-filter"&&g(v)}))})(),a.cleanupGlobalFilter=()=>{t&&(t.onunload(),t=null),r&&(r.destroy(),r=null),i&&(i.destroy(),i=null)},new nt.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 g=[],v=[];n.plugin.settings.viewConfiguration.forEach(w=>{w.region==="bottom"?v.push(w):g.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,nt.setIcon)(C,"grip-vertical");let S=T.createDiv({cls:"view-item-icon"});(0,nt.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,nt.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,nt.setIcon)(I,"pencil"),I.onclick=()=>{if(w.id==="habit"){n.openTab("habit");return}new Ws(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,nt.setIcon)(R,"copy"),R.onclick=()=>{new Ws(n.app,n.plugin,null,null,(j,W)=>{n.plugin.settings.viewConfiguration.some(B=>B.id===j.id)?new nt.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 nt.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,nt.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};g.forEach(w=>b(w,u)),v.forEach(w=>b(w,f));let y=()=>{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=wr.create(u,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{y()}}),i=wr.create(f,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{y()}})};h();let k=a.createDiv();new nt.Setting(k).addButton(g=>{g.setButtonText(d("Add Custom View")).setCta().onClick(()=>{new Ws(n.app,n.plugin,null,null,(v,b)=>{n.plugin.settings.viewConfiguration.some(y=>y.id===v.id)?new nt.Notice(d("Error: View ID already exists.")):(n.plugin.settings.viewConfiguration.push({...v,filterRules:b}),n.plugin.saveSettings(),h(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-added",viewId:v.id}))}).open()})})}var qa=require("obsidian");Y();gx();function kx(n,a){if(new qa.Setting(a).setName(d("Workflow")).setDesc(d("Configure task workflows for project and process management")).setHeading(),new qa.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 qa.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 qa.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 qa.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 qa.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 qa.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 qa.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 qa.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 qa.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 qa.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 qa.Setting(l).setName(s.name).setDesc(s.description||"");c.addExtraButton(p=>{p.setIcon("pencil").setTooltip(d("Edit workflow")).onClick(()=>{new In(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 qa.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"}),k=h.createEl("button");k.setText(d("Cancel")),k.addEventListener("click",()=>{m.close()});let g=h.createEl("button");g.setText(d("Delete")),g.addClass("mod-warning"),g.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 qa.Setting(i).addButton(s=>{s.setButtonText(d("Add New Workflow")).setCta().onClick(()=>{let o={id:Sn(),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 In(n.app,n.plugin,o,l=>{n.plugin.settings.workflow.definitions.push(l),n.applySettingsUpdate(),t()}).open()})})};t()}var Dt=require("obsidian");Y();function vx(n,a){var e,t,r,i,s,o,l,c;if(new Dt.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 Dt.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 Dt.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 v;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 g=((v=n.plugin.settings.projectConfig)==null?void 0:v.pathMappings)||[];g.length===0&&u.createDiv({cls:"no-mappings-message",text:d("No path mappings configured yet.")}),g.forEach((b,y)=>{let w=u.createDiv({cls:"project-path-mapping-row"});new Dt.Setting(w).setName(`${d("Mapping")} ${y+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[y].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[y].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[y].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(y,1),await n.plugin.saveSettings(),p())})})}),new Dt.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 Dt.Setting(a).setName(d("Metadata-based Project Detection")).setDesc(d("Configure project detection from file frontmatter")).setHeading(),new Dt.Setting(a).setName(d("Enable metadata project detection")).setDesc(d("Detect project from file frontmatter metadata")).addToggle(g=>{var v,b;g.setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)==null?void 0:b.enabled)||!1).onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.enabled=y,await n.plugin.saveSettings())})}),new Dt.Setting(a).setName(d("Metadata key")).setDesc(d("The frontmatter key to use for project name")).addText(g=>{var v,b;g.setPlaceholder("project").setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)==null?void 0:b.metadataKey)||"project").onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.metadataKey=y||"project",await n.plugin.saveSettings())})}),new Dt.Setting(a).setName(d("Config File-based Project Detection")).setDesc(d("Configure project detection from project configuration files")).setHeading(),new Dt.Setting(a).setName(d("Enable config file project detection")).setDesc(d("Detect project from project configuration files")).addToggle(g=>{var v,b;g.setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.configFile)==null?void 0:b.enabled)||!1).onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.enabled=y,await n.plugin.saveSettings())})}),new Dt.Setting(a).setName(d("Config file name")).setDesc(d("Name of the project configuration file")).addText(g=>{var v,b;g.setPlaceholder("project.md").setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.configFile)==null?void 0:b.fileName)||"project.md").onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.fileName=y||"project.md",await n.plugin.saveSettings())})}),new Dt.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 v,b,y,w,x;m.empty(),(b=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)!=null&&b.detectionMethods||(y=n.plugin.settings.projectConfig)!=null&&y.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]);let g=((x=(w=n.plugin.settings.projectConfig)==null?void 0:w.metadataConfig)==null?void 0:x.detectionMethods)||[];g.forEach((T,C)=>{let S=m.createDiv({cls:"project-detection-method"});new Dt.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()=>{g.splice(C,1),await n.plugin.saveSettings(),f()})}),T.type==="link"&&new Dt.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 Dt.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 Dt.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"}),k=()=>{var v,b;h.empty(),(!((v=n.plugin.settings.projectConfig)!=null&&v.metadataMappings)||!Array.isArray(n.plugin.settings.projectConfig.metadataMappings))&&n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings=[]);let g=((b=n.plugin.settings.projectConfig)==null?void 0:b.metadataMappings)||[];g.length===0&&h.createDiv({cls:"no-mappings-message",text:d("No metadata mappings configured yet.")}),g.forEach((y,w)=>{let x=h.createDiv({cls:"project-metadata-mapping-row"}),T=new Set(g.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===y.targetKey);new Dt.Setting(x).setName(`${d("Mapping")} ${w+1}`).addText(S=>{S.setPlaceholder(d("Source key (e.g., proj)")).setValue(y.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(y.targetKey).onChange(async E=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].targetKey=E,await n.plugin.saveSettings(),k())})}).addToggle(S=>{S.setTooltip(d("Enabled")).setValue(y.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(),k())})})}),new Dt.Setting(h).addButton(y=>{y.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(()=>{k()},100))})})};k(),new Dt.Setting(a).setName(d("Default Project Naming")).setDesc(d("Configure fallback project naming when no explicit project is found")).setHeading(),new Dt.Setting(a).setName(d("Enable default project naming")).setDesc(d("Use default naming strategy when no project is explicitly defined")).addToggle(g=>{var v,b;g.setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:b.enabled)||!1).onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.enabled=y,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 Dt.Setting(a).setName(d("Naming strategy")).setDesc(d("Strategy for generating default project names")).addDropdown(g=>{var v,b;g.addOption("filename",d("Use filename")).addOption("foldername",d("Use folder name")).addOption("metadata",d("Use metadata field")).setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:b.strategy)||"filename").onChange(async y=>{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=y,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 Dt.Setting(a).setName(d("Metadata key")).setDesc(d("Metadata field to use as project name")).addText(g=>{var v,b;g.setPlaceholder(d("Enter metadata key (e.g., project-name)")).setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:b.metadataKey)||"").onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.metadataKey=y,await n.plugin.saveSettings())})}),((c=(l=n.plugin.settings.projectConfig)==null?void 0:l.defaultProjectNaming)==null?void 0:c.strategy)==="filename"&&new Dt.Setting(a).setName(d("Strip file extension")).setDesc(d("Remove file extension from filename when using as project name")).addToggle(g=>{var v,b;g.setValue(((b=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:b.stripExtension)||!0).onChange(async y=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.stripExtension=y,await n.plugin.saveSettings())})})}}var Bo=require("obsidian");Y();function yx(n,a){new Bo.Setting(a).setName(d("Priority Picker Settings")).setDesc(d("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).setHeading(),new Bo.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 Bo.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 Bo.Setting(a).setName(d("Date picker")).setHeading(),new Bo.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 Bo.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 rs=require("obsidian");Y();function bx(n,a){new rs.Setting(a).setName(d("Timeline Sidebar")).setHeading(),new rs.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 rs.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 rs.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 rs.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 rs.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 rs.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 rs.Notice(d("Timeline sidebar opened"))})))}var Ie=require("obsidian");Y();var hd=require("obsidian");Y();var is=class extends hd.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 hd.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 hd.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 hd.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 $e=require("obsidian");Y();function ss(n,a){var t;let e=(t=a.settings)==null?void 0:t.fileSource;Vq(n,a,e),e.enabled&&(Wq(n,a,e),zq(n,a,e),$q(n,a,e),Uq(n,a,e),_q(n,a,e))}function Vq(n,a,e){new $e.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(),ss(n,a)}))}function Wq(n,a,e){new $e.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 $e.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(),ss(n,a)})),e.recognitionStrategies.metadata.enabled&&(new $e.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 is(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 $e.Notice(d("Task fields updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new $e.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 $e.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(),ss(n,a)})),e.recognitionStrategies.tags.enabled&&(new $e.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 is(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 $e.Notice(d("Task tags updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new $e.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 $e.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(),ss(n,a)})),e.recognitionStrategies.paths.enabled){new $e.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 is(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 $e.Notice(d("Task paths updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new $e.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(),ss(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 zq(n,a,e){new $e.Setting(n).setHeading().setName(d("Task Properties for Files")),new $e.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(),ss(n,a)})),e.fileTaskProperties.contentSource==="custom"&&new $e.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 $e.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 $e.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 $e.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 $q(n,a,e){if(new $e.Setting(n).setName(d("Status Mapping")).setDesc(d("Map between human-readable metadata values (e.g., 'completed') and task symbols (e.g., 'x').")),new $e.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(),ss(n,a)})}),e.statusMapping&&e.statusMapping.enabled){new $e.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 $e.Notice(d("FileSource status mapping synced"));else{let h=a.settings.taskStatuses||{},k={};for(let[v,b]of Object.entries(h)){let y=String(b).split("|").filter(Boolean);for(let w of y){if(w==="/>"){k["/"]=v,k[">"]=v;continue}if(w.length===1)k[w]=v;else for(let x of w)k[x]=v}}let g={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[v,b]of Object.entries(k)){let y=g[b];y&&(a.settings.fileSource.statusMapping.symbolToMetadata[v]=y)}await a.saveSettings(),new $e.Notice(d("FileSource status mapping synced"))}}catch(f){console.error("Failed to sync FileSource status mapping:",f),new $e.Notice(d("Failed to sync mapping"))}})),new $e.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 $e.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 $e.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,k]=f.split(":",2);h&&k&&(a.settings.fileSource.statusMapping.metadataToSymbol[h]=k,a.settings.fileSource.statusMapping.symbolToMetadata[k]||(a.settings.fileSource.statusMapping.symbolToMetadata[k]=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=`<strong>${d("Note:")}</strong> `+d("Status mappings work with your Task Status Settings. ")+d("The symbols defined here should match those in your checkbox status configuration.")}}function Uq(n,a,e){new $e.Setting(n).setHeading().setName(d("Performance")),new $e.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 $e.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 _q(n,a,e){new $e.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=qq(e);t.createEl("p",{text:d("Active strategies: ")+i})}}function qq(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 wx(n,a){if(new Ie.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 Ie.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 Ie.Notice(d("Please restart Obsidian for the Indexer change to take effect."),8e3)})}),new Ie.Setting(a).setName(d("Inline task parsing")).setDesc(d("Configure how tasks are parsed from markdown content.")).setHeading(),new Ie.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 Ie.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 Ie.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 is(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 Ie.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 Ie.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 Ie.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 Ie.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 is(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 Ie.Notice(d("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Ie.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 is(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 Ie.Notice(d("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Ie.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 Ie.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 Ie.Setting(a).setName(d("Daily note path")).setDesc(d("Select the folder that contains the daily note.")).addText(i=>{new Ah(n.app,i.inputEl,n.plugin),i.setValue(n.plugin.settings.dailyNotePath),i.onChange(s=>{n.plugin.settings.dailyNotePath=s,n.applySettingsUpdate()})}),new Ie.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 Ie.Setting(a).setName(d("File Metadata Inheritance")).setDesc(d("Configure how tasks inherit metadata from file frontmatter")).setHeading(),new Ie.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 Aa(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 Ie.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Ie.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Ie.Notice(d("Failed to reindex tasks"))}}}).open(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.fileMetadataInheritance.enabled&&(new Ie.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 Aa(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 Ie.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Ie.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Ie.Notice(d("Failed to reindex tasks"))}}}).open()})),new Ie.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 Aa(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 Ie.Notice(d("Clearing task cache and rebuilding index...")),await((o=n.plugin.dataflowOrchestrator)==null?void 0:o.onSettingsChange(["parser"])),new Ie.Notice(d("Task index completely rebuilt"))}catch(l){console.error("Failed to reindex after inheritance setting change:",l),new Ie.Notice(d("Failed to reindex tasks"))}}}).open()}))),new Ie.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");ss(t,n.plugin),new Ie.Setting(a).setName(d("Performance Configuration")).setDesc(d("Configure performance-related indexing settings")).setHeading(),new Ie.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 Ie.Setting(a).setName(d("Index Maintenance")).setDesc(d("Tools for managing and rebuilding the task index")).setHeading(),new Ie.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 Aa(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 Ie.Notice(d("Clearing task cache and rebuilding index...")),n.plugin.dataflowOrchestrator&&await n.plugin.dataflowOrchestrator.rebuild(),new Ie.Notice(d("Task index completely rebuilt"))}catch(s){console.error("Failed to force reindex tasks:",s),new Ie.Notice(d("Failed to force reindex tasks"))}}}).open()})})}var zs=require("obsidian");Y();function Tx(n,a){var e;if(new zs.Setting(a).setName(d("Desktop Integration")).setDesc(d("Configure system tray, notifications, and desktop features")).setHeading(),!zs.Platform.isDesktopApp){new zs.Setting(a).setName(d("Desktop only")).setDesc(d("Desktop integration features are only available in the desktop app"));return}new zs.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,k,g,v,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:(k=(h=(f=s.notifications)==null?void 0:f.perTask)==null?void 0:h.enabled)!=null?k:!1,leadMinutes:(b=(v=(g=s.notifications)==null?void 0:g.perTask)==null?void 0:v.leadMinutes)!=null?b:10}},n.applyNotificationsUpdateLight(),setTimeout(()=>{n.display()},200)})}),(e=n.plugin.settings.notifications)!=null&&e.enabled&&(new zs.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 zs.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 zs.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 rr=require("obsidian");Y();function xx(n,a){if(new rr.Setting(a).setName(d("File Filter")).setHeading(),new rr.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(),xx(n,a)})),!n.plugin.settings.fileFilter.enabled)return;new rr.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 rr.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 rr.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 k=f.createDiv({cls:"file-filter-rule-scope"});k.createEl("label",{text:d("Scope:")}),new rr.DropdownComponent(k).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 g=f.createDiv({cls:"file-filter-rule-path"});g.createEl("label",{text:d("Path:")});let v=g.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 Fh(n.app,v,n.plugin,"single"):p.type==="file"&&new Oh(v,n.plugin,x=>{p.path=x.path,v.value=x.path,s(),o()}),v.addEventListener("input",async()=>{p.path=v.value,s(),o()});let b=f.createDiv({cls:"file-filter-rule-enabled"});b.createEl("label",{text:d("Enabled:")});let y=b.createEl("input",{type:"checkbox"});y.checked=p.enabled,y.addEventListener("change",async()=>{p.enabled=y.checked,s(),o()});let w=f.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,rr.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 rr.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 rr.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,rr.debounce)(()=>n.applySettingsUpdate(),300,!0),o=(0,rr.debounce)(()=>l(),200,!0),l=()=>{try{let p={rulesCount:n.plugin.settings.fileFilter.rules.filter(k=>k.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 ns=require("obsidian");Y();function Q2(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 ns.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 ns.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 ns.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 ns.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 ns.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 ns.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 ns.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 ns.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 ns.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 Vo=require("obsidian");var J2=require("obsidian");var X2=[{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"}];Y();var Yg=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 X2){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 k=this.generateKeywords(m,f),g={id:h,tabId:i,name:m,description:f||void 0,keywords:k,translationKey:m,descriptionKey:f||void 0,category:s};this.addItemToIndex(g)})})}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,J2.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}}};Y();var Gg=class extends Vo.Component{constructor(e,t){super();this.currentResults=[];this.selectedIndex=-1;this.isVisible=!1;this.blurTimeoutId=0;this.settingTab=e,this.indexer=new Yg(t),this.containerEl=t,this.debouncedSearch=(0,Vo.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,Vo.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,Vo.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<this.currentResults.length&&this.setSelectedIndex(t)}setSelectedIndex(e){let t=this.resultsContainerEl.querySelector(".tg-settings-search-result-selected");if(t&&t.removeClass("tg-settings-search-result-selected"),this.selectedIndex=e,e>=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 Ze=require("obsidian");Y();var $s=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 Z2(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 eL(n,a,e){var De,et,Ke,Re;if(!Ze.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");Gp(r,t),new Ze.Setting(n).setName(d("Enable MCP Server")).setDesc(d("Start the MCP server to allow external tool connections")).addToggle(ne=>{var he;ne.setValue(((he=a.settings.mcpIntegration)==null?void 0:he.enabled)||!1).onChange(async Se=>{Se?new Aa(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 Ue=>{Ue?(a.settings.mcpIntegration?a.settings.mcpIntegration.enabled=!0:a.settings.mcpIntegration={enabled:!0,port:7777,host:"127.0.0.1",authToken:$s.generateToken(),enableCors:!0,logLevel:"info"},await a.saveSettings(),t&&(await t.updateConfig({enabled:!0}),Gp(r,t)),ne.setValue(!0),new Ze.Notice(d("MCP Server enabled. Keep your authentication token secure!"))):ne.setValue(!1)}}).open():(a.settings.mcpIntegration&&(a.settings.mcpIntegration.enabled=!1),await a.saveSettings(),t&&(await t.updateConfig({enabled:!1}),Gp(r,t)))})}),n.createEl("h3",{text:d("Server Configuration")}),new Ze.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(ne=>{var he;ne.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(((he=a.settings.mcpIntegration)==null?void 0:he.host)||"127.0.0.1").onChange(async Se=>{a.settings.mcpIntegration&&(Se==="0.0.0.0"&&a.settings.mcpIntegration.host!=="0.0.0.0"?new Aa(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 Ue=>{var ce;Ue?(a.settings.mcpIntegration&&(a.settings.mcpIntegration.host=Se,e()),new Ze.Notice(d("Host changed to 0.0.0.0. Server is now accessible from external networks."))):ne.setValue(((ce=a.settings.mcpIntegration)==null?void 0:ce.host)||"127.0.0.1")}}).open():(a.settings.mcpIntegration.host=Se,e()))})}),new Ze.Setting(n).setName(d("Port")).setDesc(d("Server port number (default: 7777)")).addText(ne=>{var he;ne.setPlaceholder("7777").setValue(String(((he=a.settings.mcpIntegration)==null?void 0:he.port)||7777)).onChange(async Se=>{if(!a.settings.mcpIntegration)return;let Qe=parseInt(Se);!isNaN(Qe)&&Qe>0&&Qe<65536&&(a.settings.mcpIntegration.port=Qe,e())})}),n.createEl("h3",{text:d("Authentication")});let i=new Ze.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:((De=a.settings.mcpIntegration)==null?void 0:De.authToken)||"",cls:"mcp-token-input"});s.readOnly=!0,i.addButton(ne=>{ne.setButtonText(d("Show")).onClick(()=>{s.type==="password"?(s.type="text",ne.setButtonText(d("Hide"))):(s.type="password",ne.setButtonText(d("Show")))})}),i.addButton(ne=>{ne.setButtonText(d("Copy")).onClick(async()=>{await navigator.clipboard.writeText(s.value),new Ze.Notice(d("Token copied to clipboard"))})}),i.addButton(ne=>{ne.setButtonText(d("Regenerate")).onClick(async()=>{if(!a.settings.mcpIntegration||!t)return;let he=t.regenerateAuthToken();s.value=he,await a.saveSettings(),new Ze.Notice(d("New token generated"))})}),n.createEl("h3",{text:d("Advanced Settings")}),new Ze.Setting(n).setName(d("Enable CORS")).setDesc(d("Allow cross-origin requests (required for web clients)")).addToggle(ne=>{var he,Se;ne.setValue((Se=(he=a.settings.mcpIntegration)==null?void 0:he.enableCors)!=null?Se:!0).onChange(async Qe=>{a.settings.mcpIntegration&&(a.settings.mcpIntegration.enableCors=Qe,e())})}),new Ze.Setting(n).setName(d("Log Level")).setDesc(d("Logging verbosity for debugging")).addDropdown(ne=>{var he;ne.addOption("error",d("Error")).addOption("warn",d("Warning")).addOption("info",d("Info")).addOption("debug",d("Debug")).setValue(((he=a.settings.mcpIntegration)==null?void 0:he.logLevel)||"info").onChange(async Se=>{a.settings.mcpIntegration&&(a.settings.mcpIntegration.logLevel=Se,e())})}),n.createEl("h3",{text:d("Server Actions")});let o=n.createDiv("mcp-actions-container");new Ze.Setting(o).setName(d("Test Connection")).setDesc(d("Test the MCP server connection")).addButton(ne=>{ne.setButtonText(d("Test")).onClick(async()=>{var he,Se,Qe;ne.setDisabled(!0),ne.setButtonText(d("Testing..."));try{let Ue=await(0,Ze.requestUrl)({url:`http://${((he=a.settings.mcpIntegration)==null?void 0:he.host)||"127.0.0.1"}:${((Se=a.settings.mcpIntegration)==null?void 0:Se.port)||7777}/health`,method:"GET"}).catch(ot=>{throw console.error("[MCP Test] Health check failed:",ot),new Error(`Cannot reach server: ${ot.message}`)});if(!Ue||Ue.status!==200)throw new Error("Health check failed");let ce=await(0,Ze.requestUrl)({url:k,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(ot=>{throw new Error(`Initialize failed: ${ot.message}`)});if(ce.status!==200){let ot=ce.text;throw new Error(`Initialize failed with status ${ce.status}: ${ot}`)}let gt=ce.json;if(ce.headers,gt.error)throw new Error(`MCP error: ${gt.error.message}`);let tt=ce.headers["mcp-session-id"]||ce.headers["Mcp-Session-Id"]||(gt==null?void 0:gt.sessionId)||((Qe=gt==null?void 0:gt.result)==null?void 0:Qe.sessionId);if(!tt)throw console.error("[MCP Test] No session ID in response"),new Error("No session ID returned");let zt=(await(0,Ze.requestUrl)({url:k,method:"POST",headers:{Authorization:w,"Mcp-Session-Id":tt,"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(zt.error)throw new Error(`Tools list error: ${zt.error.message}`);new Ze.Notice(d("Connection test successful! MCP server is working."))}catch(Ue){console.error("[MCP Test] Test failed:",Ue),new Ze.Notice(d("Connection test failed: ")+Ue.message)}finally{ne.setDisabled(!1),ne.setButtonText(d("Test"))}})}),new Ze.Setting(o).setName(d("Restart Server")).setDesc(d("Stop and restart the MCP server")).addButton(ne=>{ne.setButtonText(d("Restart")).setCta().onClick(async()=>{if(t){ne.setDisabled(!0);try{await t.restart(),new Ze.Notice(d("MCP server restarted")),Gp(r,t)}catch(he){new Ze.Notice(d("Failed to restart server: ")+he.message)}finally{ne.setDisabled(!1)}}})}).addButton(ne=>{ne.setButtonText(d("Use Next Available Port")).onClick(async()=>{if(!(!t||!a.settings.mcpIntegration)){ne.setDisabled(!0);try{let Se=(a.settings.mcpIntegration.port||7777)+1,Qe=!1;for(let Ue=0;Ue<50;Ue++)try{await t.updateConfig({port:Se}),Qe=!0;break}catch(ce){Se++}Qe?(new Ze.Notice(d("Port updated to ")+String(Se)),Gp(r,t)):new Ze.Notice(d("No available port found in range"))}finally{ne.setDisabled(!1)}}})}),n.createEl("h3",{text:d("Client Configuration")});let l=n.createDiv("mcp-config-container"),c=!0,u,p,m=new Ze.Setting(l).setName(d("Authentication Method")).setDesc(d("Choose the authentication method for client configurations")).addDropdown(ne=>{ne.addOption("methodB",d("Method B: Combined Bearer (Recommended)")).addOption("methodA",d("Method A: Custom Headers")).setValue("methodB").onChange(he=>{c=he==="methodB",u(),p&&p()})}),f=((et=a.settings.mcpIntegration)==null?void 0:et.host)||"127.0.0.1",k=`http://${f==="0.0.0.0"?"127.0.0.1":f}:${((Ke=a.settings.mcpIntegration)==null?void 0:Ke.port)||7777}/mcp`,g=((Re=a.settings.mcpIntegration)==null?void 0:Re.authToken)||"",b=`${a.app.vault.getName().toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`,y=a.app.appId,w=`Bearer ${g}+${y}`,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: ${y}`}),C.appendText(" + "),C.createEl("code",{text:`Authorization: Bearer ${g}`});let S=T.createEl("li");S.createEl("strong",{text:"Method B (Combined Bearer):"}),S.appendText(" "),S.createEl("code",{text:`Authorization: Bearer ${g}+${y}`});let E=l.createDiv("mcp-client-configs-container"),A=()=>c?[{name:"Cursor",config:{mcpServers:{[b]:{url:k,headers:{Authorization:w}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: ${w}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${k} --header "Authorization: ${w}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:k,headers:{Authorization:w}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:k,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","@-",k]},settings:{}}}}}]:[{name:"Cursor",config:{mcpServers:{[b]:{url:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":y}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: Bearer ${g}`,"-H",`mcp-app-id: ${y}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${k} --header "Authorization: Bearer ${g}" --header "mcp-app-id: ${y}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":y}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":y}}}}},{name:"Zed",config:{context_servers:{[b]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: Bearer ${g}`,"-H",`mcp-app-id: ${y}`,"-H","Content-Type: application/json","--data-raw","@-",k]},settings:{}}}}}];u=()=>{E.empty(),A().forEach(he=>{let Se=E.createDiv("mcp-client-section"),Qe=Se.createDiv("mcp-client-header"),Ue=Qe.createDiv("mcp-arrow");(0,Ze.setIcon)(Ue,"chevron-right"),Qe.createEl("span",{text:he.name,cls:"mcp-client-name"});let ce=Se.createDiv("mcp-client-content"),gt=!1;if(Qe.onclick=()=>{gt=!gt,gt?(ce.classList.add("expanded"),Ue.classList.add("expanded")):(ce.classList.remove("expanded"),Ue.classList.remove("expanded"))},he.name==="Cursor"){let tt=ce.createDiv("mcp-cursor-install-section");tt.createEl("h4",{text:d("Quick Install"),cls:"mcp-docs-subtitle"});let zt=btoa(JSON.stringify({url:k,headers:{Authorization:w}})),ot=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(b)}&config=${zt}`,bt=tt.createDiv("mcp-cursor-install-container");bt.createEl("p",{text:d("Click the button below to automatically add this MCP server to Cursor:"),cls:"mcp-cursor-install-desc"});let nr=bt.createEl("a",{href:ot,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"}}),Xt=bt.createDiv("mcp-cursor-additional-buttons").createEl("button",{text:d("Copy Install Link"),cls:"mcp-cursor-copy-deeplink-btn"});Xt.onclick=async()=>{await navigator.clipboard.writeText(ot),Xt.setText(d("Copied!")),Xt.addClass("copied"),setTimeout(()=>{Xt.setText(d("Copy Install Link")),Xt.removeClass("copied")},2e3)},ce.createEl("hr",{cls:"mcp-section-separator"}),ce.createEl("h4",{text:d("Manual Configuration"),cls:"mcp-docs-subtitle"}),Z2(ce,he.config,`${he.name} configuration`)}else if(he.config)Z2(ce,he.config,`${he.name} configuration`);else if(he.commandLine){let tt=ce.createDiv("mcp-config-block");tt.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(he.commandLine);let ot=tt.createEl("button",{text:d("Copy"),cls:"mcp-copy-btn"});ot.onclick=async()=>{await navigator.clipboard.writeText(he.commandLine),ot.setText(d("Copied!")),ot.addClass("copied"),setTimeout(()=>{ot.setText(d("Copy")),ot.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=k;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"),q=V.createDiv("mcp-tools-info");q.setText(d("Loading tools..."));async function oe(){var ne;try{let he=await(0,Ze.requestUrl)({url:k,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"})}),Se=he.headers["mcp-session-id"]||he.headers["Mcp-Session-Id"];if(!Se)throw new Error("No session id returned");let Qe=await(0,Ze.requestUrl)({url:k,method:"POST",headers:{Authorization:`${w}`,"Mcp-Session-Id":Se,"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"})}),Ue=((ne=Qe==null?void 0:Qe.json.result)==null?void 0:ne.tools)||[];if(q.setText(""),!Ue.length){q.setText(d("No tools available"));return}Ue.forEach(ce=>{let gt=G.createDiv("mcp-tool-card"),tt=gt.createDiv("mcp-tool-header"),ha=tt.createDiv("mcp-tool-icon");(0,Ze.setIcon)(ha,"wrench"),tt.createEl("code",{text:ce.name,cls:"mcp-tool-name"}),gt.createDiv("mcp-tool-desc").setText(ce.description||"")})}catch(he){console.error("[MCP Tools] Failed to load tools:",he),q.setText(d("Failed to load tools. Is the MCP server running?"))}}oe();let le=N.createDiv("mcp-docs-section");le.createEl("h4",{text:d("Example Request"),cls:"mcp-docs-subtitle"});let be=le.createDiv("mcp-example-container");p=()=>{be.empty(),Ae()};let Ae=()=>{let ne=be.createDiv("mcp-example-tabs"),he=ne.createEl("button",{text:"cURL",cls:"mcp-example-tab active"}),Se=ne.createEl("button",{text:"JavaScript",cls:"mcp-example-tab"}),Qe=ne.createEl("button",{text:"Python",cls:"mcp-example-tab"}),Ue=be.createDiv("mcp-example-code-container"),ce=Ue.createDiv("mcp-example-block active");ce.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let gt=ce.createEl("pre",{cls:"mcp-example-code"});c?gt.createEl("code",{text:`curl -i -X POST ${B} \\
|
||
-H "Authorization: ${w}" \\
|
||
-H "Content-Type: application/json" \\
|
||
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}):gt.createEl("code",{text:`curl -i -X POST ${B} \\
|
||
-H "Authorization: Bearer ${g}" \\
|
||
-H "mcp-app-id: ${y}" \\
|
||
-H "Content-Type: application/json" \\
|
||
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}),ce.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let tt=ce.createEl("pre",{cls:"mcp-example-code"});c?tt.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}}}'`}):tt.createEl("code",{text:`curl -X POST ${B} \\
|
||
-H "Authorization: Bearer ${g}" \\
|
||
-H "mcp-app-id: ${y}" \\
|
||
-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 ha=Ue.createDiv("mcp-example-block");ha.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let zt=ha.createEl("pre",{cls:"mcp-example-code"});c?zt.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');`}):zt.createEl("code",{text:`const initRes = await fetch('${B}', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Authorization': 'Bearer ${g}',
|
||
'mcp-app-id': '${y}',
|
||
'Content-Type': 'application/json'
|
||
},
|
||
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' })
|
||
});
|
||
const sessionId = initRes.headers.get('mcp-session-id');`}),ha.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let ot=ha.createEl("pre",{cls:"mcp-example-code"});c?ot.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());`}):ot.createEl("code",{text:`const callRes = await fetch('${B}', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Authorization': 'Bearer ${g}',
|
||
'mcp-app-id': '${y}',
|
||
'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 bt=Ue.createDiv("mcp-example-block");bt.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let Ka=bt.createEl("pre",{cls:"mcp-example-code"});c?Ka.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}")`}):Ka.createEl("code",{text:`import requests
|
||
|
||
# Initialize session
|
||
init_res = requests.post(
|
||
'${B}',
|
||
headers={
|
||
'Authorization': 'Bearer ${g}',
|
||
'mcp-app-id': '${y}',
|
||
'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}")`}),bt.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let nr=bt.createEl("pre",{cls:"mcp-example-code"});c?nr.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())`}):nr.createEl("code",{text:`# Call tool
|
||
call_res = requests.post(
|
||
'${B}',
|
||
headers={
|
||
'Authorization': 'Bearer ${g}',
|
||
'mcp-app-id': '${y}',
|
||
'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 Br=[he,Se,Qe],Xt=[ce,ha,bt];Br.forEach((Vr,ja)=>{Vr.onclick=()=>{Br.forEach(Wr=>Wr.removeClass("active")),Xt.forEach(Wr=>Wr.removeClass("active")),Vr.addClass("active"),Xt[ja].addClass("active")}}),Xt.forEach(Vr=>{Vr.querySelectorAll("pre.mcp-example-code").forEach(Wr=>{let tn=Wr.querySelector("code");if(!tn)return;let an=Wr.createEl("button",{text:d("Copy"),cls:"mcp-example-copy-btn"});an.onclick=async()=>{let Gm=tn.textContent||"";await navigator.clipboard.writeText(Gm),an.setText(d("Copied!")),an.addClass("copied"),setTimeout(()=>{an.setText(d("Copy")),an.removeClass("copied")},2e3)}})})};Ae()}function Gp(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 Qg=require("obsidian"),Kg=class extends Qg.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,Qg.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 Wo=require("obsidian");function tL(n,a){var t;let e=a.createDiv();if(e.addClass("task-timer-settings-section"),new Wo.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 Wo.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 Wo.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 Wo.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 Wo.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 Wo.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 k=h.createEl("h3");k.setText("Data Management"),k.addClass("task-timer-section-heading");let g=h.createDiv();g.addClass("task-timer-commands-desc"),g.createEl("p").setText("Use the command palette to access timer data management:");let b=g.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 Cx=require("obsidian");Y();function aL(n,a){new Cx.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 Cx.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 Aa(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 Xg=class extends Ra.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,Ra.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,Ra.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 Gg(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"&&!Ra.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,Ra.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 Ra.ButtonComponent(s);o.setClass("header-button"),o.setClass("how-to-button"),o.onClick(()=>{var h;let f=this.getHowToUseUrl(e);try{new Kg(this.app,f,`How to use \u2014 ${(h=i==null?void 0:i.name)!=null?h:e}`).open()}catch(k){window.open(f)}});let l=o.buttonEl.createEl("span");l.addClass("header-button-icon"),(0,Ra.setIcon)(l,"book");let c=o.buttonEl.createEl("span");c.addClass("header-button-text"),c.setText(d("How to use"));let u=new Ra.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,Ra.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 k=this.createTabSection("project");this.displayProjectSettings(k);let g=this.createTabSection("index");this.displayIndexSettings(g);let v=this.createTabSection("view-settings");this.displayViewSettings(v);let b=this.createTabSection("reward");this.displayRewardSettings(b);let y=this.createTabSection("habit");this.displayHabitSettings(y);let w=this.createTabSection("ics-integration");this.displayIcsSettings(w);let x=this.createTabSection("desktop-integration");if(this.displayDesktopIntegrationSettings(x),Ra.Platform.isDesktopApp){let C=this.createTabSection("mcp-integration");this.displayMcpSettings(C)}if((0,Ra.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){WT(this,e)}displayTaskStatusSettings(e){XT(this,e)}displayDatePrioritySettings(e){yx(this,e)}displayTaskFilterSettings(e){KT(this,e)}displayFileFilterSettings(e){xx(this,e)}displayWorkflowSettings(e){kx(this,e)}displayQuickCaptureSettings(e){zT(this,e)}displayTaskTimerSettings(e){this.renderTaskTimerSettingsTab(e)}displayTimeParsingSettings(e){Q2(this,e)}displayTimelineSidebarSettings(e){bx(this,e)}displayTaskHandlerSettings(e){QT(this,e)}displayViewSettings(e){hx(this,e)}displayIndexSettings(e){wx(this,e)}displayProjectSettings(e){vx(this,e)}displayIcsSettings(e){new Np(this.plugin,e,()=>{this.currentTab="general",this.display()}).display()}displayDesktopIntegrationSettings(e){Tx(this,e)}displayMcpSettings(e){eL(e,this.plugin,()=>this.applySettingsUpdate())}displayBasesSettings(e){aL(this,e)}displayAboutSettings(e){NT(this,e)}displayRewardSettings(e){$T(this,e)}displayHabitSettings(e){BT(this,e)}renderTaskTimerSettingsTab(e){tL(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 bL=require("@codemirror/state");var os=require("obsidian"),fL=require("@codemirror/state"),hL=require("@codemirror/state");var xa=require("@codemirror/view"),Jg=require("obsidian"),rL=require("@codemirror/state"),Zg=require("@codemirror/language");Y();var Ai=rL.Annotation.define(),Qp={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}},Xp={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}},Gq=Object.values(Qp).map(n=>n.regex).filter(n=>n).join("|"),Kq=Object.values(Xp).map(n=>n.regex).join("|"),Qq=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/gi;function Xq(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 Kp=class extends xa.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 Jg.Menu,r=this.plugin.settings.preferMetadataFormat==="dataview";this.mode==="letter"?(Object.entries(Xp).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(Qp).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<this.to){console.warn("Invalid view state, skipping priority update");return}let r=this.view.state.doc.lineAt(this.from),i=r.text;i=this.removeExistingPriority(i),i=i.trimEnd()+" "+e;let s=this.view.state.update({changes:{from:r.from,to:r.to,insert:i},annotations:[Ai.of(!0)]});this.view.dispatch(s)}catch(r){console.error("Error setting priority:",r)}}removePriority(e){try{if(!this.view||this.view.state.doc.length<this.to){console.warn("Invalid view state, skipping priority removal");return}let t=this.view.state.doc.lineAt(this.from),r=this.removeExistingPriority(t.text).trimEnd(),i=this.view.state.update({changes:{from:t.from,to:t.to,insert:r},annotations:[Ai.of(!0)]});this.view.dispatch(i)}catch(t){console.error("Error removing priority:",t)}}removeExistingPriority(e){let t=e;return t=t.replace(/\[priority::\s*\w+\]/i,""),t=t.replace(/(🔺|⏫|🔼|🔽|⏬️)/g,""),t=t.replace(/\[#([ABC])\]/g,""),t=t.replace(/\s+/g," "),t}};function iL(n,a){if(!a.settings.enablePriorityPicker)return[];class e{constructor(s){this.decorations=xa.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.emojiMatch=new xa.MatchDecorator({regexp:new RegExp(`(${Gq})`,"g"),decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m=this.view.state.doc.lineAt(o),f=Xq(m.text,p);s(o,l,xa.Decoration.replace({widget:new Kp(n,a,u,o,l,c[0],f)}))}catch(p){console.warn("Error decorating emoji priority:",p)}}});this.letterMatch=new xa.MatchDecorator({regexp:new RegExp(`(${Kq})`,"g"),decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,xa.Decoration.replace({widget:new Kp(n,a,u,o,l,c[0],"letter")}))}catch(p){console.warn("Error decorating letter priority:",p)}}});this.dataviewMatch=new xa.MatchDecorator({regexp:Qq,decorate:(s,o,l,c,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,xa.Decoration.replace({widget:new Kp(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(Ai))){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=xa.Decoration.none}updateDecorations(s,o){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=xa.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=xa.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=xa.Decoration.none}}}isLivePreview(s){try{return s.field(Jg.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,Zg.syntaxTree)(s.state).resolveInner(o+1).type.prop(Zg.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?xa.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 xa.ViewPlugin.fromClass(e,t)}var tY=require("@codemirror/language");Y();var mL=hL.Annotation.define();function gL(n,a){return fL.EditorState.transactionFilter.of(e=>aY(e,n,a))}function An(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 Px(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<s||p===s&&o<t))return m[1]}return null}function aY(n,a,e){var o,l;if(!e.settings.workflow.enableWorkflow||!n.docChanged||n.annotation(mL)||n.annotation(Ai)||(o=n.annotation(dt))!=null&&o.startsWith("workflowChange"))return n;let t=[];n.changes.iterChanges((c,u,p,m,f)=>{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=ls(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=ls(c.lineText,n.newDoc,c.line,e);if(!p)continue;let{workflowType:m,currentStage:f,currentSubStage:h,workflow:k,isRootTask:g}=p,v=kL(u.text,n.newDoc,u.from,u.number,m,e);s.push(...v);let b=/\s*\[stage::[^\]]+\]/,y=u.text.match(b);if(y&&y.index&&e.settings.workflow.autoRemoveLastStageMarker&&s.push({from:u.from+y.index,to:u.from+y.index+y[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),q=G.text.match(/^([\s|\t]*)/);if((q?q[1].length:0)<B&&G.text.includes(`#workflow/${m}`)){G.text;let le=G.text.match(X);if(le){let be=le[3];if(!e.settings.taskStatuses.completed.split("|").includes(be)){let De=G.from+le[0].indexOf("[");s.push({from:De+1,to:De+2,insert:"x"})}break}}}continue}let{nextStageId:w,nextSubStageId:x}=ok(f,k,h),T=k.stages.find(W=>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=hi(a),N=Ia(a),I=g?E+N:E,R=lk(T,I,e,!0,C),j=rY(u,n.newDoc,E);n.annotation(dt)!=="autoCompleteParent.DONE"&&s.push({from:j,to:j,insert:`
|
||
${R}`})}return s.length>0?{changes:[n.changes,...s],selection:n.selection,annotations:mL.of("workflowChange")}:n}function kL(n,a,e,t,r,i){let s=[],o=i.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss",l=`\u{1F6EB} ${(0,os.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,os.moment)(p,o),f=(0,os.moment)(),h=os.moment.duration(f.diff(m));if(i.settings.workflow.removeTimestampOnTransition){let k=e+c,g=k+l;s.push({from:k-1,to:g,insert:""})}if(i.settings.workflow.calculateSpentTime){let k=os.moment.utc(h.asMilliseconds()).format(i.settings.workflow.spentTimeFormat),g=n.indexOf("[stage::"),v=e+(g!==-1?g:n.length);if((!zo(n,t,a,i)||!i.settings.workflow.calculateFullSpentTime)&&s.push({from:v,to:v,insert:` (\u23F1\uFE0F ${k})`}),i.settings.workflow.calculateFullSpentTime&&zo(n,t,a,i)){let b=`#workflow/${r}`,y=os.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&&(y.add(B),w=!0)}}break}}if(w?y.add(h):(y=h,w=!0),w){let S=os.moment.utc(y.asMilliseconds()).format(i.settings.workflow.spentTimeFormat);s.push({from:v,to:v,insert:` (${d("Total")}: ${S})`})}}}return s}function vL(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=An(r);if(!o){n.addItem(h=>{h.setTitle(d("Workflow")),h.setIcon("list-ordered");let k=h.setSubmenu();k.addItem(g=>{g.setTitle(d("Add as workflow root")),g.setIcon("plus-circle");let v=g.setSubmenu();e.settings.workflow.definitions.forEach(b=>{v.addItem(y=>{y.setTitle(b.name),y.onClick(()=>{a.cm.dispatch({changes:{from:a.posToOffset(t),to:a.posToOffset(t),insert:`#workflow/${b.id}`}})})})})}),k.addSeparator(),k.addItem(g=>{g.setTitle(d("Convert to workflow template")),g.setIcon("convert"),g.onClick(()=>{Promise.resolve().then(()=>(Jp(),nk)).then(({convertTaskToWorkflowCommand:v})=>{v(!1,a,null,e)})})}),k.addItem(g=>{g.setTitle(d("Start workflow here")),g.setIcon("play"),g.onClick(()=>{Promise.resolve().then(()=>(Jp(),nk)).then(({startWorkflowHereCommand:v})=>{v(!1,a,null,e)})})}),k.addItem(g=>{g.setTitle(d("Create quick workflow")),g.setIcon("zap"),g.onClick(()=>{Promise.resolve().then(()=>(Jp(),nk)).then(({createQuickWorkflowCommand:v})=>{v(!1,a,null,e)})})})});return}let l=ls(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 k=h.setSubmenu();if(u.id==="_root_task_"){if(m.stages.length>0){let g=m.stages[0];k.addItem(v=>{v.setTitle(`${d("Move to stage")} ${g.name}`),v.onClick(()=>{let b=si(e,a,r,t.line,g,!0,void 0,void 0);a.cm.dispatch({changes:b,annotations:dt.of("workflowChange")})})})}}else if(u.canProceedTo)u.canProceedTo.forEach(g=>{let v=m.stages.find(b=>b.id===g);v&&k.addItem(b=>{let y=zo(r,t.line,a.cm.state.doc,e);b.setTitle(y?`${d("Complete stage")}: ${v.name}`:`${d("Move to stage")} ${v.name}`),b.onClick(()=>{let w=si(e,a,r,t.line,v,!1,void 0,p);a.cm.dispatch({changes:w,annotations:dt.of(y?"workflowChange.completeStage":"workflowChange.moveToStage")})})})});else if(u.type==="terminal")k.addItem(g=>{g.setTitle(d("Complete workflow")),g.onClick(()=>{let v=si(e,a,r,t.line,u,!1,void 0,p);a.cm.dispatch({changes:v,annotations:dt.of("workflowChange")})})});else{let{nextStageId:g}=ok(u,m,p);if(g&&g!==u.id){let v=m.stages.find(b=>b.id===g);v&&k.addItem(b=>{b.setTitle(`${d("Move to")} ${v.name}`),b.onClick(()=>{let y=si(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:y,annotations:dt.of("workflowChange")})})})}}k.addSeparator(),k.addItem(g=>{g.setTitle(d("Add child task with same stage")),g.setIcon("plus-circle"),g.onClick(()=>{if(o.currentStage==="root"){if(m.stages.length>0){let v=m.stages[0],b=si(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:b,annotations:dt.of("workflowChange")})}}else if(u.id==="_root_task_"){if(m.stages.length>0){let v=m.stages[0],b=si(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:b,annotations:dt.of("workflowChange")})}}else{let v=si(e,a,r,t.line,u,!1,p,void 0);a.cm.dispatch({changes:v,annotations:dt.of("workflowChange")})}})})})}function zo(n,a,e,t){t.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=An(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=Px(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(g=>g.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,k=typeof c.next=="string"||Array.isArray(c.next)&&c.next.length>0;return!!(f&&!h&&!k&&l.stages.findIndex(v=>v.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 ok(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&&i<a.stages.length-1?t=a.stages[i+1].id:t=n.id}else n.type==="cycle"&&n.canProceedTo&&n.canProceedTo.length>0?t=n.canProceedTo[0]:t=n.id;return{nextStageId:t,nextSubStageId:r}}function si(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=Ia(c),h=hi(c),k=m?m[1]+(i?f:""):"";n.settings.workflow.autoAddTimestamp&&`${(0,os.moment)().format(n.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`;let g=[],v=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,b=e.match(v);if(b){let T=p.from+b[0].indexOf("[");g.push({from:T+1,to:T+2,insert:"x"})}let y="",w=e.match(/#workflow\/([^\/\s]+)/);w?y=w[1]:y=Px(l,u)||r.id.split(".")[0];let x=kL(e,l,p.from,t,y,n);if(g.push(...x),o&&!s&&!zo(e,t,l,n)){let T=/\s*\[stage::[^\]]+\]/,C=e.match(T);C&&C.index&&n.settings.workflow.autoRemoveLastStageMarker&&g.push({from:p.from+C.index,to:p.from+C.index+C[0].length,insert:""}),k=k.slice(0,-h)}if(!zo(e,t,l,n)){let T=lk(r,k,n,!0,s);g.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&&g.push({from:p.from+C.index,to:p.from+C.index+C[0].length,insert:""})}return g}function ls(n,a,e,t){t.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=An(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=Px(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 lk(n,a,e,t=!0,r){let i=e.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${(0,os.moment)().format(e.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`:"",s=Ia(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 rY(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 wL(n,a){return bL.EditorState.transactionFilter.of(e=>iY(e,n,a))}function iY(n,a,e){if(!n.docChanged||!e.settings.autoCompleteParent)return n;let t=n.annotation(dt);if(typeof t=="string"&&t.includes("autoCompleteParent")||n.isUserEvent("input.paste")||n.isUserEvent("set")||sY(n))return n;let r=nY(n);if(!r)return n;let{doc:i,lineNumber:s}=r,o=oY(i,s);if(!o)return n;let{lineNumber:l,indentationLevel:c}=o;if(e.settings.autoCompleteParent&&yL(i,l,c,e))return lY(n,l,i);if(e.settings.markParentInProgressWhenPartiallyComplete){let u=cY(i,l),p=yL(i,l,c,e),m=dY(i,l,c,a),f=pY(i,l,c,a);if(u===" "&&m||u==="x"&&!p&&f){let h=e.settings.taskStatuses.inProgress.split("|")[0]||"/";return uY(n,l,i,[h])}}return n}function sY(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r<i){let c=n.startState.doc.sliceString(r,i);a.push({type:"delete",content:c,fromA:r,toA:i,fromB:s,toB:o})}l.length>0&&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<s.length;c++){let u=s[c].trim(),p=o[c].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function nY(n){let a=null;return n.changes.iterChanges((e,t,r,i,s)=>{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(k){}if(m.match(/^[\s|\t]*([-*+]|\d+\.)\s\[ \]/))try{a=n.newDoc.lineAt(r).number;return}catch(k){}}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&&f<n.startState.doc.length&&(m=n.startState.doc.lineAt(f))}catch(f){}(!m||s.length>0&&l.from+c.indexOf("[")<=i&&l.from+c.indexOf("]")>=r)&&(a=l.number)}}),a===null?null:{doc:n.newDoc,lineNumber:a}}function oY(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<i){if(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i.test(u))return{lineNumber:l,indentationLevel:m};if(!u.startsWith("#")&&!u.startsWith(">"))break}}return null}function yL(n,a,e,t){let r=hi(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 k=h[2];if(k!=="x"&&k!=="X")return!1;if(t.settings.workflow.enableWorkflow&&t.settings.workflow.autoRemoveLastStageMarker&&!zo(c,o,n,t))return!1}}}return s}function lY(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 k=r.indexOf("[")+1,g=t.from+k;g>=m&&g<f&&(o=!0)}),o)return n;let l=r.indexOf("[")+1,c=t.from+l;return{changes:[n.changes,{from:c,to:c+1,insert:"x"}],selection:n.selection,annotations:[dt.of("autoCompleteParent.DONE")]}}function dY(n,a,e,t){let r=hi(t),i=e+r;for(let s=a+1;s<=n.lines;s++){let l=n.line(s).text;if(l.trim()==="")continue;let c=l.match(/^[\s|\t]*/),u=c?c[0].length:0;if(u<=e)break;if(u===i){let p=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i,m=l.match(p);if(m&&m[2]!==" ")return!0}}return!1}function cY(n,a){let r=n.line(a).text.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/);return r?r[2]:""}function uY(n,a,e,t){let r=e.line(a),i=r.text,s=i.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/);if(!s||s[2]===t[0])return n;let l=!1;if(n.changes.iterChanges((p,m,f,h,k)=>{let g=i.indexOf("[")+1,v=r.from+g;v>=f&&v<h&&(l=!0)}),l)return n;let c=i.indexOf("[")+1,u=r.from+c;return{changes:[n.changes,{from:u,to:u+1,insert:t[0]}],selection:n.selection,annotations:[dt.of("autoCompleteParent.IN_PROGRESS")]}}function pY(n,a,e,t){let r=hi(t),i=e+r;for(let s=a+1;s<=n.lines;s++){let l=n.line(s).text;if(l.trim()==="")continue;let c=l.match(/^[\s|\t]*/),u=c?c[0].length:0;if(u<=e)break;if(u===i&&/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i.test(l))return!0}return!1}var TL=require("obsidian"),xL=require("@codemirror/state");function CL(n,a){return xL.EditorState.transactionFilter.of(e=>hY(e,n,a))}function SL(n){return{cycle:n.settings.taskStatusCycle,excludeMarksFromCycle:n.settings.excludeMarksFromCycle||[],marks:n.settings.taskStatusMarks}}function mY(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}=SL(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 fY(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 k=n.newDoc.lineAt(m),g=k.text,v=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,b=h.match(v),y=g.match(v);if(y&&!b&&p===g){let w=g.indexOf("[")+1,x=k.from+w,T=y[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=g.indexOf("[")+1;w=k.from+E,x=b[2],T=!0,C=!0}else if(p.length===1){let E=g.indexOf("[")+1;if(m===k.from+E&&p!=="["){if(s!==o){let A=n.startState.doc.sliceString(s,o);if(e){if(!mY(n,s,o,p,A,m,g,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=g.indexOf("[")+1;w=k.from+E,x=b[2],T=!0,C=!0}a&&g===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 hY(n,a,e){var h,k;if(!n.docChanged||n.annotation(dt)||n.annotation(Ai)||n.isUserEvent("set")&&n.changes.length>1||n.isUserEvent("input.paste"))return n;if(n.changes,n.isUserEvent("input.autocomplete")){let g=!1;if(n.changes.iterChanges((v,b,y,w,x)=>{let T=x.toString();T.includes("](")&&T.startsWith("[")&&T.endsWith(")")&&(g=!0)}),g)return n}let t=!1;if(n.changes.iterChanges((g,v,b,y,w)=>{let x=w.toString();n.startState.doc.sliceString(g,v)==="-"&&x===""&&(b!==g||y!==v)&&n.newDoc.sliceString(Math.max(0,b-5),Math.min(b+5,n.newDoc.length)).includes("[")&&(t=!0)}),t)return n;let r=fY(n,!!ln(e),e);if(r.length===0)return n;let{cycle:i,marks:s,excludeMarksFromCycle:o}=SL(e),l=i.filter(g=>!o.includes(g));if(l.length===0)return n;let c=!1;if(n.changes.length>1){let g=[];n.changes.iterChanges((y,w,x,T,C)=>{g.push({fromA:y,toA:w,fromB:x,toB:T,text:C.toString()})});let v=g.some(y=>y.text===""&&y.toA>y.fromA),b=g.some(y=>{let w=y.fromB;try{let x=n.newDoc.lineAt(w);return x.text.includes("[")&&x.text.includes("]")}catch(x){return!1}});v&&b&&(c=!0)}if(c)return n;let u=!1;if(n.changes.iterChanges((g,v,b,y,w)=>{if(g===0||n.startState.doc.sliceString(g-1,g)===`
|
||
`){let T=n.startState.doc.lineAt(g).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((g,v,b,y,w)=>{let x=n.startState.doc.sliceString(g,v),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)}g===0&&v===n.startState.doc.length&&C.test(T)&&!T.includes(`
|
||
`)&&(p=!0)}),p)return n;let m=[],f=!1;for(let g of r){let{position:v,currentMark:b,wasCompleteTask:y,tasksInfo:w}=g;if(w!=null&&w.isTaskChange)continue;let x=-1;for(let V=0;V<l.length;V++){let G=l[V];if(s[G]===b){x=V;break}}x===-1&&(x=0);let T=(x+1)%l.length,C=l[T],S=s[C]||" ";if(b===S){`${b}`;continue}let E=null;if(n.changes.iterChanges((V,G,q,oe,le)=>{let be=le.toString();q===v&&be.length===1&&(E=be)}),E===S){`${E}${S}`;continue}let N=n.newDoc.lineAt(v).text,R=n.startState.doc.lineAt(Math.min(v,n.startState.doc.length)).text;if(y){for(let[q,oe]of Object.entries(s))if(oe===b)break;let V=b===" "&&(((h=w==null?void 0:w.originalInsertedText)==null?void 0:h.includes("[ ]"))||N.includes("[ ]")&&!R.includes("[ ]")),G=b===" "&&(q=>(q==null?void 0:q.includes("- [ ]"))||(q==null?void 0:q.includes("* [ ]"))||(q==null?void 0:q.includes("+ [ ]"))||/^\d+\.\s+\[\s\]/.test(q||""))(w==null?void 0:w.originalInsertedText);if(V||G)continue}let j=v,W=n.newDoc.lineAt(j),B=W.to;if(j<W.from||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 g=n.startState.field(TL.editorInfoField),v=m[0],b=n.newDoc.lineAt(v.from),y=pn(((k=g==null?void 0:g.file)==null?void 0:k.path)||"",b.text,b.number,e.settings.preferMetadataFormat,e);return{changes:m,selection:n.selection,annotations:dt.of("taskStatusChange")}}return n}var Us=require("@codemirror/view"),DL=require("obsidian"),EL=require("@codemirror/state"),dk=require("@codemirror/language");Y();var PL=require("@codemirror/search"),ML=require("obsidian");var lRe=EL.Annotation.define(),Mx=class extends Us.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,ML.setIcon)(e.createSpan(),t),e.setAttribute("data-stage-type",r);let i=this.generateTooltipContent();return(0,DL.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 v,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=ls(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=(v=l.subStages)==null?void 0:v[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 y=c.stages.findIndex(w=>w.id===l.id);if(y>=0&&y<c.stages.length-1)p=c.stages[y+1].id;else return}if(!c.stages.find(y=>y.id===p))return;let h;m?h=`[stage::${p}.${m}]`:h=`[stage::${p}]`;let k=/\[stage::[^\]]+\]/,g=s.match(k);if(g&&g.index!==void 0){let y=i.from+g.index,w=y+g[0].length;r.cm.dispatch({changes:{from:y,to:w,insert:h}})}}ignoreEvent(){return!1}};function IL(n,a){return a.settings.workflow.enableWorkflow?Us.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.decorations=Us.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=Us.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 PL.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||!An(p))continue;let k=ls(p,this.view.state.doc,l.number,a);if(!k)continue;let{workflowType:g,currentStage:v,currentSubStage:b}=k,w=Us.Decoration.widget({widget:new Mx(n,a,this.view,s,o,g,v.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=Us.Decoration.set(e.sort((t,r)=>t.from-r.from))}simpleHash(e){let t=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=(t<<5)-t+i,t=t&t}return t}shouldRender(e,t){try{let i=(0,dk.syntaxTree)(this.view.state).resolveInner(e+1).type.prop(dk.tokenClassNodeProp);if(i){let l=i.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return!1}return!this.view.state.selection.ranges.some(l=>l.from===t||l.to===e)}catch(r){return console.warn("Error checking if workflow decorator should render",r),!1}}},{decorations:e=>e.decorations}):[]}var kd=require("obsidian"),AL=require("@codemirror/state"),FL=require("@codemirror/view");Y();function gY(n,a,e,t,r){var k;let i=new kd.Menu,o=n.state.doc.line(t).text,l=ls(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(g=>{g.setTitle(d("Start workflow")).setIcon("play").onClick(()=>{yY(n,a,e,t)})});else if(c.type==="terminal")i.addItem(g=>{g.setTitle(d("Complete workflow")).setIcon("check").onClick(()=>{wY(n,a,e,t)})});else{let{nextStageId:g,nextSubStageId:v}=ok(c,p,u);if(g){let b=p.stages.find(y=>y.id===g);if(b){let y;if(g===c.id&&v===(u==null?void 0:u.id))y=`${d("Continue")} ${b.name}${v?` (${u==null?void 0:u.name})`:""}`;else if(g===c.id&&v){let w=(k=b.subStages)==null?void 0:k.find(x=>x.id===v);y=`${d("Move to")} ${b.name} (${(w==null?void 0:w.name)||v})`}else y=`${d("Move to")} ${b.name}`;i.addItem(w=>{w.setTitle(y).setIcon("arrow-right").onClick(()=>{var x;bY(n,a,e,t,b,!1,v?(x=b.subStages)==null?void 0:x.find(T=>T.id===v):void 0,u)})})}}if(u&&c.type==="cycle"){let b=c.canProceedTo;if(b&&b.length>0)b.forEach(y=>{let w=p.stages.find(x=>x.id===y);w&&i.addItem(x=>{x.setTitle(`${d("Complete substage and move to")} ${w.name}`).setIcon("skip-forward").onClick(()=>{ck(n,a,e,t,w,u)})})});else if(typeof c.next=="string"){let y=p.stages.find(w=>w.id===c.next);y&&i.addItem(w=>{w.setTitle(`${d("Complete substage and move to")} ${y.name}`).setIcon("skip-forward").onClick(()=>{ck(n,a,e,t,y,u)})})}else if(Array.isArray(c.next)&&c.next.length>0){let y=p.stages.find(w=>w.id===c.next[0]);y&&i.addItem(w=>{w.setTitle(`${d("Complete substage and move to")} ${y.name}`).setIcon("skip-forward").onClick(()=>{ck(n,a,e,t,y,u)})})}else{let y=p.stages.findIndex(w=>w.id===c.id);if(y>=0&&y<p.stages.length-1){let w=p.stages[y+1];i.addItem(x=>{x.setTitle(`${d("Complete substage and move to")} ${w.name}`).setIcon("skip-forward").onClick(()=>{ck(n,a,e,t,w,u)})})}}}i.addSeparator(),i.addItem(b=>{b.setTitle(d("Add child task with same stage")).setIcon("plus-circle").onClick(()=>{TY(n,a,e,t,c,u)})})}i.addSeparator(),i.addItem(g=>{g.setTitle(d("Add new task")).setIcon("plus").onClick(()=>{kY(n,a,t)})}),i.addItem(g=>{g.setTitle(d("Add new sub-task")).setIcon("plus-circle").onClick(()=>{vY(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 kY(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 vY(n,a,e){let t=n.state.doc.line(e),r=t.text.match(/^([\s|\t]*)/),i=r?r[1]:"",s=Ia(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 yY(n,a,e,t){let r=n.state.doc.line(t),i=r.text;if(!An(i))return;let o=ls(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=Ia(a),f=p+m,h=e.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${new Date().toISOString().slice(0,19).replace("T"," ")}`:"",k=`${f}- [ ] ${c.name} [stage::${c.id}]${h}`;if(c.type==="cycle"&&c.subStages&&c.subStages.length>0){let y=c.subStages[0],w=f+m;k+=`
|
||
${w}- [ ] ${c.name} (${y.name}) [stage::${c.id}.${y.id}]${h}`}let g=`
|
||
${k}`,b=r.to+1+f.length+7;n.dispatch({changes:{from:r.to,to:r.to,insert:g},selection:{anchor:b}}),n.focus()}function RL(n,a){return a.settings.workflow.enableWorkflow?[AL.Prec.high(FL.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=An(s);return!c||r.head!==i.to?!1:gY(t,n,a,i.number,c)}}]))]:[]}function bY(n,a,e,t,r,i,s,o){var k;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=(k=n.state.field(kd.editorInfoField))==null?void 0:k.editor;if(!p){console.warn("Editor not found");return}let m=si(e,p,u,t-1,r,i,s,o),f=c.to,h=m.find(g=>g.insert&&g.insert.includes("- [ ]"));if(h){let g=u.match(/^([\s|\t]*)/),v=g?g[1]:"",b=Ia(a),y=v+(i?b:"");f=h.from+1+y.length+6}n.dispatch({changes:m,selection:{anchor:f},annotations:dt.of("workflowChange")}),n.focus()}function wY(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(kd.editorInfoField))==null?void 0:m.editor;if(!o){console.warn("Editor not found");return}let l=ls(s,r,t,e);if(!l){console.warn("Could not resolve workflow information");return}let{currentStage:c,currentSubStage:u}=l,p=si(e,o,s,t-1,c,!1,void 0,u);n.dispatch({changes:p,annotations:dt.of("workflowChange")}),n.focus()}function TY(n,a,e,t,r,i){let s=n.state.doc.line(t),o=s.text.match(/^([\s|\t]*)/),l=o?o[1]:"",c=Ia(a),u=l+c,p=lk(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 ck(n,a,e,t,r,i){var k;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=(k=n.state.field(kd.editorInfoField))==null?void 0:k.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 g=t-1;g>=1;g--){let v=s.line(g),b=v.text.match(/^([\s|\t]*)/);if((b?b[1].length:0)<m&&v.text.match(f)&&v.text.includes("[stage::")){let T=si(e,c,v.text,g-1,r,!1,void 0,void 0).filter(C=>!C.insert||!C.insert.includes("- [ ]"));u.push(...T);break}}let h=si(e,c,l,t-1,r,!1,void 0,i);u.push(...h),n.dispatch({changes:u,annotations:dt.of("workflowChange")}),n.focus()}function OL(n,a,e,t){return LL(n,a,t,"forward")}function NL(n,a,e,t){return LL(n,a,t,"backward")}function LL(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}=xY(e),p=l.filter(b=>!u.includes(b));if(p.length===0)return!1;let m=o[2],f=-1;for(let b=0;b<p.length;b++){let y=p[b];if(c[y]===m){f=b;break}}f===-1&&(f=0);let h;t==="forward"?h=(f+1)%p.length:h=(f-1+p.length)%p.length;let k=p[h],g=c[k]||" ",v=i.indexOf("[")+1;return a.replaceRange(g,{line:r.line,ch:v},{line:r.line,ch:v+1}),!0}function xY(n){return{cycle:n.settings.taskStatusCycle,excludeMarksFromCycle:n.settings.excludeMarksFromCycle||[],marks:n.settings.taskStatusMarks}}var ds=require("obsidian");Y();Ax();var Fx=class extends ds.FuzzySuggestModal{constructor(a,e,t,r,i){super(a),this.plugin=e,this.editor=t,this.currentFile=r,this.taskLine=i,this.setPlaceholder("Select a file or type to create a new one")}getItems(){let t=this.app.vault.getFiles().filter(r=>Ix(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 Rx(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 ds.Notice(`${d("Task moved to")} ${a}`)}catch(e){new ds.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;s<e.length;s++){let o=e[s];if(this.getIndentation(o)<=r)break;i.push(o)}return i.join(`
|
||
`)}removeTaskFromCurrentFile(){let e=this.editor.getValue().split(`
|
||
`),t=this.getIndentation(e[this.taskLine]),r=this.taskLine;for(let i=this.taskLine+1;i<e.length&&!(this.getIndentation(e[i])<=t);i++)r=i;this.editor.replaceRange("",{line:this.taskLine,ch:0},{line:r+1,ch:0})}getIndentation(a){let e=a.match(/^(\s*)/);return e?e[1].length:0}resetIndentation(a){let e=a.split(`
|
||
`),t=Number.MAX_SAFE_INTEGER;for(let r of e){if(r.trim().length===0)continue;let i=this.getIndentation(r);t=Math.min(t,i)}return t===Number.MAX_SAFE_INTEGER||t===0?a:e.map(r=>r.trim().length===0?r:r.substring(t)).join(`
|
||
`)}},Rx=class extends ds.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=Ia(this.app).length;else if(a.id.startsWith("heading-end-"))i=this.findSectionEnd(r,a.line,a.level),s=Ia(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 ds.Notice(`${d("Task moved to")} ${this.targetFile.path}`)}catch(e){new ds.Notice(`${d("Failed to move task:")} ${e}`),console.error(e)}}findSectionEnd(a,e,t){for(let r=e+1;r<a.length;r++){let s=a[r].match(/^(#+)\s+/);if(s&&s[1].length<=t)return r}return a.length}getTaskWithChildren(){let e=this.editor.getValue().split(`
|
||
`),t=e[this.taskLine],r=this.getIndentation(t),i=[t];for(let s=this.taskLine+1;s<e.length;s++){let o=e[s];if(this.getIndentation(o)<=r)break;i.push(o)}return i.join(`
|
||
`)}resetIndentation(a){let e=a.split(`
|
||
`),t=Number.MAX_SAFE_INTEGER;for(let r of e){if(r.trim().length===0)continue;let i=this.getIndentation(r);t=Math.min(t,i)}return t===Number.MAX_SAFE_INTEGER||t===0?a:e.map(r=>r.trim().length===0?r:r.substring(t)).join(`
|
||
`)}addIndentation(a,e){if(e<=0)return a;let t=Ia(this.app).repeat(e/Ia(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<e.length&&!(this.getIndentation(e[i])<=t);i++)r=i;this.editor.replaceRange("",{line:this.taskLine,ch:0},{line:r+1,ch:0})}getIndentation(a){let e=a.match(/^(\s*)/);return e?e[1].length:0}};function BL(n,a,e,t){let r=e.file;if(n){if(!r||!Ix(r))return!1;if(r.extension==="md"){let s=a.getCursor();return a.getLine(s.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!1}if(!r)return new ds.Notice(d("No active file found")),!1;let i=a.getCursor();return new Fx(t.app,t,a,r,i.line).open(),!0}var ua=require("obsidian");Y();var Nr=class{static getIndentation(a,e){let t=a.match(/^(\s*)/);return t?t[1].length:0}static getTabSize(a){return hi(a)}static processCustomMarker(a){return a?a.replace(/\{\{DATE:([^}]+)\}\}/g,(e,t)=>(0,ua.moment)().format(t)):""}static processDateMarker(a){return a?a.replace(/\{\{date\}\}/g,()=>(0,ua.moment)().format("YYYY-MM-DD")):""}static addMarkerToTask(a,e,t,r,i=!1){var k;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=(k=p[2])==null?void 0:k.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 g=this.processDateMarker(l);g&&(h=`${m} ${g}`);break;case"custom":let v=this.processCustomMarker(c);v&&(h=`${m} ${v}`);break;default:h=m}if(u&&i){let g=r.fileManager.generateMarkdownLink(t,t.path);h=`${h} from ${g}`}return f&&(h=`${h} ${f}`),h}static addMarkerToIncompletedTask(a,e,t,r,i=!1){var k;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=(k=p[2])==null?void 0:k.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 g=this.processDateMarker(l);g&&(h=`${m} ${g}`);break;case"custom":let v=this.processCustomMarker(c);v&&(h=`${m} ${v}`);break;default:h=m}if(u&&i){let g=r.fileManager.generateMarkdownLink(t,t.path);h=`${h} from ${g}`}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<e)return t[r].index;return-1}static adjustIndentation(a,e,t){let r=a.split(`
|
||
`),i=this.getIndentation(r[0],t);return e-i===0?a:r.map((o,l)=>{let c=this.getIndentation(o,t);if(l===0)return Ia(t).repeat(e)+o.substring(c);let u=c-i,p=Math.max(0,e+u);return Ia(t).repeat(p/hi(t))+o.trimStart()}).join(`
|
||
`)}static processSelectedTasks(a,e,t,r,i,s,o=!0){let l=[...e].sort((h,k)=>k-h),c=new Set,u=new Map;for(let h of l){let k=this.processSingleSelectedTask(a,h,t,r,i,s,o);u.set(h,k.content.split(`
|
||
`)),k.linesToRemove.forEach(g=>c.add(g))}let p=[...e].sort((h,k)=>h-k),m=[];for(let h=0;h<p.length;h++){let k=p[h];if(p.some(v=>{if(v===k)return!1;let y=a.getValue().split(`
|
||
`),w=this.getIndentation(y[v],s),x=this.getIndentation(y[k],s);return k>v&&x>w&&!p.some(T=>T>v&&T<k&&this.getIndentation(y[T],s)<=w)}))continue;m.length>0&&m.push("");let g=u.get(k);g&&m.push(...g)}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(/\[(.)]/),k=h?h[1]:"",g;if(t==="allIncompleted"||t==="directIncompletedChildren"?g=this.addMarkerToIncompletedTask(m,r,i,s,!0):(g=this.addMarkerToTask(m,r,i,s,!0),g=this.completeTaskIfNeeded(g,r)),u.push(g),t==="all"){for(let v=e+1;v<c.length;v++){let b=c[v];if(this.getIndentation(b,s)<=f)break;u.push(this.completeTaskIfNeeded(b,r)),p.push(v)}p.push(e)}else{let v=[];for(let b=e+1;b<c.length;b++){let y=c[b],w=this.getIndentation(y,s);if(w<=f)break;let x=y.match(/\[(.)]/);if(x){let T=x[1],C=this.isCompletedTaskMark(T,r),S=this.isIncompletedTaskMark(T,r);v.push({line:y,index:b,indent:w,isCompleted:C,isIncompleted:S})}else v.push({line:y,index:b,indent:w,isCompleted:!1,isIncompleted:!1})}if(t==="allCompleted"){let b=new Set,y=new Set,w=new Set;v.forEach(T=>{if(T.isCompleted){b.add(T.index),y.add(T.index);let C=T,S=this.findParentTaskIndex(C.index,C.indent,v);for(;S!==-1;){y.add(S);let E=v.find(A=>A.index===S);if(!E)break;E.isCompleted||w.add(S),S=this.findParentTaskIndex(E.index,E.indent,v)}}}),v.forEach(T=>{let C=this.findParentTaskIndex(T.index,T.indent,v);C!==-1&&b.has(C)&&y.add(T.index)});let x=[...y].sort((T,C)=>T-C);u.length=0,u.push(g);for(let T of x){let C=v.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(k,r)&&p.push(e)}else if(t==="directChildren"){let b=new Set,y=Number.MAX_SAFE_INTEGER;for(let x of v)x.indent>f&&x.indent<y&&(y=x.indent);for(let x of v)x.indent===y&&x.isCompleted&&b.add(x.index);u.length=0,u.push(g);let w=[...b].sort((x,T)=>x-T);for(let x of w){let T=v.find(E=>E.index===x);if(!T)continue;u.push(this.completeTaskIfNeeded(T.line,r)),p.push(x);let C=v.findIndex(E=>E.index===x)+1,S=T.indent;for(;C<v.length;){let E=v[C];if(E.indent<=S)break;u.push(this.completeTaskIfNeeded(E.line,r)),p.push(E.index),C++}}this.isCompletedTaskMark(k,r)&&p.push(e)}else if(t==="allIncompleted"){let b=new Set,y=new Set,w=new Set;v.forEach(T=>{if(T.isIncompleted){b.add(T.index),y.add(T.index);let C=T,S=this.findParentTaskIndex(C.index,C.indent,v);for(;S!==-1;){y.add(S);let E=v.find(A=>A.index===S);if(!E)break;E.isIncompleted||w.add(S),S=this.findParentTaskIndex(E.index,E.indent,v)}}}),v.forEach(T=>{let C=this.findParentTaskIndex(T.index,T.indent,v);C!==-1&&b.has(C)&&y.add(T.index)});let x=[...y].sort((T,C)=>T-C);u.length=0,u.push(g);for(let T of x){let C=v.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(k,r)&&p.push(e)}else if(t==="directIncompletedChildren"){let b=new Set,y=Number.MAX_SAFE_INTEGER;for(let x of v)x.indent>f&&x.indent<y&&(y=x.indent);for(let x of v)x.indent===y&&x.isIncompleted&&b.add(x.index);u.length=0,u.push(g);let w=[...b].sort((x,T)=>x-T);for(let x of w){let T=v.find(E=>E.index===x);if(!T)continue;u.push(T.line),p.push(x);let C=v.findIndex(E=>E.index===x)+1,S=T.indent;for(;C<v.length;){let E=v[C];if(E.indent<=S)break;u.push(E.line),p.push(E.index),C++}}this.isIncompletedTaskMark(k,r)&&p.push(e)}}return{content:u.join(`
|
||
`),linesToRemove:p}}static removeTasksFromFile(a,e){if(!e||e.length===0)return;let r=a.getValue().split(`
|
||
`),i=[...e].sort((s,o)=>o-s);a.transaction({changes:i.map(s=>{let o={line:s,ch:0},l=s+1<r.length?{line:s+1,ch:0}:{line:s,ch:r[s].length};return{from:o,to:l,text:""}})})}},Zp=class extends ua.FuzzySuggestModal{constructor(a,e,t,r,i,s){super(a),this.plugin=e,this.editor=t,this.currentFile=r,this.taskLines=i,this.moveMode=s,this.setPlaceholder("Select a file or type to create a new one")}getItems(){let e=this.app.vault.getMarkdownFiles().filter(t=>t.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 Ox(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}=Nr.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.currentFile,this.app),r=Nr.resetIndentation(e,this.app),i=this.currentFile.parent,s=i?`${i.path}/${a}`:a,o=await this.app.vault.create(s,r);Nr.removeTasksFromFile(this.editor,t),this.app.workspace.getLeaf(!0).openFile(o),new ua.Notice(`${d("Completed tasks moved to")} ${a}`)}catch(e){new ua.Notice(`${d("Failed to create file:")} ${e}`),console.error(e)}}},Ox=class extends ua.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:Nr.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}=Nr.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=Nr.getIndentation(i[p],this.app)}let l=Nr.adjustIndentation(e,o,this.app),c=[...i.slice(0,s),l,...i.slice(s)].join(`
|
||
`);await this.app.vault.modify(this.targetFile,c),Nr.removeTasksFromFile(this.editor,t),new ua.Notice(`${d("Completed tasks moved to")} ${this.targetFile.path}`)}catch(e){new ua.Notice(`${d("Failed to move tasks:")} ${e}`),console.error(e)}}};function pk(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 ua.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 Zp(t.app,t,a,i,l,r).open(),!0}function Nx(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 ua.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 Zp(t.app,t,a,i,l,r).open(),!0}async function CY(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}=Nr.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 ua.TFile))throw new Error(`Target path ${l} is not a file`);let k=(await e.app.vault.read(f)).split(`
|
||
`),g,v=0;switch(c){case"beginning":g=0;break;case"end":g=k.length;break;case"after-heading":let x=new RegExp(`^#+\\s+${u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),T=k.findIndex(C=>x.test(C));for(T===-1&&(k.length>0&&k[k.length-1].trim()!==""&&k.push(""),k.push(`## ${u}`),k.push(""),T=k.length-2),g=T+1;g<k.length&&k[g].trim()==="";)g++;break;default:g=k.length}let b=Nr.adjustIndentation(p,v,e.app),y=[...k.slice(0,g),b,...k.slice(g)].join(`
|
||
`);await e.app.vault.modify(f,y),Nr.removeTasksFromFile(n,m);let w=s?"completed":"incomplete";return new ua.Notice(`${d("Auto-moved")} ${w} ${d("tasks to")} ${l}`),!0}catch(p){return new ua.Notice(`${d("Failed to auto-move tasks:")} ${p}`),console.error(p),!1}}function vd(n,a,e,t,r){let i=e.file;if(n){let c=r==="allCompleted"||r==="directChildren"||r==="all",u=c?t.settings.completedTaskMover.enableAutoMove:t.settings.completedTaskMover.enableIncompletedAutoMove,p=c?t.settings.completedTaskMover.defaultTargetFile:t.settings.completedTaskMover.incompletedDefaultTargetFile;if(!u||!p||!i||i.extension!=="md")return!1;if(a.getSelection().length===0){let f=a.getCursor();return a.getLine(f.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new ua.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 CY(a,i,t,l,r).then(c=>{c||new Zp(t.app,t,a,i,l,r).open()}),!0}Jp();var Lr=require("@codemirror/view"),yk=require("obsidian"),uj=require("@codemirror/state"),bk=require("@codemirror/language");var lj=require("obsidian");var Lt="top",pa="bottom",na="right",Yt="left",mk="auto",Fn=[Lt,pa,na,Yt],_s="start",$o="end",VL="clippingParents",fk="viewport",yd="popper",WL="reference",Lx=Fn.reduce(function(n,a){return n.concat([a+"-"+_s,a+"-"+$o])},[]),hk=[].concat(Fn,[mk]).reduce(function(n,a){return n.concat([a,a+"-"+_s,a+"-"+$o])},[]),SY="beforeRead",DY="read",EY="afterRead",PY="beforeMain",MY="main",IY="afterMain",AY="beforeWrite",FY="write",RY="afterWrite",zL=[SY,DY,EY,PY,MY,IY,AY,FY,RY];function Ca(n){return n?(n.nodeName||"").toLowerCase():null}function Et(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var a=n.ownerDocument;return a&&a.defaultView||window}return n}function ni(n){var a=Et(n).Element;return n instanceof a||n instanceof Element}function ma(n){var a=Et(n).HTMLElement;return n instanceof a||n instanceof HTMLElement}function bd(n){if(typeof ShadowRoot=="undefined")return!1;var a=Et(n).ShadowRoot;return n instanceof a||n instanceof ShadowRoot}function OY(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];!ma(i)||!Ca(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 NY(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},{});!ma(r)||!Ca(r)||(Object.assign(r.style,o),Object.keys(i).forEach(function(l){r.removeAttribute(l)}))})}}var $L={name:"applyStyles",enabled:!0,phase:"write",fn:OY,effect:NY,requires:["computeStyles"]};function Sa(n){return n.split("-")[0]}var Fi=Math.max,Uo=Math.min,qs=Math.round;function wd(){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 em(){return!/^((?!chrome|android).)*safari/i.test(wd())}function oi(n,a,e){a===void 0&&(a=!1),e===void 0&&(e=!1);var t=n.getBoundingClientRect(),r=1,i=1;a&&ma(n)&&(r=n.offsetWidth>0&&qs(t.width)/n.offsetWidth||1,i=n.offsetHeight>0&&qs(t.height)/n.offsetHeight||1);var s=ni(n)?Et(n):window,o=s.visualViewport,l=!em()&&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 _o(n){var a=oi(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 tm(n,a){var e=a.getRootNode&&a.getRootNode();if(n.contains(a))return!0;if(e&&bd(e)){var t=a;do{if(t&&n.isSameNode(t))return!0;t=t.parentNode||t.host}while(t)}return!1}function ir(n){return Et(n).getComputedStyle(n)}function jx(n){return["table","td","th"].indexOf(Ca(n))>=0}function Oa(n){return((ni(n)?n.ownerDocument:n.document)||window.document).documentElement}function Ys(n){return Ca(n)==="html"?n:n.assignedSlot||n.parentNode||(bd(n)?n.host:null)||Oa(n)}function UL(n){return!ma(n)||ir(n).position==="fixed"?null:n.offsetParent}function LY(n){var a=/firefox/i.test(wd()),e=/Trident/i.test(wd());if(e&&ma(n)){var t=ir(n);if(t.position==="fixed")return null}var r=Ys(n);for(bd(r)&&(r=r.host);ma(r)&&["html","body"].indexOf(Ca(r))<0;){var i=ir(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 Ri(n){for(var a=Et(n),e=UL(n);e&&jx(e)&&ir(e).position==="static";)e=UL(e);return e&&(Ca(e)==="html"||Ca(e)==="body"&&ir(e).position==="static")?a:e||LY(n)||a}function qo(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function Yo(n,a,e){return Fi(n,Uo(a,e))}function _L(n,a,e){var t=Yo(n,a,e);return t>e?e:t}function am(){return{top:0,right:0,bottom:0,left:0}}function rm(n){return Object.assign({},am(),n)}function im(n,a){return a.reduce(function(e,t){return e[t]=n,e},{})}var jY=function(a,e){return a=typeof a=="function"?a(Object.assign({},e.rects,{placement:e.placement})):a,rm(typeof a!="number"?a:im(a,Fn))};function HY(n){var a,e=n.state,t=n.name,r=n.options,i=e.elements.arrow,s=e.modifiersData.popperOffsets,o=Sa(e.placement),l=qo(o),c=[Yt,na].indexOf(o)>=0,u=c?"height":"width";if(!(!i||!s)){var p=jY(r.padding,e),m=_o(i),f=l==="y"?Lt:Yt,h=l==="y"?pa:na,k=e.rects.reference[u]+e.rects.reference[l]-s[l]-e.rects.popper[u],g=s[l]-e.rects.reference[l],v=Ri(i),b=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,y=k/2-g/2,w=p[f],x=b-m[u]-p[h],T=b/2-m[u]/2+y,C=Yo(w,T,x),S=l;e.modifiersData[t]=(a={},a[S]=C,a.centerOffset=C-T,a)}}function BY(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)||tm(a.elements.popper,r)&&(a.elements.arrow=r))}var qL={name:"arrow",enabled:!0,phase:"main",fn:HY,effect:BY,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function li(n){return n.split("-")[1]}var VY={top:"auto",right:"auto",bottom:"auto",left:"auto"};function WY(n,a){var e=n.x,t=n.y,r=a.devicePixelRatio||1;return{x:qs(e*r)/r||0,y:qs(t*r)/r||0}}function YL(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,k=h===void 0?0:h,g=typeof u=="function"?u({x:f,y:k}):{x:f,y:k};f=g.x,k=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=Yt,w=Lt,x=window;if(c){var T=Ri(e),C="clientHeight",S="clientWidth";if(T===Et(e)&&(T=Oa(e),ir(T).position!=="static"&&o==="absolute"&&(C="scrollHeight",S="scrollWidth")),T=T,r===Lt||(r===Yt||r===na)&&i===$o){w=pa;var E=p&&T===x&&x.visualViewport?x.visualViewport.height:T[C];k-=E-t.height,k*=l?1:-1}if(r===Yt||(r===Lt||r===pa)&&i===$o){y=na;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&&VY),I=u===!0?WY({x:f,y:k},Et(e)):{x:f,y:k};if(f=I.x,k=I.y,l){var R;return Object.assign({},N,(R={},R[w]=b?"0":"",R[y]=v?"0":"",R.transform=(x.devicePixelRatio||1)<=1?"translate("+f+"px, "+k+"px)":"translate3d("+f+"px, "+k+"px, 0)",R))}return Object.assign({},N,(a={},a[w]=b?k+"px":"",a[y]=v?f+"px":"",a.transform="",a))}function zY(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:Sa(a.placement),variation:li(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,YL(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,YL(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 GL={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:zY,data:{}};var gk={passive:!0};function $Y(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=Et(a.elements.popper),c=[].concat(a.scrollParents.reference,a.scrollParents.popper);return i&&c.forEach(function(u){u.addEventListener("scroll",e.update,gk)}),o&&l.addEventListener("resize",e.update,gk),function(){i&&c.forEach(function(u){u.removeEventListener("scroll",e.update,gk)}),o&&l.removeEventListener("resize",e.update,gk)}}var KL={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:$Y,data:{}};var UY={left:"right",right:"left",bottom:"top",top:"bottom"};function Td(n){return n.replace(/left|right|bottom|top/g,function(a){return UY[a]})}var _Y={start:"end",end:"start"};function kk(n){return n.replace(/start|end/g,function(a){return _Y[a]})}function Go(n){var a=Et(n),e=a.pageXOffset,t=a.pageYOffset;return{scrollLeft:e,scrollTop:t}}function Ko(n){return oi(Oa(n)).left+Go(n).scrollLeft}function Hx(n,a){var e=Et(n),t=Oa(n),r=e.visualViewport,i=t.clientWidth,s=t.clientHeight,o=0,l=0;if(r){i=r.width,s=r.height;var c=em();(c||!c&&a==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:i,height:s,x:o+Ko(n),y:l}}function Bx(n){var a,e=Oa(n),t=Go(n),r=(a=n.ownerDocument)==null?void 0:a.body,i=Fi(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=Fi(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-t.scrollLeft+Ko(n),l=-t.scrollTop;return ir(r||e).direction==="rtl"&&(o+=Fi(e.clientWidth,r?r.clientWidth:0)-i),{width:i,height:s,x:o,y:l}}function Qo(n){var a=ir(n),e=a.overflow,t=a.overflowX,r=a.overflowY;return/auto|scroll|overlay|hidden/.test(e+r+t)}function vk(n){return["html","body","#document"].indexOf(Ca(n))>=0?n.ownerDocument.body:ma(n)&&Qo(n)?n:vk(Ys(n))}function Rn(n,a){var e;a===void 0&&(a=[]);var t=vk(n),r=t===((e=n.ownerDocument)==null?void 0:e.body),i=Et(t),s=r?[i].concat(i.visualViewport||[],Qo(t)?t:[]):t,o=a.concat(s);return r?o:o.concat(Rn(Ys(s)))}function xd(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function qY(n,a){var e=oi(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 QL(n,a,e){return a===fk?xd(Hx(n,e)):ni(a)?qY(a,e):xd(Bx(Oa(n)))}function YY(n){var a=Rn(Ys(n)),e=["absolute","fixed"].indexOf(ir(n).position)>=0,t=e&&ma(n)?Ri(n):n;return ni(t)?a.filter(function(r){return ni(r)&&tm(r,t)&&Ca(r)!=="body"}):[]}function Vx(n,a,e,t){var r=a==="clippingParents"?YY(n):[].concat(a),i=[].concat(r,[e]),s=i[0],o=i.reduce(function(l,c){var u=QL(n,c,t);return l.top=Fi(u.top,l.top),l.right=Uo(u.right,l.right),l.bottom=Uo(u.bottom,l.bottom),l.left=Fi(u.left,l.left),l},QL(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 sm(n){var a=n.reference,e=n.element,t=n.placement,r=t?Sa(t):null,i=t?li(t):null,s=a.x+a.width/2-e.width/2,o=a.y+a.height/2-e.height/2,l;switch(r){case Lt:l={x:s,y:a.y-e.height};break;case pa:l={x:s,y:a.y+a.height};break;case na:l={x:a.x+a.width,y:o};break;case Yt:l={x:a.x-e.width,y:o};break;default:l={x:a.x,y:a.y}}var c=r?qo(r):null;if(c!=null){var u=c==="y"?"height":"width";switch(i){case _s:l[c]=l[c]-(a[u]/2-e[u]/2);break;case $o:l[c]=l[c]+(a[u]/2-e[u]/2);break;default:}}return l}function Oi(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?VL:o,c=e.rootBoundary,u=c===void 0?fk:c,p=e.elementContext,m=p===void 0?yd:p,f=e.altBoundary,h=f===void 0?!1:f,k=e.padding,g=k===void 0?0:k,v=rm(typeof g!="number"?g:im(g,Fn)),b=m===yd?WL:yd,y=n.rects.popper,w=n.elements[h?b:m],x=Vx(ni(w)?w:w.contextElement||Oa(n.elements.popper),l,u,s),T=oi(n.elements.reference),C=sm({reference:T,element:y,strategy:"absolute",placement:r}),S=xd(Object.assign({},y,C)),E=m===yd?S:T,A={top:x.top-E.top+v.top,bottom:E.bottom-x.bottom+v.bottom,left:x.left-E.left+v.left,right:E.right-x.right+v.right},N=n.modifiersData.offset;if(m===yd&&N){var I=N[r];Object.keys(A).forEach(function(R){var j=[na,pa].indexOf(R)>=0?1:-1,W=[Lt,pa].indexOf(R)>=0?"y":"x";A[R]+=I[W]*j})}return A}function Wx(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?hk:l,u=li(t),p=u?o?Lx:Lx.filter(function(h){return li(h)===u}):Fn,m=p.filter(function(h){return c.indexOf(h)>=0});m.length===0&&(m=p);var f=m.reduce(function(h,k){return h[k]=Oi(n,{placement:k,boundary:r,rootBoundary:i,padding:s})[Sa(k)],h},{});return Object.keys(f).sort(function(h,k){return f[h]-f[k]})}function GY(n){if(Sa(n)===mk)return[];var a=Td(n);return[kk(n),a,kk(a)]}function KY(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,k=e.allowedAutoPlacements,g=a.options.placement,v=Sa(g),b=v===g,y=l||(b||!h?[Td(g)]:GY(g)),w=[g].concat(y).reduce(function(Ae,De){return Ae.concat(Sa(De)===mk?Wx(a,{placement:De,boundary:u,rootBoundary:p,padding:c,flipVariations:h,allowedAutoPlacements:k}):De)},[]),x=a.rects.reference,T=a.rects.popper,C=new Map,S=!0,E=w[0],A=0;A<w.length;A++){var N=w[A],I=Sa(N),R=li(N)===_s,j=[Lt,pa].indexOf(I)>=0,W=j?"width":"height",B=Oi(a,{placement:N,boundary:u,rootBoundary:p,altBoundary:m,padding:c}),X=j?R?na:Yt:R?pa:Lt;x[W]>T[W]&&(X=Td(X));var V=Td(X),G=[];if(i&&G.push(B[I]<=0),o&&G.push(B[X]<=0,B[V]<=0),G.every(function(Ae){return Ae})){E=N,S=!1;break}C.set(N,G)}if(S)for(var q=h?3:1,oe=function(De){var et=w.find(function(Ke){var Re=C.get(Ke);if(Re)return Re.slice(0,De).every(function(ne){return ne})});if(et)return E=et,"break"},le=q;le>0;le--){var be=oe(le);if(be==="break")break}a.placement!==E&&(a.modifiersData[t]._skip=!0,a.placement=E,a.reset=!0)}}var XL={name:"flip",enabled:!0,phase:"main",fn:KY,requiresIfExists:["offset"],data:{_skip:!1}};function JL(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 ZL(n){return[Lt,na,pa,Yt].some(function(a){return n[a]>=0})}function QY(n){var a=n.state,e=n.name,t=a.rects.reference,r=a.rects.popper,i=a.modifiersData.preventOverflow,s=Oi(a,{elementContext:"reference"}),o=Oi(a,{altBoundary:!0}),l=JL(s,t),c=JL(o,r,i),u=ZL(l),p=ZL(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 ej={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:QY};function XY(n,a,e){var t=Sa(n),r=[Yt,Lt].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,[Yt,na].indexOf(t)>=0?{x:o,y:s}:{x:s,y:o}}function JY(n){var a=n.state,e=n.options,t=n.name,r=e.offset,i=r===void 0?[0,0]:r,s=hk.reduce(function(u,p){return u[p]=XY(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 tj={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:JY};function ZY(n){var a=n.state,e=n.name;a.modifiersData[e]=sm({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var aj={name:"popperOffsets",enabled:!0,phase:"read",fn:ZY,data:{}};function zx(n){return n==="x"?"y":"x"}function e6(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,k=h===void 0?0:h,g=Oi(a,{boundary:l,rootBoundary:c,padding:p,altBoundary:u}),v=Sa(a.placement),b=li(a.placement),y=!b,w=qo(v),x=zx(w),T=a.modifiersData.popperOffsets,C=a.rects.reference,S=a.rects.popper,E=typeof k=="function"?k(Object.assign({},a.rects,{placement:a.placement})):k,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"?Lt:Yt,W=w==="y"?pa:na,B=w==="y"?"height":"width",X=T[w],V=X+g[j],G=X-g[W],q=f?-S[B]/2:0,oe=b===_s?C[B]:S[B],le=b===_s?-S[B]:-C[B],be=a.elements.arrow,Ae=f&&be?_o(be):{width:0,height:0},De=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:am(),et=De[j],Ke=De[W],Re=Yo(0,C[B],Ae[B]),ne=y?C[B]/2-q-Re-et-A.mainAxis:oe-Re-et-A.mainAxis,he=y?-C[B]/2+q+Re+Ke+A.mainAxis:le+Re+Ke+A.mainAxis,Se=a.elements.arrow&&Ri(a.elements.arrow),Qe=Se?w==="y"?Se.clientTop||0:Se.clientLeft||0:0,Ue=(R=N==null?void 0:N[w])!=null?R:0,ce=X+ne-Ue-Qe,gt=X+he-Ue,tt=Yo(f?Uo(V,ce):V,X,f?Fi(G,gt):G);T[w]=tt,I[w]=tt-X}if(o){var ha,zt=w==="x"?Lt:Yt,ot=w==="x"?pa:na,bt=T[x],Ka=x==="y"?"height":"width",nr=bt+g[zt],Br=bt-g[ot],Xt=[Lt,Yt].indexOf(v)!==-1,Vr=(ha=N==null?void 0:N[x])!=null?ha:0,ja=Xt?nr:bt-C[Ka]-S[Ka]-Vr+A.altAxis,Wr=Xt?bt+C[Ka]+S[Ka]-Vr-A.altAxis:Br,tn=f&&Xt?_L(ja,bt,Wr):Yo(f?ja:nr,bt,f?Wr:Br);T[x]=tn,I[x]=tn-bt}a.modifiersData[t]=I}}var rj={name:"preventOverflow",enabled:!0,phase:"main",fn:e6,requiresIfExists:["offset"]};function $x(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function Ux(n){return n===Et(n)||!ma(n)?Go(n):$x(n)}function t6(n){var a=n.getBoundingClientRect(),e=qs(a.width)/n.offsetWidth||1,t=qs(a.height)/n.offsetHeight||1;return e!==1||t!==1}function _x(n,a,e){e===void 0&&(e=!1);var t=ma(a),r=ma(a)&&t6(a),i=Oa(a),s=oi(n,r,e),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(t||!t&&!e)&&((Ca(a)!=="body"||Qo(i))&&(o=Ux(a)),ma(a)?(l=oi(a,!0),l.x+=a.clientLeft,l.y+=a.clientTop):i&&(l.x=Ko(i))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function a6(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 qx(n){var a=a6(n);return zL.reduce(function(e,t){return e.concat(a.filter(function(r){return r.phase===t}))},[])}function Yx(n){var a;return function(){return a||(a=new Promise(function(e){Promise.resolve().then(function(){a=void 0,e(n())})})),a}}function Gx(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 ij={placement:"bottom",modifiers:[],strategy:"absolute"};function sj(){for(var n=arguments.length,a=new Array(n),e=0;e<n;e++)a[e]=arguments[e];return!a.some(function(t){return!(t&&typeof t.getBoundingClientRect=="function")})}function nj(n){n===void 0&&(n={});var a=n,e=a.defaultModifiers,t=e===void 0?[]:e,r=a.defaultOptions,i=r===void 0?ij:r;return function(o,l,c){c===void 0&&(c=i);var u={placement:"bottom",orderedModifiers:[],options:Object.assign({},ij,i),modifiersData:{},elements:{reference:o,popper:l},attributes:{},styles:{}},p=[],m=!1,f={state:u,setOptions:function(v){var b=typeof v=="function"?v(u.options):v;k(),u.options=Object.assign({},i,u.options,b),u.scrollParents={reference:ni(o)?Rn(o):o.contextElement?Rn(o.contextElement):[],popper:Rn(l)};var y=qx(Gx([].concat(t,u.options.modifiers)));return u.orderedModifiers=y.filter(function(w){return w.enabled}),h(),f.update()},forceUpdate:function(){if(!m){var v=u.elements,b=v.reference,y=v.popper;if(sj(b,y)){u.rects={reference:_x(b,Ri(y),u.options.strategy==="fixed"),popper:_o(y)},u.reset=!1,u.placement=u.options.placement,u.orderedModifiers.forEach(function(A){return u.modifiersData[A.name]=Object.assign({},A.data)});for(var w=0;w<u.orderedModifiers.length;w++){if(u.reset===!0){u.reset=!1,w=-1;continue}var x=u.orderedModifiers[w],T=x.fn,C=x.options,S=C===void 0?{}:C,E=x.name;typeof T=="function"&&(u=T({state:u,options:S,name:E,instance:f})||u)}}}},update:Yx(function(){return new Promise(function(g){f.forceUpdate(),g(u)})}),destroy:function(){k(),m=!0}};if(!sj(o,l))return f;f.setOptions(c).then(function(g){!m&&c.onFirstUpdate&&c.onFirstUpdate(g)});function h(){u.orderedModifiers.forEach(function(g){var v=g.name,b=g.options,y=b===void 0?{}:b,w=g.effect;if(typeof w=="function"){var x=w({state:u,name:v,instance:f,options:y}),T=function(){};p.push(x||T)}})}function k(){p.forEach(function(g){return g()}),p=[]}return f}}var r6=[KL,aj,GL,$L,tj,XL,rj,qL,ej],Xo=nj({defaultModifiers:r6});Kx();var On=class extends lj.Component{constructor(e,t,r,i="\u{1F4C5}"){super();this.popoverRef=null;this.popperInstance=null;this.onDateSelected=null;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.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 Cd(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=Xo(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()}};Qx();var pj=uj.Annotation.define(),Xx=class extends Lr.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(yk.Platform.isDesktop){let i=new On(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 nm(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)}}setDate(e){try{if(!this.view||this.view.state.doc.length<this.to){console.warn("Invalid view state, skipping date update");return}let t=this.plugin.settings.preferMetadataFormat==="dataview",r="";e&&(t?r=`${this.dateMark}${e}]`:r=`${this.dateMark} ${e}`);let i=this.view.state.update({changes:{from:this.from,to:this.to,insert:r},annotations:[pj.of(!0)]});this.view.dispatch(i)}catch(t){console.error("Error setting date:",t)}}};function mj(n,a){if(!a.settings.enableDatePicker)return[];class e{constructor(s){this.decorations=Lr.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.dateMatch=new Lr.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,Lr.Decoration.replace({widget:new Xx(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(pj))){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=Lr.Decoration.none}updateDecorations(s,o){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=Lr.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=Lr.Decoration.none}}}isLivePreview(s){try{return s.field(yk.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,bk.syntaxTree)(s.state).resolveInner(o+1).type.prop(bk.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?Lr.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 Lr.ViewPlugin.fromClass(e,t)}var Pt=require("obsidian"),Nn=require("@codemirror/state"),gj=require("@codemirror/view");Nl();Y();var fa=require("obsidian"),fj=require("@codemirror/state");Y();var wk=class extends fa.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,fa.moment)().format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,fa.moment)().format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,fa.moment)().toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-tomorrow",label:d("Tomorrow"),icon:"calendar",description:(0,fa.moment)().add(1,"day").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,fa.moment)().add(1,"day").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,fa.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,fa.moment)().add(1,"week").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,fa.moment)().add(1,"week").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,fa.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,fa.moment)().add(1,"month").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,fa.moment)().add(1,"month").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,fa.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,fa.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,fa.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,fa.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:[fj.Transaction.userEvent.of("input")]})}e.action&&e.action(r,s,this.taskMetadata),this.close()}};function i6(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function s6(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?i6(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var Gs=Nn.StateEffect.define(),eC=Nn.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(Gs)&&(e=a.state.field(Pt.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>gj.showPanel.from(n,a=>a?n6:null)}),hj=(n,a)=>{n.dispatch({effects:Gs.of(!1)}),setTimeout(()=>{let e=a.workspace.activeLeaf;e&&e.view instanceof Pt.MarkdownView&&e.view.editor&&!e.view.editor.hasFocus()&&e.view.editor.focus()},10)},Tk=async(n,a,e,t,r,i)=>{if(!e)return;let s=e.value.trim();if(!s){new Pt.Notice(d("Nothing to capture"));return}if(i){let o=[];if(i.dueDate&&o.push(`\u{1F4C5} ${(0,Pt.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 qi(a,s,o),e.set("",!1),n.dispatch({effects:Gs.of(!1)});let l=r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let c=(0,Pt.moment)().format(t.dailyNoteSettings.format),u=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${c}.md`:`${c}.md`;l=s6(u)}new Pt.Notice(`${d("Captured successfully to")} ${l}`)}catch(o){new Pt.Notice(`${d("Failed to save:")} ${o}`)}},kj=Nn.Facet.define({combine:n=>{var a,e,t,r,i,s,o,l,c,u,p,m,f,h;return{targetFile:((a=n.find(k=>k.targetFile))==null?void 0:a.targetFile)||"Quick capture.md",placeholder:((e=n.find(k=>k.placeholder))==null?void 0:e.placeholder)||d("Capture thoughts, tasks, or ideas..."),appendToFile:(r=(t=n.find(k=>k.appendToFile!==void 0))==null?void 0:t.appendToFile)!=null?r:"append",targetType:(s=(i=n.find(k=>k.targetType))==null?void 0:i.targetType)!=null?s:"fixed",targetHeading:(l=(o=n.find(k=>k.targetHeading))==null?void 0:o.targetHeading)!=null?l:"",dailyNoteSettings:(u=(c=n.find(k=>k.dailyNoteSettings))==null?void 0:c.dailyNoteSettings)!=null?u:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(m=(p=n.find(k=>k.autoAddTaskPrefix!==void 0))==null?void 0:p.autoAddTaskPrefix)!=null?m:!0,taskPrefix:(h=(f=n.find(k=>k.taskPrefix))==null?void 0:f.taskPrefix)!=null?h:"- [ ]"}}});function Jx(n,a,e){n.showAtMouseEvent(new MouseEvent("click",{clientX:a,clientY:e}))}function n6(n){let a=createDiv({cls:"quick-capture-panel"}),e=n.state.facet(vj),t=n.state.facet(kj),r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let b=(0,Pt.moment)().format(t.dailyNoteSettings.format||"YYYY-MM-DD"),y=b+".md";t.dailyNoteSettings.folder&&t.dailyNoteSettings.folder.trim()!==""&&(y=`${t.dailyNoteSettings.folder.replace(/\/$/,"")}/${b}.md`),r=y}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 y;let b=(y=s.textContent)==null?void 0:y.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,Pt.setIcon)(c,"calendar");let u=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Set priority")}});(0,Pt.setIcon)(u,"zap");let p=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":d("Add tags")}});(0,Pt.setIcon)(p,"tag");let m=(b,y)=>{y?b.addClass("active"):b.removeClass("active")},f=a.createEl("div",{cls:"quick-capture-editor"}),h=null;setTimeout(()=>{var y;h=_i(e,f,{placeholder:t.placeholder,onEnter:(w,x,T)=>x?(Tk(n,e,h,t,r,l),!0):!1,onEscape:w=>{hj(n,e)},onSubmit:w=>{Tk(n,e,h,t,r)}}),(y=h==null?void 0:h.editor)==null||y.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(Zx);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()===""?(hj(n,e),!0):(Tk(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 k=a.createEl("div",{cls:"quick-capture-buttons"});return k.createEl("button",{cls:"quick-capture-submit mod-cta",text:d("Capture")}).addEventListener("click",()=>{Tk(n,e,h,t,r)}),k.createEl("button",{cls:"quick-capture-cancel mod-destructive",text:d("Cancel")}).addEventListener("click",()=>{n.dispatch({effects:Gs.of(!1)})}),t.targetType==="fixed"&&new no(e,s,t,b=>{var y;s.textContent=b.path,r=b.path,(y=h==null?void 0:h.editor)==null||y.focus()}),c.addEventListener("click",()=>{let b=[{label:d("Today"),date:(0,Pt.moment)().toDate()},{label:d("Tomorrow"),date:(0,Pt.moment)().add(1,"day").toDate()},{label:d("Next week"),date:(0,Pt.moment)().add(1,"week").toDate()},{label:d("Next month"),date:(0,Pt.moment)().add(1,"month").toDate()}],y=new Pt.Menu;b.forEach(x=>{y.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()})})}),y.addSeparator(),y.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();Jx(y,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"}],y=new Pt.Menu;b.forEach(x=>{y.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()})})}),y.addSeparator(),y.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();Jx(y,w.left,w.bottom+5)}),p.addEventListener("click",()=>{let b=new Pt.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();Jx(b,w.left,w.bottom+5)}),{dom:a,top:!1,update:b=>{},destroy:()=>{let b=n.state.facet(Zx);b.quickCaptureSuggest&&b.quickCaptureSuggest.setQuickCaptureContext(!1),h==null||h.destroy(),h=null}}}var vj=Nn.Facet.define({combine:n=>n[0]}),Zx=Nn.Facet.define({combine:n=>n[0]});function tC(n,a){var e,t,r,i,s,o,l,c,u,p,m,f,h,k;return a.quickCaptureSuggest||(a.quickCaptureSuggest=new wk(n,a),a.registerEditorSuggest(a.quickCaptureSuggest)),[eC,kj.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:(k=(h=a.settings.quickCapture)==null?void 0:h.taskPrefix)!=null?k:"- [ ]"}),vj.of(n),Zx.of(a)]}var jt=require("obsidian");Nl();Y();so();var xk=class extends jt.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 Ns(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=_i(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,jt.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,jt.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,jt.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,jt.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,jt.moment)().add(1,"day").toDate()},{label:d("Day after tomorrow"),date:(0,jt.moment)().add(2,"day").toDate()},{label:d("Next week"),date:(0,jt.moment)().add(1,"week").toDate()},{label:d("Next month"),date:(0,jt.moment)().add(1,"month").toDate()}],i=new jt.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 jt.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 jt.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,jt.moment)().format(e.format);return e.folder?`${e.folder}/${t}.md`:`${t}.md`}formatDate(e){return(0,jt.moment)(e).format("YYYY-MM-DD")}processMinimalContent(e){return e.trim()?e.split(`
|
||
`).map(i=>{let s=i.trim();return s&&!s.startsWith("- [")?`- [ ] ${Ba(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 jt.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 qi(this.app,t,r),new jt.Notice(d("Captured successfully")),this.close()}catch(t){new jt.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 io({}),[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 Sk=require("obsidian"),aC=require("@codemirror/state");Y();var Ck=class extends Sk.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:"/"}]:Fp(t==="@"?"*":t,this.plugin)}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let r=t.createDiv("menu-item-icon");(0,Sk.setIcon)(r,e.icon);let i=t.createDiv("menu-item-title");i.textContent=e.label}selectSuggestion(e,t){var p,m,f,h,k;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 g=r.cm;if(g){let v=g.state.doc.line(i.line+1).from+i.ch-1,b=g.state.doc.line(i.line+1).from+i.ch;g.dispatch({changes:{from:v,to:b,insert:""},annotations:[aC.Transaction.userEvent.of("input")]})}else{let v={line:i.line,ch:i.ch-1},b=i;r.replaceRange("",v,b),r.setCursor(v)}}else{let g=r.cm;if(g)if((h=g.state)!=null&&h.doc){let v=g.state.doc.line(i.line+1).from+i.ch-1,b=g.state.doc.line(i.line+1).from+i.ch;g.dispatch({changes:{from:v,to:b,insert:e.replacement},annotations:[aC.Transaction.userEvent.of("input")]})}else{let v={line:i.line,ch:i.ch-1},b=i;r.replaceRange(e.replacement,v,b);let y={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(y)}else{let v={line:i.line,ch:i.ch-1},b=i;r.replaceRange(e.replacement,v,b);let y={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(y)}}let l=(k=r.cm)==null?void 0:k.dom,c=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=c==null?void 0:c.__minimalQuickCaptureModal;if(e.action){let g={line:i.line,ch:i.ch-1+e.replacement.length};e.action(r,g)}u&&typeof u.parseContentAndUpdateButtons=="function"&&setTimeout(()=>{u.parseContentAndUpdateButtons()},50),this.close()}};var nH=require("obsidian"),pt=require("obsidian");Y();var ht=require("obsidian");var Js=require("obsidian");Y();var Bi=require("obsidian");var Dd=require("obsidian");var jn=require("obsidian");wi();Y();var bj=require("obsidian");var Ln=require("obsidian");Y();function Ya(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 yj=require("obsidian");Y();var Dk=class extends yj.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 hn(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 Ek=class extends Ln.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,Ln.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=Ba(this.task.content);if(!t&&this.task.originalMarkdown){let r=this.task.originalMarkdown.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"");t=Ba(r).trim()}!t&&this.task.content&&(t=Ba(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=_i(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,Ln.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}createProjectEditor(e,t){let r=Ot(this.task),i=Yr(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 ur(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 Gr(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 pr(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=As(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 Dk(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 Ln.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;u<l.length;u++)if(l[u]!==c[u])return!0}else if(s!==o)return!0}return!1}async finishContentEdit(e){if(this.isSaving)for(;this.isSaving;)await new Promise(r=>setTimeout(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=Ya(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 Sd=class extends bj.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.length<this.maxPoolSize?this.editorPool.push(t):this.destroyEditor(t)}}forceReleaseEditor(e){let t=this.activeEditors.get(e);t&&(this.activeEditors.delete(e),this.destroyEditor(t))}hasActiveEditor(e){return this.activeEditors.has(e)}getActiveEditor(e){return this.activeEditors.get(e)}releaseAllEditors(){let e=Array.from(this.activeEditors.keys());for(let t of e)this.releaseEditor(t)}forceReleaseAllEditors(){let e=Array.from(this.activeEditors.keys());for(let t of e)this.forceReleaseEditor(t);for(let t of this.editorPool)this.destroyEditor(t);this.editorPool=[]}getStats(){return{...this.stats,activeEditors:this.activeEditors.size,pooledEditors:this.editorPool.length,totalMemoryUsage:this.activeEditors.size+this.editorPool.length}}resetStats(){this.stats={editorsCreated:0,editorsReused:0,editorsDestroyed:0}}createNewEditor(e,t){let r=new Ek(this.app,this.plugin,e,t);return this.addChild(r),r}destroyEditor(e){this.removeChild(e),e.unload(),this.stats.editorsDestroyed++}shouldUpdateEditor(e,t){return!e.isCurrentlyEditing()}performPeriodicCleanup(){let e=Date.now();if(e-this.lastCleanupTime<this.cleanupInterval)return;this.lastCleanupTime=e;let t=[];for(let[r,i]of this.activeEditors)i.isCurrentlyEditing()&&console.warn(`Editor for task ${r} appears to be stuck in editing state`);if(this.editorPool.length>this.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 Ni=class Ni extends jn.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,Ni.editorManager||(Ni.editorManager=new Sd(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=Ni.editorManager)==null||i.releaseEditor(this.task.id)},onMetadataEditFinished:(t,r,i)=>{var s;this.task=r,this.updateTaskDisplay(),(s=Ni.editorManager)==null||s.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return Ni.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=Ni.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=Tt(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=Ya(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()<l.getTime()?(s=d("Overdue")+(this.settings.useRelativeTimeForDate?" | "+bi(i):""),o="task-overdue"):i.getTime()===l.getTime()?(s=this.settings.useRelativeTimeForDate&&bi(i)||"Today",o="task-due-today"):i.getTime()===c.getTime()?(s=this.settings.useRelativeTimeForDate&&bi(i)||"Tomorrow",o="task-due-tomorrow"):s=i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}else s=this.settings.useRelativeTimeForDate?bi(i):i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});o&&r.classList.add(o),r.textContent=s,r.setAttribute("aria-label",i.toLocaleDateString()),this.plugin.settings.enableInlineEditor&&this.registerDomEvent(r,"click",l=>{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,jn.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}showMetadataMenu(e){let t=this.getInlineEditor(),r=new jn.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 It(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=>{jn.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=Ni.editorManager)!=null&&e.hasActiveEditor(this.task.id)&&Ni.editorManager.releaseEditor(this.task.id),this.element.detach()}};Ni.editorManager=null;var Jo=Ni;function wj(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 Li=require("obsidian");wi();Y();var Hn=require("obsidian");Y();var Tj=(l=>(l.Overdue="overdue",l.DueSoon="due_soon",l.InProgress="/",l.Incomplete=" ",l.Forwarded=">",l.Question="?",l.Completed="x",l.Cancelled="-",l))(Tj||{});function o6(n){let a=n.match(/^(\s*)/);return a?a[1].length:0}function l6(n,a=0,e,t,r){let i=n.split(`
|
||
`),s=[],o={},l=[];return i.forEach((c,u)=>{let p=a+u,m=pn(e,c,p+1,t,r);if(m){let f=o6(c),h=m.status,k=new Date;k.setHours(0,0,0,0);let g=k.getTime();!m.completed&&m.status!=="-"&&m.metadata.dueDate&&m.metadata.dueDate<g?h="overdue":h=(Object.values(Tj).includes(m.status),m.status);let v={id:m.id,originalMarkdown:m.originalMarkdown,status:m.status,completed:m.completed,content:m.content,priority:m.metadata.priority,dueDate:m.metadata.dueDate,startDate:m.metadata.startDate,scheduledDate:m.metadata.scheduledDate,tags:m.metadata.tags||[],lineNumber:p,indentation:f,children:[],calculatedStatus:h,metadata:m.metadata};for(o[p]=v;l.length>0&&f<=l[l.length-1].indentation;)l.pop();if(l.length>0){let b=l[l.length-1];b.children.push(v),v.parent=b}else s.push(v);l.push(v)}}),s}function xj(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 k of t){let g=r[k];g&&!i.includes(k)&&(s.includes(g)?c.push(g):o.includes(g)?u.push(g):(g in a||(a[g]=e++),l.push(g)))}c.forEach(k=>{k in a||(a[k]=98)}),u.forEach(k=>{k in a||(a[k]=99)});for(let k in n.taskStatuses)(n.taskStatuses[k]||"").split("|").forEach(v=>{v&&!(v in a)&&(s.includes(v)?a[v]=98:o.includes(v)?a[v]=99:a[v]=e++)});return" "in a||(a[" "]=(f=a[" "])!=null?f:10),"x"in a||(a.x=(h=a.x)!=null?h:98),a}function Cj(n,a,e,t){var m,f,h,k;let r=(g,v)=>{if(g==null)return;let b=g[v];return b!=null?b:g.metadata?g.metadata[v]:void 0},i=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}),s={status:(g,v,b)=>{var C,S;let y=g.calculatedStatus||g.status||"",w=v.calculatedStatus||v.status||"",x=(C=t[y])!=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:(g,v,b)=>{let y=!!g.completed,w=!!v.completed;if(y===w)return 0;let x=y?1:-1;return b==="asc"?x:-x},priority:(g,v,b)=>{let y=r(g,"priority"),w=r(v,"priority"),x=y!=null&&y>0,T=w!=null&&w>0;if(!x&&!T)return 0;if(x)if(T){let C=y-w;return b==="asc"?C:-C}else return-1;else return 1},dueDate:(g,v,b)=>o("dueDate",g,v,b),startDate:(g,v,b)=>o("startDate",g,v,b),scheduledDate:(g,v,b)=>o("scheduledDate",g,v,b),createdDate:(g,v,b)=>o("createdDate",g,v,b),completedDate:(g,v,b)=>o("completedDate",g,v,b),content:(g,v,b)=>{var T,C;let y=((T=g.content)==null?void 0:T.trim())||null,w=((C=v.content)==null?void 0:C.trim())||null;if(!y&&!w)return 0;if(!y)return 1;if(!w)return-1;let x=i.compare(y,w);return b==="asc"?x:-x},tags:(g,v,b)=>{let y=r(g,"tags"),w=r(v,"tags"),x=Array.isArray(y)&&y.length>0?y.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:(g,v,b)=>{var T,C;let y=((T=r(g,"project"))==null?void 0:T.trim())||null,w=((C=r(v,"project"))==null?void 0:C.trim())||null;if(!y&&!w)return 0;if(!y)return 1;if(!w)return-1;let x=i.compare(y,w);return b==="asc"?x:-x},context:(g,v,b)=>{var T,C;let y=((T=r(g,"context"))==null?void 0:T.trim())||null,w=((C=r(v,"context"))==null?void 0:C.trim())||null;if(!y&&!w)return 0;if(!y)return 1;if(!w)return-1;let x=i.compare(y,w);return b==="asc"?x:-x},recurrence:(g,v,b)=>{var T,C;let y=((T=r(g,"recurrence"))==null?void 0:T.trim())||null,w=((C=r(v,"recurrence"))==null?void 0:C.trim())||null;if(!y&&!w)return 0;if(!y)return 1;if(!w)return-1;let x=i.compare(y,w);return b==="asc"?x:-x},filePath:(g,v,b)=>{var T,C;let y=((T=g.filePath)==null?void 0:T.trim())||null,w=((C=v.filePath)==null?void 0:C.trim())||null;if(!y&&!w)return 0;if(!y)return 1;if(!w)return-1;let x=i.compare(y,w);return b==="asc"?x:-x},lineNumber:(g,v,b)=>(g.line||0)-(v.line||0)};function o(g,v,b,y){let w=r(v,g),x=r(b,g),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=E<N,R=A<N;I&&R?S=E-A:I&&!R?S=-1:!I&&R?S=1:S=E-A}return y==="asc"?S:-S}for(let g of e)if(g.field in s){let v=s[g.field],b=v(n,a,g.order);if(b!==0)return b}let l=(m=n.filePath)!=null?m:"",c=(f=a.filePath)!=null?f:"";if(l!==c)return l.localeCompare(c);if(n.line!==void 0&&a.line!==void 0)return n.line-a.line;if(n.lineNumber!==void 0&&a.lineNumber!==void 0)return n.lineNumber-a.lineNumber;let u=(h=n.id)!=null?h:"",p=(k=a.id)!=null?k:"";return u!==p?u.localeCompare(p):0}function d6(n){if(n.length===0)return[];let a=[...n].sort((i,s)=>i.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;i<a.length;i++){let s=a[i-1],o=a[i],l=r(s);o.lineNumber<=l+1?t.push(o):(e.push([...t]),t=[o])}return t.length>0&&e.push(t),e}function Gt(n,a,e){let t=xj(e),r=n.map(i=>i.calculatedStatus?i:{...i,calculatedStatus:i.status||""});return r.sort((i,s)=>Cj(i,s,a,t)),r}function Sj(n,a,e){let t=xj(e);n.sort((r,i)=>Cj(r,i,a,t));for(let r of n)r.children&&r.children.length>0&&(r.children=Sj(r.children,a,e));return n}function rC(n,a,e=!1){let t=a.app,r=t.workspace.getActiveFile();if(!r)return new Hn.Notice("Sort Tasks: No active file found."),null;let i=r.path,s=t.metadataCache.getFileCache(r);if(!s)return new Hn.Notice("Sort Tasks: Metadata cache not available."),null;let o=n.state.doc,l=a.settings,c=l.preferMetadataFormat,u=l.sortCriteria||pe.sortCriteria;if(!l.sortTasks||!u||u.length===0)return new Hn.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;B<I.length;B++)if(I[B].level<=R.level){j=I[B].position.start.line;break}f=`heading section "${R.heading}"`;break}R?m=j-1:(p=0,m=o.lines-1,f="full document (cursor not in heading)"),m<p&&(m=p)}let h=o.line(p+1).from,k=o.line(m+1).to;if(h>k)return new Hn.Notice(`Sort Tasks: Invalid range calculated for ${f}.`),null;let g=o.sliceString(h,k),v=l6(g,p,i,c,a);if(v.length===0){let A=`Sort Tasks: No tasks found in the ${f} (Lines ${p+1}-${m+1}) to sort.`;return new Hn.Notice(A),null}let b=d6(v);for(let A=0;A<b.length;A++)b[A]=Sj(b[A],u,l);v.length=0;for(let A of b)for(let N of A)v.push(N);let y=g.split(`
|
||
`),w=[...y],x=new Set,T=new Set;for(let A of v){let N=A.lineNumber-p;N>=0&&N<y.length&&T.add(N)}for(let A of b){let R=function(W){I.push(W.originalMarkdown);let B=W.lineNumber-p;if(B>=0&&B<y.length&&x.add(B),W.children&&W.children.length>0)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<y.length&&B<N&&(N=B)}if(N===Number.MAX_SAFE_INTEGER)continue;let I=[];for(let W of A)W.parent||R(W);let j=N;for(let W of I)w[j++]=W}let C=[];for(let A=0;A<w.length;A++)(!T.has(A)||x.has(A))&&C.push(w[A]);let S=C.join(`
|
||
`);if(g===S){let A=`Sort Tasks: Tasks are already sorted in the ${f} (Lines ${p+1}-${m+1}).`;return new Hn.Notice(A),null}let E=`Sort Tasks: Sorted tasks in the ${f} (Lines ${p+1}-${m+1}).`;return new Hn.Notice(E),S}var di=class di extends Li.Component{constructor(e,t,r,i=0,s=[],o,l){super();this.app=r;this.childTasks=s;this.plugin=l;this.isSelected=!1;this.isExpanded=!0;this.indentLevel=0;this.childComponents=[];this.task=e,this.viewMode=t,this.indentLevel=i,this.taskMap=o,di.editorManager||(di.editorManager=new Sd(this.app,this.plugin))}getInlineEditor(){let e={onTaskUpdate:async(t,r)=>{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,Li.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=Tt(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=Ya(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()<f.getTime()?(o=d("Overdue")+((c=this.plugin.settings)!=null&&c.useRelativeTimeForDate?" | "+bi(s):""),l="task-overdue"):s.getTime()===f.getTime()?(o=(u=this.plugin.settings)!=null&&u.useRelativeTimeForDate&&bi(s)||"Today",l="task-due-today"):s.getTime()===h.getTime()?(o=(p=this.plugin.settings)!=null&&p.useRelativeTimeForDate&&bi(s)||"Tomorrow",l="task-due-tomorrow"):o=s.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}else o=(m=this.plugin.settings)!=null&&m.useRelativeTimeForDate?bi(s):s.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});l&&i.classList.add(l),i.textContent=o,i.setAttribute("aria-label",s.toLocaleDateString()),this.plugin.settings.enableInlineEditor&&this.registerDomEvent(i,"click",f=>{if(f.stopPropagation(),!this.isCurrentlyEditing()){let h=this.getInlineEditor(),k=this.formatDateForInput(s),g=t==="due"?"dueDate":t==="scheduled"?"scheduledDate":t==="start"?"startDate":t==="cancelled"?"cancelledDate":t==="completed"?"completedDate":null;g&&h.showMetadataEditor(i,g,k)}})}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,Li.setIcon)(r,"plus"),this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.showMetadataMenu(r)})}showMetadataMenu(e){let t=this.getInlineEditor(),r=new Li.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 It(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=>{Li.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=ut(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=Gt([...i],s,this.plugin.settings):i=[...i].sort((o,l)=>{var b,y,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=(y=l.metadata.priority)!=null?y: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 g=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((T=o.content)!=null?T:"",(C=l.content)!=null?C:"");if(g!==0)return g;let v=(o.filePath||"").localeCompare(l.filePath||"");return v!==0?v:((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,Li.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;t<this.childComponents.length;t++){let r=this.childComponents[t];if(r.getTask().id===e)return r.unload(),this.childComponents.splice(t,1),!0;if(r.removeChildByTaskId(e))return!0}return!1}getTask(){return this.task}updateSelectionVisuals(e){var r;let t=this.task.id===e;if(this.isSelected!==t){this.isSelected=t;let i=this.element||((r=this.parentContainer)==null?void 0:r.closest(".tree-task-item"));i?(i.classList.toggle("is-selected",this.isSelected),this.parentContainer&&this.parentContainer.classList.toggle("selected",this.isSelected)):console.warn("Could not find element to toggle selection class for task:",this.task.id)}this.childComponents.forEach(i=>i.updateSelectionVisuals(e))}setExpanded(e){this.isExpanded!==e&&(this.isExpanded=e,this.toggleEl instanceof HTMLElement&&(0,Li.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 Zo=di;Y();function c6(n){return n.settings.defaultViewMode==="tree"}function u6(n,a){let e=n.loadLocalStorage(`task-genius:view-mode:${a}`);return e==null?null:e==="tree"}function us(n,a,e){let t=e?"tree":"list";n.saveLocalStorage(`task-genius:view-mode:${a}`,t)}function ps(n,a,e){let t=u6(n,e);return t!==null?t:c6(a)}var Tr=require("obsidian");function iC(n){if(!n)return null;let a=n.toLowerCase().trim(),e=(0,Tr.moment)();if(a!=="today")if(a==="tomorrow")e=(0,Tr.moment)().add(1,"day");else if(a==="yesterday")e=(0,Tr.moment)().subtract(1,"day");else if(a==="next week")e=(0,Tr.moment)().add(1,"week").startOf("week");else if(a==="last week")e=(0,Tr.moment)().subtract(1,"week").startOf("week");else if(a==="next month")e=(0,Tr.moment)().add(1,"month").startOf("month");else if(a==="last month")e=(0,Tr.moment)().subtract(1,"month").startOf("month");else{let t=(0,Tr.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 Dj(n,a,e){let t=ut(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 Ej(n,a,e){return ut(n,e).filterBlanks?a.content.trim()!=="":!0}function sC(n,a){if(!a.filterGroups||a.filterGroups.length===0)return!0;let e=a.filterGroups.map(t=>p6(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 p6(n,a){if(!a.filters||a.filters.length===0)return!0;let e=a.filters.map(t=>m6(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 m6(n,a){let{property:e,condition:t,value:r}=a;if(!t)return!0;switch(e){case"content":return f6(n.content,t,r);case"status":return h6(n.status,t,r);case"priority":return g6(n.metadata.priority,t,r);case"dueDate":return nC(n.metadata.dueDate,t,r);case"startDate":return nC(n.metadata.startDate,t,r);case"scheduledDate":return nC(n.metadata.scheduledDate,t,r);case"tags":return k6(n.metadata.tags,t,r);case"filePath":return v6(n.filePath,t,r);case"completed":return y6(n.completed,t);default:return!0}}function f6(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 h6(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 g6(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 nC(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,Tr.moment)(n).startOf("day"),r=(0,Tr.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 k6(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 v6(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 y6(n,a){switch(a){case"isTrue":return n===!0;case"isFalse":return n===!1;default:return!0}}function Ht(n,a,e,t={}){var u,p,m;let r=[...n],i=ut(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 g,v,b,y;return!(((y=(v=(g=f.metadata)==null?void 0:g.source)==null?void 0:v.type)!=null?y:(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=>sC(f,o.advancedFilter))),s.advancedFilter&&((p=s.advancedFilter.filterGroups)==null?void 0:p.length)>0&&(s.advancedFilter,r=r.filter(f=>sC(f,s.advancedFilter))),t.advancedFilter&&((m=t.advancedFilter.filterGroups)==null?void 0:m.length)>0){if(t.advancedFilter,r=r.filter(f=>sC(f,t.advancedFilter)),r=r.filter(f=>Dj(e,f,a)),r=r.filter(f=>Ej(e,f,a)),t.textQuery){let f=t.textQuery.toLowerCase();r=r.filter(h=>{var k,g,v;return h.content.toLowerCase().includes(f)||((k=h.metadata.project)==null?void 0:k.toLowerCase().includes(f))||((g=h.metadata.context)==null?void 0:g.toLowerCase().includes(f))||((v=h.metadata.tags)==null?void 0:v.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(k=>f.metadata.tags.some(g=>typeof g=="string"&&g===k))})),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(k=>k.toLowerCase());return!s.tagsExclude.some(k=>{let g=k.toLowerCase();return h.includes(g)||h.includes("#"+g)})})),s.project&&(r=r.filter(f=>{var h,k;return((h=f.metadata.project)==null?void 0:h.trim())===((k=s.project)==null?void 0:k.trim())})),s.priority!==void 0&&(r=r.filter(f=>{var h,k,g;return s.priority==="none"?f.metadata.priority===void 0:(h=s.priority)!=null&&h.includes(",")?s.priority.split(",").includes(String((k=f.metadata.priority)!=null?k:0)):f.metadata.priority===parseInt((g=s.priority)!=null?g:"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(k=>h.filePath.toLowerCase().includes(k)))}if(s.pathExcludes){let f=s.pathExcludes.split(",").filter(h=>h.trim()!=="").map(h=>h.trim().toLowerCase());r=r.filter(h=>!f.some(k=>h.filePath.toLowerCase().includes(k)))}if(s.dueDate){let f=iC(s.dueDate);f&&(r=r.filter(h=>h.metadata.dueDate?(0,Tr.moment)(h.metadata.dueDate).isSame(f,"day"):!1))}if(s.startDate){let f=iC(s.startDate);f&&(r=r.filter(h=>h.metadata.startDate?(0,Tr.moment)(h.metadata.startDate).isSame(f,"day"):!1))}if(s.scheduledDate){let f=iC(s.scheduledDate);f&&(r=r.filter(h=>h.metadata.scheduledDate?(0,Tr.moment)(h.metadata.scheduledDate).isSame(f,"day"):!1))}if(Object.keys(s).length===0)switch(a){case"inbox":r=r.filter(f=>!cR(f));break;case"flagged":r=r.filter(f=>{var h,k;return((h=f.metadata.priority)!=null?h:0)>=3||((k=f.metadata.tags)==null?void 0:k.includes("flagged"))});break}if(r=r.filter(f=>Dj(e,f,a)),r=r.filter(f=>Ej(e,f,a)),t.textQuery){let f=t.textQuery.toLowerCase();r=r.filter(h=>{var k,g,v;return h.content.toLowerCase().includes(f)||((k=h.metadata.project)==null?void 0:k.toLowerCase().includes(f))||((g=h.metadata.context)==null?void 0:g.toLowerCase().includes(f))||((v=h.metadata.tags)==null?void 0:v.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 ci=class extends Dd.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,Dd.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=ps(this.app,this.plugin,this.currentViewId);let e=(t=this.headerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Dd.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.headerEl.querySelector(".view-toggle-btn");e&&(0,Dd.setIcon)(e,this.isTreeView?"git-branch":"list"),us(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;p<c;p++)if(((i=this.allTasks[p])==null?void 0:i.id)!==((s=e[p])==null?void 0:s.id)||((o=this.allTasks[p])==null?void 0:o.originalMarkdown)!==((l=e[p])==null?void 0:l.originalMarkdown)){u=!1;break}if(u)return}this.allTasks=e,this.notFilteredTasks=t,this.applyFilters(),this.refreshTaskList()}}setViewMode(e,t){this.currentViewId=e,this.selectedProjectForView=t===void 0?null:t;let r=ut(this.plugin,e),i=d(r.name);this.titleEl.setText(i),this.initializeViewMode(),this.applyFilters(),this.refreshTaskList()}applyFilters(){var t,r;this.filteredTasks=Ht(this.allTasks,this.currentViewId,this.plugin,{textQuery:(t=this.filterInput)==null?void 0:t.value});let e=(r=this.plugin.settings.viewConfiguration.find(i=>i.id===this.currentViewId))==null?void 0:r.sortCriteria;e&&e.length>0?this.filteredTasks=Gt(this.filteredTasks,e,this.plugin.settings):this.filteredTasks.sort((i,s)=>{var g,v,b,y,w,x,T,C;let o=i.completed,l=s.completed;if(o!==l)return o?1:-1;let c=(g=i.metadata.priority)!=null?g:0,u=(v=s.metadata.priority)!=null?v:0;if(c!==u)return u-c;let p=(b=i.metadata.dueDate)!=null?b:1/0,m=(y=s.metadata.dueDate)!=null?y: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 k=(i.filePath||"").localeCompare(s.filePath||"");return k!==0?k:((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=wj(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=Gt(this.rootTasks,i,this.plugin.settings):this.rootTasks.sort((s,o)=>{var v,b,y,w,x,T,C,S;let l=s.completed,c=o.completed;if(l!==c)return l?1:-1;let u=(v=s.metadata.priority)!=null?v:0,p=(b=o.metadata.priority)!=null?b:0;if(u!==p)return p-u;let m=(y=s.metadata.dueDate)!=null?y:1/0,f=(w=o.metadata.dueDate)!=null?w:1/0;if(m!==f)return m-f;let k=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((x=s.content)!=null?x:"",(T=o.content)!=null?T:"");if(k!==0)return k;let g=(s.filePath||"").localeCompare(o.filePath||"");return g!==0?g:((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<i;s++){let o=this.filteredTasks[s],l=new Jo(o,this.currentViewId,this.app,this.plugin);l.onTaskSelected=this.selectTask.bind(this),l.onTaskCompleted=c=>{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;o<s;o++){let l=this.rootTasks[o],c=this.notFilteredTasks.filter(p=>p.metadata.parent===l.id),u=new Zo(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.nextRootTaskIndex<this.rootTasks.length:this.nextTaskIndex<this.filteredTasks.length)&&this.addLoadMarker()}addLoadMarker(){let e=this.taskListEl.createDiv({cls:"task-load-marker",attr:{"data-task-id":"load-marker"}});e.setText(d("Loading more...")),this.taskListObserver.observe(e)}removeLoadMarker(){let e=this.taskListEl.querySelector(".task-load-marker");e&&(this.taskListObserver.unobserve(e),e.remove())}loadMoreTasks(){if(this.removeLoadMarker(),this.isTreeView){if(this.nextRootTaskIndex<this.rootTasks.length){let e=new Map;this.filteredTasks.forEach(t=>e.set(t.id,t)),this.loadRootTaskBatch(e)}}else this.nextTaskIndex<this.filteredTasks.length&&this.loadTaskBatch();this.checkAndAddLoadMarker()}addEmptyState(e){this.cleanupComponents(),this.taskListEl.createDiv({cls:"task-empty-state"}).setText(e)}selectTask(e){var t;(t=this.selectedTask)==null||t.id,e==null||e.id,this.selectedTask,this.selectedTask=e,this.params.onTaskSelected&&this.params.onTaskSelected(e)}updateTask(e){let t=this.allTasks.findIndex(p=>p.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(g=>g.getTask().id)),f=this.filteredTasks.findIndex(g=>g.id===p.id),h=null;for(let g=f+1;g<this.filteredTasks.length;g++){let v=this.filteredTasks[g].id;if(m.has(v)){h=this.taskComponents.find(b=>b.getTask().id===v);break}}let k=new Jo(p,this.currentViewId,this.app,this.plugin);if(k.onTaskSelected=this.selectTask.bind(this),k.onTaskCompleted=g=>{var v,b;(b=(v=this.params).onTaskCompleted)==null||b.call(v,g)},k.onTaskUpdate=async(g,v)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(g,v)},k.onTaskContextMenu=(g,v)=>{var b,y;(y=(b=this.params).onTaskContextMenu)==null||y.call(b,g,v)},this.addChild(k),k.load(),h){this.taskListEl.insertBefore(k.element,h.element);let g=this.taskComponents.indexOf(h);this.taskComponents.splice(g,0,k)}else this.taskListEl.appendChild(k.element),this.taskComponents.push(k)},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,k;let f=(p.filePath||"").localeCompare(m.filePath||"");return f!==0?f:((h=p.line)!=null?h:0)-((k=m.line)!=null?k: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 k=h.findComponentByTaskId(f);if(k){let g=this.notFilteredTasks.filter(v=>v.metadata.parent===f);k.updateChildTasks(g),m=!0;break}}else{let h=new Map;this.notFilteredTasks.forEach(b=>h.set(b.id,b));let k=this.notFilteredTasks.filter(b=>b.metadata.parent===s.id),g=new Zo(s,this.currentViewId,this.app,0,k,h,this.plugin);g.onTaskSelected=this.selectTask.bind(this),g.onTaskCompleted=b=>{var y,w;(w=(y=this.params).onTaskCompleted)==null||w.call(y,b)},g.onTaskUpdate=async(b,y)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(b,y)},g.onTaskContextMenu=(b,y)=>{var w,x;(x=(w=this.params).onTaskContextMenu)==null||x.call(w,b,y)},this.addChild(g),g.load();let v=this.treeComponents.length;for(let b=0;b<this.treeComponents.length;b++)if(u(s,this.treeComponents[b].getTask())<0){v=b;break}v<this.treeComponents.length?(this.taskListEl.insertBefore(g.element,this.treeComponents[v].element),this.treeComponents.splice(v,0,g)):(this.taskListEl.appendChild(g.element),this.treeComponents.push(g))}}}}else{let p=this.taskComponents.find(m=>m.getTask().id===e.id);p?p.updateTask(s):l(s)}else if(!this.isTreeView)c(e.id),this.nextTaskIndex<this.filteredTasks.length&&this.loadTaskBatch();else{let p=this.treeComponents.findIndex(m=>m.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 Na=require("obsidian");var om=require("obsidian");Y();var Pk=class extends om.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,om.setIcon)(r,"chevron-left");let i=t.createDiv({cls:"calendar-nav-btn"});(0,om.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;x<this.options.firstDayOfWeek;x++)r.push(r.shift());(this.options.showWeekends?r:r.filter(x=>x!=="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(),k=this.selectedDate.getMonth(),g=this.selectedDate.getFullYear();for(let x=0;x<c;x++){let T=m-c+x+1,C=new Date(p,u,T),S=T===h&&u===k&&p===g;this.addCalendarDay(C,!1,S,!1,!1)}for(let x=1;x<=l;x++){let T=new Date(this.displayedYear,this.displayedMonth,x),C=T.getTime()===f.getTime(),S=x===h&&this.displayedMonth===k&&this.displayedYear===g,E=T<f,A=T>f;this.addCalendarDay(T,C,S,E,A,!0)}let b=42-(c+l),y=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,y,x),C=x===h&&y===k&&w===g;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(k=>k.metadata.priority&&k.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(i<this.calendarDays.length){let s=this.calendarDays[i];s.date.getDate()===e.getDate()&&s.date.getMonth()===e.getMonth()&&s.date.getFullYear()===e.getFullYear()?(r.addClass("selected"),s.isSelected=!0):(r.removeClass("selected"),s.isSelected=!1)}}),this.onDateSelected){let t=this.getTasksForDate(e);this.onDateSelected(e,t)}}navigateMonth(e){this.displayedMonth+=e,this.displayedMonth>11?(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()}};Y();var Pj=require("obsidian");Y();var jr=class extends Pj.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 Jo(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 Zo(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 ms=class extends Na.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<o&&(this.selectedDate=new Date(t),this.calendarComponent.selectDate(this.selectedDate)),s!==o&&(this.categorizeTasks(),this.updateTaskStats(),this.updateDueSoonSection(),this.refreshDateSectionsUI())},this.registerDomEvent(window,"focus",this.windowFocusHandler)}createForecastHeader(){this.forecastHeaderEl=this.taskContainerEl.createDiv({cls:"forecast-header"}),Na.Platform.isPhone&&this.forecastHeaderEl.createEl("div",{cls:"forecast-sidebar-toggle"},s=>{new Na.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,Na.setIcon)(i,"list"),i.setAttribute("aria-label",d("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()})}initializeViewMode(){var t;this.isTreeView=ps(this.app,this.plugin,"forecast");let e=(t=this.forecastHeaderEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Na.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.forecastHeaderEl.querySelector(".view-toggle-btn");e&&(0,Na.setIcon)(e,this.isTreeView?"git-branch":"list"),us(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"}),Na.Platform.isPhone){let l=this.leftColumnEl.createDiv({cls:"forecast-sidebar-close"});new Na.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 Pk(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(),Na.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),Na.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)<t),this.todayTasks=i.filter(o=>this.getRelevantDate(o)===t),this.futureTasks=i.filter(o=>this.getRelevantDate(o)>t),r&&r.length>0?(this.pastTasks=Gt(this.pastTasks,r,this.plugin.settings),this.todayTasks=Gt(this.todayTasks,r,this.plugin.settings),this.futureTasks=Gt(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),Na.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()<r.getTime()||e.title==="Past Due")&&t.addClass("overdue");let s=t.createDiv({cls:"date-section-header"}),o=s.createDiv({cls:"section-toggle"});(0,Na.setIcon)(o,e.isExpanded?"chevron-down":"chevron-right"),s.createDiv({cls:"section-title"}).setText(e.title),s.createDiv({cls:"section-count"}).setText(`${e.tasks.length}`);let u=t.createDiv({cls:"section-tasks"});e.isExpanded||u.hide(),this.registerDomEvent(s,"click",()=>{e.isExpanded=!e.isExpanded,(0,Na.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)<e),i=t.filter(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=Gt(r,o,this.plugin.settings),c=Gt(i,o,this.plugin.settings),u=Gt(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 k=this.getRelevantDate(h),g=new Date(k),v=`${g.getFullYear()}-${String(g.getMonth()+1).padStart(2,"0")}-${String(g.getDate()).padStart(2,"0")}`;p.has(v)||p.set(v,[]),p.get(v).some(b=>b.id===h.id)||p.get(v).push(h)}),Array.from(p.keys()).sort().forEach(h=>{let[k,g,v]=h.split("-").map(Number),b=new Date(k,g-1,v),y=p.get(h),w=this.formatSectionTitleForDate(b);this.dateSections.push({title:w,date:b,tasks:y,isExpanded:this.shouldExpandFutureSection(b,this.selectedDate)})}),o&&o.length>0){let h=o.find(g=>g.field==="dueDate"),k=o.find(g=>g.field==="scheduledDate");h&&h.order==="desc"?this.dateSections.reverse():k&&k.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 La=require("obsidian");Y();var fs=class extends La.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,La.setIcon)(i,"list-plus"),i.setAttribute("aria-label",d("Toggle multi-select")),this.registerDomEvent(i,"click",()=>{this.toggleMultiSelect()}),La.Platform.isPhone){let s=t.createDiv({cls:"tags-sidebar-close"});new La.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"});La.Platform.isPhone&&t.createEl("div",{cls:"tags-sidebar-toggle"},o=>{new La.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,La.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 k=u.createDiv({cls:"tag-indent"});k.style.width=`${r*20}px`}let p=u.createDiv({cls:"tag-icon"});if((0,La.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",k=>{this.handleTagSelection(l,k.ctrlKey||k.metaKey)}),Object.keys(o).filter(k=>!k.startsWith("_")).length>0){let k=t.createDiv({cls:"tag-children"});this.renderTagHierarchy(o,k,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(),La.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=ps(this.app,this.plugin,"tags");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,La.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,La.setIcon)(e,this.isTreeView?"git-branch":"list"),us(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=Gt(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,La.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,La.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 Ga=require("obsidian");Y();var Oj=require("obsidian");var Mj=require("obsidian");var Ed=require("obsidian"),Mk=class n extends Ed.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,Ed.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,Ed.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,Ed.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 Ik=class extends Mj.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 Mk(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){e.isExpanded=!0,this.expandedNodes.add(e.fullPath);for(let i of e.children)this.autoExpandToLevel(i,t,r+1)}}restoreExpandedState(e){e.isExpanded=this.expandedNodes.has(e.fullPath)||e.fullPath==="";for(let t of e.children)this.restoreExpandedState(t)}setMultiSelectMode(e){this.isMultiSelectMode=e,!e&&this.selectedNodes.size===0&&this.updateSelectionVisuals(),this.config.onMultiSelectToggled&&this.config.onMultiSelectToggled(e)}getMultiSelectMode(){return this.isMultiSelectMode}getSelectedPaths(){return new Set(this.selectedNodes)}setSelectedPaths(e){this.selectedNodes=new Set(e),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set(this.selectedNodes))}clearSelection(){this.selectedNodes.clear(),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set)}expandAll(){if(!this.tree)return;let e=t=>{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 b6(n,a="/"){if(!n||!n.trim())return[];let e=n.trim().replace(new RegExp(`${oC(a)}+`,"g"),a).replace(new RegExp(`^${oC(a)}|${oC(a)}$`,"g"),"");return e?e.split(a):[]}function oC(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lC(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=b6(t,a);if(i.length===0)continue;let s=e,o="";for(let l=0;l<i.length;l++){let c=i[l],u=l===i.length-1;o=o?`${o}${a}${c}`:c;let p=s.children.find(m=>m.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 Ij(e),Aj(e),e}function Ij(n){let a=new Set(n.data.directTaskIds);for(let e of n.children)Ij(e).forEach(r=>a.add(r));return n.data.allTaskIds=a,n.data.totalTaskCount=a.size,a}function Aj(n){n.children.sort((a,e)=>a.name.localeCompare(e.name));for(let a of n.children)Aj(a)}function Fj(n,a="/"){var t;let e=new Map;for(let r of n){let i=Ot(r);i&&(e.has(i)||e.set(i,new Set),(t=e.get(i))==null||t.add(r.id))}return lC(e,a)}function Rj(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 Ak=class extends Oj.Component{constructor(e,t,r){super();this.parentEl=e;this.app=t;this.plugin=r;this.projectTree=null;this.allTasks=[]}onload(){this.treeComponent=new Ik(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=Fj(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=Rj(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 Nj(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 hs=class extends Ga.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,Ga.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,Ga.setIcon)(o,"list-plus"),o.setAttribute("aria-label",d("Toggle multi-select")),Ga.Platform.isPhone){let l=t.createDiv({cls:"projects-sidebar-close"});new Ga.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"});Ga.Platform.isPhone&&t.createEl("div",{cls:"projects-sidebar-toggle"},u=>{new Ga.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,Ga.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=Ot(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=lC(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 Ak(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,Ga.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=ps(this.app,this.plugin,"projects");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Ga.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,Ga.setIcon)(e,this.isTreeView?"git-branch":"list"),us(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=Nj(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=Gt(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=Es(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,k;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":((k=this.plugin)==null?void 0:k.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,c,u,p,m,f,h,k,g,v,b,y,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":(((g=(k=(h=this.plugin)==null?void 0:h.settings.taskStatuses)==null?void 0:k.abandoned)==null?void 0:g.split("|"))||[">"]).includes(e)?"abandoned":(((y=(b=(v=this.plugin)==null?void 0:v.settings.taskStatuses)==null?void 0:b.planned)==null?void 0:y.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,Ga.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 Bt=require("obsidian");Y();var Lj={daily:1,weekly:7,"every 2 weeks":14,monthly:30,quarterly:90,"every 6 months":180,yearly:365},dC=class extends Bt.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(k=>{let g=i.createEl("option",{text:k,value:k});k===this.frequency&&(g.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",k=>{let g=k.target.value;g==="custom"?(o.style.display="block",l.focus(),this.frequency=""):(o.style.display="none",this.frequency=g)}),l.addEventListener("input",k=>{this.frequency=k.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 Bt.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 Bt.Notice(d("Review schedule updated for")+` ${this.projectName}`),this.close()}async onClose(){let{contentEl:e}=this;e.empty()}},Bn=class extends Bt.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"}),Bt.Platform.isPhone){let i=this.leftColumnEl.createDiv({cls:"review-sidebar-close"});new Bt.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"}),Bt.Platform.isPhone&&this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},t=>{new Bt.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,Bt.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")}),Bt.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<e.length&&i){let c=i.createDiv({cls:"review-filter-info"}),u=e.length-r.length,p=c.createSpan({text:d(`Showing new and in-progress tasks only. ${u} completed tasks from previous reviews are hidden.`)}),m=c.createSpan({cls:"review-filter-toggle",text:d("Show all tasks")});this.registerDomEvent(m,"click",()=>{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(),Bt.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(),Bt.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 dC(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 Bt.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 Bt.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 Bt.ExtraButtonComponent(e).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})})}renderEmptyTaskList(e){if(this.taskHeaderEl.empty(),Bt.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(Lj[e.frequency])i=Lj[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}};Y();var Da=require("obsidian");Y();var el=require("obsidian");var Ks=require("obsidian");function jj(n){if(n.completed)return"grey"}var cC=class extends Ks.Component{constructor(e){super();this.params=e;this.debounceHover=(0,Ks.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=jj(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",`${Ba(this.event.title)||"(No title)"}
|
||
Status: ${this.event.status}${this.event.metadata.dueDate?`
|
||
Due: ${(0,Ks.moment)(this.event.metadata.dueDate).format("YYYY-MM-DD")}`:""}${this.event.metadata.startDate?`
|
||
Start: ${(0,Ks.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=Tt(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 It(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,Ks.moment)(this.event.start).format("h:mma");this.eventEl.createDiv({cls:"calendar-event-time",text:r})}let e=Tt(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 It(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,Ks.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=Tt(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 It(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 Vn(n){let a=new cC(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 Hj=require("obsidian"),ui=class extends Hj.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 lm(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 Fk=class extends ui{constructor(e,t,r,i,s,o,l){super(t,e,r,o,l);this.currentViewId=i;this.sortableInstances=[];this.debounceHover=(0,el.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=lm(i);this.options.onDayHover(e,s.getTime())}}},200);this.app=e,this.plugin=t,this.currentDate=s}render(){var v,b;let e=(v=this.plugin.settings.viewConfiguration.find(y=>y.id===this.currentViewId))==null?void 0:v.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 y=0,w=l.clone();for(;w.isSameOrBefore(c,"day");)w.day()===0||w.day()===6||y++,w.add(1,"day");for(;y<30;)c.add(1,"day"),c.day()===0||c.day()===6||y++}else if(c.diff(l,"days")+1<42){let y=42-(c.diff(l,"days")+1);c.add(y,"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=el.moment.weekdaysShort(!0),m=[...p.slice(i),...p.slice(0,i)];(r?m.filter((y,w)=>{let x=(i+w)%7;return x!==0&&x!==6}):m).forEach(y=>{let w=u.createDiv("calendar-weekday");w.textContent=y});let h=this.containerEl.createDiv("calendar-month-grid"),k={},g=l.clone();for(;g.isSameOrBefore(c,"day");){let y=g.day()===0||g.day()===6;if(r&&y){g.add(1,"day");continue}let w=h.createEl("div",{cls:"calendar-day-cell",attr:{"data-date":g.format("YYYY-MM-DD")}}),x=g.format("YYYY-MM-DD");k[x]=w;let C=w.createDiv("calendar-day-header").createDiv("calendar-day-number");C.textContent=g.format("D"),g.isSame(this.currentDate,"month")||w.addClass("is-other-month"),g.isSame((0,el.moment)(),"day")&&w.addClass("is-today"),!r&&y&&w.addClass("is-weekend"),w.createDiv("calendar-events-container"),g.add(1,"day")}this.events.forEach(y=>{let w=(0,el.moment)(y.start).startOf("day"),x=c.clone().endOf("day"),T=l.clone().startOf("day");if(!(w.isAfter(x)||y.end&&(0,el.moment)(y.end).startOf("day").isBefore(T))&&w.isSameOrAfter(T)&&w.isSameOrBefore(x)){let C=w.format("YYYY-MM-DD"),S=k[C];if(S){let E=S.querySelector(".calendar-events-container");if(E){let{eventEl:A,component:N}=Vn({event:y,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(k).forEach(y=>{var C,S;let w=k[y],x=lm(y),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",y=>{var x,T;let w=y.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=lm(C);this.options.onDayClick(y,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=lm(C);this.options.onDayClick(y,S.getTime(),{behavior:"open-quick-capture"})}}}),this.registerDomEvent(h,"mouseover",y=>{this.debounceHover(y)}),this.initializeDragAndDrop(k)}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=wr.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=lm(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 xr=require("obsidian");var Rk=class extends ui{constructor(e,t,r,i,s,o,l){super(t,e,r,o,l);this.currentViewId=i;this.sortableInstances=[];this.debounceHover=(0,xr.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,xr.moment)(i).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=s}render(){var w,x;let e=ut(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=xr.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,xr.moment)(),"day")&&S.addClass("is-today"),u.add(1,"day"),h++}let g=this.containerEl.createDiv("calendar-week-grid-section").createDiv("calendar-week-grid"),v={};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=g.createEl("div",{cls:"calendar-day-column",attr:{"data-date":C}});v[C]=S.createDiv("calendar-day-events-container"),u.isSame((0,xr.moment)(),"day")&&S.addClass("is-today"),T&&S.addClass("is-weekend"),u.add(1,"day")}[...this.events.filter(T=>{let C=(0,xr.moment)(T.start),S=T.end?(0,xr.moment)(T.end):C;return C.isBefore(o.clone().endOf("day").add(1,"millisecond"))&&S.isSameOrAfter(s.clone().startOf("day"))})].sort((T,C)=>(0,xr.moment)(T.start).valueOf()-(0,xr.moment)(C.start).valueOf()).forEach(T=>{if(!T.start)return;let C=(0,xr.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=v[A];if(N){let{eventEl:I,component:R}=Vn({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(g,"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,xr.moment)(E).valueOf(),{behavior:"open-quick-capture"})}}),this.registerDomEvent(g,"mouseover",T=>{this.debounceHover(T)}),this.initializeDragAndDrop(v)}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=wr.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,xr.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 uC=require("obsidian");var Ok=class extends ui{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,uC.moment)(s.start),l=s.end?(0,uC.moment)(s.end):o.clone().endOf("day");return o.isBefore(e)&&l.isAfter(a)}).sort((s,o)=>s.id<o.id?-1:s.id>o.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}=Vn({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 Wn=require("obsidian");var Nk=class extends ui{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,Wn.moment)(s.start).isBetween(a,e,void 0,"[]")).sort((s,o)=>(0,Wn.moment)(s.start).valueOf()-(0,Wn.moment)(o.start).valueOf()),r={};if(t.forEach(s=>{let o=(0,Wn.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,Wn.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,Wn.moment)(m.start).valueOf():0,k=f.start?(0,Wn.moment)(f.start).valueOf():0;return h-k}).forEach(m=>{let f=p.createDiv("agenda-event-item"),{eventEl:h,component:k}=Vn({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(k),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 Hr=require("obsidian");var Lk=class extends ui{constructor(e,t,r,i,s,o){super(t,e,r,s,o);this.debounceHover=(0,Hr.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,Hr.moment)(i).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=i}render(){var k,g;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,Hr.moment)({year:e,month:0,day:1}),i=(0,Hr.moment)({year:e,month:11,day:31}),s=performance.now(),o=this.events.filter(v=>{let b=(0,Hr.moment)(v.start),y=v.end?(0,Hr.moment)(v.end):b;return b.isSameOrBefore(i.endOf("day"))&&y.isSameOrAfter(r.startOf("day"))}),l=performance.now();`${o.length}${e}`,l-s;let c=ut(this.plugin,"calendar"),u=c.specificConfig.firstDayOfWeek,p=(g=(k=c.specificConfig)==null?void 0:k.hideWeekends)!=null?g:!1;p?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let m=u===void 0?0:u,f=performance.now();for(let v=0;v<12;v++){let b=performance.now(),y=t.createDiv("calendar-mini-month"),w=(0,Hr.moment)({year:e,month:v,day:1}),x=y.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=y.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,Hr.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=Hr.moment.weekdaysMin(!0),c=[...l.slice(i),...l.slice(0,i)];(s?c.filter((g,v)=>{let b=(i+v)%7;return b!==0&&b!==6}):c).forEach(g=>{o.createDiv("mini-weekday").textContent=g});let p=t.clone().startOf("month"),m=t.clone().endOf("month"),f,h;if(s){f=p.clone();let g=(p.weekday()-i+7)%7;for(f.subtract(g,"days");f.day()===0||f.day()===6;)f.add(1,"day");h=m.clone();let v=(i+4-m.weekday()+7)%7;for(h.add(v,"days");h.day()===0||h.day()===6;)h.subtract(1,"day")}else{let g=(p.weekday()-i+7)%7;f=p.clone().subtract(g,"days");let v=(i+6-m.weekday()+7)%7;h=m.clone().add(v,"days")}let k=f.clone();for(;k.isSameOrBefore(h,"day");){let g=k.day()===0||k.day()===6;if(s&&g){k.add(1,"day");continue}let v=e.createEl("div",{cls:"mini-day-cell",attr:{"data-date":k.format("YYYY-MM-DD")}}),b=k.date();k.isSame(t,"month")||v.addClass("is-other-month"),v.textContent=String(b),k.isSame((0,Hr.moment)(),"day")&&v.addClass("is-today"),k.isSame(t,"month")&&r.has(b)&&v.addClass("has-events"),k.isSame(t,"month")?v.style.cursor="pointer":v.style.cursor="default",k.add(1,"day")}this.registerDomEvent(e,"click",g=>{var b;let v=g.target;if(v.closest(".mini-day-cell")){let y=(b=v.closest(".mini-day-cell"))==null?void 0:b.getAttribute("data-date");this.options.onDayClick&&this.options.onDayClick(g,(0,Hr.moment)(y).valueOf(),{behavior:"open-task-view"})}}),this.registerDomEvent(e,"mouseover",g=>{this.debounceHover(g)})}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}};var gs=class extends Da.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,Da.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,Da.moment)(t),this.render()):r.behavior==="open-quick-capture"?new ca(this.app,this.plugin,{dueDate:(0,Da.moment)(t).toDate()},!0).open():r.behavior==="open-task-view"&&(this.setView("day"),this.currentDate=(0,Da.moment)(t),this.render())};this.onDayHover=(e,t)=>{};this.onMonthClick=(e,t)=>{this.setView("month"),this.currentDate=(0,Da.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,Da.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 Da.ButtonComponent(e.createDiv());t.buttonEl.toggleClass(["calendar-nav-button","prev-button"],!0),t.setIcon("chevron-left"),t.onClick(()=>this.navigate("prev"));let r=new Da.ButtonComponent(e.createDiv());r.buttonEl.toggleClass(["calendar-nav-button","today-button"],!0),r.setButtonText(d("Today")),r.onClick(()=>this.goToToday());let i=new Da.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 Da.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 Fk(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 Rk(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 Ok(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 Nk(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 Lk(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 k=(0,Da.moment)(o),g=l?k.startOf("day").toDate():k.toDate(),v,b=g;if(r&&((m=i==null?void 0:i.icsEvent)!=null&&m.dtend))v=i.icsEvent.dtend;else if(t.metadata.startDate&&t.metadata.dueDate&&t.metadata.startDate!==t.metadata.dueDate){let w=(0,Da.moment)(t.metadata.startDate).startOf("day"),x=(0,Da.moment)(t.metadata.dueDate).startOf("day");w.isBefore(x)&&(v=x.add(1,"day").toDate(),b=w.toDate())}let y;r&&((h=(f=i==null?void 0:i.icsEvent)==null?void 0:f.source)!=null&&h.color)?y=i.icsEvent.source.color:y=t.completed?"grey":void 0,this.events.push({...t,title:t.content,start:b,end:v,allDay:l,color:y})}}),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 k=new Date(u.icsEvent.dtstart),g=new Date(k.getFullYear(),k.getMonth(),k.getDate()),v=r(g);if(this.badgeEventsCache.has(v)){let b={...l,title:l.content,start:u.icsEvent.dtstart,end:u.icsEvent.dtend,allDay:u.icsEvent.allDay,color:u.icsEvent.source.color},y=this.badgeEventsCache.get(v)||[];y.push(b),this.badgeEventsCache.set(v,y)}}}),`${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,k;let u=((f=c.source)==null?void 0:f.type)==="ics",p=u?c:null,m=((k=(h=p==null?void 0:p.icsEvent)==null?void 0:h.source)==null?void 0:k.showType)==="badge";if(u&&m&&(p!=null&&p.icsEvent)){let g=new Date(p.icsEvent.dtstart),v=g.getFullYear(),b=g.getMonth(),y=g.getDate();if(v===t&&b===r&&y===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(g=>g.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 g=42-(p.diff(u,"days")+1);p.add(g,"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"),k=this.currentDate.clone().endOf("year");e=h.toDate(),t=k.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 zn=require("obsidian");var jk=require("obsidian");var Bj=require("obsidian");var dm=class extends Bj.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=Ya(e.priority);t&&this.element.classList.add(`priority-${t}`)}this.element.createDiv({cls:"tg-kanban-card-container"},t=>{var i,s;let r=Tt(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 It(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(),Ot(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.getTime()?(o="Overdue",e.classList.add("task-overdue")):r.getTime()===i.getTime()?(o="Today",e.classList.add("task-due-today")):r.getTime()===s.getTime()?o="Tomorrow":o=r.toLocaleDateString(void 0,{month:"short",day:"numeric"}),e.textContent=`${o}`,e.setAttribute("aria-label",`Due: ${r.toLocaleDateString()}`)}renderCompletionDate(){let e=this.metadataEl.createEl("div",{cls:["task-date","task-done-date"]}),t=this.task.metadata||{},r=new Date(t.completedDate||"");e.textContent=`Done: ${r.toLocaleDateString(void 0,{month:"short",day:"numeric"})}`,e.setAttribute("aria-label",`Completed: ${r.toLocaleDateString()}`)}renderProject(){let e=Ot(this.task);if(!e)return;let t=this.metadataEl.createEl("div",{cls:["task-project","clickable-metadata"]}),r=this.task.metadata||{};!r.project&&r.tgProject&&(t.addClass("task-project-tg"),t.title=`Project from ${r.tgProject.type}: ${r.tgProject.source||""}`),t.textContent=e,t.setAttribute("aria-label",`Project: ${e}`),this.registerDomEvent(t,"click",i=>{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=Ya(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=Ya(r.priority);l&&this.element.classList.remove(`priority-${l}`)}if(i.priority){let l=Ya(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()}};Y();var w6=20,cm=class extends jk.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,jk.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 ca(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+w6,this.tasks.length),r=!1;for(let s=e;s<t;s++){let o=this.tasks[s],l=new dm(this.app,this.plugin,this.contentEl,o,this.params);this.addChild(l),this.cards.push(l),l.load(),l.element&&this.sentinelEl&&this.contentEl.insertBefore(l.element,this.sentinelEl),this.renderedTaskCount++,r=!0}this.isLoadingMore=!1,this.renderedTaskCount>=this.tasks.length&&this.sentinelEl&&((i=this.observer)==null||i.unobserve(this.sentinelEl),this.sentinelEl.hide())}addCard(e){let t=new dm(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)}};Y();var Wk=require("obsidian");var tl=require("obsidian");Y();var Hk=class extends tl.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,tl.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,tl.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,tl.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<t.length&&((o=t[s])==null||o.focus())}};var Vk=require("obsidian"),Bk=class extends Vk.Component{constructor(a){super(),this.filter=a.filter,this.onRemove=a.onRemove}onload(){this.element=this.createPillElement()}createPillElement(){let a=document.createElement("div");return a.className="filter-pill",a.setAttribute("data-filter-id",this.filter.id),a.createSpan({cls:"filter-pill-category",text:`${this.filter.categoryLabel}:`}),a.createSpan({cls:"filter-pill-value",text:this.filter.value}),a.createEl("span",{cls:"filter-pill-remove",attr:{"aria-label":"Remove filter"}}).createSpan({cls:"filter-pill-remove-icon"},t=>{new Vk.ExtraButtonComponent(t).setIcon("x").onClick(()=>{this.removePill()})}),a}removePill(){this.element.classList.add("filter-pill-removing"),setTimeout(()=>{this.onRemove(this.filter.id)},150)}};Y();function um(n){let a=new Set,e=new Set,t=new Set,r=new Set,i=new Set,s=new Set;n.forEach(g=>{g.status&&a.add(g.status),g.metadata.tags.forEach(v=>{typeof v=="string"&&e.add(v)}),g.metadata.project&&t.add(g.metadata.project),g.metadata.context&&r.add(g.metadata.context),g.metadata.priority!==void 0&&i.add(g.metadata.priority),g.filePath&&s.add(g.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 g in yl){let v=yl[g];(g===m[v]||!p[v])&&(p[v]=g)}for(let g in m)p[g]||(p[g]=m[g]);let f=Array.from(i).sort((g,v)=>v-g).map(g=>p[g]||g.toString()).filter(g=>!!g),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 Pd=class extends Wk.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,Wk.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 Hk({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 Bk({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=um(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 ks=class extends zn.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,zn.setIcon)(s,"arrow-up-down")});this.registerDomEvent(i,"click",s=>{let o=new zn.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=um(this.allTasks);this.filterComponent=new Pd({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 cm(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 cm(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=Ot(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,k,g,v,b,y;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=(k=c.scheduledDate)!=null?k:Number.MAX_SAFE_INTEGER;o=S-E;break;case"startDate":let A=(g=l.startDate)!=null?g:Number.MAX_SAFE_INTEGER,N=(v=c.startDate)!=null?v:Number.MAX_SAFE_INTEGER;o=A-N;break;case"createdDate":let I=(b=l.createdDate)!=null?b:Number.MAX_SAFE_INTEGER,R=(y=c.createdDate)!=null?y:Number.MAX_SAFE_INTEGER;o=I-R;break}return s==="desc"?-o:o}initializeSortableInstances(){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[];let e=!zn.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0;this.columns.forEach(t=>{let r=t.getContentElement(),i=wr.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(v=>v.id===this.currentViewId))==null?void 0:l.specificConfig,k=(h==null?void 0:h.groupBy)||"status";if(k==="status"){let v=this.resolveStatusMark((p||"").trim());v!==void 0?(`${t}${p}${v}`,await this.handleStatusUpdate(t,v)):console.warn(`Could not find status mark for status name: ${p}`)}else{let v=this.getColumnValueFromTitle(p,k,h==null?void 0:h.customColumns),b=this.getColumnValueFromTitle(f,k,h==null?void 0:h.customColumns);`${k}${t}${b}${v}`,await this.handlePropertyUpdate(t,k,b,v)}let g=this.allTasks.find(v=>v.id===t)||this.tasks.find(v=>v.id===t);g&&((c=this.params)!=null&&c.onTaskSelected)&&this.params.onTaskSelected(g)}}}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":Yr(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===""?!Ot(i):Ot(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;case"today":return m>=s&&m<o;case"tomorrow":return m>=o&&m<new Date(o.getTime()+1440*60*1e3);case"thisWeek":return m>=o&&m<l;case"nextWeek":return m>=l&&m<c;case"later":return 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 Ot(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?"overdue":l>=r&&l<i?"today":l>=i&&l<new Date(i.getTime()+1440*60*1e3)?"tomorrow":l>=i&&l<s?"thisWeek":l>=s&&l<o?"nextWeek":"later"}getColumnOrderKey(){var r;let e=(r=this.plugin.settings.viewConfiguration.find(i=>i.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=wr.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 mm=require("obsidian");var Md=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 Vj=require("obsidian"),zk=class extends Vj.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 k=30,g=l.addDays(this.params.visibleStartDate,-k),v=l.addDays(this.params.visibleEndDate,k);g=new Date(Math.max(g.getTime(),e.getTime())),v=new Date(Math.min(v.getTime(),t.getTime()));let b=l.startOfDay(g),y={},w={},x={};for(;b<=v;){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()}`;y[I]||(y[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>v)break;b=S}Object.values(y).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 Wj=require("obsidian");var $k=class extends Wj.Component{constructor(e,t){super();this.params=null;this.dateHelper=new Md;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,k=p.addDays(r,-h),g=p.addDays(i,h);k=new Date(Math.max(k.getTime(),e.getTime())),g=new Date(Math.min(g.getTime(),t.getTime()));let v=p.startOfDay(k);for(;v<=g;){let y=p.dateToX(v,e,this.params.dayWidth);if(m(v)?this.svgGroupEl.createSvg("line",{attr:{x1:y,y1:0,x2:y,y2:o,class:"gantt-grid-line-major"}}):(f(v)||c==="Day")&&this.svgGroupEl.createSvg("line",{attr:{x1:y,y1:0,x2:y,y2:o,class:"gantt-grid-line-minor"}}),v>g)break;v=p.addDays(v,1)}for(let y=u;y<=o;y+=u)this.svgGroupEl.createSvg("line",{attr:{x1:0,y1:y,x2:s,y2:y,class:"gantt-grid-line-horizontal"}});let b=p.startOfDay(new Date);if(b>=e&&b<=t){let y=p.dateToX(b,e,this.params.dayWidth);this.svgGroupEl.createSvg("line",{attr:{x1:y,y1:0,x2:y,y2:o,class:"gantt-grid-today-marker"}})}}};var zj=require("obsidian");var T6=24,x6=.6,C6=10,pm=5,Uk=class extends zj.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=T6,taskBarHeightRatio:c=x6,milestoneSize:u=C6}=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 k=l*c,g=e.y-k/2,v=null;if(e.isMilestone){let b=e.startX,y=e.y,w=u/2;if(v=m.createSvg("circle",{attr:{cx:b,cy:y,r:w,class:"gantt-task-milestone"}}),p.status&&p.status.trim()&&v.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let x=Ya(p.metadata.priority);x&&v.classList.add(`priority-${x}`)}if(s&&p.content)if(o){let x=m.createSvg("foreignObject",{attr:{x:b+w+pm,y:y-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 It(this.app,T,p.filePath);this.addChild(C),C.render(p.content)}else{let x=m.createSvg("text",{attr:{x:b+w+pm,y,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(v=m.createSvg("rect",{attr:{x:e.startX,y:g,width:e.width,height:k,rx:3,ry:3,class:"gantt-task-bar"}}),p.status&&p.status.trim()&&v.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let b=Ya(p.metadata.priority);b&&v.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 y=m.createSvg("foreignObject",{attr:{x:e.startX+pm,y:e.y-k/2-2,width:e.width-pm*2,height:k+4,class:"gantt-task-label-fo"}});y.style.pointerEvents="none";let w=y.createDiv({cls:"gantt-task-label-markdown"});if(o){let x=p.filePath||"";w.empty();let T=new It(this.app,w,x,!0);this.addChild(T),T.update(p.content)}else w.textContent=p.content,w.style.lineHeight=`${k}px`,w.style.whiteSpace="nowrap",w.style.overflow="hidden",w.style.textOverflow="ellipsis"}else{let y=m.createSvg("text",{attr:{x:e.startX+e.width+pm,y:e.y,class:"gantt-task-label-external","dominant-baseline":"middle","text-anchor":"start"}});y.textContent=p.content,y.style.pointerEvents="none"}}}};var $j=require("obsidian");Y();var _k=class extends $j.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 Id=24,Uj=40,S6=50,D6=10,E6=200,P6=4,vs=class extends mm.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=S6;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 Md;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(D6,Math.min(E6,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,mm.debounce)(this.renderInternal,this.config.debounceRenderMs),this.debouncedHeaderUpdate=(0,mm.debounce)(this.updateHeaderComponent,16)}onload(){this.createBaseSVG(),this.filterComponent=this.addChild(new Pd({container:this.filterContainerEl,options:um(this.tasks),onChange:e=>{this.applyFiltersAndRender(e)},components:[new _k(this.filterContainerEl,e=>this.scrollToDate(e))]},this.plugin)),this.headerContainerEl&&(this.timelineHeaderComponent=this.addChild(new zk(this.app,this.headerContainerEl))),this.gridGroupEl&&(this.gridBackgroundComponent=this.addChild(new $k(this.app,this.gridGroupEl))),this.taskGroupEl&&(this.taskRendererComponent=this.addChild(new Uk(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*Id+Id/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*Id,t*Id);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% - ${Uj}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=P6/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&&f<o+c&&l.push(m);let g=5,v=m.y-r-u;h<s-g?this.leftIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${v+45}px;`,title:m.task.content,"data-task-id":m.task.id}}):f>o+g&&this.rightIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${v+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 k=this.tasks.find(g=>g.id===h);k&&this.scrollToDate(new Date(k.metadata.dueDate||k.metadata.startDate||k.metadata.scheduledDate))}}),this.registerDomEvent(this.rightIndicatorEl,"click",m=>{let h=m.target.getAttribute("data-task-id");if(h){let k=this.tasks.find(g=>g.id===h);k&&this.scrollToDate(new Date(k.metadata.startDate||k.metadata.dueDate||k.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:Id,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:Id,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:Uj,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=yl[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 _j=require("obsidian");var Cr=require("obsidian");Y();var qk=class extends Cr.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,Cr.setIcon)(r,"list-plus"),r.setAttribute("aria-label",d("Toggle multi-select")),this.registerDomEvent(r,"click",()=>{this.toggleMultiSelect()}),Cr.Platform.isPhone){let i=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-close`});new Cr.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`}),Cr.Platform.isPhone&&this.rightHeaderEl.createEl("div",{cls:`${this.config.classNamePrefix}-sidebar-toggle`},s=>{new Cr.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,Cr.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(),Cr.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=ps(this.app,this.plugin,e);let t=(r=this.rightColumnEl)==null?void 0:r.querySelector(".view-toggle-btn");t&&(0,Cr.setIcon)(t,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.rightColumnEl.querySelector(".view-toggle-btn");e&&(0,Cr.setIcon)(e,this.isTreeView?"git-branch":"list");let t=this.config.classNamePrefix.replace("-","");us(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))}};Y();var ys=class extends qk{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:M6(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=Ot(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 Yi(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,_j.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 M6(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 tv=require("obsidian");var Qj=require("obsidian");var Kj=require("obsidian");Y();var Vt=require("obsidian");Y();var Yk=class extends Vt.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 Gr(this.app,e,this.plugin),i.availableChoices=r.tags;break;case"project":i=new ur(this.app,e,this.plugin),i.availableChoices=r.projects;break;case"context":i=new pr(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,Vt.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),k=u+f;h?(this.updateRow(h,m,t.has(m.id)),Array.from(this.bodyEl.children).indexOf(h)!==k&&p.push({element:h,index:k})):(h=this.getRowFromPool(),this.activeRows.set(m.id,h),this.updateRow(h,m,t.has(m.id)),p.push({element:h,index:k}))}),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 k=m[h];k&&k!==f?this.bodyEl.insertBefore(f,k):k||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;m<Math.min(t.cells.length,3);m++){let f=t.cells[m],h=p[m];if(!h)return!0;if(f.editable&&(f.columnId==="content"||f.columnId==="project"||f.columnId==="context")){let k=h.querySelector("input"),g=k?k.value:h.textContent||"",v=f.displayValue||"";if(g.trim()!==v.trim())return!0}else if(f.columnId==="tags"){let k=Array.isArray(f.value)?f.value:[],g=h.textContent||"",v=k.join(", ");if(g.trim()!==v.trim())return!0}}return!1}getRowFromPool(){let e=this.rowPool.pop();return e||(e=document.createElement("tr"),e.addClass("task-table-row")),e}returnRowToPool(e){this.cleanupRowEvents(e),e.empty(),e.className="task-table-row",["data-row-id","data-level","data-expanded","data-has-children"].forEach(r=>e.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,Vt.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,Vt.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,Vt.setIcon)(i,"check-circle"),r.addClass("completed");break;case"/":case">":(0,Vt.setIcon)(i,"clock"),r.addClass("in-progress");break;case"-":(0,Vt.setIcon)(i,"x-circle"),r.addClass("abandoned");break;case"?":(0,Vt.setIcon)(i,"help-circle"),r.addClass("planned");break;default:(0,Vt.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 Vt.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,Vt.setIcon)(s,"triangle"),s.addClass("highest"),o.textContent=d("Highest")):i===4?((0,Vt.setIcon)(s,"alert-triangle"),s.addClass("high"),o.textContent=d("High")):i===3?((0,Vt.setIcon)(s,"minus"),s.addClass("medium"),o.textContent=d("Medium")):i===2?((0,Vt.setIcon)(s,"chevron-down"),s.addClass("low"),o.textContent=d("Low")):i===1&&((0,Vt.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 Vt.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 On(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=Ot(r.task)||"",o=l,c=Yr(r.task)):i?(o=Ba(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 k=i?o:l,g=!1,v=()=>{!g&&this.app&&(g=!0,t.columnId==="project"?this.setupAutoComplete(h,"project"):t.columnId==="context"&&this.setupAutoComplete(h,"context"))};this.registerDomEvent(h,"blur",()=>{let b=h.value.trim();k!==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",v),this.registerDomEvent(h,"input",v)),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 k=this.plugin.app.vault.getFileByPath(t.value);k&&this.plugin.app.workspace.getLeaf(!0).openFile(k)}),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,k=e.createDiv({cls:"project-source-indicator table-indicator"}),g="",v="";switch(h.type){case"path":g="\u{1F4C1}",v=d("Auto-assigned from path")+`: ${h.source}`;break;case"metadata":g="\u{1F4C4}",v=d("Auto-assigned from file metadata")+`: ${h.source}`;break;case"config":g="\u2699\uFE0F",v=d("Auto-assigned from config file")+`: ${h.source}`;break;default:g="\u{1F517}",v=d("Auto-assigned")+`: ${h.source}`}k.innerHTML=`<span class="indicator-icon">${g}</span>`,k.title=v,c?(k.addClass("readonly-indicator"),e.addClass("readonly-cell")):k.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,Vt.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,Vt.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,Vt.setIcon)(r,i),r.title=t.expanded?t.level>0?d("Collapse"):d("Collapse subtasks"):t.level>0?d("Expand"):d("Expand subtasks")}}};var qj=require("obsidian");Y();var Gk=class extends qj.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 On(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 Gr(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 ur(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 pr(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 Yj=require("obsidian");Y();var fm=class extends Yj.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?Gt(t,s,this.pluginSettings):this.fallbackSort(t)}else{let s=[{field:this.currentSortField,order:this.currentSortOrder}];r=Gt(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 Gj=require("obsidian"),Kk=class extends Gj.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<this.totalRows&&l>.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 al=require("obsidian");Y();var Qk=class extends al.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,al.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,al.setIcon)(s,"eye");let o=this.columnBtn.createSpan("column-text");o.textContent=d("Columns");let l=this.columnBtn.createSpan("dropdown-arrow");(0,al.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,al.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 Xk=class extends Kj.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 Qk(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 Yk(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 Gk(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 fm(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.config.enableLazyLoading&&(this.virtualScroll=new Kk(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=Gt(this.filteredTasks,e,this.plugin.settings),this.filteredTasks,this.filteredTasks}}refreshDisplay(){if(this.isTreeView&&!this.treeManager&&(this.treeManager=new fm(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":Yr(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 Jk=class extends Qj.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 Xk(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 Qs=require("obsidian");var gm=require("obsidian");var $n=require("obsidian");Y();var hm=class extends $n.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 It(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=Tt(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,$n.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 It(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=Ya(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 $n.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 $n.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()<e.getTime()}getFileName(){let a=this.task.filePath.split("/");return a[a.length-1].replace(/\.md$/,"")}getTask(){return this.task}updateTask(a){this.task=a,this.render()}};Y();var Zk=class extends gm.Component{constructor(e,t,r,i,s={}){super();this.tasks=[];this.cardComponents=[];this.isContentLoaded=!1;this.intersectionObserver=null;this.scrollObserver=null;this.loadingEl=null;this.loadMoreEl=null;this.currentPage=0;this.pageSize=20;this.isLoadingMore=!1;this.hasMoreTasks=!0;this.renderedTasks=[];this.handleScroll=()=>{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,gm.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.top<t&&e.bottom>0&&e.left<r&&e.right>0,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;r<e.length;r++)if(e[r].id!==t[r].id)return!1;for(let r=0;r<e.length;r++)if(!this.areTasksContentEqual(e[r],t[r]))return!1;return!0}areTasksContentEqual(e,t){if(e.content!==t.content||e.status!==t.status||e.completed!==t.completed)return!1;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!1;let r=e.metadata.tags||[],i=t.metadata.tags||[];if(r.length!==i.length||!r.every(s=>i.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.length<this.tasks.length&&(this.renderedTasks.push(e),this.renderSingleTask(e)),`${e.id}${this.quadrant.id}`}removeTask(e){let t=this.tasks.findIndex(s=>s.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 hm(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<e.length;i+=r)e.slice(i,i+r).forEach(o=>{let l=document.createElement("div");l.className="tg-quadrant-card",l.setAttribute("data-task-id",o.id);let c=new hm(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+r<e.length&&await new Promise(o=>setTimeout(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.top<r.bottom&&i.bottom>r.top&&i.left<r.right&&i.right>r.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,gm.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;r<e.length;r+=t){let i=e.slice(r,r+t);await this.renderTaskBatch(i),this.renderedTasks.push(...i),r+t<e.length&&await new Promise(s=>setTimeout(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.length<this.pageSize*2&&this.loadMoreTasks()}};Y();var km=[{id:"urgent-important",title:d("Urgent & Important"),description:d("Do First - Crisis & emergencies"),priorityEmoji:"\u{1F53A}",urgentTag:"#urgent",importantTag:"#important",className:"quadrant-urgent-important"},{id:"not-urgent-important",title:d("Not Urgent & Important"),description:d("Schedule - Planning & development"),priorityEmoji:"\u23EB",importantTag:"#important",className:"quadrant-not-urgent-important"},{id:"urgent-not-important",title:d("Urgent & Not Important"),description:d("Delegate - Interruptions & distractions"),priorityEmoji:"\u{1F53C}",urgentTag:"#urgent",className:"quadrant-urgent-not-important"},{id:"not-urgent-not-important",title:d("Not Urgent & Not Important"),description:d("Eliminate - Time wasters"),priorityEmoji:"\u{1F53D}",className:"quadrant-not-urgent-not-important"}],ev=class extends Qs.Component{constructor(e,t,r,i=[],s={},o="quadrant"){super();this.columns=[];this.sortableInstances=[];this.tasks=[];this.allTasks=[];this.currentViewId="quadrant";this.filterComponent=null;this.activeFilters=[];this.sortOption={field:"priority",order:"desc",label:"Priority (High to Low)"};this.hideEmptyColumns=!1;this.app=e,this.plugin=t,this.currentViewId=o,this.containerEl=r.createDiv("tg-quadrant-component-container"),this.tasks=i,this.params=s}get quadrantConfig(){let e=this.plugin.settings.viewConfiguration.find(r=>r.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 Qs.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"),km.forEach(e=>{let t=this.columnContainerEl.createDiv(`tg-quadrant-column ${e.className}`),r=new Zk(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=!Qs.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0,s=new wr(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=km.find(p=>p.id===o),c=s.getAttribute("data-quadrant-id"),u=km.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 Qs.Notice(r,2e3)}showErrorFeedback(e,t){console.error("Task update error:",t);let r=`\u26A0\uFE0F ${d("Failed to update task")}`;new Qs.Notice(r,3e3)}categorizeTasksByQuadrant(e){let t=new Map;return km.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<e.length;l++)if(e[l].id!==t[l].id)return!0;let s=new Map(e.map(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,k;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=((k=i.metadata)==null?void 0:k.createdDate)||0;break;default:return 0}return this.sortOption.order==="asc"?s>o?1:s<o?-1:0:s<o?1:s>o?-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 km.forEach(r=>{var i;t[r.id]=((i=e.get(r.id))==null?void 0:i.length)||0}),t}};var pC=class{static createComponent(a,e,t,r,i,s){var l,c;let o=ut(r,e);switch(a){case"kanban":return new ks(t,r,i,[],{onTaskStatusUpdate:s.onTaskStatusUpdate,onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu},e);case"calendar":return new gs(t,r,i,[],{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onEventContextMenu:s.onEventContextMenu},e);case"gantt":return new vs(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 ys(i,t,r,o.specificConfig,e):null;case"forecast":return new ms(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 Jk(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 ev(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}}},Un=class extends tv.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=ut(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=pC.createComponent(i,e,this.app,this.plugin,this.parentEl,this.handlers);return s&&(s instanceof tv.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=ut(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 tv.Component&&this.parentComponent.removeChild(e),e.unload&&e.unload()}),this.components.clear()}getAllComponents(){return this.components.entries()}onunload(){this.cleanup()}};var Sr=require("obsidian");var Xj=require("obsidian");wi();function I6(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 ji=class extends Xj.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);I6(Sh(p),Sh(u)).reverse().forEach(f=>{let h=t[f],k=i(h),g=s?s(h):null,v=c.createDiv({cls:"heatmap-cell heatmap-cell-square"});v.dataset.date=f;let b=`${f}: `;h==null?b+="Missed":typeof h=="object"?v.hasAttribute("aria-label")||(b+="Recorded"):typeof h=="number"&&!g?b+=`${h} times`:typeof h=="number"&&g?b+=`${g instanceof HTMLElement?g.textContent:g}`:k?b+="Completed":b+="Missed",v.hasAttribute("aria-label")||v.setAttribute("aria-label",b),g?(v.addClass("has-custom-content"),typeof g=="string"?(v.addClass("has-text-content"),v.setText(g)):g instanceof HTMLElement&&v.appendChild(g)):k?v.addClass("filled"):v.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=yi(),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 vm=require("obsidian");Y();wi();var ym=class extends ji{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,vm.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 vm.Notice(`Chart for ${this.habit.name} (Not Implemented)`)});let l=t.createDiv({cls:"habit-checkbox-container"}).createEl("input",{type:"checkbox",cls:"habit-checkbox"}),c=yi(),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 vm.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 bm=require("obsidian");Y();wi();var wm=class extends ji{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 bm.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 bm.Notice(`${d("Goal reached")} ${this.habit.name}! \u2705`):this.habit.max&&s+1>this.habit.max&&new bm.Notice(`${d("Exceeded goal")} ${this.habit.name}! \u{1F4AA}`)}),i=yi(),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 Ad=require("obsidian");Y();wi();function A6(n,a){if(a<=0)return"";let e=n/a*100,t=8,r=2*Math.PI*t,i=r-e/100*r;return`
|
||
<svg viewBox="0 0 20 20" width="100%" height="100%">
|
||
<circle cx="10" cy="10" r="${t}" fill="transparent" stroke="var(--background-modifier-border)" stroke-width="3"></circle>
|
||
<circle cx="10" cy="10" r="${t}" fill="transparent"
|
||
stroke="var(--interactive-accent)"
|
||
stroke-width="3"
|
||
stroke-dasharray="${r}"
|
||
stroke-dashoffset="${i}"
|
||
transform="rotate(-90 10 10)">
|
||
</circle>
|
||
${n>0?`<text x="10" y="10" text-anchor="middle" dy=".3em" font-size="8px" fill="var(--text-muted)">${n}</text>`:""}
|
||
</svg>
|
||
`}var Tm=class extends ji{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,Ad.setIcon)(i,this.habit.icon||"calendar-clock"),r.createSpan({text:this.habit.name,cls:"habit-name"}).onClickEvent(()=>{new Ad.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",k=>k&&typeof k=="object"&&Object.keys(k).length>0,k=>{if(!k||typeof k!="object"||Object.keys(k).length===0)return null;let g=Object.keys(k).length,v=Array.isArray(this.habit.events)?this.habit.events.length:0,b=createDiv({cls:"pie-dot-container"});b.innerHTML=A6(g,v);let y=Object.entries(k).map(([w,x])=>x?`${w}: ${x}`:w).join(`
|
||
`);return b.setAttribute("aria-label",y||"No events completed"),b});let l=s.createDiv({cls:"habit-controls"}),c=yi(),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 Ad.DropdownComponent(l).addOption("",f?d("All Done!"):d("Select event...")).setValue("").onChange(k=>{k&&new av(this.plugin.app,k,g=>{this.toggleHabitCompletion(this.habit.id,{id:k,details:g})}).open(),h.setValue("")}).setDisabled(f||m===0);Array.isArray(this.habit.events)&&this.habit.events.forEach(k=>{k!=null&&k.name&&!u[k.name]&&h.addOption(k.name,k.name)}),h.selectEl.toggleClass("habit-event-dropdown",!0),this.renderProgressBar(l,p,m)}};var Xs=require("obsidian");wi();var xm=class extends ji{constructor(e,t,r){super(e,t,r);this.habit=e;this.container=t;this.plugin=r}onload(){super.onload(),this.render()}render(){var v,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,Xs.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",y=>typeof y=="number"&&y>0,y=>{var T;if(typeof y!="number"||y<=0)return null;let w=((T=this.habit.mapping)==null?void 0:T[y])||"?",x=createSpan({text:w});return this.habit.mapping&&this.habit.mapping[y]?(x.setAttribute("aria-label",`${this.habit.mapping[y]}`),x.addClass("has-tooltip")):x.setAttribute("aria-label",`Value: ${y}`),x});let l=s.createDiv({cls:"habit-controls"}),c=yi(),u=Object.keys(this.habit.mapping||{}).map(Number).includes(3)?3:Object.keys(this.habit.mapping||{}).map(Number).sort((y,w)=>y-w)[0]||1,p=(v=this.habit.completions[c])!=null?v:u,m=new Xs.ButtonComponent(l).setButtonText(((b=this.habit.mapping)==null?void 0:b[p])||"?").setClass("habit-mapping-button").onClick(()=>{var y;if(p>0&&((y=this.habit.mapping)!=null&&y[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 Xs.Notice(w)}else new Xs.Notice("Please select a valid value using the slider first.")}),f=new Xs.SliderComponent(l),h=Object.keys(this.habit.mapping||{}).map(Number).sort((y,w)=>y-w),k=h[0]||1,g=h[h.length-1]||5;f.setLimits(k,g,1).setValue(p).setDynamicTooltip().onChange(y=>{var w,x;p=y,(w=this.habit.mapping)==null||w[p],m.buttonEl.setText(((x=this.habit.mapping)==null?void 0:x[p])||"?")})}};Y();var _n=class extends Sr.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 Sr.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 Sr.ExtraButtonComponent(r).setIcon("plus").setTooltip(d("Create new habit")).onClick(()=>{this.openCreateHabitDialog()})}openCreateHabitDialog(){Promise.resolve().then(()=>(jT(),w2)).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 Sr.Notice(d("Habit created successfully")),this.redraw()}).open()})}renderHabitCard(e,t){switch(t.completions=t.completions||{},t.type){case"daily":let r=new ym(t,e,this.plugin);this.addChild(r);break;case"count":let i=new wm(t,e,this.plugin);this.addChild(i);break;case"scheduled":let s=new Tm(t,e,this.plugin);this.addChild(s);break;case"mapping":let o=new xm(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"}`})}}},av=class extends Sr.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 Sr.Setting(e).setName("Details").addText(t=>t.setPlaceholder(`Enter details for ${this.eventName}...`).onChange(r=>{this.details=r})),new Sr.Setting(e).addButton(t=>t.setButtonText("Cancel").setWarning().onClick(()=>{this.close()})).addButton(t=>t.setButtonText("Submit").setCta().onClick(()=>{if(this.close(),!this.details){new Sr.Notice(d("Please enter details"));return}this.onSubmit(this.details)}))}onClose(){let{contentEl:e}=this;e.empty()}};var b3=require("obsidian");var Jj=require("obsidian");var rl=class extends Jj.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 Ii(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 Zj=require("obsidian");var il=class extends Zj.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 Ii(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=Xo(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 wv=require("obsidian");nv();var s3=require("obsidian"),ov=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 s3.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(k=>k.tag),u=(e=r==null?void 0:r.frontmatter)==null?void 0:e.tags,m=(Array.isArray(u)?u:u!==void 0?[u]:[]).map(k=>{let g=String(k||"");return g.startsWith("#")?g:`#${g}`});if([...c,...m].map(k=>String(k||"").toLowerCase()).some(k=>k===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(),dl(iR)),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&&r<t.length-2?t.slice(r+1,t.length-1).join("/"):t[t.length-2]||""}return""}case"metadata":{let e=this.defaultProjectNaming.metadataKey;if(!e)return null;let t=this.getFileMetadata(a);if(t&&t[e]){let r=t[e];return typeof r=="string"?r.trim():String(r)}return null}default:return null}}updateOptions(a){a.configFileName!==void 0&&(this.configFileName=a.configFileName),a.searchRecursively!==void 0&&(this.searchRecursively=a.searchRecursively),a.metadataKey!==void 0&&(this.metadataKey=a.metadataKey),a.pathMappings!==void 0&&(this.pathMappings=a.pathMappings),a.metadataMappings!==void 0&&(this.metadataMappings=a.metadataMappings),a.defaultProjectNaming!==void 0&&(this.defaultProjectNaming=a.defaultProjectNaming),a.enhancedProjectEnabled!==void 0&&this.setEnhancedProjectEnabled(a.enhancedProjectEnabled),a.metadataConfigEnabled!==void 0&&(this.metadataConfigEnabled=a.metadataConfigEnabled),a.configFileEnabled!==void 0&&(this.configFileEnabled=a.configFileEnabled),a.detectionMethods!==void 0&&(this.detectionMethods=a.detectionMethods||[]),this.clearCache()}getWorkerConfig(){return{pathMappings:this.pathMappings,metadataMappings:this.metadataMappings,defaultProjectNaming:this.defaultProjectNaming,metadataKey:this.metadataKey}}getDetectionMethods(){return this.detectionMethods||[]}async getProjectConfigData(a){return await this.getProjectConfig(a)}getCacheStats(){let a=Array.from(this.configCache.values()).map(i=>JSON.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 Od=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 lv=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 ov(i),this.projectDataCache=new Od(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 Nd=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!(a<r||a>i)}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.CACHE_TTL}cacheFileDateInfo(a,e){if(this.fileDateCache.size>=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(a<r||a>i){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 dv=class{constructor(a,e,t){this.resolutionCache=new Map;this.CACHE_TTL=600*1e3;this.MAX_CACHE_SIZE=1e3;this.dateInheritanceService=new Nd(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.CACHE_TTL}cacheResolution(a,e,t){if(this.resolutionCache.size>=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 cv=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 dv(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=k=>r!=="tags"?k:k.filter(g=>typeof g=="string"&&g.trim().length>0).map(g=>this.normalizeTag(g));if(r==="tags"&&!this.fileFrontmatterInheritanceEnabled){try{console.debug("[Augmentor][Tags] Inheritance disabled. Keeping only task tags.",{taskTags:c(i)})}catch(k){}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}}};pi();Dh();var pv=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<this.maxWorkerFailures&&(this.workersDisabled=!1,this.workerFailureCount=0)}isWorkerProcessingEnabled(){return this.enableWorkerProcessing&&!this.workersDisabled}async parseFileTasksMainThread(a){this.metrics.fallbackToMainThread++,console.warn(`WorkerOrchestrator: Falling back to main thread parsing for ${a.path}`);let{ConfigurableTaskParser:e}=await Promise.resolve().then(()=>(so(),oR)),{CanvasParser:t}=await Promise.resolve().then(()=>(uv(),o3)),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 mv=require("obsidian");pi();var fv=class{constructor(a,e,t){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=a,this.vault=e,this.metadataCache=t}initialize(){this.eventRefs.push(Kt(this.app,se.WRITE_OPERATION_START,({path:a})=>{this.skipNextModify.add(a),setTimeout(()=>this.skipNextModify.delete(a),5e3)})),this.eventRefs.push(Kt(this.app,se.WRITE_OPERATION_COMPLETE,({path:a})=>{setTimeout(()=>{this.skipNextModify.delete(a)},100)})),this.eventRefs.push(this.vault.on("create",this.onFileCreate.bind(this)),this.vault.on("modify",this.onFileModify.bind(this)),this.vault.on("delete",this.onFileDelete.bind(this)),this.vault.on("rename",this.onFileRename.bind(this))),this.eventRefs.push(this.metadataCache.on("changed",this.onMetadataChange.bind(this)),this.metadataCache.on("resolve",this.onMetadataResolve.bind(this))),`${this.eventRefs.length}`}onFileCreate(a){this.app.workspace.layoutReady&&this.isRelevantFile(a)&&(`${a.path}`,ge(this.app,se.FILE_UPDATED,{path:a.path,reason:"create",timestamp:Date.now()}))}onFileModify(a){if(!this.isRelevantFile(a))return;if(this.skipNextModify.has(a.path)){this.skipNextModify.delete(a.path),`${a.path}`;return}let e=this.pendingFileChanges.get(a.path);e||(e=(0,mv.debounce)(()=>{this.emitFileUpdated(a.path,"modify")},this.DEBOUNCE_DELAY,!1),this.pendingFileChanges.set(a.path,e)),e()}onFileDelete(a){this.isRelevantFile(a)&&(`${a.path}`,this.pendingFileChanges.has(a.path)&&this.pendingFileChanges.delete(a.path),ge(this.app,se.FILE_UPDATED,{path:a.path,reason:"delete",timestamp:Date.now()}))}onFileRename(a,e){this.isRelevantFile(a)&&(`${e}${a.path}`,this.pendingFileChanges.has(e)&&this.pendingFileChanges.delete(e),ge(this.app,se.FILE_UPDATED,{path:e,reason:"delete",timestamp:Date.now()}),ge(this.app,se.FILE_UPDATED,{path:a.path,reason:"rename",timestamp:Date.now()}))}onMetadataChange(a){if(!this.isRelevantFile(a))return;if(this.skipNextModify.has(a.path)){`${a.path}`;return}let e=this.pendingMetadataChanges.get(a.path);e||(e=(0,mv.debounce)(()=>{this.emitFileUpdated(a.path,"frontmatter")},this.DEBOUNCE_DELAY,!1),this.pendingMetadataChanges.set(a.path,e)),e()}onMetadataResolve(a){this.isRelevantFile(a)&&this.addToBatch(a.path)}addToBatch(a){this.pendingBatch.add(a),this.debouncedBatch||(this.debouncedBatch=(0,mv.debounce)(()=>this.processBatch(),this.BATCH_DELAY,!1)),this.debouncedBatch()}processBatch(){if(this.pendingBatch.size===0)return;let a=Array.from(this.pendingBatch);this.pendingBatch.clear(),`${a.length}`,ge(this.app,se.TASK_CACHE_UPDATED,{changedFiles:a,stats:{total:a.length,changed:a.length},timestamp:Date.now(),seq:Date.now()})}emitFileUpdated(a,e){`${a}${e}`,ge(this.app,se.FILE_UPDATED,{path:a,reason:e,timestamp:Date.now()})}isRelevantFile(a){var t;if(!a||typeof a.path!="string")return!1;let e=(t=a.extension)==null?void 0:t.toLowerCase();return!(!e||this.IGNORED_EXTENSIONS.has(`.${e}`)||!this.RELEVANT_EXTENSIONS.has(e)||a.path.startsWith(".")||a.path.includes("/."))}triggerFileUpdate(a,e="modify"){this.emitFileUpdated(a,e)}triggerBatchUpdate(a){a.length!==0&&(`${a.length}`,ge(this.app,se.TASK_CACHE_UPDATED,{changedFiles:a,stats:{total:a.length,changed:a.length},timestamp:Date.now(),seq:Date.now()}))}flush(){for(let a of Array.from(this.pendingFileChanges.keys()))this.pendingFileChanges.delete(a),this.emitFileUpdated(a,"modify");for(let a of Array.from(this.pendingMetadataChanges.keys()))this.pendingMetadataChanges.delete(a),this.emitFileUpdated(a,"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.eventRefs.forEach(a=>{this.app.vault.offref(a)}),this.eventRefs.length=0}};pi();var hv=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=Ft.next(),ge(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),ge(this.app,se.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:Ft.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=[],ge(this.app,se.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:Ft.next(),destroyed:!0}),this.isInitialized=!1}};pi();var Ld={enabled:!0,taskFields:["dueDate","status","priority","assigned"],requireAllFields:!1},jd={enabled:!0,taskTags:["#task","#actionable","#todo"],matchMode:"exact"},Hd={enabled:!1,templatePaths:["Templates/Task Template.md"],checkTemplateMetadata:!0},Bd={enabled:!1,taskPaths:["Projects/","Tasks/"],matchMode:"prefix"},l3={contentSource:"filename",stripExtension:!0,defaultStatus:" ",defaultPriority:void 0,preferFrontmatterTitle:!0},d3={enableChildRelationships:!0,enableMetadataInheritance:!0,inheritanceFields:["project","priority","context"]},c3={enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5},u3={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},O6={enabled:!1,recognitionStrategies:{metadata:Ld,tags:jd,templates:Hd,paths:Bd},fileTaskProperties:l3,relationships:d3,performance:c3,statusMapping:u3},gv=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:O6.enabled,recognitionStrategies:{metadata:{...Ld,...(t=a.recognitionStrategies)==null?void 0:t.metadata},tags:{...jd,...(r=a.recognitionStrategies)==null?void 0:r.tags},templates:{...Hd,...(i=a.recognitionStrategies)==null?void 0:i.templates},paths:{...Bd,...(s=a.recognitionStrategies)==null?void 0:s.paths}},fileTaskProperties:{...l3,...a.fileTaskProperties},relationships:{...d3,...a.relationships},performance:{...c3,...a.performance},statusMapping:{...u3,...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:{...Ld,enabled:!0},tags:{...jd,enabled:!1},templates:{...Hd,enabled:!1},paths:{...Bd,enabled:!1}}};case"metadata-only":return{enabled:!0,recognitionStrategies:{metadata:{...Ld,enabled:!0},tags:{...jd,enabled:!1},templates:{...Hd,enabled:!1},paths:{...Bd,enabled:!1}}};case"tag-only":return{enabled:!0,recognitionStrategies:{metadata:{...Ld,enabled:!1},tags:{...jd,enabled:!0},templates:{...Hd,enabled:!1},paths:{...Bd,enabled:!1}}};case"full":return{enabled:!0,recognitionStrategies:{metadata:{...Ld,enabled:!0},tags:{...jd,enabled:!0},templates:{...Hd,enabled:!1},paths:{...Bd,enabled:!1}}};default:return{}}}};var Sm=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 gv(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(Kt(this.app,se.FILE_UPDATED,a=>{a!=null&&a.path&&this.handleFileUpdate(a.path,a.reason)})),this.eventRefs.push(Kt(this.app,"task-genius:file-metadata-changed",a=>{a!=null&&a.path&&this.handleFileMetadataChange(a.path)})),this.eventRefs.push(Kt(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=Ft.next();this.lastUpdateSeq=t,ge(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,k=h.caseSensitive?f:String(f).toLowerCase();for(let[b,y]of Object.entries(h.metadataToSymbol||{}))if((h.caseSensitive?b:b.toLowerCase())===k)return y;let g={completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-",canceled:"-","not-started":" ","not started":" "},v=String(f).toLowerCase();return g[v]!==void 0?g[v]: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;t<a.length;t++){let r=a.charCodeAt(t);e=(e<<5)-e+r,e=e&e}return e.toString(36)}shouldUpdateFileTask(a,e){return this.fileTaskCache.has(a)}updateStatistics(a,e){this.stats.recognitionBreakdown[a]+=e,this.stats.trackedFileCount+=e,this.stats.lastUpdate=Date.now(),this.stats.lastUpdateSeq=this.lastUpdateSeq}emitFileTaskUpdate(a,e){let t=Ft.next();this.lastUpdateSeq=t,ge(this.app,se.FILE_TASK_UPDATED,{action:a,task:e,timestamp:Date.now(),seq:t}),`${a}${e.filePath}`}isRelevantFile(a){return!(!a.endsWith(".md")||a.startsWith(".")||a.includes("/.")||this.fileFilterManager&&!this.fileFilterManager.shouldIncludePath(a,"file"))}async performInitialScan(){let a=this.app.vault.getMarkdownFiles();`${a.length}`;let e=0,t=0,r=0;for(let i of a)if(this.isRelevantFile(i.path)){r++;try{await this.shouldCreateFileTask(i.path)&&await this.createFileTask(i.path)&&t++,e++}catch(s){console.error(`[FileSource] Error scanning ${i.path}:`,s)}}if(`${a.length}${r}${e}${t}`,t===0&&r>0){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},ge(this.app,se.FILE_TASK_REMOVED,{filePath:null,timestamp:Date.now(),seq:Ft.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 k3=require("obsidian");var Vd=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 Dm(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 vC(){return Dm('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<n.length;e++)if(t(n[e]))return e}function Tt(n){return(t,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<r?7:0)+s-r;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function Te(n,t){var m,d,f,g,p,y,M,E;let e=T(n,t==null?void 0:t.in),r=e.getFullYear(),a=A(),s=(E=(M=(g=(f=t==null?void 0:t.firstWeekContainsDate)!=null?f:(d=(m=t==null?void 0:t.locale)==null?void 0:m.options)==null?void 0:d.firstWeekContainsDate)!=null?g:a.firstWeekContainsDate)!=null?M:(y=(p=a.locale)==null?void 0:p.options)==null?void 0:y.firstWeekContainsDate)!=null?E:1,i=k((t==null?void 0:t.in)||n,0);i.setFullYear(r+1,0,s),i.setHours(0,0,0,0);let o=N(i,t),c=k((t==null?void 0:t.in)||n,0);c.setFullYear(r,0,s),c.setHours(0,0,0,0);let u=N(c,t);return+e>=+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<e.end)}findNextUnprotectedHash(t=0){let e=t;for(;e<this.content.length;){let r=this.content.indexOf("#",e);if(r===-1)return-1;if(!this.isPositionProtected(r))return r;e=r+1}return-1}detectObsidianLinks(){let t=/\\[\\[([^\\]]+)\\]\\]/g,e;for(;(e=t.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"obsidian-link",content:e[0]})}detectMarkdownLinks(){let t=/\\[([^\\]]*)\\]\\(([^)]+)\\)/g,e;for(;(e=t.exec(this.content))!==null;)this.protectedRanges.push({start:e.index,end:e.index+e[0].length,type:"markdown-link",content:e[0]})}detectDirectUrls(){let t=/(?:https?|ftp|mailto|file):\\/\\/[^\\s<>"{}|\\\\^`\\[\\]]+/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=a<this.content.length?this.content[a]:" ",i=/\\s|^|[^a-zA-Z0-9]/.test(r),o=/\\s|$|[^a-zA-Z0-9]/.test(s);return i&&o}mergeAndSortRanges(){if(this.protectedRanges.length===0)return[];this.protectedRanges.sort((r,a)=>r.start-a.start);let t=[],e=this.protectedRanges[0];for(let r=1;r<this.protectedRanges.length;r++){let a=this.protectedRanges[r];e.end>a.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(;o<i.length;){if(c++,c>this.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+1<i.length?this.extractMultilineComment(i,o+1,f):[void 0,0];o+=oe;let ce=this.extractLegacyPriority(L),de={id:y,content:re,status:te,rawStatus:H,completed:ee,indentLevel:E,parentId:M,childrenIds:[],metadata:I,tags:z,comment:ie,lineNumber:o+1,actualIndent:f,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:p,filePath:e,originalMarkdown:m,tgProject:se,line:o,children:[],priority:ce,startDate:this.extractLegacyDate(I,"startDate"),dueDate:this.extractLegacyDate(I,"dueDate"),scheduledDate:this.extractLegacyDate(I,"scheduledDate"),completedDate:this.extractLegacyDate(I,"completedDate"),createdDate:this.extractLegacyDate(I,"createdDate"),recurrence:I.recurrence,project:I.project,context:I.context};if(M&&this.tasks.length>0){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(;r<e.length&&/\\d/.test(e[r]);)r++;return r>0&&r<e.length&&(e[r]==="."||e[r]===")")?e.slice(0,r+1).join(""):t.charAt(0)||" "}isTaskLine(t){return lt.test(t)}parseTaskContent(t){let e=t.match(lt);if(e&&e[4]!==void 0&&e[5]!==void 0){let r=e[4];return[e[5].trim(),r]}return[t," "]}extractMetadataAndTagsInternal(t){var o;let e={},r=[],a="",s=t,i=0;for(;i<this.config.maxMetadataIterations;){i++;let c=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode==="dataview-only"||this.config.metadataParseMode==="both")){let u=this.extractDataviewMetadata(s);if(u){let[m,d,f]=u;e[m]=d,m==="priority"&&console.log("[Parser] Dataview priority found:",{key:m,value:d,remaining:s.substring(0,50)}),s=f,c=!0;continue}}if(!c&&this.config.parseMetadata&&(this.config.metadataParseMode==="emoji-only"||this.config.metadataParseMode==="both")){let u=this.extractEmojiMetadata(s);if(u){let[m,d,f,g]=u,[p,y,M]=this.extractTagsOnly(f);for(let E of M)r.push(E);for(let[E,O]of Object.entries(y))e[E]=O;e[m]=d,a+=p,s=g,c=!0;continue}}if(!c&&this.config.parseTags){let u=this.extractContext(s);if(u){let[m,d,f]=u;e.context=m,a+=d,s=f,c=!0;continue}}if(!c&&this.config.parseTags){let u=this.extractTag(s);if(u){let[m,d,f]=u,g=m.startsWith("#")?m.substring(1):m,p=g.indexOf("/");if(p!==-1){let y=g.substring(0,p),M=g.substring(p+1),E=(o=this.config.specialTagPrefixes[y])!=null?o:this.config.specialTagPrefixes[y.toLowerCase()];console.debug("[TPB] Tag parse",{tag:m,prefix:y,mappedKey:E,keys:Object.keys(this.config.specialTagPrefixes)}),E&&this.config.metadataParseMode!=="none"?e[E]=M:r.push(m)}else r.push(m);a+=d,s=f,c=!0;continue}}if(!c){a+=s;break}}return[a.trim(),e,r]}extractTimeComponents(t,e){if(!this.timeParsingService)return F(v({},e),{tags:this.safeParseTagsField(e.tags),children:[]});try{let r={},a=[],s=[];try{let o=this.timeParsingService.parseTimeComponents(t);r=o.timeComponents,a=o.errors||[],s=o.warnings||[]}catch(o){console.warn("[MarkdownTaskParser] timeParsingService.parseTimeComponents failed, continuing without time components:",o),r={},a=[],s=[]}s.length>0&&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||y<e.pos)&&(e={pos:y,emoji:g,key:p})}if(!e)return null;let r=t.substring(0,e.pos),a=t.substring(e.pos+e.emoji.length),s=a.match(/^\\s*/),i=s?s[0].length:0,o=a.substring(i),c=o.length;for(let g=0;g<o.length;g++){let p=o[g];if(Object.keys(this.config.emojiMapping).some(M=>o.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+1<o.length&&(o[g+1]==="#"||o[g+1]==="@")){c=g;break}if(p==="#"||p==="@"){c=g;break}}let u=o.substring(0,c).trim(),m;if(e.key==="dependsOn"&&u?m=u.split(",").map(g=>g.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]==="#")for(;s<t.length&&t[s]!==" ";)s++;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<s.length;o++){let c=s[o],u=c.charCodeAt(0);if(u>=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<a.length;i++){let o=a[i],c=o.charCodeAt(0);if(c>=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(s<t)return[r,a+1]}return[void 0,0]}updateIndentStack(t,e,r){let a=0;for(;this.indentStack.length>0;){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(;s<t.length;){let o=t[s],c=o.trimStart();if(o.length-c.length>r&&!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=`<!-- Node ID: ${i.id} -->\n${o}`),this.options.includePositions&&(o=`<!-- Position: x=${i.x}, y=${i.y} -->\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;o<s.length;o++){let c=s[o],u=c.match(/^(\\s*[-*+]|\\d+\\.)\\s*\\[(.)\\]\\s*(.*)$/);if(u){let[,,m,d]=u,f=m.toLowerCase()==="x";i.push({id:`${n}-L${o}`,content:d.trim(),filePath:n,line:o,completed:f,status:m,originalMarkdown:c,metadata:{tags:[],children:[],heading:[]}})}}return i}function Xt(n,t){if(!t.useDailyNotePathAsDate)return;let e=n.replace(/\\.[^/.]+$/,"");t.dailyNotePath&&e.startsWith(t.dailyNotePath)&&(e=e.substring(t.dailyNotePath.length),e.startsWith("/")&&(e=e.substring(1)));let r=Ue(e,t.dailyNoteFormat,new Date);if(isNaN(r.getTime())&&e.includes("/"))return Xt(e.substring(e.indexOf("/")+1),F(v({},t),{dailyNotePath:""}));if(!isNaN(r.getTime()))return r.getTime()}function qt(n,t,e,r,a,s){var o,c,u,m;let i=performance.now();try{let d;(o=s==null?void 0:s.fileCache)!=null&&o.frontmatter&&(d=s.fileCache.frontmatter);let f=[];if(e==="canvas"){let p={settings:a};f=new rt(Z(a.preferMetadataFormat,p)).parseCanvasFile(t,n)}else e==="md"?f=oa(n,t,a,d):(console.warn(`Worker: Unsupported file type: ${e} for file: ${n}`),f=[]);if(e==="md"&&a.fileParsingConfig&&(a.fileParsingConfig.enableFileMetadataParsing||a.fileParsingConfig.enableTagBasedTaskParsing||(c=a.fileMetadataInheritance)!=null&&c.enabled))try{let y=new tt(a.fileParsingConfig,(m=(u=a.projectConfig)==null?void 0:u.metadataConfig)==null?void 0:m.detectionMethods).parseFileForTasks(n,t,s==null?void 0:s.fileCache);f.push(...y.tasks),y.errors.length>0&&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 p3(){let n,a,t=new Promise((r,i)=>{n=r,a=i});return t.resolve=n,t.reject=a,t}var kv=Fe(g3()),L6={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 vv=class extends k3.Component{constructor(e,t,r={}){super();this.workers=new Map;this.queues=[new kv.Queue,new kv.Queue,new kv.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={...L6,...r},this.vault=e,this.metadataCache=t,this.initializeWorkers()}setFileParsingConfig(e,t){e.enableFileMetadataParsing||e.enableTagBasedTaskParsing?this.fileMetadataParser=new Vd(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<e;t++)try{let r=this.newWorker();this.workers.set(r.id,r),this.log(`Initialized worker #${r.id}`)}catch(r){console.error("Failed to initialize worker:",r)}this.initialized=!0,this.log(`Initialized ${this.workers.size} workers (requested ${e})`),this.workers.size===0&&console.warn("No workers could be initialized, falling back to main thread processing")}newWorker(){let e={id:this.nextWorkerId++,worker:new vC,availableAt:Date.now()};return e.worker.onmessage=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;s<this.maxRetries?(this.log(`Retrying task for ${r.path} (attempt ${s+1})`),this.queueTaskWithPriority(r,i,o,s+1)):i.reject("Worker error after max retries"),e.active=void 0,this.schedule()}},e}setTaskIndexer(e){this.taskIndexer=e}updateCacheHitRatio(){let e=this.stats.filesSkipped+this.stats.filesProcessed;this.stats.cacheHitRatio=e>0?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=p3();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<l){c++;let m=u.shift();if(m)try{await m()}catch(f){console.error("Error processing batch task:",f)}finally{c--,await p()}}};for(let m=0;m<r.length;m+=10){let f=r.slice(m,m+10);u.push(async()=>{let h=f.map(async v=>{try{let b=await this.processFile(v,t);return i.set(v.path,b),{file:v,tasks:b}}catch(b){return console.error(`Error processing file ${v.path}:`,b),{file:v,tasks:[]}}}),k=await Promise.all(h);this.processedFiles+=k.length;let g=Math.round(this.processedFiles/this.totalFilesToProcess*100);(g%10===0||this.processedFiles===this.totalFilesToProcess)&&this.log(`Batch progress: ${g}% (${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<this.queues.length;o++)if(!this.queues[o].isEmpty()){e=this.queues[o].dequeue();break}if(!e)return;let t=this.availableWorker();if(!t){this.queues[e.priority].enqueue(e);return}let{file:r,promise:i,priority:s}=e;t.active=[r,i,0,s];try{this.getTaskMetadata(r).then(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;s<this.maxRetries?(this.log(`Retrying task for ${r.path} due to error: ${l.error}`),this.queueTaskWithPriority(r,i,o,s+1)):(i.reject(new Error(l.error)),this.outstanding.delete(r.path))}else if(t.type==="parseResult"){let c=[...t.tasks];if(this.fileMetadataParser)try{let u=this.metadataCache.getFileCache(r),p=await this.vault.cachedRead(r),m=this.fileMetadataParser.parseFileForTasks(r.path,p,u||void 0);c.push(...m.tasks),m.errors.length>0&&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.size<this.options.maxWorkers){let t=this.newWorker();return this.workers.set(t.id,t),t}}terminate(e){e.worker.terminate(),e.active&&(e.active[1].reject("Terminated"),e.active=void 0),this.log(`Terminated worker #${e.id}`)}cleanupWorkers(){for(let e of this.workers.values())this.terminate(e);this.workers.clear();for(let e of this.queues)for(;!e.isEmpty();){let t=e.dequeue();t&&(t.promise.reject("Workers being reinitialized"),this.outstanding.delete(t.file.path))}this.log("Cleaned up existing workers")}unthrottle(){let e=Date.now();for(let t of this.workers.values())t.availableAt=e;this.schedule()}onunload(){this.active=!1;for(let e of this.workers.values())this.terminate(e),this.workers.delete(e.id);for(let e of this.queues)for(;!e.isEmpty();){let t=e.dequeue();t&&(t.promise.reject("Terminated"),this.outstanding.delete(t.file.path))}this.initialized=!1,this.log("Worker pool shut down")}getPendingTaskCount(){return this.queues.reduce((e,t)=>e+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 bC(){return Dm('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 yv=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 Od(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.maxWorkers;a++){let e=new bC;e.onmessage=t=>{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;o<this.workers.length;o++){let l=o*r,c=Math.min(l+r,t.length),u=t.slice(l,c);u.length>0&&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 Em=class{constructor(){this.children=new Map;this.isEndOfPath=!1;this.isFolder=!1}},Pm=class{constructor(){this.root=new Em}insert(a,e=!0){let t=this.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 Em),r=r.children.get(i);r.isEndOfPath=!0,r.isFolder=e}contains(a){let e=this.normalizePath(a).split("/").filter(r=>r.length>0),t=this.root;for(let r=0;r<e.length;r++){let i=e[r];if(t.children.has(i)){if(t=t.children.get(i),t.isEndOfPath&&t.isFolder)return!0}else return!1}return t.isEndOfPath}clear(){this.root=new Em}normalizePath(a){return a.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}},Wd=class{constructor(a){this.folderTrie=new Pm;this.fileSet=new Set;this.patternRegexes=[];this.cache=new Map;this.folderTrieInline=new Pm;this.folderTrieFile=new Pm;this.fileSetInline=new Set;this.fileSetFile=new Set;this.patternRegexesInline=[];this.patternRegexesFile=[];this.config=a,this.rebuildIndexes()}updateConfig(a){this.config=a,this.rebuildIndexes(),this.clearCache()}shouldIncludeFile(a,e="both"){if(!this.config.enabled)return!0;let t=a.path;if(this.cache.has(t))return this.cache.get(t);let r=this.evaluateFile(t,e);return this.cache.set(t,r),r}shouldIncludeFolder(a,e="both"){if(!this.config.enabled)return!0;let t=a.path;if(this.cache.has(t))return this.cache.get(t);let r=this.evaluateFolder(t,e);return this.cache.set(t,r),r}shouldIncludePath(a,e="both"){if(!this.config.enabled)return!0;if(this.cache.has(a))return this.cache.get(a);let t=this.evaluatePath(a,e);return this.cache.set(a,t),t}getStats(){return{cacheSize:this.cache.size,rulesCount:this.config.rules.filter(a=>a.enabled).length,enabled:this.config.enabled}}clearCache(){this.cache.clear()}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,"")}};uv();wc();async function v3(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 Vd(n.settings.fileParsingConfig,void 0),{tasks:o}=s.parseFileForTasks(a,i,r);return o}so();var bv=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,k,g,v,b,y,w,x,T,C;this.queryAPI=new Cm(a,e,t),this.repository=this.queryAPI.getRepository(),this.projectResolver=new lv(a,e,t,i),this.augmentor=new cv({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 Wd(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,wv.debounce)(()=>{this.restoreByFilter()},500,!1);let s=new vv(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 yv({vault:e,metadataCache:t,projectConfigManager:this.projectResolver.getConfigManager()}),l=(w=(y=(g=(k=(h=this.plugin.settings)==null?void 0:h.fileSource)==null?void 0:k.performance)==null?void 0:g.enableWorkerProcessing)!=null?y:(b=(v=this.plugin.settings)==null?void 0:v.fileParsingConfig)==null?void 0:b.enableWorkerProcessing)!=null?w:!0;if(this.workerOrchestrator=new pv(s,o,{enableWorkerProcessing:l}),this.obsidianSource=new fv(a,e,t),this.icsSource=new hv(a,()=>this.plugin.getIcsManager()),this.timeParsingService=new sd(((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 Sm(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 Wd(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<u.length;f+=p){let h=u.slice(f,f+p);await this.processBatch(h)}await this.repository.persist(),`${(await this.queryAPI.getAllTasks()).length}`}this.obsidianSource.initialize(),this.icsSource.initialize(),this.fileSource&&this.fileSource.initialize(),this.subscribeToEvents(),ge(this.app,se.CACHE_READY,{initial:!0,timestamp:Date.now(),seq:Ft.next()}),`${Date.now()-a}`}catch(i){throw console.error("[DataflowOrchestrator] Initialization failed:",i),i}}subscribeToEvents(){this.eventRefs.push(Kt(this.app,se.ICS_EVENTS_UPDATED,async a=>{let{events:e,seq:t}=a;`${(e==null?void 0:e.length)||0}`,e&&await this.repository.updateIcsEvents(e,t)})),this.eventRefs.push(Kt(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(Kt(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(Kt(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(Kt(this.app,se.TASK_UPDATED,async a=>{let{task:e}=a;e&&(`${e.id}${e.filePath}`,await this.repository.updateSingleTask(e))})),this.eventRefs.push(Kt(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(Kt(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(Kt(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 g=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;m=g?o.data:[],f=await this.projectResolver.get(t)}else{e?`${t}`:`${t}`,f=await this.projectResolver.get(t);try{let v=this.workerOrchestrator.taskWorkerManager;v&&v.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(v){console.warn("[DataflowOrchestrator] Failed to update worker settings for single-file parse:",v)}let g=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;g?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),k={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(k)}this.lastProcessedSeq=Ft.next(),await this.repository.updateFile(t,u,this.lastProcessedSeq)}catch(i){console.error(`Error processing file ${t}:`,i),ge(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,k,g,v,b,y,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:(k=(h=I==null?void 0:I.metadataConfig)==null?void 0:h.enabled)!=null?k:!1,configFileEnabled:(v=(g=I==null?void 0:I.configFile)==null?void 0:g.enabled)!=null?v:!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((y=a==null?void 0:a.fileSource)!=null&&y.enabled&&!this.fileSource){this.fileSource=new Sm(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 Wd(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))||[],k=await((r=(t=this.storage).listRawPaths)==null?void 0:r.call(t))||[],g=new Set([...h,...k]);s=Array.from(g).filter(v=>!f.has(v)&&this.fileFilterManager.shouldIncludePath(v,"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,k;for(let g of f)try{let v=this.vault.getAbstractFileByPath(g);if(!v){this.suppressedInline.delete(g);continue}let b=await this.storage.loadAugmented(g);if(((h=b==null?void 0:b.data)==null?void 0:h.length)!==void 0){await this.repository.updateFile(g,b.data,void 0,{forceEmit:!0}),l++,this.suppressedInline.delete(g);continue}let y=await this.storage.loadRaw(g);if(y!=null&&y.data){let w=await this.projectResolver.get(g),x=this.metadataCache.getFileCache(v),T={filePath:g,fileMeta:(x==null?void 0:x.frontmatter)||{},projectName:(k=w.tgProject)==null?void 0:k.name,projectMeta:{...w.enhancedMetadata,tgProject:w.tgProject},tasks:y.data},C=await this.augmentor.merge(T);await this.repository.updateFile(g,C),c++,this.suppressedInline.delete(g);continue}await this.processFileImmediate(v,!1),u++,this.suppressedInline.delete(g)}catch(v){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:g,e:v})}};for(let f=0;f<s.length;f+=this.RESTORE_BATCH_SIZE){let h=s.slice(f,f+this.RESTORE_BATCH_SIZE);await p(h),f+this.RESTORE_BATCH_SIZE<s.length&&await new Promise(k=>setTimeout(k,this.RESTORE_BATCH_INTERVAL_MS))}for(let f of o)try{ge(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=un(this.plugin.settings.preferMetadataFormat||"tasks",this.plugin);console.debug("[TPB] Parser specialTagPrefixes:",l.specialTagPrefixes);let u=new io(l,this.timeParsingService).parseLegacy(i,a.path,o,void 0,e);r.push(...u);let p=await v3(this.plugin,a.path);r.push(...p)}else if(t==="canvas"){let i=await Hi.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(x=>x.path===u);if(!m)continue;let f=await this.vault.adapter.stat(u),h=f==null?void 0:f.mtime,k=await this.vault.cachedRead(m),g=this.storage.storeRaw(u,p,k,h),v=await c.get(u);await g;let b=this.metadataCache.getFileCache(m),y={filePath:u,fileMeta:(b==null?void 0:b.frontmatter)||{},projectName:(s=v==null?void 0:v.tgProject)==null?void 0:s.name,projectMeta:v?{...v.enhancedMetadata||{},tgProject:v.tgProject}:{},tasks:p},w=await this.augmentor.merge(y);t.set(u,w)}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=Ft.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),f=await this.storage.loadAugmented(l);if(p&&f&&this.storage.isRawValid(l,p,m,u)){let h=f.data;e.set(l,h),r++}else if(p&&this.storage.isRawValid(l,p,m,u)){let h=p.data,k=await this.projectResolver.get(l),g=this.metadataCache.getFileCache(o),v={filePath:l,fileMeta:(g==null?void 0:g.frontmatter)||{},projectName:(i=k.tgProject)==null?void 0:i.name,projectMeta:{...k.enhancedMetadata,tgProject:k.tgProject},tasks:h},b=await this.augmentor.merge(v);e.set(l,b),r++}else{let h=await this.projectResolver.get(l),k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(l,"inline"):!0,g=k?await this.parseFile(o,h.tgProject):[];await this.storage.storeRaw(l,g,m,u);let v=this.metadataCache.getFileCache(o),b={filePath:l,fileMeta:(v==null?void 0:v.frontmatter)||{},projectName:(s=h.tgProject)==null?void 0:s.name,projectMeta:{...h.enhancedMetadata,tgProject:h.tgProject},tasks:g},y=await this.augmentor.merge(b);e.set(l,y)}}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 wv.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<t.length;i+=r){let s=t.slice(i,i+r);await this.processBatch(s)}await this.repository.persist(),ge(this.app,se.CACHE_READY,{initial:!1,timestamp:Date.now(),seq:Ft.next()})}async onSettingsChange(a){a.includes("parser")&&await this.storage.clearNamespace("raw"),(a.includes("augment")||a.includes("project"))&&(await this.storage.clearNamespace("augmented"),await this.storage.clearNamespace("project"),this.projectResolver.clearCache()),a.includes("index")&&await this.storage.clearNamespace("consolidated"),ge(this.app,se.SETTINGS_CHANGED,{scopes:a,timestamp:Date.now()}),a.some(e=>["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 y3(n,a,e,t,r){let i=Date.now(),s=new bv(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 Tv(n){var a;return(a=n.settings.enableIndexer)!=null?a:!0}var Mm="task-genius-specific-view",xv=class extends Bi.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,Bi.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 Bi.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 Mm}getDisplayText(){return ut(this.plugin,this.currentViewId).name}getIcon(){return ut(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,Bi.debounce)(async()=>{await this.loadTasks(!1,!1)},150);if(Tv(this.plugin)&&this.plugin.dataflowOrchestrator){let{on:l,Events:c}=await Promise.resolve().then(()=>(pi(),gC));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 Bi.ExtraButtonComponent(l).setIcon("check-square").setTooltip(d("Capture")).onClick(()=>{new ca(this.plugin.app,this.plugin,{},!0).open()})}),this.tabActionButton&&this.register(()=>{this.tabActionButton.detach()})}initializeComponents(){this.contentComponent=new ci(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 ms(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 fs(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 hs(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 Bn(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 gs(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 ks(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 vs(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 _n(this.plugin,this.rootContainerEl),this.addChild(this.habitsComponent),this.habitsComponent.containerEl.hide(),this.detailsComponent=new Gi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new Un(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 ca(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",d("Filter"),e=>{if(b3.Platform.isDesktop){let t=new il(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=ut(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new ys(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=Ht(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(Ht(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=Ht(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=ut(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=ut(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new Bi.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=>{Tt(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((k,g)=>k===h[g]))&&(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 zd=class extends Js.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,Js.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 Js.Menu;l.addItem(u=>{u.setTitle(d("Open in new tab")).onClick(()=>{this.app.workspace.getLeaf().setViewState({type:Mm,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 Ws(this.app,this.plugin,p,m,(f,h)=>{let k=this.plugin.settings.viewConfiguration.findIndex(g=>g.id===f.id);k!==-1&&(this.plugin.settings.viewConfiguration[k]={...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 Ws(this.app,this.plugin,null,null,(m,f)=>{this.plugin.settings.viewConfiguration.some(h=>h.id===m.id)?new Js.Notice(d("Error: View ID already exists.")):(this.plugin.settings.viewConfiguration.push({...m,filterRules:f}),this.plugin.saveSettings(),this.renderSidebarItems(),new Js.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()}};Y();var sl="task-genius-view",Im=class n extends ht.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,ht.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 ht.Scope(this.app.scope),(r=this.scope)==null||r.register(null,"escape",i=>{i.preventDefault(),i.stopPropagation()})}getViewType(){return sl}getDisplayText(){return ut(this.plugin,this.currentViewId).name}getIcon(){return ut(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,ht.debounce)(async()=>{await this.loadTasks(!1,!0),this.switchView(this.currentViewId,void 0,!0)},500);if(Tv(this.plugin)&&this.plugin.dataflowOrchestrator){let{on:o,Events:l}=await Promise.resolve().then(()=>(pi(),gC));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 ht.ExtraButtonComponent(o).setIcon("notebook-pen").setTooltip(d("Capture")).onClick(()=>{new ca(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(sl);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 zd(this.rootContainerEl,this.plugin),this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.createSidebarToggle(),this.contentComponent=new ci(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 ms(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 fs(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 hs(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 Bn(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 gs(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 ks(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 vs(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 _n(this.plugin,this.rootContainerEl),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new Gi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new Un(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 ht.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 ca(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",d("Filter"),e=>{if(ht.Platform.isDesktop){let t=new il(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 Ho(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 Aa(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 ht.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=ut(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new ys(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=Ht(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(Ht(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=Ht(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,ht.setIcon)(this.leaf.tabHeaderInnerIconEl,this.getIcon()),this.leaf.tabHeaderInnerTitleEl.setText(this.getDisplayText()),this.titleEl.setText(this.getDisplayText()))}updateHeaderDisplay(){let e=ut(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new ht.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=>{Tt(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((k,g)=>k===h[g]))&&(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 ht.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 ht.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 Aa(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 ht.Notice(d("Failed to delete task"));return}try{let i=await this.plugin.writeAPI.deleteTask({taskId:e.id,deleteChildren:t});if(i.success){new ht.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 ht.Notice(d("Failed to delete task")+": "+(i.error||"Unknown error"))}catch(i){console.error("Error deleting task:",i),new ht.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 ht.Notice(d("Filter applied: ")+e.name)}};var Ge=require("obsidian");Y();Nl();var $d="tg-timeline-sidebar-view",Cv={due:4,scheduled:3,start:2,completed:1},Am=class extends Ge.ItemView{constructor(e,t){super(e);this.markdownEditor=null;this.currentDate=(0,Ge.moment)();this.events=[];this.isAutoScrolling=!1;this.isInputCollapsed=!1;this.tempEditorContent="";this.isAnimating=!1;this.collapsedHeaderEl=null;this.quickInputHeaderEl=null;this.debouncedRender=(0,Ge.debounce)(async()=>{await this.loadEvents(),this.renderTimeline()},300);this.debouncedScroll=(0,Ge.debounce)(this.handleScroll.bind(this),100);this.plugin=t}getViewType(){return $d}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,Ge.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,Ge.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,Ge.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,Ge.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=_i(this.app,s,{placeholder:d("What do you want to do today?"),onEnter:(h,k,g)=>k?(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 ca(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,Ge.moment)(c).isSame((0,Ge.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,Ge.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=Cv[l.type]||0,u=Cv[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=Cv[u.type]||0,m=Cv[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,Ge.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,Ge.moment)(e),s=i.isSame((0,Ge.moment)(),"day"),o=i.isSame((0,Ge.moment)().subtract(1,"day"),"day"),l=i.isSame((0,Ge.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,Ge.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 k=`${c[1].padStart(2,"0")}:${c[2]}${c[3]?`:${c[3]}`:""}`,g=`${c[4].padStart(2,"0")}:${c[5]}${c[6]?`:${c[6]}`:""}`;e.setText(`${k}-${g}`),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 k=parseInt(p[1],10),g=p[2],v=p[3],b=p[4].toUpperCase();b==="PM"&&k!==12&&(k+=12),b==="AM"&&k===12&&(k=0);let y=`${k.toString().padStart(2,"0")}:${g}${v?`:${v}`:""}`;e.setText(y),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 k=`${f[1].padStart(2,"0")}:${f[2]}${f[3]?`:${f[3]}`:""}`;e.setText(k),e.addClass("timeline-event-time-single");return}let h=((s=t.timeInfo)==null?void 0:s.primaryTime)||t.time;e.setText((0,Ge.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,Ge.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 g;let p=c.createDiv("timeline-event timeline-event-grouped");p.setAttribute("data-event-id",u.id),(g=u.task)!=null&&g.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 y=Tt(((w=u.task)==null?void 0:w.status)||" ",u.task,b);this.registerDomEvent(y,"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 v=new It(this.app,h,u.task.filePath,!0);this.addChild(v);let b=this.app.vault.getFileByPath(u.task.filePath);b instanceof Ge.TFile&&v.setFile(b),v.render(u.content,!0).catch(y=>{console.error("Failed to render markdown in timeline:",y),h.setText(u.content)})}else h.setText(u.content);let k=p.createDiv("timeline-event-actions");if(u.task){let v=k.createDiv("timeline-event-action");(0,Ge.setIcon)(v,"external-link"),v.setAttribute("aria-label",d("Go to task")),this.registerDomEvent(v,"click",()=>{this.goToTask(u.task)})}this.registerDomEvent(p,"click",v=>{let b=v.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=Tt(((h=t.task)==null?void 0:h.status)||" ",t.task,m);this.registerDomEvent(f,"change",async k=>{k.stopPropagation(),k.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 It(this.app,l,t.task.filePath,!0);this.addChild(p);let m=this.app.vault.getFileByPath(t.task.filePath);m instanceof Ge.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,Ge.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 qi(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,Ge.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,Ge.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,Ge.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,Ge.setIcon)(s,"more-horizontal"),s.setAttribute("aria-label",d("More options")),this.registerDomEvent(s,"click",()=>{new ca(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,Ge.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,Ge.setIcon)(e,"chevron-down"),e.setAttribute("aria-label",d("Collapse quick input")))}};function Sv(){return`<svg width="90" height="90" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="path-1-inside-1_103_18" fill="white">
|
||
<path d="M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0Z"/>
|
||
</mask>
|
||
<path d="M10 0V2C14.4183 2 18 5.58172 18 10H20H22C22 3.37258 16.6274 -2 10 -2V0ZM20 10H18C18 14.4183 14.4183 18 10 18V20V22C16.6274 22 22 16.6274 22 10H20ZM10 20V18C5.58172 18 2 14.4183 2 10H0H-2C-2 16.6274 3.37258 22 10 22V20ZM0 10H2C2 5.58172 5.58172 2 10 2V0V-2C3.37258 -2 -2 3.37258 -2 10H0Z" fill="currentColor" mask="url(#path-1-inside-1_103_18)"/>
|
||
<path d="M5 12.2803C5.24589 13.3879 6.48927 15.1059 8.0303 15.7084C8.0303 15.7084 8.66246 12.8308 10.1136 11.125C12.7722 8 15.7386 8 15.7386 8" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg>
|
||
`}function Gn(n){switch(n){case"notStarted":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#A1A1A1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4 4"/>
|
||
</svg>
|
||
`;case"inProgress":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#BD8E37" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M12 6H17C17.5523 6 18 6.44772 18 7V17C18 17.5523 17.5523 18 17 18H12V6Z" fill="#BD8E37"/>
|
||
</svg>
|
||
`;case"planned":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#A1A1A1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg>
|
||
`;case"completed":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M19 2C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5C2 3.34315 3.34315 2 5 2H19ZM15.707 9.29297C15.3409 8.92685 14.7619 8.90426 14.3691 9.22461L14.293 9.29297L11 12.5859L9.70703 11.293L9.63086 11.2246C9.23809 10.9043 8.65908 10.9269 8.29297 11.293C7.92685 11.6591 7.90426 12.2381 8.22461 12.6309L8.29297 12.707L10.293 14.707L10.3691 14.7754C10.7619 15.0957 11.3409 15.0731 11.707 14.707L15.707 10.707L15.7754 10.6309C16.0957 10.2381 16.0731 9.65908 15.707 9.29297Z" fill="#8E68F5"/>
|
||
</svg>
|
||
`;case"abandoned":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M19 2C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5C2 3.34315 3.34315 2 5 2H19ZM15.707 8.29297C15.3165 7.90244 14.6835 7.90244 14.293 8.29297L12 10.5859L9.70703 8.29297L9.63086 8.22461C9.23809 7.90426 8.65908 7.92685 8.29297 8.29297C7.92685 8.65908 7.90426 9.23809 8.22461 9.63086L8.29297 9.70703L10.5859 12L8.29297 14.293C7.90244 14.6835 7.90244 15.3165 8.29297 15.707C8.68349 16.0976 9.31651 16.0976 9.70703 15.707L12 13.4141L14.293 15.707L14.3691 15.7754C14.7619 16.0957 15.3409 16.0731 15.707 15.707C16.0731 15.3409 16.0957 14.7619 15.7754 14.3691L15.707 14.293L13.4141 12L15.707 9.70703C16.0976 9.31651 16.0976 8.68349 15.707 8.29297Z" fill="#A1A1A1"/>
|
||
</svg>`}}var Ud=require("obsidian");var Ev=require("obsidian");Y();var Dv=class extends Ev.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 Ev.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 Pv=class extends Ud.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 Dg(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(i<l)return o;i-=l}return r.length>0?r[r.length-1].reward:null}showRewardModal(a){if(this.settings.showRewardType==="notice"){new Ud.Notice(`\u{1F389} ${a.name}!`,0),this.acceptReward(a);return}new Dv(this.app,a,e=>{e?(this.acceptReward(a),new Ud.Notice(`\u{1F389} ${a.name}!`)):new Ud.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 nl=require("obsidian"),oa=Fe(PC());pi();var Wi=n=>n!=null&&n!=="",MC=n=>(n!=null?n:"").toString().trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-"),Mv=class extends nl.Component{constructor(e){super();this.habits=[];this.plugin=e,this.dateInheritanceService=new Nd(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(Kt(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(Kt(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 nl.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:Wi(r.property)?r.property:MC(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:Wi(r.property)?r.property:MC(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:Wi(r.property)?r.property:MC(r.name),type:r.type,mapping:r.mapping,completions:{}}}}})}async getDailyNotes(){let e=(0,oa.getAllDailyNotes)();return Object.values(e)}isDailyNote(e){try{return(0,oa.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,oa.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[g,v]of Object.entries(m))if(v&&Wi(o[v])){let b=o[v];Wi(b)&&(p.completions[c][g]=b)}break;case"daily":let f=u;if(u.property&&Wi(o[u.property])){let g=o[u.property];f.completionText?g===f.completionText?f.completions[c]=1:f.completions[c]=g:f.completions[c]=g===!0||g==="true";break}break;case"count":let h=u;if(h.property&&Wi(o[h.property])){let g=o[h.property],v=Number(g);isNaN(v)||(h.completions[c]=v)}break;case"mapping":let k=u;if(k.property&&Wi(o[k.property])){let g=o[k.property],v=Number(g);!isNaN(v)&&k.mapping[v]&&(k.completions[c]=v)}break}}}return r}handleDailyNoteDeleted(e){let t=(0,oa.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,nl.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,oa.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,k,g,v,b,y,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&&Wi((u=t.frontmatter)==null?void 0:u[W])){let B=(m=(p=t.frontmatter)==null?void 0:p[W])!=null?m:"";Wi(B)&&x.completions[i][j]!==B?(x.completions[i][j]=B,C=!0):!Wi(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&&((k=t.frontmatter)==null?void 0:k[S.property])!==void 0&&((g=t.frontmatter)==null?void 0:g[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&&((v=t.frontmatter)==null?void 0:v[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&&((y=t.frontmatter)==null?void 0:y[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,nl.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,oa.getAllDailyNotes)(),o=(0,oa.getDailyNote)(i,(0,oa.getAllDailyNotes)()),!o){if(!(0,oa.appHasDailyNotesPluginLoaded)()){console.error("Daily notes plugin is not loaded. Please enable the Daily Notes plugin in Obsidian.");return}if(!(0,oa.getDailyNoteSettings)().folder){console.error("Daily notes folder is not set. Please configure the Daily Notes plugin in Obsidian.");return}try{o=await(0,oa.createDailyNote)(i)}catch(c){console.error("Trying to use obsidian default create daily note function",c),this.plugin.app.commands.executeCommandById("daily-notes"),(0,oa.getAllDailyNotes)(),o=(0,oa.getDailyNote)(i,(0,oa.getAllDailyNotes)())}}}catch(l){console.error("Error getting or creating daily note:",l);return}if(o)try{ge(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,k]of Object.entries(u))k&&(typeof c=="object"&&(c==null?void 0:c[h])!==void 0&&(c==null?void 0:c[h])!==""?l[k]=c[h]:delete l[k]);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}}),ge(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 O3=require("obsidian");var Iv=class extends O3.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=Gn(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(/<path[^>]*fill="([^"]+)"/);if(t&&t[1]&&t[1]!=="none"&&t[1]!=="currentColor")return t[1];let r=e.match(/<path[^>]*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,"%3C").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 Av=require("obsidian"),N3=require("@codemirror/state");var i8=(0,Av.debounce)((n,a)=>{n.workspace.trigger("task-genius:task-completed",a)},200);function L3(n,a){return N3.EditorState.transactionFilter.of(e=>(n8(e,n,a),e))}function s8(n){let a=[],e=0;if(n.changes.iterChanges((i,s,o,l,c)=>{if(e++,i<s){let u=n.startState.doc.sliceString(i,s);a.push({type:"delete",content:u,fromA:i,toA:s,fromB:o,toB:l})}c.length>0&&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;u<o.length;u++){let p=o[u].trim(),m=l[u].trim();if(p!==m){c=!1;break}}if(c)return!0}}return!1}function n8(n,a,e){if(!n.docChanged)return;if(n.changes,n.isUserEvent("set")&&n.changes.length>1||n.isUserEvent("input.paste"))return n;if(s8(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),k=h.text;if(t.test(k)){let g="",v=!1,b=!1;if(n.changes.iterChanges((y,w,x,T,C)=>{if(y<w&&!b)try{let E=n.startState.doc.sliceString(y,w).split(`
|
||
`);for(let A of E)if(A.match(r)){let I=k.replace(r,"").trim(),R=A.replace(r,"").trim();if(I===R){g=A,v=!0,b=!0;break}}}catch(S){}}),!b)try{let y=n.changes.mapPos(h.from,-1);y!==null&&(g=n.startState.doc.lineAt(y).text,v=r.test(g),b=!0)}catch(y){}if(b&&v&&!t.test(g)){let y=n.startState.field(Av.editorInfoField),w=((m=y==null?void 0:y.file)==null?void 0:m.path)||"unknown file",x=pn(w,k,h.number,e.settings.preferMetadataFormat,e);x&&i8(a,x);break}}}})}var Qt=require("@codemirror/state"),B3=require("@codemirror/view"),V3=require("@codemirror/view"),AC=require("@codemirror/view"),W3=require("@codemirror/view"),mi=class extends Qt.RangeValue{compare(a){return this==a||this.constructor==a.constructor&&this.eq(a)}eq(a){return!1}destroy(a){}};mi.prototype.elementClass="";mi.prototype.toDOM=void 0;mi.prototype.mapMode=Qt.MapMode.TrackBefore;mi.prototype.startSide=mi.prototype.endSide=-1;mi.prototype.point=!0;var Fv=Qt.Facet.define(),o8=Qt.Facet.define(),l8={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Qt.RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},Vm=Qt.Facet.define();function z3(n){return[d8(),Vm.of({...l8,...n})]}var FC=Qt.Facet.define({combine:n=>n.some(a=>a)});function d8(n){let a=[c8];return n&&n.fixed===!1&&a.push(FC.of(!0)),a}var c8=V3.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(Vm).map(e=>new Rv(n,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!n.state.facet(FC),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(FC)!=!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=Qt.RangeSet.iter(this.view.state.facet(Fv),this.view.viewport.from),t=[],r=this.gutters.map(o=>new OC(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==AC.BlockType.Text&&l){RC(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==AC.BlockType.Text){RC(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(Vm),e=n.state.facet(Vm),t=n.docChanged||n.heightChanged||n.viewportChanged||!Qt.RangeSet.eq(n.startState.facet(Fv),n.state.facet(Fv),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 Rv(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=>B3.EditorView.scrollMargins.of(a=>{let e=a.plugin(n);return!e||e.gutters.length==0||!e.fixed?null:a.textDirection==W3.Direction.LTR?{left:e.dom.offsetWidth*a.scaleX}:{right:e.dom.offsetWidth*a.scaleX}})});function j3(n){return Array.isArray(n)?n:[n]}function RC(n,a,e){for(;n.value&&n.from<=e;)n.from==e&&a.push(n.value),n.next()}var OC=class{constructor(a,e,t){this.gutter=a;this.height=t;this.i=0;this.cursor=Qt.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 Ov(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=[];RC(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(o8)){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()}}},Rv=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=j3(e.markers(a)),e.initialSpacer&&(this.spacer=new Ov(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=j3(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!Qt.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()}},Ov=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":""),u8(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=i<e.length?e[i++]:null,c=!1;if(l){let u=l.elementClass;u&&(t+=" "+u);for(let p=s;p<this.markers.length;p++)if(this.markers[p].compare(l)){o=p,c=!0;break}}else o=this.markers.length;for(;s<o;){let u=this.markers[s++];if(u.toDOM){u.destroy(r);let p=r.nextSibling;r.remove(),r=p}}if(!l)break;l.toDOM&&(c?r=r.nextSibling:this.dom.insertBefore(l.toDOM(a),r)),c&&s++}this.dom.className=t,this.markers=e}destroy(){this.setMarkers(null,[])}};function u8(n,a){if(n.length!=a.length)return!1;for(let e=0;e<n.length;e++)if(!n[e].compare(a[e]))return!1;return!0}var p8=Qt.Facet.define(),m8=Qt.Facet.define(),Bm=Qt.Facet.define({combine(n){return(0,Qt.combineConfig)(n,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(a,e){let t=Object.assign({},a);for(let r in e){let i=t[r],s=e[r];t[r]=i?(o,l,c)=>i(o,l,c)||s(o,l,c):s}return t}})}}),Wm=class extends mi{constructor(e){super();this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function IC(n,a){return n.state.facet(Bm).formatNumber(a,n.state)}var Nqe=Vm.compute([Bm],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(a){return a.state.facet(p8)},lineMarker(a,e,t){return t.some(r=>r.toDOM)?null:new Wm(IC(a,a.state.doc.lineAt(e.from).number))},widgetMarker:(a,e,t)=>{for(let r of a.state.facet(m8)){let i=r(a,e,t);if(i)return i}return null},lineMarkerChange:a=>a.startState.facet(Bm)!=a.state.facet(Bm),initialSpacer(a){return new Wm(IC(a,H3(a.state.doc.lines)))},updateSpacer(a,e){let t=IC(e.view,H3(e.view.state.doc.lines));return t==a.number?a:new Wm(t)},domEventHandlers:n.facet(Bm).domEventHandlers}));function H3(n){let a=9;for(;a<n;)a=a*10+9;return a}var f8=new class extends mi{constructor(){super(...arguments);this.elementClass="cm-activeLineGutter"}},Lqe=Fv.compute(["selection"],n=>{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(f8.range(r)))}return Qt.RangeSet.of(a)});var Bv=require("obsidian");var Lv=require("obsidian");var fi=require("obsidian");Y();var Yd=class extends fi.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"?Yi(e):e}createStatusEditor(){let e=this.container.createDiv({cls:"task-status-editor"});new gn(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 fi.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=Yi(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=As(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=Ot(this.task),s=Yr(this.task),o=new fi.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 ur(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 fi.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 Gr(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 fi.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 pr(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 fi.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 hn(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 fi.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 fi.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 fi.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})}};Y();var Nv=class extends Lv.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 Yd(a,this.app,this.plugin,!1),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),new Lv.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 Hv=require("obsidian");Y();var jv=class extends Hv.Component{constructor(e,t,r){super();this.popoverRef=null;this.popperInstance=null;this.debounceUpdateTask=(0,Hv.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 Yd(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=Xo(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()}};so();var Gd=require("@codemirror/language");wc();var $3=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m,LC=class extends mi{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 Bv.ExtraButtonComponent(a).setIcon("calendar-check").onClick(()=>{let t=this.view.state.doc.line(this.lineNum).text,r=this.app.workspace.getActiveFile();if(!r||!$3.test(t))return!1;let i=this.view.state.doc.line(this.lineNum),o=(0,Gd.syntaxTree)(this.view.state).resolveInner(i.from+1).type.prop(Gd.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=g8(this.plugin,r.path,t,l-1);return c?(h8(this.view,this.app,this.plugin,c,e.extraSettingsEl),!0):!1});return e.extraSettingsEl.toggleClass("task-gutter-marker",!0),e.extraSettingsEl}},h8=(n,a,e,t,r)=>{let i=async s=>{e.writeAPI&&await e.writeAPI.updateTask({taskId:s.id,updates:s})};if(Bv.Platform.isDesktop){let s=new jv(a,e,t),o=r.getBoundingClientRect();s.showAtPosition({x:o.left,y:o.bottom+10})}else new Nv(a,e,t,i).open()},NC=null,g8=(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)}NC||(NC=new Ti(un(n.settings.preferMetadataFormat,n)));let s=NC.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 U3(n,a){return[z3({class:"task-gutter",lineMarker(e,t){let r=e.state.doc.lineAt(t.from).text,i=e.state.doc.lineAt(t.from).number;if(!$3.test(r))return null;let o=(0,Gd.syntaxTree)(e.state).resolveInner(t.from+1).type.prop(Gd.tokenClassNodeProp);if(o){let l=o.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return null}return new LC(r,i,e,n,a)}})]}var q3=require("@codemirror/state");function Y3(n,a){return q3.EditorState.transactionFilter.of(e=>k8(e,n,a))}function k8(n,a,e){var u;if(!n.docChanged||!((u=e.settings.autoDateManager)!=null&&u.enabled))return n;let t=n.annotation(dt);if(typeof t=="string"&&t.includes("autoDateManager")||n.isUserEvent("input.paste")||n.isUserEvent("set")||v8(n))return n;let r=y8(n);if(!r)return n;let{doc:i,lineNumber:s,oldStatus:o,newStatus:l}=r,c=b8(o,l,e,i.line(s).text);return c.length===0?n:T8(n,i,s,c,e)}function v8(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r<i){let c=n.startState.doc.sliceString(r,i);a.push({type:"delete",content:c,fromA:r,toA:i,fromB:s,toB:o})}l.length>0&&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<s.length;c++){let u=s[c].trim(),p=o[c].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function y8(n){let a=null;return n.changes.iterChanges((e,t,r,i,s)=>{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((k,g,v,b,y)=>{if(k<g&&!h)try{let x=n.startState.doc.sliceString(k,g).split(`
|
||
`);for(let T of x){let C=T.match(u);if(C){let S=c.replace(u,"").trim(),E=T.replace(u,"").trim();if(S===E){f=C[2],h=!0;break}}}}catch(w){}}),!h)try{let k=c.indexOf("[")+1,g=c.indexOf("]");if(r<=l.from+g&&i>=l.from+k){let v=e;if(v>=0&&v<n.startState.doc.length){let y=n.startState.doc.lineAt(v).text.match(u);y&&(f=y[2],h=!0)}}}catch(k){}h&&f!==m&&(a={doc:n.newDoc,lineNumber:l.number,oldStatus:f,newStatus:m})}}),a}function b8(n,a,e,t){let r=[],i=e.settings.autoDateManager;if(!i)return r;let s=_3(n,e),o=_3(a,e);return s===o||(i.manageCompletedDate&&s==="completed"&&r.push({type:"remove",dateType:"completed"}),i.manageCancelledDate&&s==="abandoned"&&r.push({type:"remove",dateType:"cancelled"}),i.manageCompletedDate&&o==="completed"&&r.push({type:"add",dateType:"completed",format:i.completedDateFormat||"YYYY-MM-DD"}),i.manageStartDate&&o==="inProgress"&&(w8(t,"start",e)||r.push({type:"add",dateType:"start",format:i.startDateFormat||"YYYY-MM-DD"})),i.manageCancelledDate&&o==="abandoned"&&r.push({type:"add",dateType:"cancelled",format:i.cancelledDateFormat||"YYYY-MM-DD"})),r}function w8(n,a,e){if(e.settings.preferMetadataFormat==="dataview"){let r=a==="start"?"start":a;return new RegExp(`\\[${r}::\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?\\]`).test(n)}else{let r=Vv(a,e);return new RegExp(`${Wv(r)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`).test(n)}}function _3(n,a){let e=a.settings.taskStatuses;return e.completed.split("|").includes(n)?"completed":e.inProgress.split("|").includes(n)?"inProgress":e.abandoned.split("|").includes(n)?"abandoned":e.planned.split("|").includes(n)?"planned":e.notStarted.split("|").includes(n)?"notStarted":"unknown"}function T8(n,a,e,t,r){let i=n.newDoc.line(e),s=i.text,o=[];`${s}`;for(let l of t)if(l.type==="add"){let c=x8(l.format),u=Vv(l.dateType,r),p=r.settings.preferMetadataFormat==="dataview",m;p?m=` ${u}${c}]`:m=` ${u} ${c}`;let f;l.dateType==="completed"?f=S8(s,r):f=C8(s,r,l.dateType);let h=i.from+f;`${l.dateType}`,`${f}`,`${i.from}`,`${h}`,`${m}`,`${s.substring(f)}`,o.push({from:h,to:h,insert:m}),s=s.slice(0,f)+m+s.slice(f)}else if(l.type==="remove"){let c=r.settings.preferMetadataFormat==="dataview",u;if(c){let f=l.dateType==="completed"?"completion":l.dateType==="cancelled"?"cancelled":"unknown";u=new RegExp(`\\s*\\[${f}::\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?\\]`,"g")}else{let f=Vv(l.dateType,r);u=new RegExp(`\\s*${Wv(f)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`,"g")}let p,m=[];for(u.lastIndex=0;(p=u.exec(s))!==null;)m.push({start:p.index,end:p.index+p[0].length,text:p[0]});for(let f=m.length-1;f>=0;f--){let h=m[f],k=i.from+h.start,g=i.from+h.end;o.push({from:k,to:g,insert:""}),s=s.slice(0,h.start)+s.slice(h.end)}}return o.length>0?{changes:[n.changes,...o],selection:n.selection,annotations:[dt.of("autoDateManager.dateUpdate")]}:n}function x8(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 Vv(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 C8(n,a,e){let t=G3(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=Vv("start",a),c=Wv(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(`${Wv(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;c<l.length;c++){let u=l[c];if(u==="["&&!o){if(n.slice(i+c).match(/^\[[a-zA-Z]+::/))break;o=!0,s=i+c+1}else if(u==="]"&&o)o=!1,s=i+c+1;else if(o)s=i+c+1;else{if(u==="#"||u==="\u{1F4C5}"||u==="\u{1F680}"||u==="\u2705"||u==="\u274C"||u==="\u{1F6EB}"||u==="\u25B6\uFE0F"||u==="\u23F0"||u==="\u{1F3C1}")break;s=i+c+1}}for(i=s;i>0&&n[i-1]===" ";)i--}return t&&i>t.index&&(i=t.index,i>0&&n[i-1]===" "&&i--),`${e}${i}`,i}function S8(n,a){let e=G3(n);if(e){let t=e.index;return t>0&&n[t-1]===" "&&t--,t}return n.length}function Wv(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function G3(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 K3=require("@codemirror/view");function Q3(){return K3.EditorView.updateListener.of(n=>{if(!n.docChanged)return;let a=n.transactions[0];!a||!D8(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(E8(o)){let c=n.state.doc.lineAt(r),u=c.text;if(P8(u)){let p=M8(u);p!==u&&n.view.dispatch({changes:{from:c.from,to:c.to,insert:p}})}}})})}function D8(n){if(!n.isUserEvent("input.delete")&&!n.isUserEvent("input.deleteBackward"))return!1;let a=!1;return n.changes.iterChanges((e,t)=>{e<t&&(a=!0)}),a}function E8(n){return!!(/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\]|!)/.test(n)||/(?:📅|🛫|⏳|✅|➕|❌)/.test(n)||/(?:🆔|⛔|🏁|🔁|@|#)/.test(n))}function P8(n){return/^\s*[-*+]\s*\[[^\]]*\]/.test(n)}function M8(n){let a=n.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(!a)return n;let e=a[1],t=n.substring(e.length),r=Ba(t);return r.trim()?e+r:e.trim()}var tH=require("obsidian");var Kn=require("obsidian");var ol={contentProperty:"title",statusProperty:"status",completedProperty:"completed",createdDateProperty:"created",startDateProperty:"start",scheduledDateProperty:"scheduled",dueDateProperty:"due",completedDateProperty:"completion",recurrenceProperty:"repeat",tagsProperty:"tags",projectProperty:"project",contextProperty:"context",priorityProperty:"priority",estimatedTimeProperty:"estimatedTime",actualTimeProperty:"actualTime"},zv=class{constructor(a,e,t){this.app=a;this.fileSourceConfig=e;this.timeParsingService=t}entryToFileTask(a,e=ol){let t=a.properties||{},r=`file-task-${a.file.path}`;Math.random()<.1&&(`${a.file.name}`,Object.keys(t));let i=this.getPropertyValue(a,e.contentProperty);if(!i){let C=a.file.name,S=C.lastIndexOf(".");i=S>0?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)||[],k=this.getPropertyValue(a,e.projectProperty),g=this.getPropertyValue(a,e.contextProperty),v=this.getNumberPropertyValue(a,e.priorityProperty),b=this.getNumberPropertyValue(a,e.estimatedTimeProperty),y=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},...k&&{project:k},...g&&{context:g},...v&&{priority:v},...b&&{estimatedTime:b},...y&&{actualTime:y},...w,...x&&{enhancedDates:x}},sourceEntry:a,isFileTask:!0}}fileTaskToPropertyUpdates(a,e=ol,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,ol,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<i.length;l++)if(i[l].startsWith("# ")){s=l;break}if(s>=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=ol){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=ol){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`)})}};Y();var $v=class extends Kn.Component{constructor(e,t,r,i){var s;super();this.type="task-genius-view";this.data=[];this.properties=[];this.isSidebarCollapsed=!1;this.propertyMapping=ol;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 zv(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 zd(e,this.plugin),this.plugin,this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.contentComponent=new ci(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 ms(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 fs(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 hs(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 Bn(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 gs(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 ks(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 vs(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 _n(this.plugin,e),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new Gi(e,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.toggleDetailsVisibility(!1),this.viewComponentManager=new Un(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;r<e.length;r++)if(e[r]!==t[r])return e[r]<t[r]?-1:1;return 0}return e===t||e==null&&t==null?0:e==null?-1:t==null?1:e<t?-1:1}updateTaskViewComponents(){let e=this.fileTasks.length>this.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<this.fileTasks.length;r++)Object.defineProperty(e,r,{get:()=>{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;s<this.length;s++)i.push(r(this[s],s,this));return i},e.filter=function(r){let i=[];for(let s=0;s<this.length;s++)r(this[s],s,this)&&i.push(this[s]);return i},e.find=function(r){for(let i=0;i<this.length;i++)if(r(this[i],i,this))return this[i]},e.some=function(r){for(let i=0;i<this.length;i++)if(r(this[i],i,this))return!0;return!1},e.forEach=function(r){for(let i=0;i<this.length;i++)r(this[i],i,this)},`${this.fileTasks.length}`,e}hasTaskChangedForCache(e,t){return e.content!==t.content||e.completed!==t.completed||e.status!==t.status||e.dueDate!==t.metadata.dueDate||e.startDate!==t.metadata.startDate||e.scheduledDate!==t.metadata.scheduledDate||e.priority!==t.metadata.priority||JSON.stringify(e.tags)!==JSON.stringify(t.metadata.tags)||e.project!==t.metadata.project||e.context!==t.metadata.context}fileTaskToRegularTask(e){return{...e,line:0,originalMarkdown:`- [ ] ${e.content}`}}handleTaskSelection(e){if(e){let t=this.fileTasks.find(r=>r.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 Kn.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=>{Tt(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=ut(this.plugin,e);if(((o=s.specificConfig)==null?void 0:o.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let c=s.specificConfig,u=new ys(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=Ht(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(Ht(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=Ht(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 jC(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}}},jC=class extends Kn.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 Kn.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 X3=require("obsidian");var zm=require("obsidian");var bs=class extends zm.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 Gi(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 zm.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 zm.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;s<t.length;s++){let o=t[s];s<3&&(`${this.type}${s}`,`${this.type}${s}`,`${this.type}${s}`,Object.keys(o));let l=o;if(l.file||l.note){s<3&&`${this.type}${s}`;try{let c=this.entryToTask(o);c&&r.push(c)}catch(c){console.error(`[${this.type}] Error converting entry ${s} to task:`,c),s<3&&console.error(`[${this.type}] Failed entry structure:`,e(o))}}else if(o.entries&&Array.isArray(o.entries)){`${this.type}${o.entries.length}`;for(let c of o.entries)try{let u=this.entryToTask(c);u&&r.push(u)}catch(u){console.error(`[${this.type}] Error converting sub-entry to task:`,u,c)}}else`${this.type}`}`${this.type}${r.length}${t.length}`,r.length>0?(`${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,k){if(typeof k=="object"&&k!==null){if(f.has(k))return"[Circular]";if(f.add(k),h==="app"||h==="ctx"||h==="vault"||h==="parent"||h==="formulaResults")return"[Skipped]"}return typeof k=="function"?"[Function]":k},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)}};Y();var Uv=class extends bs{constructor(e,t,r){super(e,t,r,"inbox");this.type="inbox-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new ci(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=Ht(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 X3.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 J3=require("obsidian");Y();var _v=class extends bs{constructor(e,t,r){super(e,t,r,"flagged");this.type="flagged-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new ci(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=Ht(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 J3.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 Z3=require("obsidian");Y();var qv=class extends bs{constructor(e,t,r){super(e,t,r,"projects");this.type="projects-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.projectsComponent=new hs(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=Ht(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 Z3.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 eH=require("obsidian");Y();var Yv=class extends bs{constructor(e,t,r){super(e,t,r,"tags");this.type="tags-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.tagsComponent=new fs(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=Ht(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 eH.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 aH=require("obsidian"),Gv=class extends tH.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 $v(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 Uv(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 _v(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 qv(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 Yv(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,aH.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 Xv=require("obsidian");var Ea=class Ea{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<a.length;r++){let i=a.charCodeAt(r);t=(t<<5)-t+i,t=t&t}return`${e}-${t}`}static cacheResult(a,e){if(this.parseCache.size>=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.length;i++)this.parseCache.set(t[i][0],t[i][1])}this.parseCache.set(a,{events:e.events.map(t=>({...t})),errors:[...e.errors],metadata:{...e.metadata}})}static unfoldLines(a){let e=[],t=[],r=!1;for(let i=0;i<a.length;i++){let s=a[i],o=s.charCodeAt(0);o===32||o===9?r&&(t.push(" "),t.push(s.slice(1))):(r&&(e.push(t.join("")),t.length=0),t.push(s),r=!0)}return r&&e.push(t.join("")),e}static parseLine(a){let e=a.indexOf(":");if(e===-1)throw new Error("Invalid line format: missing colon");let t=a.indexOf(";"),r;t!==-1&&t<e?r=a.slice(0,t).toUpperCase():r=a.slice(0,e).toUpperCase();let i=a.slice(e+1);return[r,i]}static parseEventProperty(a,e,t,r){let i=this.PROPERTY_HANDLERS.get(e);i?i(a,t,r):e.charCodeAt(0)===88&&e.charCodeAt(1)===45&&(a.customProperties||(a.customProperties={}),a.customProperties[e]=t)}static parseDateTime(a,e){let t=e.indexOf("VALUE=DATE")!==-1,r=a;if(r.indexOf("TZID=")!==-1){let c=r.lastIndexOf(":");c!==-1&&(r=r.slice(c+1))}let s=r.charCodeAt(r.length-1)===90;s&&(r=r.slice(0,-1));let o=r.length,l;if(t||o===8){let c=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2);l=new Date(c,u,p)}else{let c=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2),m=this.parseIntFromString(r,9,2),f=this.parseIntFromString(r,11,2),h=o>=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<i&&s<a.length;s++){let o=a.charCodeAt(s)-48;o>=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}}};Ea.CN_REGEX=/CN=([^;:]+)/,Ea.ROLE_REGEX=/ROLE=([^;:]+)/,Ea.PARTSTAT_REGEX=/PARTSTAT=([^;:]+)/,Ea.parseCache=new Map,Ea.MAX_CACHE_SIZE=50,Ea.PROPERTY_HANDLERS=new Map([["UID",(a,e)=>{a.uid=e}],["SUMMARY",(a,e)=>{a.summary=Ea.unescapeText(e)}],["DESCRIPTION",(a,e)=>{a.description=Ea.unescapeText(e)}],["LOCATION",(a,e)=>{a.location=Ea.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=Ea.parseDateTime(e,t);a.dtstart=r.date,r.allDay!==void 0&&(a.allDay=r.allDay)}],["DTEND",(a,e,t)=>{a.dtend=Ea.parseDateTime(e,t).date}],["CREATED",(a,e,t)=>{a.created=Ea.parseDateTime(e,t).date}],["LAST-MODIFIED",(a,e,t)=>{a.lastModified=Ea.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=Ea.parseDateTime(i.trim(),t).date;a.exdate.push(s)}}],["ORGANIZER",(a,e,t)=>{a.organizer=Ea.parseOrganizer(e,t)}],["ATTENDEE",(a,e,t)=>{a.attendees||(a.attendees=[]),a.attendees.push(Ea.parseAttendee(e,t))}]]);var Kv=Ea;var $m=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.pastEvents,t):l<=i&&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 Qv=class extends Xv.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=ld.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=$m.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=$m.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.hour<t.startTime.hour&&s.setDate(s.getDate()+1),r.endDateTime=s,r.dueDateTime=s}if(t.dueTime&&!r.dueDateTime){let s=new Date(i);s.setHours(t.dueTime.hour,t.dueTime.minute,t.dueTime.second||0),r.dueDateTime=s}if(t.scheduledTime&&!r.scheduledDateTime){let s=new Date(i);s.setHours(t.scheduledTime.hour,t.scheduledTime.minute,t.scheduledTime.second||0),r.scheduledDateTime=s}}return Object.keys(r).length>0?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=Ei.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,Xv.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=Kv.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,k=!0;if((s=h.summary)!=null&&s.length&&(k=k&&h.summary.some(g=>this.matchesPattern(i.summary,g))),(o=h.description)!=null&&o.length&&i.description&&(k=k&&h.description.some(g=>this.matchesPattern(i.description,g))),(l=h.location)!=null&&l.length&&i.location&&(k=k&&h.location.some(g=>this.matchesPattern(i.location,g))),(c=h.categories)!=null&&c.length&&i.categories&&(k=k&&h.categories.some(g=>i.categories.includes(g))),!k)return!1}if(t.filters.exclude){let h=t.filters.exclude;if((u=h.summary)!=null&&u.length&&h.summary.some(k=>this.matchesPattern(i.summary,k))||(p=h.description)!=null&&p.length&&i.description&&h.description.some(k=>this.matchesPattern(i.description,k))||(m=h.location)!=null&&m.length&&i.location&&h.location.some(k=>this.matchesPattern(i.location,k))||(f=h.categories)!=null&&f.length&&i.categories&&h.categories.some(k=>i.categories.includes(k)))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 Zs=require("obsidian");Y();var Jv=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 Zs.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 Zs.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 Zs.Notice(d("Task content is required"));return}let c=i?i.split(",").map(p=>p.trim()):[];try{if(!this.plugin.writeAPI){new Zs.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 Zs.Notice(d("Task created successfully"))}catch(p){console.error("Failed to create task from URI:",p),new Zs.Notice(d("Failed to create task"))}}async handleOpenViewUri(a){let{type:e}=a;if(!e){new Zs.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 Zs.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 ey=require("obsidian");fC();var Zv=class extends ey.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.VERSION_STORAGE_KEY="plugin-version";this.persister=new Rd(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.length<s;)r.push(0);for(;i.length<s;)i.push(0);for(let o=0;o<s;o++){if(r[o]<i[o])return-1;if(r[o]>i[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,ey.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 rH=require("obsidian"),ty=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 rH.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 Pa=require("obsidian");var ay=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){}}};Y();var ry=require("obsidian");Y();var HC=require("obsidian"),iy=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 ry.Notice(d("Failed to open quick capture window")),e(t)}}):(new ry.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 ry.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,HC.moment)().add(s,"days").format("YYYY-MM-DD")}}let t=(0,HC.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`<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Quick Capture - Task Genius</title>
|
||
<style>
|
||
${`
|
||
:root {
|
||
--background-primary: ${a?"#202020":"#ffffff"};
|
||
--background-primary-alt: ${a?"#1a1a1a":"#fafafa"};
|
||
--background-secondary: ${a?"#2a2a2a":"#f5f5f5"};
|
||
--background-secondary-alt: ${a?"#333333":"#e3e3e3"};
|
||
--background-modifier-border: ${a?"#404040":"#d0d0d0"};
|
||
--background-modifier-hover: ${a?"#353535":"#ebebeb"};
|
||
--text-normal: ${a?"#e0e0e0":"#333333"};
|
||
--text-muted: ${a?"#a0a0a0":"#666666"};
|
||
--text-faint: ${a?"#808080":"#999999"};
|
||
--text-on-accent: #ffffff;
|
||
--interactive-normal: ${a?"#2a2a2a":"#f5f5f5"};
|
||
--interactive-hover: ${a?"#3a3a3a":"#e8e8e8"};
|
||
--interactive-accent: #7c3aed;
|
||
--interactive-accent-hover: #6d28d9;
|
||
--radius-s: 6px;
|
||
--radius-m: 8px;
|
||
}
|
||
`}
|
||
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
html, body {
|
||
height: 100%;
|
||
width: 100%;
|
||
}
|
||
|
||
body {
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
||
background-color: var(--background-primary);
|
||
color: var(--text-normal);
|
||
padding: 12px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.container {
|
||
flex: 1;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 16px;
|
||
overflow-y: auto;
|
||
padding: 8px;
|
||
}
|
||
|
||
.title {
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.input-group {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
}
|
||
|
||
label {
|
||
font-size: 12px;
|
||
font-weight: 500;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
input[type="text"],
|
||
textarea,
|
||
select {
|
||
width: 100%;
|
||
padding: 8px 12px;
|
||
background-color: var(--background-secondary);
|
||
color: var(--text-normal);
|
||
border: 1px solid var(--background-modifier-border);
|
||
border-radius: var(--radius-s);
|
||
font-size: 14px;
|
||
outline: none;
|
||
transition: all 0.2s;
|
||
}
|
||
|
||
input[type="text"]:focus,
|
||
textarea:focus,
|
||
select:focus {
|
||
border-color: var(--interactive-accent);
|
||
box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.2);
|
||
}
|
||
|
||
textarea {
|
||
resize: none;
|
||
min-height: 80px;
|
||
max-height: 300px;
|
||
font-family: inherit;
|
||
line-height: 1.5;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.metadata {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 12px;
|
||
}
|
||
|
||
.metadata-item {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 4px;
|
||
}
|
||
|
||
.buttons {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
gap: 12px;
|
||
margin-top: auto;
|
||
padding: 12px;
|
||
border-top: 1px solid var(--background-modifier-border);
|
||
background: var(--background-primary);
|
||
}
|
||
|
||
button {
|
||
padding: 8px 20px;
|
||
border: none;
|
||
border-radius: var(--radius-s);
|
||
font-size: 14px;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
transition: all 0.2s;
|
||
}
|
||
|
||
.btn-primary {
|
||
background-color: var(--interactive-accent);
|
||
color: var(--text-on-accent);
|
||
}
|
||
|
||
.btn-primary:hover {
|
||
background-color: var(--interactive-accent-hover);
|
||
transform: translateY(-1px);
|
||
}
|
||
|
||
.btn-secondary {
|
||
background-color: var(--background-secondary);
|
||
color: var(--text-normal);
|
||
border: 1px solid var(--background-modifier-border);
|
||
}
|
||
|
||
.btn-secondary:hover {
|
||
background-color: var(--background-modifier-hover);
|
||
}
|
||
|
||
.error-message {
|
||
color: #ef4444;
|
||
font-size: 12px;
|
||
margin-top: 4px;
|
||
display: none;
|
||
}
|
||
|
||
.error-message.show {
|
||
display: block;
|
||
}
|
||
|
||
.help-text {
|
||
font-size: 11px;
|
||
color: var(--text-faint);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.priority-select {
|
||
display: flex;
|
||
gap: 8px;
|
||
}
|
||
|
||
.priority-btn {
|
||
flex: 1;
|
||
padding: 6px;
|
||
text-align: center;
|
||
border: 1px solid var(--background-modifier-border);
|
||
border-radius: 4px;
|
||
cursor: pointer;
|
||
transition: all 0.2s;
|
||
background-color: var(--background-secondary);
|
||
}
|
||
|
||
.priority-btn:hover {
|
||
background-color: rgba(124, 58, 237, 0.1);
|
||
border-color: var(--interactive-accent);
|
||
}
|
||
|
||
.priority-btn.selected {
|
||
background-color: var(--interactive-accent);
|
||
color: var(--text-on-accent);
|
||
border-color: var(--interactive-accent);
|
||
}
|
||
|
||
.date-input-wrapper {
|
||
display: flex;
|
||
gap: 8px;
|
||
align-items: center;
|
||
}
|
||
|
||
.date-picker, .date-text {
|
||
flex: 1;
|
||
}
|
||
|
||
.date-toggle {
|
||
width: 32px;
|
||
height: 32px;
|
||
padding: 4px;
|
||
background: var(--background-secondary);
|
||
border: 1px solid var(--background-modifier-border);
|
||
border-radius: 4px;
|
||
cursor: pointer;
|
||
font-size: 16px;
|
||
transition: all 0.2s;
|
||
}
|
||
|
||
.date-toggle:hover {
|
||
background: rgba(124, 58, 237, 0.1);
|
||
border-color: var(--interactive-accent);
|
||
}
|
||
|
||
@media (max-width: 500px) {
|
||
.metadata {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<div class="title">Quick Capture</div>
|
||
|
||
<div class="input-group">
|
||
<textarea
|
||
id="task-content"
|
||
placeholder="Enter your task..."
|
||
autofocus
|
||
></textarea>
|
||
<div class="error-message" id="content-error"></div>
|
||
</div>
|
||
|
||
<div class="metadata" id="metadata-section">
|
||
<div class="metadata-item">
|
||
<label>Project</label>
|
||
<input type="text" id="project" list="project-list" placeholder="e.g., Work, Personal">
|
||
<datalist id="project-list"></datalist>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Context</label>
|
||
<input type="text" id="context" list="context-list" placeholder="e.g., @home, @office">
|
||
<datalist id="context-list"></datalist>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Start Date</label>
|
||
<div class="date-input-wrapper">
|
||
<input type="date" id="start-date-picker" class="date-picker">
|
||
<input type="text" id="start-date-text" placeholder="today, tomorrow" class="date-text" style="display:none">
|
||
<button type="button" class="date-toggle" data-date-type="start" title="Toggle input type">\u{1F6EB}</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Due Date</label>
|
||
<div class="date-input-wrapper">
|
||
<input type="date" id="due-date-picker" class="date-picker">
|
||
<input type="text" id="due-date-text" placeholder="tomorrow, next week" class="date-text" style="display:none">
|
||
<button type="button" class="date-toggle" data-date-type="due" title="Toggle input type">\u{1F4C5}</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Scheduled Date</label>
|
||
<div class="date-input-wrapper">
|
||
<input type="date" id="scheduled-date-picker" class="date-picker">
|
||
<input type="text" id="scheduled-date-text" placeholder="next monday" class="date-text" style="display:none">
|
||
<button type="button" class="date-toggle" data-date-type="scheduled" title="Toggle input type">\u23F3</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Priority</label>
|
||
<div class="priority-select">
|
||
<div class="priority-btn" data-priority="1">1</div>
|
||
<div class="priority-btn" data-priority="2">2</div>
|
||
<div class="priority-btn" data-priority="3">3</div>
|
||
<div class="priority-btn" data-priority="4">4</div>
|
||
<div class="priority-btn" data-priority="5">5</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="metadata-item">
|
||
<label>Tags</label>
|
||
<input type="text" id="tags" list="tags-list" placeholder="e.g., important, urgent">
|
||
<datalist id="tags-list"></datalist>
|
||
<div class="help-text">Comma separated</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="buttons">
|
||
<button class="btn-secondary" onclick="cancel()">
|
||
Cancel (Esc)
|
||
</button>
|
||
<button class="btn-primary" onclick="save()">
|
||
Save (Enter)
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
// Use a bridge approach for IPC communication
|
||
let selectedPriority = null;
|
||
let bridge = null;
|
||
let dateInputModes = {
|
||
start: 'picker',
|
||
due: 'picker',
|
||
scheduled: 'picker'
|
||
}; // Track mode for each date field
|
||
|
||
// Set up communication bridge
|
||
try {
|
||
// Try to get ipcRenderer from various sources
|
||
const electron = window.require ? window.require('electron') : null;
|
||
const ipcRenderer = electron?.ipcRenderer;
|
||
|
||
if (ipcRenderer) {
|
||
console.log('IPC bridge established');
|
||
bridge = {
|
||
save: (data) => {
|
||
console.log('Sending save via IPC:', data);
|
||
// Try both old and new IPC methods
|
||
ipcRenderer.send('quick-capture-save', data);
|
||
return Promise.resolve();
|
||
},
|
||
cancel: () => {
|
||
console.log('Sending cancel via IPC');
|
||
ipcRenderer.send('quick-capture-cancel');
|
||
return Promise.resolve();
|
||
},
|
||
requestData: (type) => {
|
||
return new Promise((resolve) => {
|
||
// Set up receiver for suggestions
|
||
window.receiveSuggestions = (dataType, items) => {
|
||
if (dataType === type) {
|
||
resolve(items);
|
||
delete window.receiveSuggestions;
|
||
}
|
||
};
|
||
ipcRenderer.send('quick-capture-request-data', type);
|
||
// Timeout after 2 seconds
|
||
setTimeout(() => resolve([]), 2000);
|
||
});
|
||
}
|
||
};
|
||
} else {
|
||
console.log('IPC not available - no ipcRenderer');
|
||
}
|
||
} catch (e) {
|
||
console.log('IPC not available - error:', e);
|
||
}
|
||
|
||
// Auto-resize textarea
|
||
function autoResizeTextarea(textarea) {
|
||
if (!textarea) return;
|
||
|
||
// Reset height to measure content
|
||
textarea.style.height = 'auto';
|
||
|
||
// Calculate new height based on scroll height
|
||
const newHeight = Math.min(textarea.scrollHeight, 300);
|
||
textarea.style.height = newHeight + 'px';
|
||
|
||
// Don't resize the window - let the container handle overflow
|
||
// The window size should remain stable
|
||
}
|
||
|
||
// Initialize
|
||
document.addEventListener('DOMContentLoaded', () => {
|
||
const taskContent = document.getElementById('task-content');
|
||
|
||
// Focus on task content
|
||
if (taskContent) {
|
||
taskContent.focus();
|
||
|
||
// Auto-resize on input
|
||
taskContent.addEventListener('input', () => {
|
||
autoResizeTextarea(taskContent);
|
||
});
|
||
|
||
// Initial resize
|
||
setTimeout(() => autoResizeTextarea(taskContent), 0);
|
||
}
|
||
|
||
// Load suggestions
|
||
loadSuggestions();
|
||
|
||
// Date input toggles
|
||
document.querySelectorAll('.date-toggle').forEach(btn => {
|
||
btn.addEventListener('click', (e) => {
|
||
const dateType = e.target.dataset.dateType;
|
||
if (dateType) {
|
||
toggleDateInput(dateType);
|
||
}
|
||
});
|
||
});
|
||
|
||
// Handle date picker changes for all date fields
|
||
['start', 'due', 'scheduled'].forEach(dateType => {
|
||
const picker = document.getElementById(dateType + '-date-picker');
|
||
const text = document.getElementById(dateType + '-date-text');
|
||
|
||
if (picker) {
|
||
picker.addEventListener('change', (e) => {
|
||
// Sync to text field
|
||
if (text) text.value = e.target.value;
|
||
});
|
||
}
|
||
|
||
// Handle natural language date input
|
||
if (text) {
|
||
text.addEventListener('blur', (e) => {
|
||
const parsed = parseNaturalDate(e.target.value);
|
||
if (parsed && parsed !== e.target.value) {
|
||
e.target.value = parsed;
|
||
if (picker) picker.value = parsed;
|
||
}
|
||
});
|
||
}
|
||
})
|
||
|
||
// Handle priority buttons
|
||
document.querySelectorAll('.priority-btn').forEach(btn => {
|
||
btn.addEventListener('click', () => {
|
||
document.querySelectorAll('.priority-btn').forEach(b =>
|
||
b.classList.remove('selected')
|
||
);
|
||
btn.classList.add('selected');
|
||
selectedPriority = parseInt(btn.dataset.priority);
|
||
});
|
||
});
|
||
|
||
// Keyboard shortcuts
|
||
document.addEventListener('keydown', (e) => {
|
||
if (e.key === 'Escape') {
|
||
e.preventDefault();
|
||
cancel();
|
||
} else if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {
|
||
e.preventDefault();
|
||
save();
|
||
} else if (e.key === 'Tab' && e.target.id === 'task-content') {
|
||
// Allow Tab in textarea to insert tabs
|
||
if (!e.shiftKey) {
|
||
e.preventDefault();
|
||
const textarea = e.target;
|
||
const start = textarea.selectionStart;
|
||
const end = textarea.selectionEnd;
|
||
const value = textarea.value;
|
||
textarea.value = value.substring(0, start) + ' ' + value.substring(end);
|
||
textarea.selectionStart = textarea.selectionEnd = start + 1;
|
||
autoResizeTextarea(textarea);
|
||
}
|
||
} else if ((e.key >= '1' && e.key <= '5') && e.altKey) {
|
||
// Alt+1 through Alt+5 for priority
|
||
e.preventDefault();
|
||
const priority = parseInt(e.key);
|
||
document.querySelectorAll('.priority-btn').forEach(btn => {
|
||
btn.classList.remove('selected');
|
||
if (parseInt(btn.dataset.priority) === priority) {
|
||
btn.classList.add('selected');
|
||
selectedPriority = priority;
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
// Handle settings from main process
|
||
window.addEventListener('message', (event) => {
|
||
if (event.data.type === 'init' && event.data.settings) {
|
||
applySettings(event.data.settings);
|
||
}
|
||
});
|
||
});
|
||
|
||
// Toggle date input between picker and text for specific date type
|
||
function toggleDateInput(dateType) {
|
||
const picker = document.getElementById(dateType + '-date-picker');
|
||
const text = document.getElementById(dateType + '-date-text');
|
||
|
||
if (!picker || !text) return;
|
||
|
||
if (dateInputModes[dateType] === 'picker') {
|
||
picker.style.display = 'none';
|
||
text.style.display = 'block';
|
||
text.focus();
|
||
dateInputModes[dateType] = 'text';
|
||
} else {
|
||
text.style.display = 'none';
|
||
picker.style.display = 'block';
|
||
picker.focus();
|
||
dateInputModes[dateType] = 'picker';
|
||
}
|
||
}
|
||
|
||
// Load auto-complete suggestions
|
||
async function loadSuggestions() {
|
||
if (bridge && bridge.requestData) {
|
||
try {
|
||
// Request and populate projects
|
||
const projects = await bridge.requestData('projects');
|
||
populateDatalist('project-list', projects || []);
|
||
|
||
// Request and populate contexts
|
||
const contexts = await bridge.requestData('contexts');
|
||
populateDatalist('context-list', contexts || []);
|
||
|
||
// Request and populate tags
|
||
const tags = await bridge.requestData('tags');
|
||
populateDatalist('tags-list', tags || []);
|
||
} catch (e) {
|
||
console.error('Failed to load suggestions:', e);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Populate datalist with items
|
||
function populateDatalist(listId, items) {
|
||
const datalist = document.getElementById(listId);
|
||
if (!datalist || !items) return;
|
||
|
||
datalist.innerHTML = '';
|
||
items.forEach(item => {
|
||
const option = document.createElement('option');
|
||
option.value = item;
|
||
datalist.appendChild(option);
|
||
});
|
||
}
|
||
|
||
function applySettings(settings) {
|
||
// Show/hide metadata fields based on settings
|
||
const metadata = document.getElementById('metadata-section');
|
||
if (!settings.showProject && !settings.showContext &&
|
||
!settings.showDueDate && !settings.showPriority) {
|
||
metadata.style.display = 'none';
|
||
} else {
|
||
// Hide individual fields based on settings
|
||
if (!settings.showProject) {
|
||
const projectEl = document.getElementById('project');
|
||
if (projectEl && projectEl.parentElement) {
|
||
projectEl.parentElement.style.display = 'none';
|
||
}
|
||
}
|
||
if (!settings.showContext) {
|
||
const contextEl = document.getElementById('context');
|
||
if (contextEl && contextEl.parentElement) {
|
||
contextEl.parentElement.style.display = 'none';
|
||
}
|
||
}
|
||
if (!settings.showDueDate) {
|
||
const dueDatePicker = document.getElementById('due-date-picker');
|
||
if (dueDatePicker && dueDatePicker.parentElement && dueDatePicker.parentElement.parentElement) {
|
||
dueDatePicker.parentElement.parentElement.style.display = 'none';
|
||
}
|
||
}
|
||
if (!settings.showPriority) {
|
||
const priorityEls = document.querySelectorAll('.priority-btn');
|
||
if (priorityEls.length > 0 && priorityEls[0].parentElement) {
|
||
priorityEls[0].parentElement.parentElement.style.display = 'none';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
async function save() {
|
||
const content = document.getElementById('task-content').value;
|
||
|
||
if (!content.trim()) {
|
||
showError('Task content cannot be empty');
|
||
return;
|
||
}
|
||
|
||
// Get date values from either picker or text input for each date type
|
||
function getDateValue(dateType) {
|
||
const pickerValue = document.getElementById(dateType + '-date-picker').value;
|
||
const textValue = document.getElementById(dateType + '-date-text').value;
|
||
const dateValue = pickerValue || textValue;
|
||
return dateValue ? parseNaturalDate(dateValue) : '';
|
||
}
|
||
|
||
const startDate = getDateValue('start');
|
||
const dueDate = getDateValue('due');
|
||
const scheduledDate = getDateValue('scheduled');
|
||
|
||
// Get tags and split by comma
|
||
const tagsInput = document.getElementById('tags').value.trim();
|
||
const tags = tagsInput ? tagsInput.split(',').map(t => t.trim()).filter(t => t) : [];
|
||
|
||
// Process content to convert to task format if needed
|
||
const processedContent = processTaskContent(content.trim());
|
||
|
||
const data = {
|
||
content: processedContent,
|
||
project: document.getElementById('project').value.trim(),
|
||
context: document.getElementById('context').value.trim(),
|
||
startDate: startDate ? startDate.trim() : '',
|
||
dueDate: dueDate ? dueDate.trim() : '',
|
||
scheduledDate: scheduledDate ? scheduledDate.trim() : '',
|
||
priority: selectedPriority,
|
||
tags: tags
|
||
};
|
||
|
||
if (bridge) {
|
||
try {
|
||
await bridge.save(data);
|
||
window.close();
|
||
} catch (error) {
|
||
console.error('Failed to save:', error);
|
||
showError('Failed to save task');
|
||
}
|
||
} else {
|
||
// Fallback: try to communicate through parent window
|
||
if (window.opener) {
|
||
window.opener.postMessage({ type: 'quick-capture-save', data }, '*');
|
||
window.close();
|
||
} else {
|
||
console.log('Would save:', data);
|
||
showError('Communication bridge not available');
|
||
}
|
||
}
|
||
}
|
||
|
||
async function cancel() {
|
||
if (bridge) {
|
||
try {
|
||
await bridge.cancel();
|
||
} catch {}
|
||
}
|
||
window.close();
|
||
}
|
||
|
||
function showError(message) {
|
||
const errorEl = document.getElementById('content-error');
|
||
errorEl.textContent = message;
|
||
errorEl.classList.add('show');
|
||
setTimeout(() => {
|
||
errorEl.classList.remove('show');
|
||
}, 3000);
|
||
}
|
||
|
||
// Process content to ensure it's in task format
|
||
function processTaskContent(content) {
|
||
if (!content) return '';
|
||
|
||
const lines = content.split('\\n');
|
||
const processedLines = [];
|
||
|
||
for (let line of lines) {
|
||
if (!line.trim()) {
|
||
processedLines.push(line);
|
||
continue;
|
||
}
|
||
|
||
// Check if line starts with a task marker
|
||
const taskRegex = /^[\\s]*[-*+\\d+.]\\s*(\\[[^\\]]*\\])?/;
|
||
if (taskRegex.test(line)) {
|
||
// Already a task or list item
|
||
processedLines.push(line);
|
||
} else {
|
||
// Convert to task
|
||
processedLines.push('- [ ] ' + line.trim());
|
||
}
|
||
}
|
||
|
||
return processedLines.join('\\n');
|
||
}
|
||
|
||
// Parse natural language dates
|
||
function parseNaturalDate(input) {
|
||
if (!input) return '';
|
||
|
||
const lower = input.toLowerCase().trim();
|
||
const today = new Date();
|
||
|
||
// Natural language patterns
|
||
if (lower === 'today' || lower === 'tod') {
|
||
return formatDate(today);
|
||
}
|
||
if (lower === 'tomorrow' || lower === 'tom' || lower === 'tmr') {
|
||
const tomorrow = new Date(today);
|
||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||
return formatDate(tomorrow);
|
||
}
|
||
if (lower === 'yesterday') {
|
||
const yesterday = new Date(today);
|
||
yesterday.setDate(yesterday.getDate() - 1);
|
||
return formatDate(yesterday);
|
||
}
|
||
if (lower === 'next week' || lower === 'nw') {
|
||
const nextWeek = new Date(today);
|
||
nextWeek.setDate(nextWeek.getDate() + 7);
|
||
return formatDate(nextWeek);
|
||
}
|
||
if (lower === 'next month' || lower === 'nm') {
|
||
const nextMonth = new Date(today);
|
||
nextMonth.setMonth(nextMonth.getMonth() + 1);
|
||
return formatDate(nextMonth);
|
||
}
|
||
|
||
// Weekday names
|
||
const weekdays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
|
||
const weekdayIndex = weekdays.indexOf(lower);
|
||
if (weekdayIndex >= 0) {
|
||
const currentDay = today.getDay();
|
||
let daysUntil = weekdayIndex - currentDay;
|
||
if (daysUntil <= 0) daysUntil += 7; // Next occurrence
|
||
const targetDate = new Date(today);
|
||
targetDate.setDate(targetDate.getDate() + daysUntil);
|
||
return formatDate(targetDate);
|
||
}
|
||
|
||
// "next" + weekday
|
||
const nextWeekdayMatch = lower.match(/^next (\\w+)$/);
|
||
if (nextWeekdayMatch) {
|
||
const weekdayName = nextWeekdayMatch[1];
|
||
const idx = weekdays.indexOf(weekdayName);
|
||
if (idx >= 0) {
|
||
const currentDay = today.getDay();
|
||
let daysUntil = idx - currentDay;
|
||
if (daysUntil <= 0) daysUntil += 7;
|
||
daysUntil += 7; // "next" means skip this week
|
||
const targetDate = new Date(today);
|
||
targetDate.setDate(targetDate.getDate() + daysUntil);
|
||
return formatDate(targetDate);
|
||
}
|
||
}
|
||
|
||
// Match patterns like "in X days"
|
||
const inDaysMatch = lower.match(/^in (\\d+) days?$/);
|
||
if (inDaysMatch) {
|
||
const days = parseInt(inDaysMatch[1]);
|
||
const future = new Date(today);
|
||
future.setDate(future.getDate() + days);
|
||
return formatDate(future);
|
||
}
|
||
|
||
// Match patterns like "X days"
|
||
const daysMatch = lower.match(/^(\\d+) days?$/);
|
||
if (daysMatch) {
|
||
const days = parseInt(daysMatch[1]);
|
||
const future = new Date(today);
|
||
future.setDate(future.getDate() + days);
|
||
return formatDate(future);
|
||
}
|
||
|
||
// Try to parse as a regular date
|
||
try {
|
||
const parsed = new Date(input);
|
||
if (!isNaN(parsed.getTime())) {
|
||
return formatDate(parsed);
|
||
}
|
||
} catch {}
|
||
|
||
// If not a natural language pattern, return original
|
||
return input;
|
||
}
|
||
|
||
function formatDate(date) {
|
||
const year = date.getFullYear();
|
||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||
const day = String(date.getDate()).padStart(2, '0');
|
||
return year + '-' + month + '-' + day;
|
||
}
|
||
<\/script>
|
||
</body>
|
||
</html>`}destroy(){this.closeCaptureWindow(),this.cleanupIPCHandlers()}};var BC=class extends Pa.Component{constructor(e){super();this.plugin=e;this.dailyTimeout=null;this.midnightTimeout=null;this.notifiedKeys=new Set;this.statusBarItem=null;this.electronTray=null}async onload(){var t,r;if(!Pa.Platform.isDesktopApp)return;this.electronQuickCapture=new iy(this.plugin);try{this.beforeUnloadHandler=()=>{var i,s,o,l,c;try{(s=(i=this.electronTray)==null?void 0:i.removeAllListeners)==null||s.call(i);let u=window,p="__tg_tray_singleton__"+this.plugin.app.appId;((o=u[p])==null?void 0:o.owner)===this.trayOwnerToken&&((c=(l=this.electronTray)==null?void 0:l.destroy)==null||c.call(l),delete u[p])}catch(u){}},this.registerDomEvent(window,"beforeunload",this.beforeUnloadHandler),this.register(()=>{this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=void 0)})}catch(i){}let e=((t=this.plugin.settings.desktopIntegration)==null?void 0:t.trayMode)||"status";(e==="system"||e==="both")&&(r=this.plugin.settings.desktopIntegration)!=null&&r.enableTray&&setTimeout(async()=>{!await this.createOrAdoptElectronTray()&&e==="system"&&this.createOrUpdateStatusBar(),this.updateTray().catch(()=>{})},0),(e==="status"||e==="both")&&this.createOrUpdateStatusBar(),this.setupDailySummary(),this.startPerTaskTicker(),this.updateStatusBar().catch(()=>{}),this.updateTray().catch(()=>{})}onunload(){var r,i,s,o,l,c,u;this.dailyTimeout&&window.clearTimeout(this.dailyTimeout),this.midnightTimeout&&window.clearTimeout(this.midnightTimeout),this.dailyTimeout=null,this.midnightTimeout=null,this.notifiedKeys.clear(),this.statusBarItem&&(this.statusBarItem.detach(),this.statusBarItem=null),this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=void 0);let e="__tg_tray_singleton__"+this.plugin.app.appId,t=window;if(this.electronTray)try{if((i=(r=this.electronTray).removeAllListeners)==null||i.call(r),((s=t[e])==null?void 0:s.owner)===this.trayOwnerToken)(l=(o=this.electronTray).destroy)==null||l.call(o),delete t[e];else{try{let p=this.getElectron(),m=(p==null?void 0:p.Menu)||((c=p==null?void 0:p.remote)==null?void 0:c.Menu);m&&((u=this.electronTray)!=null&&u.setContextMenu)&&this.electronTray.setContextMenu(m.buildFromTemplate([]))}catch(p){}t[e]&&(t[e].clickHandler=void 0)}}catch(p){console.error("[TrayDebug] Error cleaning up tray:",p)}this.electronTray=null,this.trayOwnerToken=void 0,this.electronQuickCapture&&(this.electronQuickCapture.destroy(),this.electronQuickCapture=void 0)}async reloadSettings(){this.onunload(),await new Promise(e=>setTimeout(e,100)),await this.onload()}onTaskCacheUpdated(){this.scanAndNotifyPerTask().catch(()=>{}),this.updateStatusBar().catch(()=>{}),this.updateTray().catch(()=>{})}async triggerDailySummary(){await this.sendDailySummary()}triggerImminentScan(){this.scanAndNotifyPerTask().catch(()=>{})}getQueryAPI(){var t;let e=this.plugin.dataflowOrchestrator;return e?(t=e.getQueryAPI)==null?void 0:t.call(e):null}getElectron(){try{let e=window.electron||globalThis.electron;if(e)return e;let t=window.require||globalThis.require;return t?t("electron"):null}catch(e){return null}}async createOrAdoptElectronTray(){var e,t,r,i,s,o,l,c,u,p,m,f,h,k,g,v,b,y;try{let w=this.getElectron();if(!w)return!1;let x=((e=w.remote)==null?void 0:e.Tray)||w.Tray,T=((t=w.remote)==null?void 0:t.nativeImage)||w.nativeImage;if(!x||!T)return!1;let C="__tg_tray_singleton__"+this.plugin.app.appId,S=window;if((r=S[C])!=null&&r.tray&&((i=S[C])!=null&&i.owner))try{if((l=(o=(s=S[C].tray).isDestroyed)==null?void 0:o.call(s))!=null?l:!1)delete S[C];else{this.electronTray=S[C].tray,this.trayOwnerToken=S[C].owner;try{(u=(c=this.electronTray).removeAllListeners)==null||u.call(c);let N=async()=>{var I,R;await this.sendDailySummary();try{(R=(I=this.plugin).activateTaskView)==null||R.call(I)}catch(j){}};(m=(p=this.electronTray).on)==null||m.call(p,"click",N),S[C].clickHandler=N,await this.applyThemeToTray(T),this.subscribeNativeTheme(T)}catch(N){}return!0}}catch(A){delete S[C]}this.electronTray=new x(T.createEmpty());try{this.electronTray.setToolTip("Task Genius")}catch(A){}try{await this.applyThemeToTray(T),this.subscribeNativeTheme(T)}catch(A){}this.trayClickHandler=async()=>{var A,N;await this.sendDailySummary();try{(N=(A=this.plugin).activateTaskView)==null||N.call(A)}catch(I){}},(h=(f=this.electronTray).removeAllListeners)==null||h.call(f),(g=(k=this.electronTray).on)==null||g.call(k,"click",this.trayClickHandler);let E=Symbol("tg-tray-owner");try{(y=(b=(v=S[C])==null?void 0:v.tray)==null?void 0:b.removeAllListeners)==null||y.call(b)}catch(A){}return S[C]={tray:this.electronTray,owner:E,clickHandler:this.trayClickHandler},this.trayOwnerToken=E,!0}catch(w){return console.warn("Failed to create/adopt Electron tray:",w),!1}}getNativeTheme(){var e;try{let t=this.getElectron();return(t==null?void 0:t.nativeTheme)||((e=t==null?void 0:t.remote)==null?void 0:e.nativeTheme)||null}catch(t){return null}}isDarkTheme(){let e=this.getNativeTheme();if(e&&typeof e.shouldUseDarkColors=="boolean")return e.shouldUseDarkColors;try{return window.matchMedia("(prefers-color-scheme: dark)").matches}catch(t){return!1}}async applyThemeToTray(e){var i,s;if(this.electronTray,!this.electronTray)return;let t=Pa.Platform.isMacOS,r=await this.buildTrayNativeImage(e,t);try{(s=(i=this.electronTray).setImage)==null||s.call(i,r)}catch(o){}}subscribeNativeTheme(e){var r,i,s;let t=this.getNativeTheme();try{if(!t)return;if(this.nativeThemeHandler){try{(r=t.off)==null||r.call(t,"updated",this.nativeThemeHandler)}catch(l){}try{(i=t.removeListener)==null||i.call(t,"updated",this.nativeThemeHandler)}catch(l){}}let o=()=>{this.applyThemeToTray(e).catch(()=>{})};this.nativeThemeHandler=o,(s=t.on)==null||s.call(t,"updated",o);try{this.register(()=>{var c,u;let l=this.getNativeTheme();try{(c=l==null?void 0:l.off)==null||c.call(l,"updated",o)}catch(p){}try{(u=l==null?void 0:l.removeListener)==null||u.call(l,"updated",o)}catch(p){}})}catch(l){}}catch(o){}}async buildTrayNativeImage(e,t=!1){try{let r=Pa.Platform.isMacOS?14:24,i=document.createElement("canvas");i.width=r,i.height=r;let s=i.getContext("2d");if(!s)return e.createEmpty();let o;t?o="#000000":o="#c7c7c7ff";let l=this.generateThemedTaskGeniusIcon(o),c=new Image,u=new Blob([l],{type:"image/svg+xml"}),p=URL.createObjectURL(u);await new Promise(h=>{c.onload=()=>h(),c.src=p}),s.clearRect(0,0,r,r),s.drawImage(c,0,0,r,r),URL.revokeObjectURL(p);let m=i.toDataURL("image/png"),f=e.createFromDataURL(m);try{t&&f.setTemplateImage&&f.setTemplateImage(!0)}catch(h){}return f}catch(r){return e.createEmpty()}}getCurrentThemeColor(){var i;let e=this.isDarkTheme();return((i=getComputedStyle(document.body).getPropertyValue("--text-normal"))==null?void 0:i.trim())||(e?"#FFFFFF":"#000000")}generateThemedTaskGeniusIcon(e){return Sv().replace(/currentColor/g,e)}isIcsBadge(e){var t,r,i,s,o,l;try{let u=((s=(r=(t=e==null?void 0:e.metadata)==null?void 0:t.source)==null?void 0:r.type)!=null?s:(i=e==null?void 0:e.source)==null?void 0:i.type)==="ics",p=(e==null?void 0:e.badge)===!0||((l=(o=e==null?void 0:e.icsEvent)==null?void 0:o.source)==null?void 0:l.showType)==="badge";return!!(u&&p)}catch(c){return!1}}isIcsTask(e){var t,r,i,s;try{return typeof e.filePath=="string"&&e.filePath.startsWith("ics://")?!0:((s=(r=(t=e==null?void 0:e.metadata)==null?void 0:t.source)==null?void 0:r.type)!=null?s:(i=e==null?void 0:e.source)==null?void 0:i.type)==="ics"}catch(o){return!1}}getDueTodayRange(){let e=new Date;e.setHours(0,0,0,0);let t=new Date(e);return t.setDate(t.getDate()+1),{from:e.getTime(),to:t.getTime()}}startPerTaskTicker(){var r,i;let e=(r=this.plugin.settings.notifications)==null?void 0:r.perTask;(i=this.plugin.settings.notifications)!=null&&i.enabled&&(e!=null&&e.enabled)&&(this.scanAndNotifyPerTask().catch(()=>{}),this.registerInterval(window.setInterval(()=>{this.scanAndNotifyPerTask().catch(()=>{})},6e4)),this.scheduleMidnightReset())}scheduleMidnightReset(){let e=new Date,t=new Date(e);t.setHours(24,0,0,0);let r=t.getTime()-e.getTime();this.midnightTimeout=window.setTimeout(()=>{this.notifiedKeys.clear(),this.scheduleMidnightReset(),this.updateStatusBar().catch(()=>{}),this.updateTray().catch(()=>{})},r)}async scanAndNotifyPerTask(){var c,u,p,m,f,h;let e=(c=this.plugin.settings.notifications)==null?void 0:c.perTask;if(!e||!((u=this.plugin.settings.notifications)!=null&&u.enabled)||!e.enabled)return;let t=this.getQueryAPI();if(!t)return;let r=(p=t.getAllTasksSync)==null?void 0:p.call(t),i=r&&r.length?r:await t.getAllTasks(),s=Math.max(0,((m=e.leadMinutes)!=null?m:0)*6e4),o=Date.now(),l=o+6e4;for(let k of i){if(k.completed||this.isIcsBadge(k))continue;let g=(f=k.metadata)==null?void 0:f.dueDate;if(!g)continue;let v=g-s;if(v>=o&&v<l){let b=`${k.id||((h=k.metadata)==null?void 0:h.id)||k.filePath+":"+k.line}@${g}`;if(this.notifiedKeys.has(b))continue;this.notifiedKeys.add(b),this.showTaskDueNotification(k,g,s)}}}async updateTray(){var e,t;if(this.electronTray)try{let r=this.getQueryAPI();if(!r)return;let i=await r.getAllTasks(),s=new Date;s.setHours(23,59,59,999);let o=i.filter(c=>{var u;return!c.completed&&((u=c.metadata)==null?void 0:u.dueDate)&&c.metadata.dueDate<=s.getTime()}).filter(c=>!this.isIcsBadge(c));try{Pa.Platform.isMacOS&&this.electronTray.setTitle&&this.electronTray.setTitle(o.length>0?` ${o.length} ${d("Tasks")}`:" "+d("No Tasks"))}catch(c){}try{(t=(e=this.electronTray).setToolTip)==null||t.call(e,o.length>0?`${o.length} ${d("tasks due or overdue")}`:d("No due today"))}catch(c){}await new ay(this.plugin).applyToTray(this.electronTray,{openVault:()=>this.openVault(),openTaskView:()=>{var c,u;try{(u=(c=this.plugin).activateTaskView)==null||u.call(c)}catch(p){}},openTask:c=>this.openTask(c),completeTask:c=>this.completeTask(c),postponeTask:(c,u)=>this.postponeTask(c,u),setPriority:(c,u)=>this.setPriority(c,u),pickCustomDate:c=>this.openDatePickerForTask(c),sendDaily:()=>this.sendDailySummary(),quickCapture:()=>this.openQuickCaptureWindow()})}catch(r){console.warn("Failed to update tray:",r)}}setupDailySummary(){var u,p;let e=(u=this.plugin.settings.notifications)==null?void 0:u.dailySummary;if(!(!!((p=this.plugin.settings.notifications)!=null&&p.enabled)&&!!(e!=null&&e.enabled)))return;let r=e.time||"09:00",[i,s]=r.split(":").map(m=>parseInt(m,10)),o=new Date,l=new Date;l.setHours(i||9,s||0,0,0),l.getTime()<=o.getTime()&&l.setDate(l.getDate()+1);let c=l.getTime()-o.getTime();this.dailyTimeout=window.setTimeout(async()=>{await this.sendDailySummary(),this.setupDailySummary()},c)}async updateStatusBar(){var o;let e=((o=this.plugin.settings.desktopIntegration)==null?void 0:o.trayMode)||"status";if(!(e==="status"||e==="both"))return;let t=this.getQueryAPI();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?void 0:c.dueDate)&&l.metadata.dueDate<=i.getTime()}).filter(l=>!this.isIcsBadge(l));if(this.statusBarItem||this.createOrUpdateStatusBar(),this.statusBarItem){this.statusBarItem.empty();let l=this.statusBarItem.createEl("span",{cls:"task-genius-tray"});l.textContent=s.length>0?`${s.length} ${d("Tasks")}`:d("No Tasks"),l.style.cursor="pointer",l.onclick=async c=>{let u=new Pa.Menu;u.addItem(m=>{m.setTitle("Open Task Genius").setIcon("task-genius").onClick(()=>{var f,h;try{(h=(f=this.plugin).activateTaskView)==null||h.call(f)}catch(k){}})}),u.addSeparator(),u.addItem(m=>{m.setTitle("Quick Capture...").setIcon("plus-circle").onClick(()=>{this.openQuickCaptureWindow()})}),u.addSeparator();let p=s.sort((m,f)=>{var h,k;return(((h=m.metadata)==null?void 0:h.dueDate)||0)-(((k=f.metadata)==null?void 0:k.dueDate)||0)}).slice(0,7);for(let m of p){let f=m.content.length>50?m.content.slice(0,50)+"\u2026":m.content;u.addItem(h=>{var g;h.setTitle(f).setIcon("circle-dot");let k=(g=h.setSubmenu)==null?void 0:g.call(h);k&&(k.addItem(v=>v.setTitle("Edit in file").setIcon("file-pen").onClick(()=>this.openTask(m))),k.addItem(v=>v.setTitle("Complete").setIcon("check").onClick(()=>this.completeTask(m.id))),k.addSeparator(),k.addItem(v=>v.setTitle("Snooze 1d").setIcon("calendar").onClick(()=>this.postponeTask(m,1440*6e4))),k.addItem(v=>v.setTitle("Snooze 2d").setIcon("calendar").onClick(()=>this.postponeTask(m,2880*6e4))),k.addItem(v=>v.setTitle("Snooze 3d").setIcon("calendar").onClick(()=>this.postponeTask(m,4320*6e4))),k.addItem(v=>v.setTitle("Snooze 1w").setIcon("calendar").onClick(()=>this.postponeTask(m,10080*6e4))),k.addItem(v=>v.setTitle("Custom date\u2026").setIcon("calendar-plus").onClick(()=>this.openDatePickerForTask(m))),k.addSeparator(),k.addItem(v=>{var y;v.setTitle("Priority").setIcon("flag");let b=(y=v.setSubmenu)==null?void 0:y.call(v);b==null||b.addItem(w=>w.setTitle("\u{1F53A} Highest").onClick(()=>this.setPriority(m,5))),b==null||b.addItem(w=>w.setTitle("\u23EB High").onClick(()=>this.setPriority(m,4))),b==null||b.addItem(w=>w.setTitle("\u{1F53C} Medium").onClick(()=>this.setPriority(m,3))),b==null||b.addItem(w=>w.setTitle("\u{1F53D} Low").onClick(()=>this.setPriority(m,2))),b==null||b.addItem(w=>w.setTitle("\u23EC\uFE0F Lowest").onClick(()=>this.setPriority(m,1)))}))})}p.length===0&&u.addItem(m=>m.setTitle("No due or upcoming").setDisabled(!0)),u.addSeparator(),u.addItem(m=>m.setTitle("Refresh").setIcon("refresh-ccw").onClick(()=>{this.updateStatusBar(),this.updateTray()})),u.showAtMouseEvent(c)},l.title=s.length>0?`${s.length} tasks due or upcoming`:"No due or upcoming"}}createOrUpdateStatusBar(){if(!this.statusBarItem)try{this.statusBarItem=this.plugin.addStatusBarItem()}catch(e){console.warn("Failed to create status bar item for tray:",e)}}async sendDailySummary(){let e=this.getQueryAPI();if(e)try{let t=await e.getAllTasks(),{from:r,to:i}=this.getDueTodayRange(),s=t.filter(l=>{var u;if(l.completed||!((u=l.metadata)!=null&&u.dueDate)||this.isIcsTask(l)||this.isIcsBadge(l))return!1;let c=l.metadata.dueDate;return c>=r&&c<=i});if(!s.length){new Pa.Notice("No tasks due today",2e3);return}let o=this.formatDailySummaryBody(s);this.showNotification("Today's tasks",o)}catch(t){console.warn("Daily summary failed",t)}}formatDailySummaryBody(e){let r=e.slice(0,5).map(s=>`\u2022 ${s.content}`),i=e.length>5?`
|
||
\u2026 and ${e.length-5} more`:"";return`${e.length} tasks due today:
|
||
${r.join(`
|
||
`)}${i}`}async showTaskDueNotification(e,t,r){let i=Math.round(r/6e4),s=i>0?`Due in ${i} min`:"Task due",o=`${e.content}`,l=await this.showNotification(s,o);l&&(l.onclick=()=>{var c;this.openTask(e).catch(()=>{}),(c=l.close)==null||c.call(l)})}getVaultOpenURI(){let e=this.plugin.app.vault.getName();return`obsidian://open?vault=${encodeURIComponent(e)}`}openVault(){this.focusObsidianWindow();let e=this.getVaultOpenURI();try{window.open(e,"_blank")}catch(t){}}async completeTask(e){var t;try{await((t=this.plugin.writeAPI)==null?void 0:t.updateTaskStatus({taskId:e,completed:!0}))}catch(r){}}async setPriority(e,t){var r;try{await((r=this.plugin.writeAPI)==null?void 0:r.updateTask({taskId:e.id,updates:{metadata:{...e.metadata||{tags:[]},priority:t}}}))}catch(i){}}async openDatePickerForTask(e){try{let{DatePickerModal:t}=await Promise.resolve().then(()=>(Qx(),cj)),r=new t(this.plugin.app,this.plugin,void 0,"\u{1F4C5}");r.onDateSelected=async i=>{var l,c,u,p,m;if(!i)return;let s=((l=window.moment)==null?void 0:l.call(window,i))||((u=(c=this.plugin.app).moment)==null?void 0:u.call(c,i)),o=(p=s==null?void 0:s.valueOf)==null?void 0:p.call(s);o&&await((m=this.plugin.writeAPI)==null?void 0:m.updateTask({taskId:e.id,updates:{metadata:{...e.metadata||{tags:[]},dueDate:o}}}))},r.open()}catch(t){}}async postponeTask(e,t){var s;let i=Date.now()+t;try{await((s=this.plugin.writeAPI)==null?void 0:s.updateTask({taskId:e.id,updates:{metadata:{...e.metadata||{tags:[]},dueDate:i}}}))}catch(o){}}tryElectronNotification(e,t){try{let r=window.require||globalThis.require,i=r?r("electron"):null,s=i==null?void 0:i.Notification;if(s){let o=new s({title:e,body:t});return typeof o.show=="function"&&o.show(),o}}catch(r){}return null}async showNotification(e,t){try{let r=this.tryElectronNotification(e,t);if(r)return r;if("Notification"in window&&(Notification.permission==="default"&&await Notification.requestPermission(),Notification.permission==="granted"))return new Notification(e,{body:t});new Pa.Notice(`${e}: ${t}`,5e3)}catch(r){console.warn("Notification error",r),new Pa.Notice(`${e}: ${t}`,5e3)}return null}async openTask(e){this.focusObsidianWindow();let t=this.plugin.app.vault.getFileByPath(e.filePath);if(!t)return;let r=this.plugin.app.workspace.getLeaf(!1);await r.openFile(t),t instanceof Pa.TFile&&await r.openFile(t,{eState:{line:e.line}})}async openQuickCaptureWindow(){if(!this.electronQuickCapture){new Pa.Notice(d("Quick capture not available"));return}try{await this.electronQuickCapture.openCaptureWindow()}catch(e){console.error("Failed to open quick capture:",e),new Pa.Notice(d("Failed to open quick capture window"))}}focusObsidianWindow(){var e,t,r,i,s,o,l;try{let c=this.getElectron();if(!c)return;let u=((e=c.remote)==null?void 0:e.BrowserWindow)||c.BrowserWindow,p=((t=c.remote)==null?void 0:t.getCurrentWindow)||(()=>{var h,k,g,v,b;let f=((k=(h=c.remote)==null?void 0:h.getCurrentWebContents)==null?void 0:k.call(h))||((v=(g=c.webContents)==null?void 0:g.getFocusedWebContents)==null?void 0:v.call(g));return f?(b=u==null?void 0:u.fromWebContents)==null?void 0:b.call(u,f):null}),m=p==null?void 0:p();m&&((r=m.isMinimized)!=null&&r.call(m)&&((i=m.restore)==null||i.call(m)),(s=m.show)==null||s.call(m),(o=m.focus)==null||o.call(m),Pa.Platform.isWin&&((l=m.setAlwaysOnTop)==null||l.call(m,!0),setTimeout(()=>{var f;(f=m.setAlwaysOnTop)==null||f.call(m,!1)},100)))}catch(c){}}},iH=BC;var sH=require("obsidian");VC();var Dr=class{async execute(a,e){return this.validateConfig(e)?this.isCanvasTask(a.task)?this.executeForCanvas(a,e):this.executeForMarkdown(a,e):this.createErrorResult("Invalid configuration")}createSuccessResult(a){return{success:!0,message:a}}createErrorResult(a){return{success:!1,error:a}}isCanvasTask(a){return sr.isCanvasTask(a)}getCanvasTaskUpdater(a){return new sr(a.app.vault,a.plugin)}};var sy=class extends Dr{async executeForCanvas(a,e){let{task:t}=a;try{let i=await this.getCanvasTaskUpdater(a).deleteCanvasTask(t);return i.success?this.createSuccessResult(`Task deleted from Canvas file ${t.filePath}`):this.createErrorResult(i.error||"Failed to delete Canvas task")}catch(r){return this.createErrorResult(`Error deleting Canvas task: ${r.message}`)}}async executeForMarkdown(a,e){let{task:t,app:r}=a;try{let i=r.vault.getFileByPath(t.filePath);if(!i)return this.createErrorResult(`File not found: ${t.filePath}`);let o=(await r.vault.read(i)).split(`
|
||
`),l=-1;if(t.originalMarkdown&&(l=o.findIndex(c=>{var u;return c.trim()===((u=t.originalMarkdown)==null?void 0:u.trim())})),l===-1&&t.line!==void 0&&t.line<o.length&&(l=t.line),l===-1&&t.lineNumber!==void 0&&t.lineNumber<o.length&&(l=t.lineNumber),l!==-1){o.splice(l,1),this.cleanupConsecutiveEmptyLines(o);let c=o.join(`
|
||
`);return await r.vault.modify(i,c),this.createSuccessResult("Task deleted successfully")}else return this.createErrorResult("Task not found in file")}catch(i){return this.createErrorResult(`Failed to delete task: ${i.message}`)}}validateConfig(a){return a.type==="delete"}getDescription(a){return"Delete the completed task from the file"}cleanupConsecutiveEmptyLines(a){for(let e=a.length-1;e>=1;e--)a[e].trim()===""&&a[e-1].trim()===""&&a.splice(e,1)}};var ny=class extends Dr{executeForCanvas(a,e){return this.execute(a,e)}executeForMarkdown(a,e){return this.execute(a,e)}async execute(a,e){return this.validateConfig(e)?this.createSuccessResult("Task kept in place"):this.createErrorResult("Invalid keep configuration")}validateConfig(a){return a.type==="keep"}getDescription(a){return"Keep the completed task in place (no action)"}};var oy=class extends Dr{executeForCanvas(a,e){return this.execute(a,e)}executeForMarkdown(a,e){return this.execute(a,e)}async execute(a,e){return this.validateConfig(e)?this.executeCommon(a,e):this.createErrorResult("Invalid complete configuration")}async executeCommon(a,e){let t=e,{plugin:r}=a;try{let i=[],s=[];if(!r.dataflowOrchestrator)return this.createErrorResult("Dataflow orchestrator not available");let o=r.dataflowOrchestrator.getQueryAPI();for(let u of t.taskIds)try{let p=await o.getTaskById(u);if(!p){s.push(`Task not found: ${u}`);continue}if(p.completed)continue;let m={...p,completed:!0,status:"x",metadata:{...p.metadata,completedDate:Date.now()}};if(a.plugin.writeAPI){let f=await a.plugin.writeAPI.updateTask({taskId:m.id,updates:m});if(!f.success)throw new Error(f.error||"Failed to update task")}else throw new Error("WriteAPI not available");i.push(u)}catch(p){s.push(`${u}: ${p.message}`)}let l="";return i.length>0&&(l+=`Completed tasks: ${i.join(", ")}`),s.length>0&&(l&&(l+="; "),l+=`Failed: ${s.join(", ")}`),i.length>0?this.createSuccessResult(l):this.createErrorResult(l||"No tasks were completed")}catch(i){return this.createErrorResult(`Failed to complete related tasks: ${i.message}`)}}validateConfig(a){if(a.type!=="complete")return!1;let e=a;return Array.isArray(e.taskIds)&&e.taskIds.length>0}getDescription(a){var r;let t=((r=a.taskIds)==null?void 0:r.length)||0;return`Complete ${t} related task${t!==1?"s":""}`}};var ly=class extends Dr{async executeForCanvas(a,e){let t=e,{task:r,app:i}=a;try{let s=this.getCanvasTaskUpdater(a);if(t.targetFile.endsWith(".canvas")){let o={...r,originalMarkdown:this.removeOnCompletionMetadata(r.originalMarkdown||`- [${r.completed?"x":" "}] ${r.content}`),metadata:{...r.metadata,onCompletion:void 0}},l=await s.moveCanvasTask(o,t.targetFile,void 0,t.targetSection);if(l.success){let c=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task moved to Canvas file ${t.targetFile}${c} successfully`)}else return this.createErrorResult(l.error||"Failed to move Canvas task")}else return this.moveCanvasToMarkdown(a,t)}catch(s){return this.createErrorResult(`Error moving Canvas task: ${s.message}`)}}async executeForMarkdown(a,e){let t=e,{task:r,app:i}=a;try{let s=i.vault.getFileByPath(r.filePath);if(!s)return this.createErrorResult(`Source file not found: ${r.filePath}`);let o=i.vault.getFileByPath(t.targetFile);if(!o)try{o=await i.vault.create(t.targetFile,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${t.targetFile}`)}let l=await i.vault.read(s),c=await i.vault.read(o),u=l.split(`
|
||
`),p=c.split(`
|
||
`);if(r.line===void 0||r.line>=u.length)return this.createErrorResult("Task line not found in source file");let m=u[r.line];if(m=this.removeOnCompletionMetadata(m),u.splice(r.line,1),t.targetSection){let h=p.findIndex(k=>k.trim().startsWith("#")&&k.includes(t.targetSection));if(h!==-1){let k=p.length;for(let g=h+1;g<p.length;g++)if(p[g].trim().startsWith("#")){k=g;break}p.splice(k,0,m)}else p.push("",`## ${t.targetSection}`,m)}else p.push(m);await i.vault.modify(s,u.join(`
|
||
`)),await i.vault.modify(o,p.join(`
|
||
`));let f=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task moved to ${t.targetFile}${f} successfully`)}catch(s){return this.createErrorResult(`Failed to move task: ${s.message}`)}}async moveCanvasToMarkdown(a,e){let{task:t,app:r}=a;try{let i=t.originalMarkdown||`- [${t.completed?"x":" "}] ${t.content}`;i=this.removeOnCompletionMetadata(i);let s=r.vault.getFileByPath(e.targetFile);if(!s)try{s=await r.vault.create(e.targetFile,"")}catch(f){return this.createErrorResult(`Failed to create target file: ${e.targetFile}`)}let l=(await r.vault.read(s)).split(`
|
||
`),c=l.length;if(e.targetSection){for(let f=0;f<l.length;f++)if(l[f].trim().toLowerCase().includes(e.targetSection.toLowerCase())){c=f+1;break}}l.splice(c,0,i),await r.vault.modify(s,l.join(`
|
||
`));let p=await this.getCanvasTaskUpdater(a).deleteCanvasTask(t);if(!p.success){let f=e.targetSection?` (section: ${e.targetSection})`:"";return this.createErrorResult(`Task moved successfully to ${e.targetFile}${f}, but failed to remove from Canvas: ${p.error}`)}let m=e.targetSection?` (section: ${e.targetSection})`:"";return this.createSuccessResult(`Task moved from Canvas to ${e.targetFile}${m} successfully`)}catch(i){return this.createErrorResult(`Failed to move Canvas task to Markdown: ${i.message}`)}}removeOnCompletionMetadata(a){let e=a;e=e.replace(/🏁\s+[^\s{]+/g,"");let t;for(;(t=e.match(/🏁\s*\{/))!==null;){let r=t.index,i=e.indexOf("{",r),s=0,o=i;for(let l=i;l<e.length;l++)if(e[l]==="{"&&s++,e[l]==="}"&&s--,s===0){o=l;break}s===0?e=e.substring(0,r)+e.substring(o+1):e=e.substring(0,r)+e.substring(r+t[0].length)}return e=e.replace(/\[onCompletion::\s*[^\]]*\]/gi,""),e=e.replace(/\s+/g," ").trim(),e}validateConfig(a){if(a.type!=="move")return!1;let e=a;return typeof e.targetFile=="string"&&e.targetFile.trim().length>0}getDescription(a){let e=a,t=e.targetSection?` (section: ${e.targetSection})`:"";return`Move task to ${e.targetFile}${t}`}};var dy=class extends Dr{constructor(){super(...arguments);this.DEFAULT_ARCHIVE_FILE="Archive/Completed Tasks.md";this.DEFAULT_ARCHIVE_SECTION="Completed Tasks"}async executeForCanvas(e,t){let r=t,{task:i,app:s}=e;try{let o=i.originalMarkdown||`- [${i.completed?"x":" "}] ${i.content}`;o=this.removeOnCompletionMetadata(o),o=this.ensureTaskIsCompleted(o);let l=r.archiveFile||this.DEFAULT_ARCHIVE_FILE,c=r.archiveSection||this.DEFAULT_ARCHIVE_SECTION,u=await this.addTaskToArchiveFile(s,o,l,c,e);if(!u.success)return this.createErrorResult(u.error||"Failed to archive Canvas task");let m=await this.getCanvasTaskUpdater(e).deleteCanvasTask(i);return m.success?this.createSuccessResult(`Task archived from Canvas to ${l}`):this.createErrorResult(`Task archived successfully to ${l}, but failed to remove from Canvas: ${m.error}`)}catch(o){return this.createErrorResult(`Error archiving Canvas task: ${o.message}`)}}async executeForMarkdown(e,t){var l;let r=t,{task:i,app:s,plugin:o}=e;try{let c=r.archiveFile||((l=o.settings.onCompletion)==null?void 0:l.defaultArchiveFile)||this.DEFAULT_ARCHIVE_FILE,u=r.archiveSection||this.DEFAULT_ARCHIVE_SECTION,p=s.vault.getFileByPath(i.filePath);if(!p)return this.createErrorResult(`Source file not found: ${i.filePath}`);let m=s.vault.getFileByPath(c);if(!m)try{let C=c.substring(0,c.lastIndexOf("/"));C&&!s.vault.getAbstractFileByPath(C)&&await s.vault.createFolder(C),m=await s.vault.create(c,`# Archive
|
||
|
||
## ${u}
|
||
|
||
`)}catch(C){return this.createErrorResult(`Failed to create archive file: ${c}`)}let f=await s.vault.read(p),h=await s.vault.read(m),k=f.split(`
|
||
`),g=h.split(`
|
||
`);if(i.line===void 0||i.line>=k.length)return this.createErrorResult("Task line not found in source file");let v=k[i.line];v=this.removeOnCompletionMetadata(v),v=this.ensureTaskIsCompleted(v);let b=new Date().toISOString().split("T")[0],y=`(from ${i.filePath})`,w=this.getCompletionMarker(e,b),x=`${v} ${w} ${y}`;k.splice(i.line,1);let T=g.findIndex(C=>C.trim().startsWith("#")&&C.includes(u));if(T!==-1){let C=g.length;for(let S=T+1;S<g.length;S++)if(g[S].trim().startsWith("#")){C=S;break}g.splice(C,0,x)}else g.push("",`## ${u}`,x);return await s.vault.modify(p,k.join(`
|
||
`)),await s.vault.modify(m,g.join(`
|
||
`)),this.createSuccessResult(`Task archived to ${c} (section: ${u})`)}catch(c){return this.createErrorResult(`Failed to archive task: ${c.message}`)}}async addTaskToArchiveFile(e,t,r,i,s){try{let o=e.vault.getFileByPath(r);if(!o)try{let h=r.substring(0,r.lastIndexOf("/"));h&&!e.vault.getAbstractFileByPath(h)&&await e.vault.createFolder(h),o=await e.vault.create(r,`# Archive
|
||
|
||
## ${i}
|
||
|
||
`)}catch(h){return{success:!1,error:`Failed to create archive file: ${r}`}}let c=(await e.vault.read(o)).split(`
|
||
`),u=new Date().toISOString().split("T")[0],p=this.getCompletionMarker(s,u),m=`${t} ${p}`,f=c.findIndex(h=>h.trim().startsWith("#")&&h.includes(i));if(f!==-1){let h=c.length;for(let k=f+1;k<c.length;k++)if(c[k].trim().startsWith("#")){h=k;break}c.splice(h,0,m)}else c.push("",`## ${i}`,m);return await e.vault.modify(o,c.join(`
|
||
`)),{success:!0}}catch(o){return{success:!1,error:`Failed to add task to archive: ${o.message}`}}}validateConfig(e){return e.type==="archive"}getDescription(e){let t=e,r=t.archiveFile||this.DEFAULT_ARCHIVE_FILE,i=t.archiveSection||this.DEFAULT_ARCHIVE_SECTION;return`Archive task to ${r} (section: ${i})`}removeOnCompletionMetadata(e){let t=e;t=t.replace(/🏁\s+[^\s{]+/g,"");let r;for(;(r=t.match(/🏁\s*\{/))!==null;){let i=r.index,s=t.indexOf("{",i),o=0,l=s;for(let c=s;c<t.length;c++)if(t[c]==="{"&&o++,t[c]==="}"&&o--,o===0){l=c;break}o===0?t=t.substring(0,i)+t.substring(l+1):t=t.substring(0,i)+t.substring(i+r[0].length)}return t=t.replace(/\[onCompletion::\s*[^\]]*\]/gi,""),t=t.replace(/\s+/g," ").trim(),t}ensureTaskIsCompleted(e){return e.replace(/^(\s*[-*+]\s*)\[[^\]]*\](\s*)/,"$1[x]$2")}getCompletionMarker(e,t){return e.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${t}]`:`\u2705 ${t}`}};var WC=require("obsidian");var cy=class extends Dr{async executeForCanvas(a,e){let t=e,{task:r,app:i}=a;try{let s=this.getCanvasTaskUpdater(a),o=t.targetFile||r.filePath;if(o.endsWith(".canvas")){let l=await s.duplicateCanvasTask(r,o,void 0,t.targetSection,t.preserveMetadata);if(l.success){let c=o!==r.filePath?`to ${t.targetFile}`:"in same file",u=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${c}${u}`)}else return this.createErrorResult(l.error||"Failed to duplicate Canvas task")}else return this.duplicateCanvasToMarkdown(a,t)}catch(s){return this.createErrorResult(`Error duplicating Canvas task: ${s.message}`)}}async executeForMarkdown(a,e){let t=e,{task:r,app:i}=a;try{let s=i.vault.getFileByPath(r.filePath);if(!(s instanceof WC.TFile))return this.createErrorResult(`Source file not found: ${r.filePath}`);let o;if(t.targetFile){if(o=i.vault.getFileByPath(t.targetFile),!(o instanceof WC.TFile))try{o=await i.vault.create(t.targetFile,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${t.targetFile}`)}}else o=s;let c=(await i.vault.read(s)).split(`
|
||
`);if(r.line===void 0||r.line>=c.length)return this.createErrorResult("Task line not found in source file");let u=c[r.line],p=this.createDuplicateTaskLine(u,t);if(o.path!==s.path){let k=(await i.vault.read(o)).split(`
|
||
`);if(t.targetSection){let g=k.findIndex(v=>v.trim().startsWith("#")&&v.includes(t.targetSection));g!==-1?k.splice(g+1,0,p):k.push("",`## ${t.targetSection}`,p)}else k.push(p);await i.vault.modify(o,k.join(`
|
||
`))}else c.splice(r.line+1,0,p),await i.vault.modify(s,c.join(`
|
||
`));let m=o.path!==s.path?`to ${t.targetFile}`:"in same file",f=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${m}${f}`)}catch(s){return this.createErrorResult(`Failed to duplicate task: ${s.message}`)}}async duplicateCanvasToMarkdown(a,e){let{task:t,app:r}=a;try{let i=t.originalMarkdown||`- [${t.completed?"x":" "}] ${t.content}`;i=i.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2"),e.preserveMetadata||(i=i.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,"").trim());let s=new Date().toISOString().split("T")[0];i+=` (duplicated ${s})`;let o=e.targetFile||t.filePath,l=r.vault.getFileByPath(o);if(!l)try{l=await r.vault.create(o,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${o}`)}let u=(await r.vault.read(l)).split(`
|
||
`),p=u.length;if(e.targetSection){for(let h=0;h<u.length;h++)if(u[h].trim().toLowerCase().includes(e.targetSection.toLowerCase())){p=h+1;break}}u.splice(p,0,i),await r.vault.modify(l,u.join(`
|
||
`));let m=o!==t.filePath?`to ${e.targetFile}`:"in same file",f=e.targetSection?` (section: ${e.targetSection})`:"";return this.createSuccessResult(`Task duplicated from Canvas ${m}${f}`)}catch(i){return this.createErrorResult(`Failed to duplicate Canvas task to Markdown: ${i.message}`)}}createDuplicateTaskLine(a,e){let t=a.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2");e.preserveMetadata||(t=t.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,"").trim());let r=new Date().toISOString().split("T")[0];return t+=` (duplicated ${r})`,t}validateConfig(a){return a.type==="duplicate"}getDescription(a){let e=a;if(e.targetFile){let t=e.targetSection?` (section: ${e.targetSection})`:"";return`Duplicate task to ${e.targetFile}${t}`}else return"Duplicate task in same file"}};var uy=class extends sH.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.executors=new Map,this.initializeExecutors()}onload(){this.plugin.registerEvent(this.app.workspace.on("task-genius:task-completed",this.handleTaskCompleted.bind(this)))}initializeExecutors(){this.executors.set("delete",new sy),this.executors.set("keep",new ny),this.executors.set("complete",new oy),this.executors.set("move",new ly),this.executors.set("archive",new dy),this.executors.set("duplicate",new cy)}async handleTaskCompleted(e){if(e.metadata.hasOwnProperty("onCompletion"))try{let t=this.parseOnCompletion(e.metadata.onCompletion||"");if(!t.isValid||!t.config){console.warn("Invalid onCompletion configuration:",t.error);return}await this.executeOnCompletion(e,t.config)}catch(t){console.error("Error executing onCompletion action:",t)}}parseOnCompletion(e){if(!e||typeof e!="string")return{config:null,rawValue:e||"",isValid:!1,error:"Empty or invalid onCompletion value"};let t=e.trim();try{if(t.startsWith("{")){let i=JSON.parse(e);return{config:i,rawValue:e,isValid:this.validateConfig(i),error:this.validateConfig(i)?void 0:"Invalid configuration structure"}}let r=this.parseSimpleFormat(t);return{config:r,rawValue:e,isValid:r!==null,error:r===null?"Unrecognized onCompletion format":void 0}}catch(r){return{config:null,rawValue:e,isValid:!1,error:`Parse error: ${r.message}`}}}parseSimpleFormat(e){let t=e.toLowerCase();switch(t){case"delete":return{type:"delete"};case"keep":return{type:"keep"};case"archive":return{type:"archive"};default:if(t.startsWith("complete:")){let i=e.substring(9).split(",").map(s=>s.trim()).filter(s=>s);return{type:"complete",taskIds:i.length>0?i:[]}}if(t.startsWith("move:")){let r=e.substring(5).trim();return{type:"move",targetFile:r||""}}if(t.startsWith("archive:")){let r=e.substring(8).trim();return{type:"archive",archiveFile:r}}if(t.startsWith("duplicate:")){let r=e.substring(10).trim();return{type:"duplicate",targetFile:r}}return null}}validateConfig(e){if(!e||!e.type)return!1;switch(e.type){case"delete":case"keep":return!0;case"complete":return Array.isArray(e.taskIds);case"move":return typeof e.targetFile=="string";case"archive":case"duplicate":return!0;default:return!1}}async executeOnCompletion(e,t){let r=this.executors.get(t.type);if(!r)return{success:!1,error:`No executor found for action type: ${t.type}`};let i={task:e,plugin:this.plugin,app:this.app};try{return await r.execute(i,t)}catch(s){return{success:!1,error:`Execution failed: ${s.message}`}}}onunload(){this.executors.clear()}};Y();var Kd=class{constructor(a){this.plugin=a}hasUserMadeChanges(){let a=this.plugin.settings,e=pe;return[this.hasCustomViews(a),this.isProgressBarCustomized(a,e),this.isTaskStatusCustomized(a,e),this.isQuickCaptureCustomized(a,e),this.isWorkflowCustomized(a,e),this.areAdvancedFeaturesEnabled(a,e),this.isFileParsingCustomized(a,e)].some(r=>r)}getChangesSummary(){var r;let a=[],e=this.plugin.settings,t=pe;if(this.hasCustomViews(e)){let i=((r=e.viewConfiguration)==null?void 0:r.filter(s=>s.type==="custom").length)||0;a.push(d("Custom views created")+` (${i})`)}return this.isProgressBarCustomized(e,t)&&a.push(d("Progress bar settings modified")),this.isTaskStatusCustomized(e,t)&&a.push(d("Task status settings configured")),this.isQuickCaptureCustomized(e,t)&&a.push(d("Quick capture configured")),this.isWorkflowCustomized(e,t)&&a.push(d("Workflow settings enabled")),this.areAdvancedFeaturesEnabled(e,t)&&a.push(d("Advanced features enabled")),this.isFileParsingCustomized(e,t)&&a.push(d("File parsing customized")),a}hasCustomViews(a){var e,t;return(t=(e=a.viewConfiguration)==null?void 0:e.some(r=>r.type==="custom"))!=null?t:!1}isProgressBarCustomized(a,e){return a.progressBarDisplayMode!==e.progressBarDisplayMode||a.displayMode!==e.displayMode||a.showPercentage!==e.showPercentage||a.customizeProgressRanges!==e.customizeProgressRanges||a.allowCustomProgressGoal!==e.allowCustomProgressGoal||a.hideProgressBarBasedOnConditions!==e.hideProgressBarBasedOnConditions}isTaskStatusCustomized(a,e){return a.enableTaskStatusSwitcher!==e.enableTaskStatusSwitcher||a.enableCustomTaskMarks!==e.enableCustomTaskMarks||a.enableCycleCompleteStatus!==e.enableCycleCompleteStatus}isQuickCaptureCustomized(a,e){let t=a.quickCapture||e.quickCapture,r=e.quickCapture;return t.enableQuickCapture!==r.enableQuickCapture||t.enableMinimalMode!==r.enableMinimalMode}isWorkflowCustomized(a,e){let t=a.workflow||e.workflow,r=e.workflow;return t.enableWorkflow!==r.enableWorkflow||t.autoAddTimestamp!==r.autoAddTimestamp||t.calculateSpentTime!==r.calculateSpentTime}areAdvancedFeaturesEnabled(a,e){var t,r,i,s,o,l,c,u;return((t=a.rewards)==null?void 0:t.enableRewards)!==((r=e.rewards)==null?void 0:r.enableRewards)||((i=a.habit)==null?void 0:i.enableHabits)!==((s=e.habit)==null?void 0:s.enableHabits)||((o=a.timelineSidebar)==null?void 0:o.enableTimelineSidebar)!==((l=e.timelineSidebar)==null?void 0:l.enableTimelineSidebar)||((c=a.betaTest)==null?void 0:c.enableBaseView)!==((u=e.betaTest)==null?void 0:u.enableBaseView)}isFileParsingCustomized(a,e){let t=a.fileParsingConfig||e.fileParsingConfig,r=e.fileParsingConfig;return t.enableWorkerProcessing!==r.enableWorkerProcessing||t.enableFileMetadataParsing!==r.enableFileMetadataParsing||t.enableTagBasedTaskParsing!==r.enableTagBasedTaskParsing||t.enableMtimeOptimization!==r.enableMtimeOptimization}createSettingsSnapshot(){var e,t,r,i,s,o;let a={customViewCount:((e=this.plugin.settings.viewConfiguration)==null?void 0:e.filter(l=>l.type==="custom").length)||0,progressBarMode:this.plugin.settings.progressBarDisplayMode,taskStatusEnabled:this.plugin.settings.enableTaskStatusSwitcher,quickCaptureEnabled:(t=this.plugin.settings.quickCapture)==null?void 0:t.enableQuickCapture,workflowEnabled:(r=this.plugin.settings.workflow)==null?void 0:r.enableWorkflow,rewardsEnabled:(i=this.plugin.settings.rewards)==null?void 0:i.enableRewards,habitsEnabled:(s=this.plugin.settings.habit)==null?void 0:s.enableHabits,workerProcessingEnabled:(o=this.plugin.settings.fileParsingConfig)==null?void 0:o.enableWorkerProcessing,timestamp:Date.now()};return JSON.stringify(a)}hasChangedSinceSnapshot(a){try{let e=JSON.parse(a),t=JSON.parse(this.createSettingsSnapshot());return["customViewCount","progressBarMode","taskStatusEnabled","quickCaptureEnabled","workflowEnabled","rewardsEnabled","habitsEnabled","workerProcessingEnabled"].some(i=>e[i]!==t[i])}catch(e){return console.warn("Failed to compare settings snapshot:",e),!0}}};var en=require("obsidian");Y();var Um="task-genius-onboarding";var py=class extends en.ItemView{constructor(a,e,t){super(a),this.plugin=e,this.configManager=new mn(e),this.settingsDetector=new Kd(e),this.onComplete=t,this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1,userHasChanges:this.settingsDetector.hasUserMadeChanges(),changesSummary:this.settingsDetector.getChangesSummary()},this.userLevelSelector=new Al(this.configManager),this.configPreview=new Fl(this.configManager),this.taskCreationGuide=new nd(this.plugin),this.onboardingComplete=new od}getViewType(){return Um}getDisplayText(){return d("Task Genius Setup")}getIcon(){return"zap"}async onOpen(){this.createViewStructure(),this.displayCurrentStep()}async onClose(){this.contentEl.empty()}createViewStructure(){let a=this.contentEl;a.empty(),a.addClass("onboarding-view"),this.onboardingHeaderEl=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 en.ButtonComponent(a).setButtonText(d("Skip setup")).onClick(()=>this.handleSkip()),this.backButton=new en.ButtonComponent(a).setButtonText(d("Back")).onClick(()=>this.handleBack()),this.nextButton=new en.ButtonComponent(a).setButtonText(d("Next")).setCta().onClick(()=>this.handleNext())}displayCurrentStep(){switch(this.onboardingHeaderEl.empty(),this.onboardingContentEl.empty(),this.updateButtonStates(),this.state.currentStep){case 0:this.displaySettingsCheckStep();break;case 1:this.displayWelcomeStep();break;case 2:this.displayUserLevelSelectStep();break;case 3:this.displayConfigPreviewStep();break;case 4:this.displayTaskCreationGuideStep();break;case 5:this.displayCompleteStep();break}}displaySettingsCheckStep(){this.onboardingHeaderEl.createEl("h1",{text:d("Task Genius Setup")});let a=this.onboardingContentEl;if(this.state.userHasChanges){this.onboardingHeaderEl.createEl("p",{text:d("We noticed you've already configured Task Genius"),cls:"onboarding-subtitle"});let e=a.createDiv("settings-check-section");e.createEl("h3",{text:d("Your current configuration includes:")});let t=e.createEl("ul",{cls:"changes-summary-list"});this.state.changesSummary.forEach(l=>{let c=t.createEl("li"),u=c.createSpan("change-check");(0,en.setIcon)(u,"check"),c.createSpan("change-text").setText(l)});let r=a.createDiv("onboarding-question");r.createEl("h3",{text:d("Would you like to run the setup wizard anyway?")});let i=r.createDiv("question-options");i.createEl("button",{text:d("Yes, show me the setup wizard"),cls:"mod-cta question-button"}).addEventListener("click",()=>{this.state.currentStep=1,this.displayCurrentStep()}),i.createEl("button",{text:d("No, I'm happy with my current setup"),cls:"question-button"}).addEventListener("click",()=>this.handleSkip())}else this.state.currentStep=1,this.displayCurrentStep()}displayWelcomeStep(){this.onboardingHeaderEl.createEl("h1",{text:d("Welcome to Task Genius")}),this.onboardingHeaderEl.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,en.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.onboardingHeaderEl.createEl("h1",{text:d("Choose Your Usage Mode")}),this.onboardingHeaderEl.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=2,this.displayCurrentStep();return}this.onboardingHeaderEl.createEl("h1",{text:d("Configuration Preview")}),this.onboardingHeaderEl.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)}displayTaskCreationGuideStep(){this.onboardingHeaderEl.createEl("h1",{text:d("Create Your First Task")}),this.onboardingHeaderEl.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.onboardingHeaderEl.createEl("h1",{text:d("Setup Complete!")}),this.onboardingHeaderEl.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||a===1?"inline-block":"none",this.backButton.buttonEl.style.display=a<=1?"none":"inline-block";let e=a===5;a===0?this.nextButton.buttonEl.style.display="none":(this.nextButton.buttonEl.style.display="inline-block",this.nextButton.setButtonText(e?d("Start Using Task Genius"):d("Next"))),a===2?this.nextButton.setDisabled(!this.state.selectedConfig):this.nextButton.setDisabled(this.state.isCompleting)}async handleSkip(){await this.configManager.skipOnboarding(),this.onComplete(),this.close()}handleBack(){this.state.currentStep>0&&(this.state.currentStep--,this.state.currentStep===4&&this.state.skipTaskGuide&&this.state.currentStep--,this.displayCurrentStep())}async handleNext(){if(this.state.currentStep===5){await this.completeOnboarding();return}if(this.validateCurrentStep()){if(this.state.currentStep++,this.state.currentStep===3&&this.state.selectedConfig)try{await this.configManager.applyConfiguration(this.state.selectedConfig.mode)}catch(e){console.error("Failed to apply configuration:",e)}this.state.currentStep===4&&this.state.skipTaskGuide&&this.state.currentStep++,this.displayCurrentStep()}}validateCurrentStep(){switch(this.state.currentStep){case 2: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.onComplete(),this.close()}catch(a){console.error("Failed to complete onboarding:",a),this.state.isCompleting=!1,this.updateButtonStates()}}}close(){this.leaf.detach()}};var my=class{constructor(a){this.EXPORT_VERSION="1.0.0";this.timerManager=a}exportToJSON(a=!1){let e=this.prepareExportData(a);return JSON.stringify(e,null,2)}exportToYAML(a=!1){let e=this.prepareExportData(a);return this.convertToYAML(e)}importFromJSON(a){try{let e=JSON.parse(a);return this.processImportData(e)}catch(e){return console.error("Error importing JSON data:",e),!1}}importFromYAML(a){try{let e=this.parseYAML(a);return this.processImportData(e)}catch(e){return console.error("Error importing YAML data:",e),!1}}createBackup(){let a=this.timerManager.getAllActiveTimers(),e={version:this.EXPORT_VERSION,backupDate:new Date().toISOString(),activeTimers:a.map(t=>({...t,currentDuration:this.timerManager.getCurrentDuration(t.taskId)}))};return JSON.stringify(e,null,2)}restoreFromBackup(a){try{let e=JSON.parse(a);if(!e.activeTimers||!Array.isArray(e.activeTimers))return!1;for(let t of e.activeTimers){let r=[];t.startTime&&r.push({startTime:t.startTime,endTime:t.pausedTime,duration:t.pausedTime?t.pausedTime-t.startTime-(t.totalPausedDuration||0):void 0});let i={taskId:t.taskId,filePath:t.filePath,blockId:t.blockId,segments:r,status:t.status,createdAt:t.createdAt,legacyStartTime:t.startTime,legacyPausedTime:t.pausedTime,legacyTotalPausedDuration:t.totalPausedDuration||0};localStorage.setItem(t.taskId,JSON.stringify(i))}return!0}catch(e){return console.error("Error restoring from backup:",e),!1}}getExportStats(){let a=this.timerManager.getAllActiveTimers(),e=0,t=Number.MAX_SAFE_INTEGER,r=0,i=null,s=null;for(let o of a){let l=this.timerManager.getCurrentDuration(o.taskId);e+=l,o.createdAt<t&&(t=o.createdAt,i=new Date(o.createdAt).toLocaleString()),o.createdAt>r&&(r=o.createdAt,s=new Date(o.createdAt).toLocaleString())}return{activeTimers:a.length,totalDuration:e,oldestTimer:i,newestTimer:s}}prepareExportData(a){let e=this.timerManager.getAllActiveTimers(),t=[];for(let r of e){if(!a&&(r.status==="running"||r.status==="paused"))continue;let i=this.timerManager.getCurrentDuration(r.taskId),s=r.segments[0],o=r.segments[r.segments.length-1];t.push({taskId:r.taskId,filePath:r.filePath,blockId:r.blockId,startTime:s?s.startTime:r.createdAt,endTime:o&&o.endTime?o.endTime:void 0,duration:i,status:r.status,createdAt:r.createdAt,totalPausedDuration:r.legacyTotalPausedDuration||0})}return{version:this.EXPORT_VERSION,exportDate:new Date().toISOString(),timers:t}}processImportData(a){if(!this.validateImportData(a))return!1;let e=0;for(let t of a.timers)try{if(t.status==="idle"||t.endTime){let r=`taskTimer_history_${t.blockId}_${t.startTime}`;localStorage.setItem(r,JSON.stringify({...t,importedAt:Date.now()})),e++}}catch(r){console.warn("Failed to import timer:",t.taskId,r)}return`${e}`,e>0}validateImportData(a){if(!a||typeof a!="object"||!a.version||!a.exportDate||!Array.isArray(a.timers))return!1;for(let e of a.timers)if(!e.taskId||!e.filePath||!e.blockId||typeof e.startTime!="number"||typeof e.duration!="number")return!1;return!0}convertToYAML(a,e=0){let t=" ".repeat(e),r="";if(Array.isArray(a))for(let i of a)r+=`${t}- ${this.convertToYAML(i,e+1).trim()}
|
||
`;else if(a!==null&&typeof a=="object")for(let[i,s]of Object.entries(a))Array.isArray(s)?(r+=`${t}${i}:
|
||
`,r+=this.convertToYAML(s,e+1)):s!==null&&typeof s=="object"?(r+=`${t}${i}:
|
||
`,r+=this.convertToYAML(s,e+1)):r+=`${t}${i}: ${this.yamlEscape(s)}
|
||
`;else return this.yamlEscape(a);return r}parseYAML(a){let e=a.split(`
|
||
`),t={},r=t,i=[t],s="";for(let o of e){let l=o.trim();if(!l||l.startsWith("#"))continue;let c=o.length-o.trimLeft().length,u=l.indexOf(":");if(u>0){let p=l.substring(0,u).trim(),m=l.substring(u+1).trim();m===""?(r[p]={},s=p):m==="[]"?r[p]=[]:r[p]=this.parseYAMLValue(m)}else if(l.startsWith("- ")){Array.isArray(r[s])||(r[s]=[]);let p=this.parseYAMLValue(l.substring(2));r[s].push(p)}}return t}parseYAMLValue(a){if(a=a.trim(),a==="true")return!0;if(a==="false")return!1;if(a==="null")return null;let e=Number(a);return!isNaN(e)&&isFinite(e)?e:a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'")?a.slice(1,-1):a}yamlEscape(a){return typeof a=="string"&&(a.includes(":")||a.includes(`
|
||
`)||a.includes("#"))?`"${a.replace(/"/g,'\\"')}"`:String(a)}};var Ts=require("obsidian");var Qd=require("obsidian"),_m=class{constructor(a,e,t){this.plugin=a;this.queryAPI=e,this.writeAPI=t}async queryTasks(a){try{let e=await this.queryAPI.getAllTasks();if(a.filter){let{completed:s,project:o,tags:l,priority:c,context:u}=a.filter;s!==void 0&&(e=e.filter(p=>p.completed===s)),o&&(e=e.filter(p=>{var f,h,k;return(((f=p.metadata)==null?void 0:f.project)||((k=(h=p.metadata)==null?void 0:h.tgProject)==null?void 0:k.name))===o})),l&&l.length>0&&(e=e.filter(p=>{var f;let m=((f=p.metadata)==null?void 0:f.tags)||[];return l.some(h=>m.includes(h))})),c!==void 0&&(e=e.filter(p=>{var m;return((m=p.metadata)==null?void 0:m.priority)===c})),u&&(e=e.filter(p=>{var m;return((m=p.metadata)==null?void 0:m.context)===u}))}if(a.sort){let{field:s,order:o}=a.sort;e.sort((l,c)=>{let u=l,p=c,m=s.split(".");for(let f of m)u=u==null?void 0:u[f],p=p==null?void 0:p[f];return u==null?1:p==null?-1:u<p?o==="asc"?-1:1:u>p?o==="asc"?1:-1:0})}let t=e.length,r=a.offset||0,i=a.limit||100;return e=e.slice(r,r+i),{tasks:e,total:t}}catch(e){return console.error("DataflowBridge: Error querying tasks:",e),{tasks:[],total:0}}}async queryProjectTasks(a){try{return{tasks:await this.queryAPI.getTasksByProject(a)}}catch(e){return console.error("DataflowBridge: Error querying project tasks:",e),{tasks:[]}}}async queryContextTasks(a){try{return{tasks:(await this.queryAPI.getAllTasks()).filter(r=>{var i;return((i=r.metadata)==null?void 0:i.context)===a})}}catch(e){return console.error("DataflowBridge: Error querying context tasks:",e),{tasks:[]}}}async queryByPriority(a,e){try{return{tasks:(await this.queryAPI.getAllTasks()).filter(i=>{var s;return((s=i.metadata)==null?void 0:s.priority)===a}).slice(0,e||100)}}catch(t){return console.error("DataflowBridge: Error querying by priority:",t),{tasks:[]}}}async queryByDate(a){try{let e=a.from?(0,Qd.moment)(a.from).valueOf():void 0,t=a.to?(0,Qd.moment)(a.to).valueOf():void 0;return{tasks:(await this.queryAPI.getTasksByDateRange({from:e,to:t,field:a.dateType||"due"})).slice(0,a.limit||100)}}catch(e){return console.error("DataflowBridge: Error querying by date:",e),{tasks:[]}}}async searchTasks(a){try{let e=await this.queryAPI.getAllTasks(),t=a.query.toLowerCase(),r=a.searchIn||["content","tags","project","context"];return{tasks:e.filter(s=>{var o,l,c,u,p,m,f;for(let h of r)switch(h){case"content":if((o=s.content)!=null&&o.toLowerCase().includes(t))return!0;break;case"tags":if((((l=s.metadata)==null?void 0:l.tags)||[]).some(v=>v.toLowerCase().includes(t)))return!0;break;case"project":let g=((c=s.metadata)==null?void 0:c.project)||((p=(u=s.metadata)==null?void 0:u.tgProject)==null?void 0:p.name);if(g!=null&&g.toLowerCase().includes(t))return!0;break;case"context":if((f=(m=s.metadata)==null?void 0:m.context)!=null&&f.toLowerCase().includes(t))return!0;break}return!1}).slice(0,a.limit||100)}}catch(e){return console.error("DataflowBridge: Error searching tasks:",e),{tasks:[]}}}listAllTagsProjectsContexts(){try{return console.warn("DataflowBridge: listAllTagsProjectsContexts needs async refactoring"),{tags:[],projects:[],contexts:[]}}catch(a){return console.error("DataflowBridge: Error listing metadata:",a),{tags:[],projects:[],contexts:[]}}}async listTasksForPeriod(a){try{let e=(0,Qd.moment)(a.date),t,r;switch(a.period){case"day":t=e.clone().startOf("day"),r=e.clone().endOf("day");break;case"month":t=e.clone().startOf("month"),r=e.clone().endOf("month");break;case"year":t=e.clone().startOf("year"),r=e.clone().endOf("year");break}return{tasks:(await this.queryAPI.getTasksByDateRange({from:t.valueOf(),to:r.valueOf(),field:a.dateType||"due"})).slice(0,a.limit||100)}}catch(e){return console.error("DataflowBridge: Error listing tasks for period:",e),{tasks:[]}}}async listTasksInRange(a){try{return{tasks:(await this.queryAPI.getTasksByDateRange({from:(0,Qd.moment)(a.from).valueOf(),to:(0,Qd.moment)(a.to).valueOf(),field:a.dateType||"due"})).slice(0,a.limit||100)}}catch(e){return console.error("DataflowBridge: Error listing tasks in range:",e),{tasks:[]}}}async createTask(a){return this.writeAPI.createTask(a)}async updateTask(a){return this.writeAPI.updateTask(a)}async deleteTask(a){return this.writeAPI.deleteTask(a)}async updateTaskStatus(a){return this.writeAPI.updateTaskStatus(a)}async batchUpdateTaskStatus(a){return this.writeAPI.batchUpdateTaskStatus(a)}async postponeTasks(a){return this.writeAPI.postponeTasks(a)}async batchUpdateText(a){return this.writeAPI.batchUpdateText(a)}async batchCreateSubtasks(a){return this.writeAPI.batchCreateSubtasks(a)}async createTaskInDailyNote(a){return this.writeAPI.createTaskInDailyNote(a)}async addProjectTaskToQuickCapture(a){return this.writeAPI.addProjectTaskToQuickCapture(a)}async batchCreateTasks(a){let e={success:!0,created:0,errors:[]};for(let t=0;t<a.tasks.length;t++){let r=a.tasks[t];try{let i={...r,filePath:r.filePath||a.defaultFilePath},s=await this.writeAPI.createTask(i);s.success?e.created++:e.errors.push(`Task ${t+1}: ${s.error||"Failed to create"}`)}catch(i){e.success=!1,e.errors.push(`Task ${t+1}: ${i.message}`)}}return e}};var I8=require("http"),A8=require("url"),hy=class{constructor(a,e){this.plugin=a;this.config=e;this.isRunning=!1;this.requestCount=0;this.sessions=new Map;this.authMiddleware=new $s(e.authToken);let t=(nv(),dl(kC)).QueryAPI,r=(fy(),dl(zC)).WriteAPI,i=new t(a.app,a.app.vault,a.app.metadataCache),s=l=>i.getRepository().getTaskById(l),o=new r(a.app,a.app.vault,a.app.metadataCache,a,s);this.taskBridge=new _m(a,i,o)}generateSessionId(){return`session-${Date.now()}-${Math.random().toString(36).substring(2,15)}`}getServerName(){var a,e;try{let t=((e=(a=this.plugin.app.vault).getName)==null?void 0:e.call(a))||"vault";return`${String(t).toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`}catch(t){return"obsidian-tasks"}}getPrompts(){return[{name:"daily_review",title:"Daily Task Review",description:"Review today's tasks and plan for tomorrow",arguments:[{name:"includeCompleted",description:"Include completed tasks in the review",required:!1}]},{name:"weekly_planning",title:"Weekly Planning",description:"Plan tasks for the upcoming week",arguments:[{name:"weekOffset",description:"Week offset from current week (0 for this week, 1 for next week)",required:!1}]},{name:"project_overview",title:"Project Overview",description:"Get an overview of all projects and their task counts",arguments:[]},{name:"overdue_tasks",title:"Overdue Tasks Summary",description:"List all overdue tasks organized by priority",arguments:[{name:"daysOverdue",description:"Minimum days overdue to include",required:!1}]},{name:"task_search",title:"Advanced Task Search",description:"Search for tasks with specific criteria",arguments:[{name:"query",description:"Search query text",required:!0},{name:"project",description:"Filter by project name",required:!1},{name:"priority",description:"Filter by priority (1-5)",required:!1}]}]}getResources(){return[]}getTools(){return[{name:"update_task_status",title:"Update Task Status",description:"Update a single task's completion or status field.",inputSchema:{type:"object",properties:{taskId:{type:"string"},status:{type:"string",description:"Optional status mark to set instead of completed"},completed:{type:"boolean",description:"Set completed true/false"}},required:["taskId"]}},{name:"batch_update_task_status",title:"Batch Update Task Status",description:"Batch update completion/status for multiple tasks.",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},status:{type:"string"},completed:{type:"boolean"}},required:["taskIds"]}},{name:"postpone_tasks",title:"Postpone Tasks",description:"Batch postpone tasks to a new due date (YYYY-MM-DD)",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},newDate:{type:"string"}},required:["taskIds","newDate"]}},{name:"list_all_metadata",title:"List Tags/Projects/Contexts",description:"List all used tags, project names, and contexts.",inputSchema:{type:"object",properties:{}}},{name:"list_tasks_for_period",title:"List Tasks For Period",description:"List tasks for a day/month/year based on dateType (default: due).",inputSchema:{type:"object",properties:{period:{type:"string",enum:["day","month","year"]},date:{type:"string",description:"Base date YYYY-MM-DD"},dateType:{type:"string",enum:["due","start","scheduled","completed"],description:"Which date field to use"},limit:{type:"number"}},required:["period","date"]}},{name:"list_tasks_in_range",title:"List Tasks In Range",description:"List tasks between from/to dates (default dateType: due).",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},dateType:{type:"string",enum:["due","start","scheduled","completed"]},limit:{type:"number"}},required:["from","to"]}},{name:"add_project_quick_capture",title:"Add Project Task to Quick Capture",description:"Add a project-tagged task to the Quick Capture target (fixed or daily note).",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},project:{type:"string",description:"Project name to tag as +project"},tags:{type:"array",items:{type:"string"}},priority:{type:"number",minimum:1,maximum:5},dueDate:{type:"string"},startDate:{type:"string"},context:{type:"string"},heading:{type:"string"}},required:["content","project"]}},{name:"create_task_in_daily_note",title:"Create Task in Daily Note",description:"Create a task in today's daily note. Creates the note if missing. Supports creating already-completed tasks for recording purposes.",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},dueDate:{type:"string",description:"Due date YYYY-MM-DD"},startDate:{type:"string",description:"Start date YYYY-MM-DD"},priority:{type:"number",minimum:1,maximum:5},tags:{type:"array",items:{type:"string"}},project:{type:"string"},context:{type:"string"},heading:{type:"string",description:"Optional heading to place task under"},parent:{type:"string",description:"Optional parent task ID to create subtask under"},completed:{type:"boolean",description:"Whether the task is already completed (for recording purposes)"},completedDate:{type:"string",description:"Completion date YYYY-MM-DD (only used when completed is true)"}},required:["content"]}},{name:"query_tasks",title:"Query Tasks",description:"Query tasks with filters and sorting options",inputSchema:{type:"object",properties:{filter:{type:"object",properties:{completed:{type:"boolean"},project:{type:"string"},context:{type:"string"},priority:{type:"number",minimum:1,maximum:5},tags:{type:"array",items:{type:"string"}}}},limit:{type:"number"},offset:{type:"number"},sort:{type:"object",properties:{field:{type:"string"},order:{type:"string",enum:["asc","desc"]}}}}}},{name:"update_task",title:"Update Task",description:"Update a task by ID with new properties",inputSchema:{type:"object",properties:{taskId:{type:"string"},updates:{type:"object"}},required:["taskId","updates"]}},{name:"delete_task",title:"Delete Task",description:"Delete a task by ID",inputSchema:{type:"object",properties:{taskId:{type:"string"}},required:["taskId"]}},{name:"create_task",title:"Create Task",description:"Create a new task with specified properties. If the target file does not exist, it will be created automatically. Supports creating already-completed tasks for recording purposes.",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},filePath:{type:"string",description:"Target markdown file path (e.g., Daily/2025-08-15.md). If omitted, uses active file."},project:{type:"string",description:"Project name to append as +project"},context:{type:"string",description:"Context name to append as @context"},priority:{type:"number",minimum:1,maximum:5,description:"1-5 priority; adds ! markers"},dueDate:{type:"string",description:"Due date YYYY-MM-DD (adds \u{1F4C5} marker)"},startDate:{type:"string",description:"Start date YYYY-MM-DD (adds \u{1F6EB} marker)"},tags:{type:"array",items:{type:"string"},description:"Array of tags (without #)"},parent:{type:"string",description:"Parent task ID to create a subtask under"},completed:{type:"boolean",description:"Whether the task is already completed (for recording purposes)"},completedDate:{type:"string",description:"Completion date YYYY-MM-DD (only used when completed is true)"}},required:["content"]}},{name:"query_project_tasks",title:"Query Project Tasks",description:"Get all tasks for a specific project",inputSchema:{type:"object",properties:{project:{type:"string"}},required:["project"]}},{name:"query_context_tasks",title:"Query Context Tasks",description:"Get all tasks for a specific context",inputSchema:{type:"object",properties:{context:{type:"string"}},required:["context"]}},{name:"query_by_priority",title:"Query by Priority",description:"Get tasks with a specific priority level",inputSchema:{type:"object",properties:{priority:{type:"number",minimum:1,maximum:5},limit:{type:"number"}},required:["priority"]}},{name:"query_by_due_date",title:"Query by Due Date",description:"Get tasks within a due date range",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},limit:{type:"number"}}}},{name:"query_by_start_date",title:"Query by Start Date",description:"Get tasks within a start date range",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},limit:{type:"number"}}}},{name:"batch_update_text",title:"Batch Update Text",description:"Find and replace text in multiple tasks",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},findText:{type:"string"},replaceText:{type:"string"}},required:["taskIds","findText","replaceText"]}},{name:"batch_create_subtasks",title:"Batch Create Subtasks",description:"Create multiple subtasks under a parent task",inputSchema:{type:"object",properties:{parentTaskId:{type:"string"},subtasks:{type:"array",items:{type:"object",properties:{content:{type:"string"},priority:{type:"number",minimum:1,maximum:5},dueDate:{type:"string"}},required:["content"]}}},required:["parentTaskId","subtasks"]}},{name:"search_tasks",title:"Search Tasks",description:"Search tasks by text query across multiple fields",inputSchema:{type:"object",properties:{query:{type:"string"},limit:{type:"number"},searchIn:{type:"array",items:{type:"string",enum:["content","tags","project","context"]}}},required:["query"]}},{name:"batch_create_tasks",title:"Batch Create Tasks",description:"Create multiple tasks at once with optional default file path",inputSchema:{type:"object",properties:{tasks:{type:"array",items:{type:"object",properties:{content:{type:"string",description:"Task content text"},filePath:{type:"string",description:"Target markdown file path (overrides defaultFilePath)"},project:{type:"string",description:"Project name to append as +project"},context:{type:"string",description:"Context name to append as @context"},priority:{type:"number",minimum:1,maximum:5,description:"1-5 priority; adds ! markers"},dueDate:{type:"string",description:"Due date YYYY-MM-DD (adds \u{1F4C5} marker)"},startDate:{type:"string",description:"Start date YYYY-MM-DD (adds \u{1F6EB} marker)"},tags:{type:"array",items:{type:"string"},description:"Array of tags (without #)"},parent:{type:"string",description:"Parent task ID to create a subtask under"},completed:{type:"boolean",description:"Whether the task is already completed (for recording purposes)"},completedDate:{type:"string",description:"Completion date YYYY-MM-DD (only used when completed is true)"}},required:["content"]},description:"Array of tasks to create"},defaultFilePath:{type:"string",description:"Default file path for all tasks (can be overridden per task)"}},required:["tasks"]}}]}buildPromptMessages(a,e){let t=[];switch(a){case"daily_review":t.push({role:"user",content:{type:"text",text:`Please help me review my tasks for today. ${e!=null&&e.includeCompleted?"Include completed tasks in the review.":"Focus on pending tasks only."} Provide a summary of:
|
||
1. What tasks are due today
|
||
2. What tasks are overdue
|
||
3. High priority items that need attention
|
||
4. Suggested next actions`}});break;case"weekly_planning":let r=(e==null?void 0:e.weekOffset)||0;t.push({role:"user",content:{type:"text",text:`Help me plan my tasks for ${r===0?"this week":`week +${r}`}. Please:
|
||
1. List all tasks scheduled for the week
|
||
2. Identify any conflicts or overloaded days
|
||
3. Suggest task prioritization
|
||
4. Recommend which tasks could be rescheduled if needed`}});break;case"project_overview":t.push({role:"user",content:{type:"text",text:`Provide a comprehensive overview of all my projects including:
|
||
1. List of all active projects
|
||
2. Task count per project (pending vs completed)
|
||
3. Projects with upcoming deadlines
|
||
4. Projects that may need more attention
|
||
5. Overall project health assessment`}});break;case"overdue_tasks":let i=(e==null?void 0:e.daysOverdue)||0;t.push({role:"user",content:{type:"text",text:`Show me all overdue tasks ${i>0?`that are at least ${i} days overdue`:""}. Please:
|
||
1. Group them by priority level
|
||
2. Highlight the most critical overdue items
|
||
3. Suggest which tasks to tackle first
|
||
4. Identify any tasks that might need to be rescheduled or cancelled`}});break;case"task_search":let s=(e==null?void 0:e.query)||"",o=e==null?void 0:e.project,l=e==null?void 0:e.priority,c=`Search for tasks matching: "${s}"`;o&&(c+=` in project "${o}"`),l&&(c+=` with priority ${l}`),t.push({role:"user",content:{type:"text",text:`${c}. Please:
|
||
1. List all matching tasks with their details
|
||
2. Group them by relevance or category
|
||
3. Highlight the most important matches
|
||
4. Provide a summary of the search results`}});break;default:t.push({role:"user",content:{type:"text",text:`Execute the ${a} prompt with the provided arguments.`}})}return t}async executeTool(a,e){var t,r,i,s;try{if((t=this.plugin.settings)!=null&&t.enableIndexer){let l=new(nv(),dl(kC)).QueryAPI(this.plugin.app,this.plugin.app.vault,this.plugin.app.metadataCache);if(!this.taskBridge){let c=(fy(),dl(zC)).WriteAPI,u=m=>l.getRepository().getTaskById(m),p=new c(this.plugin.app,this.plugin.app.vault,this.plugin.app.metadataCache,this.plugin,u);this.taskBridge=new _m(this.plugin,l,p)}}let o;switch(a){case"query_tasks":o=await this.taskBridge.queryTasks(e);break;case"update_task":o={error:"Not implemented in DataflowBridge"};break;case"delete_task":o={error:"Not implemented in DataflowBridge"};break;case"create_task":o={error:"Not implemented in DataflowBridge"};break;case"create_task_in_daily_note":o={error:"Not implemented in DataflowBridge"};break;case"query_project_tasks":o=await this.taskBridge.queryProjectTasks(e.project);break;case"query_context_tasks":o=await this.taskBridge.queryContextTasks(e.context);break;case"query_by_priority":o=await this.taskBridge.queryByPriority(e.priority,e.limit);break;case"query_by_due_date":o=await this.taskBridge.queryByDate({dateType:"due",from:e.from,to:e.to,limit:e.limit});break;case"query_by_start_date":o=await this.taskBridge.queryByDate({dateType:"start",from:e.from,to:e.to,limit:e.limit});break;case"batch_update_text":o={error:"Not implemented in DataflowBridge"};break;case"batch_create_subtasks":o={error:"Not implemented in DataflowBridge"};break;case"search_tasks":o=await this.taskBridge.searchTasks(e);break;case"batch_create_tasks":o=await this.taskBridge.batchCreateTasks(e);break;case"add_project_quick_capture":o={error:"Not implemented in DataflowBridge"};break;case"update_task_status":o={error:"Not implemented in DataflowBridge"};break;case"batch_update_task_status":o={error:"Not implemented in DataflowBridge"};break;case"postpone_tasks":o={error:"Not implemented in DataflowBridge"};break;case"list_all_metadata":o=this.taskBridge.listAllTagsProjectsContexts();break;case"list_tasks_for_period":o=await this.taskBridge.listTasksForPeriod(e);break;case"list_tasks_in_range":o=(s=await((i=(r=this.taskBridge).listTasksInRange)==null?void 0:i.call(r,e)))!=null?s:{error:"Not implemented in DataflowBridge"};break;default:throw new Error(`Tool not found: ${a}`)}return{content:[{type:"text",text:JSON.stringify(o,null,2)}]}}catch(o){if(o.message.includes("Tool not found"))throw o;return{content:[{type:"text",text:JSON.stringify({success:!1,error:o.message},null,2)}],isError:!0}}}async handleMcpRequest(a,e){let{method:t,params:r,id:i}=a;try{if(e&&this.sessions.has(e)){let s=this.sessions.get(e);s.lastAccess=new Date}switch(t){case"initialize":let s=this.generateSessionId();return this.sessions.set(s,{created:new Date,lastAccess:new Date}),{jsonrpc:"2.0",id:i,result:{protocolVersion:"2025-06-18",serverInfo:{name:"obsidian-task-genius",version:this.plugin.manifest.version},capabilities:{tools:{},resources:{},prompts:{},sampling:{}}},_sessionId:s};case"tools/list":return{jsonrpc:"2.0",id:i,result:{tools:this.getTools()}};case"prompts/list":return{jsonrpc:"2.0",id:i,result:{prompts:this.getPrompts()}};case"prompts/get":let o=r==null?void 0:r.name,c=this.getPrompts().find(m=>m.name===o);return c?{jsonrpc:"2.0",id:i,result:{...c,messages:this.buildPromptMessages(o,r==null?void 0:r.arguments)}}:{jsonrpc:"2.0",id:i,error:{code:-32602,message:`Prompt not found: ${o}`}};case"resources/list":return{jsonrpc:"2.0",id:i,result:{resources:this.getResources()}};case"resources/read":return{jsonrpc:"2.0",id:i,error:{code:-32602,message:"No resources available"}};case"tools/call":let u=r==null?void 0:r.name,p=(r==null?void 0:r.arguments)||{};try{let m=await this.executeTool(u,p);return{jsonrpc:"2.0",id:i,result:m}}catch(m){if(m.message.includes("Unknown tool")||m.message.includes("Tool not found"))return{jsonrpc:"2.0",id:i,error:{code:-32602,message:m.message}};throw m}default:return{jsonrpc:"2.0",id:i,error:{code:-32601,message:`Method not found: ${t}`}}}}catch(s){return{jsonrpc:"2.0",id:i,error:{code:-32603,message:s.message}}}}async start(){if(!this.isRunning)return this.httpServer=I8.createServer(async(a,e)=>{if(this.config.enableCors&&(e.setHeader("Access-Control-Allow-Origin","*"),e.setHeader("Access-Control-Allow-Methods","GET, POST, DELETE, OPTIONS"),e.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, authorization, Mcp-Session-Id, mcp-session-id, Mcp-App-Id, mcp-app-id, MCP-Protocol-Version, mcp-protocol-version, Accept"),e.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id")),a.method==="OPTIONS"){e.statusCode=200,e.end();return}let r=A8.parse(a.url||"",!0).pathname||"";if(r==="/health"){e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({status:"healthy",uptime:this.startTime?Date.now()-this.startTime.getTime():0,requestCount:this.requestCount,sessions:this.sessions.size}));return}if(r==="/mcp"&&a.method==="POST"){let i=a.headers.origin;if(i&&!this.isOriginAllowed(i)){e.statusCode=403,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32603,message:"Forbidden: Origin not allowed"}}));return}let s=a.headers["mcp-protocol-version"];if(s&&s!=="2024-11-05"&&s!=="2025-06-18"){e.statusCode=400,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32602,message:`Unsupported MCP-Protocol-Version: ${s}`}}));return}if(!this.authMiddleware.validateRequest(a)){e.statusCode=401,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32603,message:"Unauthorized: Invalid or missing authentication token"}}));return}let o=this.plugin.app.appId,l=a.headers["mcp-app-id"]||"",c=this.authMiddleware.getClientAppId(a),u=l||c||"";if(!u||u!==o){e.statusCode=400,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32602,message:"Invalid client app id",data:{expectedAppId:o,received:u||null,source:l?"header":c?"authorization":"none"}}}));return}this.requestCount++;let p=a.headers["mcp-session-id"],m="";a.on("data",f=>{m+=f.toString()}),a.on("end",async()=>{let f;try{f=JSON.parse(m)}catch(h){e.statusCode=400,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32700,message:"Parse error: Invalid JSON"},id:null}));return}try{if(f.method!=="initialize"){if(!p){console.warn("Missing session ID for method:",f.method),e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:f.id,error:{code:-32603,message:"Missing session ID. Initialize connection first."}}));return}if(!this.sessions.has(p)){console.warn("Invalid session ID:",p),e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:f.id,error:{code:-32603,message:"Invalid or expired session"}}));return}}this.config.logLevel;let h=await this.handleMcpRequest(f,p);this.config.logLevel,h._sessionId&&(e.setHeader("Mcp-Session-Id",h._sessionId),delete h._sessionId),e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify(h))}catch(h){console.error("MCP request error:",h),e.statusCode=500,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null}))}});return}if(r==="/mcp"&&a.method==="GET"){let i=a.headers["mcp-session-id"];i&&!this.sessions.has(i)&&console.warn("SSE connection with invalid session ID:",i),e.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),e.write(`data: {"type":"connected"}
|
||
|
||
`);let s=setInterval(()=>{e.write(`: heartbeat
|
||
|
||
`)},3e4);a.on("close",()=>{clearInterval(s)});return}if(r==="/mcp"&&a.method==="DELETE"){let i=a.headers["mcp-session-id"];i&&this.sessions.has(i)&&this.sessions.delete(i),e.statusCode=204,e.end();return}if(r==="/"&&a.method==="GET"){e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({server:"Obsidian Task Genius MCP Server",version:"1.0.0",mcp_version:"2025-06-18",endpoints:{mcp:"/mcp",health:"/health"},description:"MCP server for Obsidian task management"}));return}e.statusCode=404,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32601,message:`Path not found: ${r}`}}))}),new Promise((a,e)=>{try{this.httpServer.listen({port:this.config.port,host:this.config.host},()=>{this.isRunning=!0,this.startTime=new Date;let t=this.httpServer.address();this.actualPort=(t==null?void 0:t.port)||this.config.port,`${this.config.host}${this.actualPort}`,setInterval(()=>{let r=Date.now();for(let[i,s]of this.sessions)r-s.lastAccess.getTime()>36e5&&this.sessions.delete(i)},6e4),a()}),this.httpServer.on("error",t=>{console.error("MCP Server error:",t),this.isRunning=!1,e(t)})}catch(t){e(t)}})}async stop(){if(!(!this.isRunning||!this.httpServer))return this.sessions.clear(),new Promise(a=>{this.httpServer.close(()=>{this.isRunning=!1,a()})})}getStatus(){return{running:this.isRunning,port:this.actualPort||this.config.port,startTime:this.startTime,requestCount:this.requestCount,sessions:this.sessions.size}}updateConfig(a){a.authToken&&this.authMiddleware.updateToken(a.authToken),Object.assign(this.config,a)}isOriginAllowed(a){return["http://localhost","http://127.0.0.1","https://localhost","https://127.0.0.1","app://obsidian.md","obsidian://"].some(t=>a===t||a.startsWith(t+":"))}};var gy=class{constructor(a){this.plugin=a;this.autoRestartAttempts=0;this.maxAutoRestartAttempts=3;this.config=this.getDefaultConfig(),this.loadConfig()}isPortAvailable(a,e){let t=require("net");return new Promise(r=>{let i=t.createServer().once("error",s=>{s&&(s.code==="EADDRINUSE"||s.code),r(!1)}).once("listening",()=>{i.close(()=>r(!0))}).listen(a,e)})}getDefaultConfig(){return{enabled:!1,port:7777,host:"127.0.0.1",authToken:$s.generateToken(),enableCors:!0,logLevel:"info"}}loadConfig(){let a=this.plugin.settings;a.mcpIntegration&&(this.config={...this.config,...a.mcpIntegration})}async saveConfig(){this.plugin.settings.mcpIntegration=this.config,await this.plugin.saveSettings()}async initialize(){Ts.Platform.isDesktopApp&&this.config.enabled&&await this.start()}async start(){if(this.server&&await this.stop(),!await this.isPortAvailable(this.config.port,this.config.host)){new Ts.Notice(`Port ${this.config.port} on ${this.config.host} is already in use. Please choose another port in MCP settings.`),console.warn(`MCP Server port conflict detected on ${this.config.host}:${this.config.port}`);return}try{this.server=new hy(this.plugin,this.config),await this.server.start(),this.autoRestartAttempts=0;let e=this.server.getStatus();new Ts.Notice(`MCP Server started on ${this.config.host}:${e.port}`)}catch(e){if(console.error("Failed to start MCP Server:",e),(e==null?void 0:e.code)==="EADDRINUSE"||/EADDRINUSE/.test((e==null?void 0:e.message)||"")){new Ts.Notice(`Port ${this.config.port} on ${this.config.host} is already in use. Please change the port in settings.`);return}new Ts.Notice(`Failed to start MCP Server: ${e.message}`),this.autoRestartAttempts<this.maxAutoRestartAttempts&&(this.autoRestartAttempts++,`${this.autoRestartAttempts}${this.maxAutoRestartAttempts}`,setTimeout(()=>this.start(),5e3))}}async stop(){if(this.server)try{await this.server.stop(),this.server=void 0,new Ts.Notice("MCP Server stopped")}catch(a){console.error("Failed to stop MCP Server:",a),new Ts.Notice(`Failed to stop MCP Server: ${a.message}`)}}async restart(){await this.stop(),await this.start()}async toggle(){this.isRunning()?(await this.stop(),this.config.enabled=!1):(this.config.enabled=!0,await this.start()),await this.saveConfig()}isRunning(){var a;return((a=this.server)==null?void 0:a.getStatus().running)||!1}getStatus(){if(!this.server)return{running:!1};let a=this.server.getStatus();return{running:a.running,port:a.port,startTime:a.startTime,requestCount:a.requestCount}}getConfig(){return{...this.config}}async updateConfig(a){var o,l;let e=this.isRunning(),t=(o=a.port)!=null?o:this.config.port,r=(l=a.host)!=null?l:this.config.host,i=a.port!==void 0&&a.port!==this.config.port,s=a.host!==void 0&&a.host!==this.config.host;if((i||s)&&!await this.isPortAvailable(t,r))throw new Ts.Notice(`Port ${r}:${t} is already in use. Please choose another port.`),new Error("Port in use");this.config={...this.config,...a},await this.saveConfig(),this.server&&(this.server.updateConfig(a),e&&(i||s)&&await this.restart()),a.enabled!==void 0&&(a.enabled&&!e?await this.start():!a.enabled&&e&&await this.stop())}getAuthToken(){return this.config.authToken}regenerateAuthToken(){let a=$s.generateToken();return this.config.authToken=a,this.server&&this.server.updateConfig({authToken:a}),this.saveConfig(),a}async cleanup(){await this.stop()}};fy();pi();function Ym(n,a){var o;let e=n.getCursor(),t=n.getLine(e.line),r=n.posToOffset({line:e.line,ch:0}),i=/^([\s|\t]*[-*+] \[.\].*?)(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])?(\s*)$/,s=t.match(i);if(s){let l=/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])/,c=t.match(l),u=n.cm;if(c)u.dispatch({changes:{from:r+(c.index||0),to:r+(c.index||0)+(((o=c[0])==null?void 0:o.length)||0),insert:a},annotations:[Ai.of(!0)]});else{let p=r+s[1].length;u.dispatch({changes:{from:p,to:p,insert:` ${a}`},annotations:[Ai.of(!0)]})}}}function $C(n){var s;let a=n.getCursor(),e=n.getLine(a.line),t=n.posToOffset({line:a.line,ch:0}),r=/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])/,i=e.match(r);i&&n.cm.dispatch({changes:{from:t+(i.index||0),to:t+(i.index||0)+(((s=i[0])==null?void 0:s.length)||0),insert:""},annotations:[Ai.of(!0)]})}var UC=class extends la.HoverPopover{constructor(a,e,t,r,i=1e3){super(t,r,i),this.hoverEl.toggleClass("task-progress-bar-popover",!0),this.plugin=a,this.data=e}onload(){la.MarkdownRenderer.render(this.plugin.app,`
|
||
| Status | Count |
|
||
| --- | --- |
|
||
| Total | ${this.data.total} |
|
||
| Completed | ${this.data.completed} |
|
||
| In Progress | ${this.data.inProgress} |
|
||
| Abandoned | ${this.data.abandoned} |
|
||
| Not Started | ${this.data.notStarted} |
|
||
| Planned | ${this.data.planned} |
|
||
`,this.hoverEl,"",this.plugin)}},eb=(n,{progressBar:a,data:e,view:t})=>{let r=t.state.field(la.editorInfoField);r&&new UC(n,e,r,a)},ky=class extends la.Plugin{constructor(){super(...arguments);this.preloadedTasks=[]}async onload(){var e,t,r,i,s,o,l,c,u,p,m,f,h,k,g,v,b,y,w,x,T;if(await this.loadSettings(),(0,la.requireApiVersion)("1.9.10")&&((e=this.settings.betaTest)!=null&&e.enableBaseView)){let C=new Gv(this.app,this);this.addChild(C)}if(this.versionManager=new Zv(this.app,this),this.addChild(this.versionManager),this.onboardingConfigManager=new mn(this),this.settingsChangeDetector=new Kd(this),this.globalSuggestManager=new Ns(this.app,this),this.uriHandler=new Jv(this),this.uriHandler.register(),this.rebuildProgressManager=new ty,this.settings.enableIndexer){this.settings.enableView&&this.loadViews(),this.dataflowOrchestrator&&this.initializeDataflowWithVersionCheck().catch(S=>{console.error("Failed to initialize dataflow with version check:",S)}),this.registerView(sl,S=>new Im(S,this)),this.registerView(Mm,S=>new xv(S,this)),this.registerView($d,S=>new Am(S,this)),this.registerView(Um,S=>new py(S,this,()=>{S.detach()})),this.addCommand({id:"open-task-genius-view",name:d("Open Task Genius view"),callback:()=>{this.activateTaskView()}}),this.addCommand({id:"open-timeline-sidebar-view",name:d("Open Timeline Sidebar"),callback:()=>{this.activateTimelineSidebarView()}}),this.addCommand({id:"open-task-genius-setup",name:d("Open Task Genius Setup"),callback:()=>{this.openOnboardingView()}}),(0,la.addIcon)("task-genius",Sv()),(0,la.addIcon)("completed",Gn("completed")),(0,la.addIcon)("inProgress",Gn("inProgress")),(0,la.addIcon)("planned",Gn("planned")),(0,la.addIcon)("abandoned",Gn("abandoned")),(0,la.addIcon)("notStarted",Gn("notStarted")),this.addRibbonIcon("task-genius",d("Open Task Genius view"),()=>{this.activateTaskView()});try{this.dataflowOrchestrator=await y3(this.app,this.app.vault,this.app.metadataCache,this,{configFileName:((r=(t=this.settings.projectConfig)==null?void 0:t.configFile)==null?void 0:r.fileName)||"project.md",searchRecursively:(o=(s=(i=this.settings.projectConfig)==null?void 0:i.configFile)==null?void 0:s.searchRecursively)!=null?o:!0,metadataKey:((c=(l=this.settings.projectConfig)==null?void 0:l.metadataConfig)==null?void 0:c.metadataKey)||"project",pathMappings:((u=this.settings.projectConfig)==null?void 0:u.pathMappings)||[],metadataMappings:((p=this.settings.projectConfig)==null?void 0:p.metadataMappings)||[],defaultProjectNaming:((m=this.settings.projectConfig)==null?void 0:m.defaultProjectNaming)||{strategy:"filename",stripExtension:!0,enabled:!1},enhancedProjectEnabled:(h=(f=this.settings.projectConfig)==null?void 0:f.enableEnhancedProject)!=null?h:!1,metadataConfigEnabled:(v=(g=(k=this.settings.projectConfig)==null?void 0:k.metadataConfig)==null?void 0:g.enabled)!=null?v:!1,configFileEnabled:(w=(y=(b=this.settings.projectConfig)==null?void 0:b.configFile)==null?void 0:y.enabled)!=null?w:!1,detectionMethods:((T=(x=this.settings.projectConfig)==null?void 0:x.metadataConfig)==null?void 0:T.detectionMethods)||[]})}catch(S){console.error("[Plugin] Failed to initialize dataflow orchestrator:",S),new pt.Notice(d("Failed to initialize task system. Please restart Obsidian."))}let C=async S=>{try{return this.dataflowOrchestrator&&await this.dataflowOrchestrator.getRepository().getTaskById(S)||null}catch(E){return console.warn("Failed to get task from dataflow",E),null}};this.writeAPI=new qm(this.app,this.app.vault,this.app.metadataCache,this,C),this.onCompletionManager=new uy(this.app,this),this.addChild(this.onCompletionManager)}this.settings.rewards.enableRewards&&(this.rewardManager=new Pv(this),this.addChild(this.rewardManager),this.registerEditorExtension([L3(this.app,this)])),this.registerCommands(),this.registerEditorExt(),this.settingTab=new Xg(this.app,this),this.addSettingTab(this.settingTab),this.registerEvent(this.app.workspace.on("editor-menu",(C,S)=>{this.settings.enablePriorityKeyboardShortcuts&&C.addItem(E=>{E.setTitle(d("Set priority")),E.setIcon("list-ordered");let A=E.setSubmenu();Object.entries(Qp).forEach(([N,I])=>{N!=="none"&&A.addItem(R=>{R.setTitle(`${d("Set priority")}: ${I.text}`),R.setIcon("arrow-big-up-dash"),R.onClick(()=>{Ym(S,I.emoji)})})}),A.addSeparator(),Object.entries(Xp).forEach(([N,I])=>{A.addItem(R=>{R.setTitle(`${d("Set priority")}: ${N}`),R.setIcon("a-arrow-up"),R.onClick(()=>{Ym(S,`[#${N}]`)})})}),A.addItem(N=>{N.setTitle(d("Remove Priority")),N.setIcon("list-x"),N.setWarning(!0),N.onClick(()=>{$C(S)})})}),this.settings.workflow.enableWorkflow&&vL(C,S,this)})),this.app.workspace.onLayoutReady(()=>{this.taskGeniusIconManager=new Iv(this),this.addChild(this.taskGeniusIconManager),la.Platform.isDesktopApp&&(this.mcpServerManager=new gy(this),this.mcpServerManager.initialize(),this.notificationManager=new iH(this),this.addChild(this.notificationManager),this.registerEvent(this.app.workspace.on(se.TASK_CACHE_UPDATED,()=>{var C;return(C=this.notificationManager)==null?void 0:C.onTaskCacheUpdated()}))),this.checkAndShowOnboarding(),this.settings.autoCompleteParent&&this.registerEditorExtension([wL(this.app,this)]),this.settings.enableCycleCompleteStatus&&this.registerEditorExtension([CL(this.app,this)]),this.registerMarkdownPostProcessor((C,S)=>{this.settings.enableTaskStatusSwitcher&&uR({plugin:this,element:C,ctx:S}),this.settings.enableProgressbarInReadingMode&&this.settings.progressBarDisplayMode!=="none"&&UD({plugin:this,element:C,ctx:S})}),this.settings.habit.enableHabits&&(this.habitManager=new Mv(this),this.addChild(this.habitManager)),this.settings.icsIntegration.sources.length>0&&(this.icsManager=new Qv(this.settings.icsIntegration,this.settings,this),this.addChild(this.icsManager),this.icsManager.initialize().catch(C=>{console.error("Failed to initialize ICS manager:",C)})),this.settings.timelineSidebar.enableTimelineSidebar&&this.settings.timelineSidebar.autoOpenOnStartup&&setTimeout(()=>{this.activateTimelineSidebarView().catch(C=>{console.error("Failed to auto-open timeline sidebar:",C)})},1e3)}),this.settings.taskFilter&&this.settings.taskFilter.presetTaskFilters&&(this.settings.taskFilter.presetTaskFilters=this.settings.taskFilter.presetTaskFilters.map(C=>(C.options&&(C.options=jp(C.options)),C)),await this.saveSettings()),this.addCommand({id:"quick-capture",name:d("Quick Capture"),callback:()=>{new ca(this.app,this,{},!0).open()}}),this.addCommand({id:"minimal-quick-capture",name:d("Minimal Quick Capture"),callback:()=>{new xk(this.app,this).open()}}),this.addCommand({id:"toggle-task-filter",name:d("Toggle task filter panel"),editorCallback:(C,S)=>{let E=C.cm;E&&E.dispatch({effects:Ro.of(!E.state.field(Lp))})}})}registerCommands(){var e;this.settings.sortTasks&&(this.addCommand({id:"sort-tasks-by-due-date",name:d("Sort Tasks in Section"),editorCallback:(t,r)=>{let i=t.cm;if(!i)return;rC(i,this,!1)&&new pt.Notice(d("Tasks sorted (using settings). Change application needs refinement."))}}),this.addCommand({id:"sort-tasks-in-entire-document",name:d("Sort Tasks in Entire Document"),editorCallback:(t,r)=>{let i=t.cm;if(!i)return;let s=rC(i,this,!0);if(s){let o=i.state.field(la.editorInfoField);if(!o||!o.file)return;this.app.vault.process(o.file,l=>s),new pt.Notice(d("Entire document sorted (using settings)."))}else new pt.Notice(d("Tasks already sorted or no tasks found."))}})),this.addCommand({id:"cycle-task-status-forward",name:d("Cycle task status forward"),editorCheckCallback:(t,r,i)=>OL(t,r,i,this)}),this.addCommand({id:"cycle-task-status-backward",name:d("Cycle task status backward"),editorCheckCallback:(t,r,i)=>NL(t,r,i,this)}),this.settings.enableIndexer&&(this.addCommand({id:"refresh-task-index",name:d("Refresh task index"),callback:async()=>{var t;try{if(new pt.Notice(d("Refreshing task index...")),(t=this.settings)!=null&&t.enableIndexer&&this.dataflowOrchestrator){let r=this.app.vault.getMarkdownFiles(),i=this.app.vault.getFiles().filter(c=>c.extension==="canvas"),s=[...r,...i],o=50;for(let c=0;c<s.length;c+=o){let u=s.slice(c,c+o);await Promise.all(u.map(p=>this.dataflowOrchestrator.processFileImmediate(p)))}let l=this.dataflowOrchestrator.icsSource;l&&await l.refresh()}new pt.Notice(d("Task index refreshed"))}catch(r){console.error("Failed to refresh task index:",r),new pt.Notice(d("Failed to refresh task index"))}}}),this.addCommand({id:"force-reindex-tasks",name:d("Force reindex all tasks"),callback:async()=>{var t;try{if((t=this.settings)!=null&&t.enableIndexer&&this.dataflowOrchestrator){new pt.Notice(d("Clearing task cache and rebuilding index...")),await this.dataflowOrchestrator.rebuild();let r=this.dataflowOrchestrator.icsSource;r&&await r.refresh(),new pt.Notice(d("Task index completely rebuilt"))}else new pt.Notice(d("Task system not initialized"))}catch(r){console.error("Failed to force reindex tasks:",r),new pt.Notice(d("Failed to force reindex tasks"))}}})),this.addCommand({id:"reindex-habits",name:d("Reindex habits"),callback:async()=>{var t;try{await((t=this.habitManager)==null?void 0:t.initializeHabits()),new pt.Notice(d("Habit index refreshed"))}catch(r){console.error("Failed to reindex habits",r),new pt.Notice(d("Failed to refresh habit index"))}}}),this.settings.enablePriorityKeyboardShortcuts&&(Object.entries(Qp).forEach(([t,r])=>{t!=="none"&&this.addCommand({id:`set-priority-${t}`,name:`${d("Set priority")} ${r.text}`,editorCallback:i=>{Ym(i,r.emoji)}})}),Object.entries(Xp).forEach(([t,r])=>{this.addCommand({id:`set-priority-letter-${t}`,name:`${d("Set priority")} ${t}`,editorCallback:i=>{Ym(i,`[#${t}]`)}})}),this.addCommand({id:"remove-priority",name:d("Remove priority"),editorCallback:t=>{$C(t)}})),this.addCommand({id:"move-task-to-file",name:d("Move task to another file"),editorCheckCallback:(t,r,i)=>BL(t,r,i,this)}),this.settings.completedTaskMover.enableCompletedTaskMover&&(this.addCommand({id:"move-completed-subtasks-to-file",name:d("Move all completed subtasks to another file"),editorCheckCallback:(t,r,i)=>pk(t,r,i,this,"allCompleted")}),this.addCommand({id:"move-direct-completed-subtasks-to-file",name:d("Move direct completed subtasks to another file"),editorCheckCallback:(t,r,i)=>pk(t,r,i,this,"directChildren")}),this.addCommand({id:"move-all-subtasks-to-file",name:d("Move all subtasks to another file"),editorCheckCallback:(t,r,i)=>pk(t,r,i,this,"all")}),this.settings.completedTaskMover.enableAutoMove&&(this.addCommand({id:"auto-move-completed-subtasks",name:d("Auto-move completed subtasks to default file"),editorCheckCallback:(t,r,i)=>vd(t,r,i,this,"allCompleted")}),this.addCommand({id:"auto-move-direct-completed-subtasks",name:d("Auto-move direct completed subtasks to default file"),editorCheckCallback:(t,r,i)=>vd(t,r,i,this,"directChildren")}),this.addCommand({id:"auto-move-all-subtasks",name:d("Auto-move all subtasks to default file"),editorCheckCallback:(t,r,i)=>vd(t,r,i,this,"all")}))),this.settings.completedTaskMover.enableIncompletedTaskMover&&(this.addCommand({id:"move-incompleted-subtasks-to-file",name:d("Move all incomplete subtasks to another file"),editorCheckCallback:(t,r,i)=>Nx(t,r,i,this,"allIncompleted")}),this.addCommand({id:"move-direct-incompleted-subtasks-to-file",name:d("Move direct incomplete subtasks to another file"),editorCheckCallback:(t,r,i)=>Nx(t,r,i,this,"directIncompletedChildren")}),this.settings.completedTaskMover.enableIncompletedAutoMove&&(this.addCommand({id:"auto-move-incomplete-subtasks",name:d("Auto-move incomplete subtasks to default file"),editorCheckCallback:(t,r,i)=>vd(t,r,i,this,"allIncompleted")}),this.addCommand({id:"auto-move-direct-incomplete-subtasks",name:d("Auto-move direct incomplete subtasks to default file"),editorCheckCallback:(t,r,i)=>vd(t,r,i,this,"directIncompletedChildren")}))),this.addCommand({id:"toggle-quick-capture",name:d("Toggle quick capture panel in editor"),editorCallback:t=>{let r=t.cm;try{let i=r.state.field(eC);r.dispatch({effects:Gs.of(!i)})}catch(i){r.dispatch({effects:Gs.of(!0)})}}}),this.addCommand({id:"toggle-quick-capture-globally",name:d("Toggle quick capture panel in editor (Globally)"),callback:()=>{let t=this.app.workspace.getActiveViewOfType(nH.MarkdownView);if(t&&t.editor){let r=t.editor.cm;try{r.dispatch({effects:Gs.of(!0)})}catch(i){this.registerEditorExtension([tC(this.app,this)]),setTimeout(()=>{try{r.dispatch({effects:Gs.of(!0)})}catch(s){new pt.Notice(d("Could not open quick capture panel in the current editor"))}},100)}}}}),this.settings.workflow.enableWorkflow&&(this.addCommand({id:"create-quick-workflow",name:d("Create quick workflow"),editorCheckCallback:(t,r,i)=>tk(t,r,i,this)}),this.addCommand({id:"convert-task-to-workflow",name:d("Convert task to workflow template"),editorCheckCallback:(t,r,i)=>ak(t,r,i,this)}),this.addCommand({id:"start-workflow-here",name:d("Start workflow here"),editorCheckCallback:(t,r,i)=>rk(t,r,i,this)}),this.addCommand({id:"convert-to-workflow-root",name:d("Convert current task to workflow root"),editorCheckCallback:(t,r,i)=>ik(t,r,i,this)}),this.addCommand({id:"duplicate-workflow",name:d("Duplicate workflow"),editorCheckCallback:(t,r,i)=>sk(t,r,i,this)}),this.addCommand({id:"workflow-quick-actions",name:d("Workflow quick actions"),editorCheckCallback:(t,r,i)=>Ex(t,r,i,this)})),(e=this.settings.taskTimer)!=null&&e.enabled&&this.taskTimerExporter&&(this.addCommand({id:"export-task-timer-data",name:"Export task timer data",callback:async()=>{try{let t=this.taskTimerExporter.getExportStats();if(t.activeTimers===0){new pt.Notice("No timer data to export");return}let r=this.taskTimerExporter.exportToJSON(!0),i=new Blob([r],{type:"application/json"}),s=URL.createObjectURL(i),o=document.createElement("a");o.href=s,o.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(s),new pt.Notice(`Exported ${t.activeTimers} timer records`)}catch(t){console.error("Error exporting timer data:",t),new pt.Notice("Failed to export timer data")}}}),this.addCommand({id:"import-task-timer-data",name:"Import task timer data",callback:async()=>{try{let t=document.createElement("input");t.type="file",t.accept=".json",t.onchange=async r=>{var s;let i=(s=r.target.files)==null?void 0:s[0];if(i)try{let o=await i.text();this.taskTimerExporter.importFromJSON(o)?new pt.Notice("Timer data imported successfully"):new pt.Notice("Failed to import timer data - invalid format")}catch(o){console.error("Error importing timer data:",o),new pt.Notice("Failed to import timer data")}},t.click()}catch(t){console.error("Error setting up import:",t),new pt.Notice("Failed to set up import")}}}),this.addCommand({id:"export-task-timer-yaml",name:"Export task timer data (YAML)",callback:async()=>{try{let t=this.taskTimerExporter.getExportStats();if(t.activeTimers===0){new pt.Notice("No timer data to export");return}let r=this.taskTimerExporter.exportToYAML(!0),i=new Blob([r],{type:"text/yaml"}),s=URL.createObjectURL(i),o=document.createElement("a");o.href=s,o.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.yaml`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(s),new pt.Notice(`Exported ${t.activeTimers} timer records to YAML`)}catch(t){console.error("Error exporting timer data to YAML:",t),new pt.Notice("Failed to export timer data to YAML")}}}),this.addCommand({id:"backup-task-timer-data",name:"Create task timer backup",callback:async()=>{try{let t=this.taskTimerExporter.createBackup(),r=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=`task-timer-backup-${new Date().toISOString().replace(/[:.]/g,"-")}.json`,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i),new pt.Notice("Task timer backup created")}catch(t){console.error("Error creating timer backup:",t),new pt.Notice("Failed to create timer backup")}}}),this.addCommand({id:"show-task-timer-stats",name:"Show task timer statistics",callback:()=>{try{let t=this.taskTimerExporter.getExportStats(),r=`Task Timer Statistics:
|
||
`;r+=`Active timers: ${t.activeTimers}
|
||
`,r+=`Total duration: ${Math.round(t.totalDuration/6e4)} minutes
|
||
`,t.oldestTimer&&(r+=`Oldest timer: ${t.oldestTimer}
|
||
`),t.newestTimer&&(r+=`Newest timer: ${t.newestTimer}`),new pt.Notice(r,1e4)}catch(t){console.error("Error getting timer stats:",t),new pt.Notice("Failed to get timer statistics")}}}))}registerEditorExt(){var e;this.registerEditorExtension([LD(this.app,this)]),(e=this.settings.taskTimer)!=null&&e.enabled&&(this.taskTimerManager||(this.taskTimerManager=new Xn(this.settings.taskTimer)),this.taskTimerExporter||(this.taskTimerExporter=new my(this.taskTimerManager)),this.registerEditorExtension([VD(this)])),this.settings.taskGutter.enableTaskGutter&&this.registerEditorExtension([U3(this.app,this)]),this.settings.enableTaskStatusSwitcher&&this.settings.enableCustomTaskMarks&&this.registerEditorExtension([HD(this.app,this)]),this.settings.enablePriorityPicker&&this.registerEditorExtension([iL(this.app,this)]),this.settings.enableDatePicker&&this.registerEditorExtension([mj(this.app,this)]),this.settings.workflow.enableWorkflow&&(this.registerEditorExtension([gL(this.app,this)]),this.registerEditorExtension([IL(this.app,this)]),this.registerEditorExtension([RL(this.app,this)])),this.settings.quickCapture.enableQuickCapture&&this.registerEditorExtension([tC(this.app,this)]),this.settings.quickCapture.enableMinimalMode&&(this.minimalQuickCaptureSuggest=new Ck(this.app,this),this.registerEditorSuggest(this.minimalQuickCaptureSuggest)),this.settings.taskFilter.enableTaskFilter&&this.registerEditorExtension([S2(this)]),this.settings.autoDateManager.enabled&&this.registerEditorExtension([Y3(this.app,this)]),this.registerEditorExtension([Q3()])}onunload(){this.globalSuggestManager&&this.globalSuggestManager.cleanup(),this.dataflowOrchestrator&&(this.dataflowOrchestrator.cleanup().catch(e=>{console.error("Error cleaning up dataflow orchestrator:",e)}),this.dataflowOrchestrator=void 0),this.mcpServerManager&&this.mcpServerManager.cleanup()}async checkAndShowOnboarding(){try{let t=(await this.versionManager.checkVersionChange()).versionInfo.isFirstInstall,r=this.onboardingConfigManager.shouldShowOnboarding();(t&&r||!t&&r&&this.settingsChangeDetector.hasUserMadeChanges())&&this.openOnboardingView()}catch(e){console.error("Failed to check onboarding status:",e)}}async openOnboardingView(){let{workspace:e}=this.app,t=e.getLeavesOfType(Um)[0];if(t){e.revealLeaf(t);return}let r=e.getLeaf("tab");await r.setViewState({type:Um}),e.revealLeaf(r)}async loadSettings(){let e=await this.loadData();this.settings=Object.assign({},pe,e);try{console.debug("[Plugin][loadSettings] fileMetadataInheritance (raw):",e==null?void 0:e.fileMetadataInheritance),console.debug("[Plugin][loadSettings] fileMetadataInheritance (effective):",this.settings.fileMetadataInheritance)}catch(t){}this.migrateInheritanceSettings(e)}migrateInheritanceSettings(e){var t,r,i,s;if((t=e==null?void 0:e.projectConfig)!=null&&t.metadataConfig&&!(e!=null&&e.fileMetadataInheritance)){let o=e.projectConfig.metadataConfig;this.settings.fileMetadataInheritance={enabled:!0,inheritFromFrontmatter:(r=o.inheritFromFrontmatter)!=null?r:!0,inheritFromFrontmatterForSubtasks:(i=o.inheritFromFrontmatterForSubtasks)!=null?i:!1},(s=this.settings.projectConfig)!=null&&s.metadataConfig&&(delete this.settings.projectConfig.metadataConfig.inheritFromFrontmatter,delete this.settings.projectConfig.metadataConfig.inheritFromFrontmatterForSubtasks),this.saveSettings()}}async saveSettings(){var e;try{console.debug("[Plugin][saveSettings] fileMetadataInheritance:",(e=this.settings)==null?void 0:e.fileMetadataInheritance)}catch(t){}await this.saveData(this.settings)}async loadViews(){let e=pe.viewConfiguration;this.settings.viewConfiguration||(this.settings.viewConfiguration=[]),e.forEach(t=>{this.settings.viewConfiguration.find(i=>i.id===t.id)||this.settings.viewConfiguration.push({...t})}),await this.saveSettings()}async activateTaskView(){let{workspace:e}=this.app,t=e.getLeavesOfType(sl)[0];if(t){e.revealLeaf(t);return}let r=e.getLeaf("tab");await r.setViewState({type:sl}),e.revealLeaf(r)}async activateTimelineSidebarView(){let{workspace:e}=this.app,t=e.getLeavesOfType($d)[0];if(t){e.revealLeaf(t);return}let r=e.getRightLeaf(!1);r&&(await r.setViewState({type:$d}),e.revealLeaf(r))}async triggerViewUpdate(){let e=this.app.workspace.getLeavesOfType(sl);if(e.length>0)for(let r of e)r.view instanceof Im&&(Array.isArray(this.preloadedTasks)&&this.preloadedTasks.length>0&&(r.view.tasks=this.preloadedTasks),r.view.triggerViewUpdate());let t=this.app.workspace.getLeavesOfType($d);if(t.length>0)for(let r of t)r.view instanceof Am&&await r.view.triggerViewUpdate()}getIcsManager(){return this.icsManager}async initializeDataflowWithVersionCheck(){var e;if(!this.dataflowOrchestrator){console.error("Dataflow orchestrator not available");return}try{let t=await this.versionManager.getDiagnosticInfo();if(!t.canWrite)throw new Error("Cannot write to version storage - storage may be corrupted");!t.versionValid&&t.previousVersion&&(console.warn("Invalid version data detected, attempting recovery"),await this.versionManager.recoverFromCorruptedVersion());let r=await this.versionManager.checkVersionChange();if(r.requiresRebuild){`${r.rebuildReason}`;let i=this.app.vault.getFiles().filter(c=>c.extension==="md"||c.extension==="canvas");this.rebuildProgressManager.startRebuild(i.length,r.rebuildReason);try{await((e=this.habitManager)==null?void 0:e.initializeHabits())}catch(c){console.warn("Failed to refresh habits after rebuild",c)}await this.dataflowOrchestrator.rebuild();let l=(await this.dataflowOrchestrator.getQueryAPI().getAllTasks()).length;this.rebuildProgressManager.completeRebuild(l),await this.versionManager.markVersionProcessed()}}catch(t){console.error("Error during dataflow initialization with version check:",t);try{let r=await this.versionManager.handleEmergencyRebuild(`Dataflow initialization failed: ${t.message}`),i=this.app.vault.getFiles().filter(c=>c.extension==="md"||c.extension==="canvas");this.rebuildProgressManager.startRebuild(i.length,r.rebuildReason),await this.dataflowOrchestrator.rebuild();let l=(await this.dataflowOrchestrator.getQueryAPI().getAllTasks()).length;this.rebuildProgressManager.completeRebuild(l),await this.versionManager.markVersionProcessed()}catch(r){throw console.error("Emergency dataflow rebuild failed:",r),r}}}async initializeTaskManagerWithVersionCheck(){return console.warn("initializeTaskManagerWithVersionCheck is deprecated and should not be used"),Promise.resolve()}};
|
||
/*! Bundled license information:
|
||
|
||
regexp-match-indices/config.js:
|
||
regexp-match-indices/native.js:
|
||
regexp-match-indices/implementation.js:
|
||
regexp-match-indices/polyfill.js:
|
||
regexp-match-indices/shim.js:
|
||
regexp-match-indices/index.js:
|
||
(*!
|
||
Copyright 2019 Ron Buckton
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
*)
|
||
|
||
localforage/dist/localforage.js:
|
||
(*!
|
||
localForage -- Offline Storage, Improved
|
||
Version 1.10.0
|
||
https://localforage.github.io/localForage
|
||
(c) 2013-2017 Mozilla, Apache License 2.0
|
||
*)
|
||
|
||
@datastructures-js/queue/src/queue.js:
|
||
(**
|
||
* @license MIT
|
||
* @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>
|
||
*
|
||
* @class
|
||
*)
|
||
|
||
sortablejs/modular/sortable.esm.js:
|
||
(**!
|
||
* Sortable 1.15.6
|
||
* @author RubaXa <trash@rubaxa.org>
|
||
* @author owenm <owen23355@gmail.com>
|
||
* @license MIT
|
||
*)
|
||
*/
|
||
|
||
/* nosourcemap */ |